Metin sınıflandırıcı uygulama

Metin sınıflandırıcı, geliştiricilere yardımcı olmak için makine öğrenimi tekniklerini kullanır metin sınıflandırma.

Android 11 sürüm metni sınıflandırıcı

Android 11, güncellenebilir bir varsayılan kullanıma sunuyor metin sınıflandırıcı hizmetinin ExtServices modülü içerir. Android 11 çalıştıran cihazlarda veya daha yüksek getTextClassifier() yöntemi, ExtServices modülünde bu varsayılan uygulamayı döndürür. Cihaz üreticilerinin Mainline OTA üzerinden güncellenebileceği için TextClassifierService güncellemelerine göz atın.

Android 11, yerel metin sınıflandırıcıyı da kaldırır bu programdaki varsayılan uygulama Android 8.1. Sonuç olarak, getLocalTextClassifier() bir NO_OP metin sınıflandırıcı döndürür. Yerel dönüşüm hunisinin üst kısmındaki getDefaultTextClassifierImplementation() yöntemidir.

Kendi metin sınıflandırmalarını kullanmak isteyebilecek cihaz üreticileri Google Analytics 4'te arama yapanlara özel metin sınıflandırıcı hizmeti config.xml içindeki config_defaultTextClassifierPackage dosyası olarak kaydedebilirsiniz. Bu yapılandırma belirtilmezse varsayılan sistem uygulaması bu düzenlemelerin nedenlerinden biri. Özel uygulamalar, varsayılan öğenin bir örneğini alabilir yöntemini çağırarak TextClassifierService.getDefaultTextClassifierImplementation(Context) değerleridir. Daha fazla bilgi için bkz. Özel bir metin sınıflandırıcı hizmeti uygulamaya koyma.

Test

Metin sınıflandırıcı hizmeti uygulamanızı doğrulamak için işletim sisteminde Uyumluluk Test Paketi (CTS) testleri platform/cts/tests/tests/textclassifier/ değerleridir.

Android 10 sürümü metin sınıflandırıcı geliştirmeleri

Android 10, TextClassifier API'sı: suggestConversationActions ve detectLanguage) suggestConversationActions yöntemi, önerilen yanıtlar oluşturur belirli bir görüşmeden ve detectLanguage yönteminden elde edilen işlemler metnin dilini algılar.

Bu yöntemlere ilişkin model dosyaları aşağıda gösterilmektedir ve şurada bulunabilir: external/libtextclassifier/models/ değerleridir.

  • suggestionConversationActions: actions_suggestions.universal.model
  • detectLanguage: lang_id.model

Fabrika görüntünüzdeki en son model dosyalarının bulunduğu bir cihazı kullanıma sunmak için: şu:

  1. En son model dosyalarını alın.

    external/libtextclassifier/models/update.sh
    
  2. İndirilen dosyaları, mevcut dosyaları yenisiyle değiştirecek şekilde yeniden adlandırın.
  3. Kurulumu doğrulayın.
    adb shell dumpsys textclassification
    

    Bu, ilgili komutun çıkışının bir örneğidir.

    TextClassifierImpl:
      Annotator model file(s):
        ModelFile { path=/etc/textclassifier/textclassifier.universal.model name=textclassifier.universal.model version=608 locales=und }
        ModelFile { path=/etc/textclassifier/textclassifier.en.model name=textclassifier.en.model version=608 locales=en }
      LangID model file(s):
        ModelFile { path=/etc/textclassifier/lang_id.model name=lang_id.model version=0 locales=und }
      Actions model file(s):
        ModelFile { path=/etc/textclassifier/actions_suggestions.universal.model name=actions_suggestions.universal.model version=0 locales=und }
    

Android 9 sürümü metin sınıflandırıcı geliştirmeleri

