Klasyfikator tekstu wykorzystuje techniki systemów uczących się, aby pomagać programistom i klasyfikować tekst.
Klasyfikator tekstu w wersji na Androida 11
Android 11 wprowadza ustawienie domyślne, które można zaktualizować
po wdrożeniu usługi klasyfikatora tekstu w
Moduł ExtServices. Na urządzeniach z Androidem 11
lub wyżej,
getTextClassifier()
zwraca tę domyślną implementację w module ExtServices.
Producenci urządzeń powinni korzystać z tej implementacji:
TextClassifierService
, ponieważ można je zaktualizować przez sieć OTA Mainline
aktualizacje.
Android 11 usuwa też lokalny klasyfikator tekstu
domyślna implementacja wprowadzona w
Android 8.1 W rezultacie
getLocalTextClassifier()
zwraca klasyfikator tekstu NO_OP
. Zamiast interfejsu lokalnego
implementacji, użyj funkcji
getDefaultTextClassifierImplementation()
.
Producenci urządzeń, którzy mogą chcieć używać własnego klasyfikacji tekstu
algorytmach, mogą wdrożyć usługę klasyfikatora niestandardowego tekstu, określając
config_defaultTextClassifierPackage
w: config.xml
. Jeśli ta konfiguracja nie zostanie określona, zostanie zastosowana domyślna implementacja systemu.
i zgody na określone zastosowania ich danych. Implementacje niestandardowe mogą pobierać instancję domyślnej
przez wywołanie funkcji
TextClassifierService.getDefaultTextClassifierImplementation(Context)
Więcej informacji:
Wdrożenie usługi klasyfikatora niestandardowego tekstu.
Testowanie
Aby sprawdzić poprawność implementacji usługi klasyfikatora tekstu, użyj
Testy Compatibility Test Suite (CTS) w
platform/cts/tests/tests/textclassifier/
Ulepszenia klasyfikatorów tekstu w Androidzie 10
Android 10 wprowadza dwie metody
Interfejs API TextClassifier:
suggestConversationActions
oraz
.
detectLanguage
Metoda suggestConversationActions
generuje sugerowane odpowiedzi
i czynności z danego wątku oraz metody detectLanguage
wykrywa język tekstu.
Pliki modeli dla tych metod znajdują się poniżej i można je znaleźć w
external/libtextclassifier/models/
suggestionConversationActions
:actions_suggestions.universal.model
detectLanguage
:lang_id.model
Aby zwolnić urządzenie z najnowszymi plikami modelu w obrazie fabrycznym, wykonaj następujące:
Pobierz najnowsze pliki modeli.
external/libtextclassifier/models/update.sh
- Zmień nazwy pobranych plików, aby zastąpić istniejące.
- Sprawdź konfigurację.
adb shell dumpsys textclassification
Oto przykładowe dane wyjściowe tego polecenia.
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 }
Ulepszenia klasyfikatorów tekstu w Androidzie 9
Android 9 rozszerzył tekst platformę klasyfikacji wprowadzoną w Androidzie 8.1 z nowym tekstem, usługi klasyfikatora. Usługa klasyfikatorów tekstu jest zalecanym sposobem dla producentów OEM aby zapewnić obsługę systemu klasyfikacji tekstu. Usługa klasyfikatorów tekstu może być częścią każdego systemowego pliku APK i w razie potrzeby być aktualizowane.
Android 9 zawiera domyślny klasyfikator tekstu
wdrożenie usługi
(
TextClassifierImpl
), który jest używany, o ile nie zastąpisz go elementem
usługa klasyfikatora niestandardowego tekstu
implementacji.
Wdrażanie usługi klasyfikatora niestandardowego tekstu
W sekcjach poniżej opisujemy, jak wdrożyć niestandardowy klasyfikator tekstu opracowanej przez siebie usługi.
Rozszerzanie obiektu android.service.textclassifier.TextClassifierService
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) { ... } ... }
Określ usługę w pliku manifestu Androida
[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>
Pamiętaj, że usługa musi wymagać
android.permission.BIND_TEXTCLASSIFIER_SERVICE
– wymagane
określ
Zamiar android.service.textclassifier.TextClassifierService
działania.
Ustaw domyślną usługę klasyfikatora tekstu systemu w nakładce konfiguracji
Plik [config.xml]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
Umieszczenie usługi klasyfikatora tekstu w obrazie systemu
Usługa klasyfikatora niestandardowego tekstu może być samodzielnym plikiem APK, który został utworzony
do obrazu systemu lub części innego systemowego pliku APK. System wykorzystuje
PackageManager.MATCH_SYSTEM_ONLY
, aby rozwiązać problem.
Testowanie
Uruchom testy za android.view.textclassifier.cts
.
Inne zmiany w klasyfikacji tekstu w Androidzie 9
Patrz: Sprawdzanie zainstalowanych modułów językowych.
Pliki z modelem Androida 9 są niezgodne z usługami Pliki modelu Androida 8.x.
Pliki modelu Androida 9 mają następujący wzorzec nazewnictwa:
texclassifier.[language-code].model
(na przykład
textclassifier.en.model
).
zamiast textclassifier.smartselection.en.model
w Androidzie 8.x.
Uzyskiwanie najnowszych plików modeli klasyfikacji tekstu
Aby uzyskać najbardziej aktualne modele, można uruchomić następujący skrypt, który aktualizuje modele TextClassifier w drzewie źródłowym:
external/libtextclassifier/native/models/update.sh
Klasyfikator tekstu w Androidzie 8.1
W Androidzie 8.1 wprowadzono interfejs TextClassfier API do implementacji tekstu klasyfikacja danych.
TextClassificationManager tcm = context.getSystemService(TextClassificationManager.class); TextClassifier classifier = tcm.getTextClassifier(); TextSelection selection = classifier.suggestSelection(...); TextClassification classification = classifier.classifyText(...);
Deweloperzy mogą ustawić niestandardowy klasyfikator tekstu:
tcm.setTextClassifier(customTextClassifier);
Jeśli jednak deweloper aplikacji ustawi klasyfikator tekstu na null
, system
dla getTextClassifier()
jest zwracany domyślny klasyfikator tekstu.
Zobacz android.view.textclassifier.TextClassifierImpl
.
TextView i WebView korzystają z technologii TextClassifier do inteligentnego zaznaczania i inteligentnego tekstu funkcje udostępniania.
Modele sieci neuronowej TextClassifier
W ramach Android Open Source Project (AOSP) wykorzystuje się wiele sieci neuronowych do klasyfikowania tekstu. Każdy plik modelu jest trenowany dla 1 języka. Możesz zainstalować dowolną kombinację modeli. Modele są zdefiniowane w następujących sekcjach:
external/libtextclassifier/Android.mk
Wstępnie zainstaluj język modele na urządzeniach
Możesz określić pakiet modeli językowych i zainstalować je na urządzeniu:
# ----------------------- # 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)
Na przykład w tym języku: device/google/marlin/device-common.mk
.
# TextClassifier smart selection model files PRODUCT_PACKAGES += \ textclassifier.smartselection.bundle1
Sprawdź zainstalowany język moduły
Użyj ADB, by wyświetlić listę plików w katalogu:
$ 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
Aktualizacje modelu
Modele można aktualizować przez dodanie nowego modelu jako części systemu
aktualizacje obrazu lub dynamiczne za pomocą komponentu systemowego, który uruchamia
aktualizacja w systemie API ACTION_UPDATE_SMART_SELECTION
intencji. Dzięki rozgłaszaniu tej intencji systemowego interfejsu API platforma może
zaktualizowanie modelu językowego obecnie ustawionego języka. same modele,
zawierać obsługiwany język i numer wersji, dzięki czemu najnowsze
model 3D.
Nie musisz więc wstępnie wczytywać modeli dla wszystkich języków, ponieważ można je dodawać później. Jeśli w podanym języku nie zostanie znaleziony plik modelu, zostanie zastosowana klasyfikacja tekstu. zwraca wartości bezobsługowe.
Testy Compatibility Test Suite
Powiązane testy z pakietem Android Compatibility Test Suite (CTS) znajdziesz tutaj:
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