Der Textklassifikator nutzt Methoden des maschinellen Lernens, Text klassifizieren.
Textklassifikator in der Android 11-Version
Android 11 führt einen aktualisierbaren Standard ein
Implementierung des Textklassifikatordienstes in der
<ph type="x-smartling-placeholder"></ph>
ExtServices-Modul Auf Geräten mit Android 11
oder höher, die
<ph type="x-smartling-placeholder"></ph>
getTextClassifier()
.
-Methode diese Standardimplementierung im ExtServices-Modul zurück.
Geräteherstellern wird empfohlen, diese Implementierung
TextClassifierService
, da es über Mainline OTA aktualisiert werden kann
Aktualisierungen.
Unter Android 11 wird auch der lokale Textklassifikator entfernt
Standardimplementierung, die zuvor in
<ph type="x-smartling-placeholder"></ph>
Android 8.1 Daher
<ph type="x-smartling-placeholder"></ph>
getLocalTextClassifier()
.
gibt einen NO_OP
-Textklassifikator zurück. Anstelle der lokalen
-Implementierung verwenden, sollten Sie die Methode
<ph type="x-smartling-placeholder"></ph>
getDefaultTextClassifierImplementation()
.
.
Für Gerätehersteller, die eine eigene Textklassifizierung verwenden möchten,
einen benutzerdefinierten Textklassifikatordienst implementieren, indem sie
config_defaultTextClassifierPackage
in config.xml
-Datei. Wenn diese Konfiguration nicht angegeben ist, wird die
verwendet wird. Bei benutzerdefinierten Implementierungen kann eine Instanz des Standard-
Implementierung durch den Aufruf
<ph type="x-smartling-placeholder"></ph>
TextClassifierService.getDefaultTextClassifierImplementation(Context)
Weitere Informationen finden Sie unter
<ph type="x-smartling-placeholder"></ph>
Benutzerdefinierten Textklassifikatordienst implementieren
Testen
Überprüfen Sie die Implementierung des Textklassifikatordienstes mit dem
CTS-Tests (Compatibility Test Suite) in
platform/cts/tests/tests/textclassifier/
Verbesserungen am Textklassifikator in Android 10
Android 10 bietet zwei Methoden zur
TextClassifier API:
<ph type="x-smartling-placeholder"></ph>
suggestConversationActions
.
und
<ph type="x-smartling-placeholder"></ph>
detectLanguage
Mit der Methode „suggestConversationActions
“ werden Antwortvorschläge generiert
und Aktionen aus einer bestimmten Unterhaltung und der detectLanguage
-Methode
die Sprache des Textes erkennt.
Die Modelldateien für diese Methoden sind unten aufgeführt. Sie finden sie unter
<ph type="x-smartling-placeholder"></ph>
external/libtextclassifier/models/
suggestionConversationActions
:actions_suggestions.universal.model
detectLanguage
:lang_id.model
So geben Sie ein Gerät mit den neuesten Modelldateien in Ihrem Factory Image frei: Folgendes:
Rufen Sie die neuesten Modelldateien ab.
external/libtextclassifier/models/update.sh
- Benennen Sie die heruntergeladenen Dateien um, um die vorhandenen zu ersetzen.
- Überprüfen Sie die Einrichtung.
adb shell dumpsys textclassification
Dies ist ein Beispiel für die Ausgabe dieses Befehls.
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 }
Verbesserungen am Textklassifikator der Android 9-Version
Mit Android 9 wurde der Text Klassifizierungs-Framework eingeführt, das mit Android 8.1 mit dem neuen Text eingeführt wurde. Klassifikatordienst. Für OEMs wird der Textklassifikatordienst empfohlen. zur Unterstützung des Textklassifizierungssystems. Der Textklassifikatordienst kann Teil eines beliebigen System-APKs sein und bei Bedarf aktualisiert werden.
Android 9 enthält einen Standard-Textklassifikator
Dienstimplementierung
(
TextClassifierImpl
), die verwendet wird, es sei denn, Sie ersetzen sie durch einen
benutzerdefinierter Textklassifikatordienst
Implementierung.
Benutzerdefinierten Textklassifikatordienst implementieren
In den folgenden Abschnitten wird beschrieben, wie Sie einen benutzerdefinierten Textklassifikator implementieren. den Sie entwickeln.
android.service.textclassifier.TextClassifierService erweitern
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) { ... } ... }
Dienst im Android-Manifest definieren
[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>
Für den Dienst muss der Parameter
android.permission.BIND_TEXTCLASSIFIER_SERVICE
-Berechtigung und muss
geben Sie die
android.service.textclassifier.TextClassifierService
Intent
Aktion ausführen.
Standard-Textklassifikatordienst des Systems im Konfigurations-Overlay festlegen
[config.xml]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
Textklassifikatordienst in das System-Image einbinden
Ihr benutzerdefinierter Textklassifikator kann ein eigenständiges APK sein,
in das System-Image oder einen Teil eines anderen System-APKs. Das System verwendet
PackageManager.MATCH_SYSTEM_ONLY
um den Dienst zu beheben.
Testen
Führe Tests in android.view.textclassifier.cts
aus.
Weitere Änderungen bei der Textklassifizierung in Android 9
Weitere Informationen finden Sie unter Installierte Sprachmodule prüfen
Die Modelldateien von Android 9 sind nicht kompatibel mit Android 8.x-Modelldateien
Android 9-Modelldateien haben folgendes Benennungsmuster:
texclassifier.[language-code].model
(z. B.
textclassifier.en.model
)
statt textclassifier.smartselection.en.model
in Android 8.x.
Neueste Dateien des Textklassifizierungsmodells abrufen
Um die aktuellsten Modelle zu erhalten, kann das folgende Skript ausgeführt werden, das aktualisiert die TextClassifier-Modelle in der Quellstruktur:
external/libtextclassifier/native/models/update.sh
Textklassifikator der Android-Version 8.1
Mit Android 8.1 wurde die TextClassfier API eingeführt, um Text zu implementieren. Klassifizierung.
TextClassificationManager tcm = context.getSystemService(TextClassificationManager.class); TextClassifier classifier = tcm.getTextClassifier(); TextSelection selection = classifier.suggestSelection(...); TextClassification classification = classifier.classifyText(...);
Entwickler können einen benutzerdefinierten Textklassifikator festlegen:
tcm.setTextClassifier(customTextClassifier);
Wenn ein App-Entwickler jedoch den Textklassifikator auf null
setzt, wird ein System
Der Standardtextklassifikator wird für getTextClassifier()
zurückgegeben.
android.view.textclassifier.TextClassifierImpl
ansehen.
TextView und WebView verwenden TextClassifier für intelligente Auswahl und intelligenten Text Funktionen zum Teilen von Inhalten.
Neuronale Netzmodelle von TextClassifier
Das Android Open Source Project (AOSP) umfasst eine Reihe neuronaler Netze zum Klassifizieren von Text. Jede Modelldatei wird für eine einzelne Sprache trainiert. Sie können beliebige Kombinationen von Modellen installieren. Die Modelle sind definiert in:
external/libtextclassifier/Android.mk
Vorinstallierte Sprache Modelle auf Geräten
Sie können ein Bundle mit Sprachmodellen angeben und auf einem Gerät installieren:
# ----------------------- # 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)
Beispiel: device/google/marlin/device-common.mk
.
# TextClassifier smart selection model files PRODUCT_PACKAGES += \ textclassifier.smartselection.bundle1
Installierte Sprache prüfen Module
Verwenden Sie ADB, um die Dateien im Verzeichnis aufzulisten:
$ 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
Modellaktualisierungen
Modelle können entweder durch Einbinden eines neuen Modells in ein System aktualisiert werden.
Bildaktualisierung oder dynamisch, indem eine Systemkomponente eingerichtet wird, die
ein Update über das System API ACTION_UPDATE_SMART_SELECTION
Nutzerabsicht verstehen. Durch die Übertragung dieses System-API-Intents kann das Framework
Aktualisiert das Sprachmodell der aktuell eingestellten Sprache. Die Modelle selbst
die unterstützte Sprache und eine Versionsnummer enthalten, sodass die aktuelle passende
-Modell verwendet wird.
Sie müssen Modelle also nicht für alle Sprachen vorab laden, . Wenn für die angegebene Sprache keine Modelldatei gefunden wird, erfolgt die Textklassifizierung. gibt No-Op-Werte zurück.
Kompatibilitätstest-Suite-Tests
Die zugehörigen Tests der Android Compatibility Test Suite (CTS) finden Sie hier:
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