Android 9, genişletilmiş metin sınıflandırma çerçevesini (Android 8.1'de) hizmet. Metin sınıflandırıcı hizmeti, OEM'ler için önerilen yöntemdir metin sınıflandırma sistemi desteği sağlamak. Metin sınıflandırıcı hizmeti, herhangi bir sistem APK'sının parçası olmalıdır ve gerektiğinde güncellenebilir.

Android 9'da varsayılan bir metin sınıflandırıcı bulunur hizmet uygulaması ( TextClassifierImpl), özel metin sınıflandırıcı hizmeti bazı ipuçları vereceğim.

Özel bir metin sınıflandırıcı hizmeti uygulama

Aşağıdaki bölümlerde, özel metin sınıflandırıcının nasıl uygulanacağı açıklanmaktadır. size yardımcı olabilir.

android.service.textclassifier.TextClassifierService öğesini genişletin.

public final class TextClassifierServiceImpl
        extends TextClassifierService {

    // Returns TextClassifierImpl.
    private final TextClassifier tc = getLocalTextClassifier();

    @Override
    public void onSuggestSelection(
            @Nullable TextClassificationSessionId sessionId,
            @NonNull TextSelection.Request request,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextSelection> callback) {
        CompletableFuture.supplyAsync(
                () -> tc.suggestSelection(request))
                .thenAccept(r -> callback.onSuccess(r));
    }

    @Override
    public void onClassifyText(
            @Nullable TextClassificationSessionId sessionId,
		@NonNull TextClassification.Request request,
		@NonNull CancellationSignal cancellationSignal,
		@NonNull Callback<TextClassification> callback) {
        ...
    }

    @Override
    public void onGenerateLinks(
            @Nullable TextClassificationSessionId sessionId,
            @NonNull TextLinks.Request request,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextLinks> callback) {
        ...
    }
    ...
}

Android manifest dosyasında hizmeti tanımlayın

[AndroidManifest.xml]

<service android:name=".TextClassifierServiceImpl"
  android:permission="android.permission.BIND_TEXTCLASSIFIER_SERVICE">
    <intent-filter>
      <action android:name=
        "android.service.textclassifier.TextClassifierService"/>
    </intent-filter>
</service>

Hizmetin android.permission.BIND_TEXTCLASSIFIER_SERVICE izni ve belirtin android.service.textclassifier.TextClassifierService intent eyleme dökülebilir.

Yapılandırma yer paylaşımında sistem varsayılan metin sınıflandırıcı hizmeti ayarla

[config.xml]

<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>

Sistem görüntüsünde metin sınıflandırıcı hizmetini oluşturma

Özel metin sınıflandırıcı hizmetiniz, kendi geliştirebileceğiniz bir APK ile veya başka bir sistem APK'sının parçasına ekleyebilirsiniz. Sistem, PackageManager.MATCH_SYSTEM_ONLY. çok önemli.

Test

android.view.textclassifier.cts dilinde test yapın.

Android 9'da metin sınıflandırmayla ilgili diğer değişiklikler

Bkz. Yüklü dil modüllerini inceleme.

Android 9 model dosyaları Android 8.x model dosyaları.

Android 9 model dosyaları için adlandırma kalıbı şöyledir: texclassifier.[language-code].model (örneğin, textclassifier.en.model) Android 8.x sürümünde textclassifier.smartselection.en.model yerine kullanılabilir.

En güncel metin sınıflandırma model dosyalarını edinin

En güncel modelleri elde etmek için aşağıdaki komut dosyası çalıştırılabilir: kaynak ağaçtaki TextClassifier modellerini günceller:

external/libtextclassifier/native/models/update.sh

Android sürüm 8.1 metin sınıflandırıcı

Android 8.1, metin uygulamak için TextClassfier API'yi kullanıma sundu en iyi uygulamaları görelim.

TextClassificationManager tcm =
    context.getSystemService(TextClassificationManager.class);
TextClassifier classifier = tcm.getTextClassifier();
TextSelection selection = classifier.suggestSelection(...);
TextClassification classification = classifier.classifyText(...);

Geliştiriciler, özel bir metin sınıflandırıcı ayarlayabilir:

tcm.setTextClassifier(customTextClassifier);

Ancak bir uygulama geliştirici metin sınıflandırıcıyı null olarak ayarlarsa sistem getTextClassifier() için varsayılan metin sınıflandırıcı döndürülür.

android.view.textclassifier.TextClassifierImpl bakın.

TextView ve WebView, akıllı seçim ve akıllı metin için TextClassifier'ı kullanır özellikleri paylaşır.

Metin sınıflandırıcı kullanımı

Şekil 1. TextClassifier kullanımı

TextClassifier nöral ağ modelleri

Android Açık Kaynak Projesi (AOSP) bir dizi nöral ağ içerir modeller bulunuyor. Her model dosyası tek bir dil için eğitilir. Herhangi bir model kombinasyonunu yükleyebilirsiniz. Modeller şurada tanımlanmıştır:

external/libtextclassifier/Android.mk

Dili önceden yükle cihazlardaki modeller

Bir dil modeli paketi belirtebilir ve bunları bir cihaza yükleyebilirsiniz:

# -----------------------
# Smart Selection bundles
# -----------------------

include $(CLEAR_VARS)
LOCAL_MODULE           := textclassifier.smartselection.bundle1
LOCAL_REQUIRED_MODULES := textclassifier.smartselection.en.model
LOCAL_REQUIRED_MODULES += textclassifier.smartselection.es.model
LOCAL_REQUIRED_MODULES += textclassifier.smartselection.de.model
LOCAL_REQUIRED_MODULES += textclassifier.smartselection.fr.model
include $(BUILD_STATIC_LIBRARY)

Örneğin, device/google/marlin/device-common.mk.

# TextClassifier smart selection model files
PRODUCT_PACKAGES += \
    textclassifier.smartselection.bundle1

Yüklü dili incele modüllerin

Dizindeki dosyaları listelemek için ADB kullanın:

$ adb shell ls -l /etc/textclassifier
-rw-r--r-- 1 root root ... textclassifier.smartselection.de.model
-rw-r--r-- 1 root root ... textclassifier.smartselection.en.model
-rw-r--r-- 1 root root ... textclassifier.smartselection.es.model
-rw-r--r-- 1 root root ... textclassifier.smartselection.fr.model

Model güncellemeleri

Modeller, bir sistemin parçası olarak yeni bir modelin dahil edilmesiyle güncellenebilir veya farklı bir görevi tetikleyen bir sistem bileşenine sahip API ACTION_UPDATE_SMART_SELECTION sistem üzerinden bir güncelleme yapıldı isteyebilirsiniz. Çerçeve, bu sistem API amacını yayınlayarak ayarlı olan dilin dil modelini güncelleyin. Modellerin kendisi desteklenen en güncel sürüm için bir sürüm numarası ve modeli kullanılır.

Bu nedenle, modeller eklenebileceği için tüm diller için modelleri önceden yüklemeniz gerekmez daha sonra. Belirtilen dil için model dosyası bulunamazsa metin sınıflandırması işlemsiz değerler döndürür.

Uyumluluk Test Paketi testleri

İlişkili Android Compatibility Test Suite (CTS) testleri şurada bulunabilir:

cts/tests/tests/view/src/android/view/textclassifier/cts/TextClassificationManagerTest.java

cts/tests/tests/widget/src/android/widget/cts/TextViewTest.java

  • testSmartSelection
  • testSmartSelection_dragSelection
  • testSmartSelection_resetSelection