Классификатор текста использует методы машинного обучения, чтобы помочь разработчикам классифицировать текст.
Классификатор текста версии Android 11
В Android 11 представлена обновляемая реализация службы классификатора текста по умолчанию в модуле ExtServices . На устройствах под управлением Android 11 или более поздней версии метод getTextClassifier()
возвращает реализацию по умолчанию в модуле ExtServices. Производителям устройств рекомендуется использовать эту реализацию TextClassifierService
, поскольку ее можно обновлять через обновления Mainline OTA.
В Android 11 также удалена реализация локального классификатора текста по умолчанию, представленная ранее в Android 8.1 . В результате getLocalTextClassifier()
возвращает текстовый классификатор NO_OP
. Вместо локальной реализации следует использовать метод getDefaultTextClassifierImplementation()
.
Производители устройств, которые могут захотеть использовать свои собственные алгоритмы классификации текста, могут реализовать собственную службу классификатора текста, указав config_defaultTextClassifierPackage
в файле config.xml
. Если эта конфигурация не указана, используется системная реализация по умолчанию. Пользовательские реализации могут получить экземпляр реализации по умолчанию, вызвав TextClassifierService.getDefaultTextClassifierImplementation(Context)
. Дополнительные сведения см. в разделе «Реализация пользовательской службы классификатора текста» .
Тестирование
Чтобы проверить реализацию службы классификатора текста, используйте тесты набора тестов совместимости (CTS) в platform/cts/tests/tests/textclassifier/
.
Улучшения классификатора текста в Android 10
В Android 10 в API TextClassifier представлены два метода: suggestConversationActions
detectLanguage
. Метод suggestConversationActions
генерирует предлагаемые ответы и действия на основе данного разговора, а метод detectLanguage
определяет язык текста.
Файлы моделей для этих методов показаны ниже и их можно найти в external/libtextclassifier/models/
.
-
suggestionConversationActions
:actions_suggestions.universal.model
-
detectLanguage
:lang_id.model
Чтобы выпустить устройство с файлами последней модели в заводском образе, выполните следующие действия:
Загрузите файлы последней модели.
external/libtextclassifier/models/update.sh
- Переименуйте загруженные файлы, чтобы заменить существующие.
- Проверьте настройку.
adb shell dumpsys textclassification
Это пример вывода этой команды.
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
Android 9 расширил структуру классификации текста, представленную в Android 8.1, за счет новой службы классификатора текста. Служба классификатора текста — это рекомендуемый OEM-производителям способ обеспечить поддержку системы классификации текста. Служба классификатора текста может быть частью любого системного APK и при необходимости обновляться.
Android 9 включает реализацию службы классификатора текста по умолчанию ( TextClassifierImpl
), которая используется, если вы не замените ее собственной реализацией службы классификатора текста.
Реализация пользовательской службы классификатора текста
В следующих разделах описывается, как реализовать разработанную вами службу классификатора текста.
Расширьте 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) { ... } ... }
Определите службу в манифесте Android
[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>
Обратите внимание, что для службы требуется разрешение android.permission.BIND_TEXTCLASSIFIER_SERVICE
и необходимо указать действие намерения android.service.textclassifier.TextClassifierService
.
Установите системную службу классификатора текста по умолчанию в наложении конфигурации.
[ конфиг.xml ]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
Встройте службу классификатора текста в образ системы.
Пользовательская служба классификатора текста может представлять собой отдельный APK-файл, встроенный в образ системы, или часть другого системного APK-файла. Система использует PackageManager.MATCH_SYSTEM_ONLY
для разрешения службы.
Тестирование
Запустите тесты в android.view.textclassifier.cts
.
Другие изменения классификации текста в Android 9
См . Проверка установленных языковых модулей .
Файлы моделей Android 9 несовместимы с файлами моделей Android 8.x.
Файлы моделей Android 9 имеют шаблон именования: texclassifier.[language-code].model
(например, textclassifier.en.model
) вместо textclassifier.smartselection.en.model
в Android 8.x.
Получите последние файлы модели классификации текста.
Чтобы получить самые актуальные модели, можно запустить следующий скрипт, который обновляет модели TextClassifier в дереве исходного кода:
external/libtextclassifier/native/models/update.sh
Классификатор текста Android версии 8.1
В Android 8.1 появился API TextClassfier для реализации классификации текста.
TextClassificationManager tcm = context.getSystemService(TextClassificationManager.class); TextClassifier classifier = tcm.getTextClassifier(); TextSelection selection = classifier.suggestSelection(...); TextClassification classification = classifier.classifyText(...);
Разработчики могут установить собственный классификатор текста:
tcm.setTextClassifier(customTextClassifier);
Но если разработчик приложения устанавливает для классификатора текста значение null
, для getTextClassifier()
возвращается системный классификатор текста по умолчанию.
См. android.view.textclassifier.TextClassifierImpl
.
TextView и WebView используют TextClassifier для интеллектуального выбора и функций интеллектуального обмена текстом.
Модели нейронных сетей TextClassifier
Проект Android с открытым исходным кодом (AOSP) включает ряд моделей нейронных сетей для классификации текста. Каждый файл модели обучен для одного языка. Вы можете установить любую комбинацию моделей. Модели определены в:
external/libtextclassifier/Android.mk
Предварительная установка языковых моделей на устройствах
Вы можете указать пакет языковых моделей и установить их на устройство:
# ----------------------- # 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)
Например, в device/google/marlin/device-common.mk
.
# TextClassifier smart selection model files
PRODUCT_PACKAGES += \
textclassifier.smartselection.bundle1
Проверьте установленные языковые модули
Используйте ADB для вывода списка файлов в каталоге:
$ 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
Обновления модели
Модели можно обновлять либо путем включения новой модели в состав обновления образа системы, либо динамически, используя системный компонент, который запускает обновление через намерение системного API ACTION_UPDATE_SMART_SELECTION
. Передавая это намерение системного API, платформа может обновить языковую модель текущего установленного языка. Сами модели содержат поддерживаемый язык и номер версии, поэтому используется последняя подходящая модель.
Таким образом, вам не нужно предварительно загружать модели для всех языков, поскольку их можно добавить позже. Если файл модели для указанного языка не найден, классификация текста возвращает неактивные значения.
Тесты набора тестов совместимости
Соответствующие тесты пакета тестов совместимости Android (CTS) можно найти в:
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
Классификатор текста использует методы машинного обучения, чтобы помочь разработчикам классифицировать текст.
Классификатор текста версии Android 11
В Android 11 представлена обновляемая реализация службы классификатора текста по умолчанию в модуле ExtServices . На устройствах под управлением Android 11 или более поздней версии метод getTextClassifier()
возвращает реализацию по умолчанию в модуле ExtServices. Производителям устройств рекомендуется использовать эту реализацию TextClassifierService
, поскольку ее можно обновлять через обновления Mainline OTA.
В Android 11 также удалена реализация локального классификатора текста по умолчанию, представленная ранее в Android 8.1 . В результате getLocalTextClassifier()
возвращает текстовый классификатор NO_OP
. Вместо локальной реализации следует использовать метод getDefaultTextClassifierImplementation()
.
Производители устройств, которые могут захотеть использовать свои собственные алгоритмы классификации текста, могут реализовать собственную службу классификатора текста, указав config_defaultTextClassifierPackage
в файле config.xml
. Если эта конфигурация не указана, используется системная реализация по умолчанию. Пользовательские реализации могут получить экземпляр реализации по умолчанию, вызвав TextClassifierService.getDefaultTextClassifierImplementation(Context)
. Дополнительные сведения см. в разделе «Реализация пользовательской службы классификатора текста» .
Тестирование
Чтобы проверить реализацию службы классификатора текста, используйте тесты набора тестов совместимости (CTS) в platform/cts/tests/tests/textclassifier/
.
Улучшения классификатора текста в Android 10
В Android 10 в API TextClassifier представлены два метода: suggestConversationActions
detectLanguage
. Метод suggestConversationActions
генерирует предлагаемые ответы и действия на основе данного разговора, а метод detectLanguage
определяет язык текста.
Файлы моделей для этих методов показаны ниже и их можно найти в external/libtextclassifier/models/
.
-
suggestionConversationActions
:actions_suggestions.universal.model
-
detectLanguage
:lang_id.model
Чтобы выпустить устройство с файлами последней модели в заводском образе, выполните следующие действия:
Загрузите файлы последней модели.
external/libtextclassifier/models/update.sh
- Переименуйте загруженные файлы, чтобы заменить существующие.
- Проверьте настройку.
adb shell dumpsys textclassification
Это пример вывода этой команды.
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
Android 9 расширил структуру классификации текста, представленную в Android 8.1, за счет новой службы классификатора текста. Служба классификатора текста — это рекомендуемый OEM-производителям способ обеспечить поддержку системы классификации текста. Служба классификатора текста может быть частью любого системного APK и при необходимости обновляться.
Android 9 включает реализацию службы классификатора текста по умолчанию ( TextClassifierImpl
), которая используется, если вы не замените ее собственной реализацией службы классификатора текста.
Реализация пользовательской службы классификатора текста
В следующих разделах описывается, как реализовать разработанную вами службу классификатора текста.
Расширьте 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) { ... } ... }
Определите службу в манифесте Android
[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>
Обратите внимание, что для службы должно потребоваться разрешение android.permission.BIND_TEXTCLASSIFIER_SERVICE
и должно быть указано действие намерения android.service.textclassifier.TextClassifierService
.
Установите системную службу классификатора текста по умолчанию в наложении конфигурации.
[ конфиг.xml ]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
Встройте службу классификатора текста в образ системы.
Пользовательская служба классификатора текста может представлять собой отдельный APK-файл, встроенный в образ системы, или часть другого системного APK-файла. Система использует PackageManager.MATCH_SYSTEM_ONLY
для разрешения службы.
Тестирование
Запустите тесты в android.view.textclassifier.cts
.
Другие изменения классификации текста в Android 9
См . Проверка установленных языковых модулей .
Файлы моделей Android 9 несовместимы с файлами моделей Android 8.x.
Файлы моделей Android 9 имеют шаблон именования: texclassifier.[language-code].model
(например, textclassifier.en.model
) вместо textclassifier.smartselection.en.model
в Android 8.x.
Получите последние файлы модели классификации текста.
Чтобы получить самые актуальные модели, можно запустить следующий скрипт, который обновляет модели TextClassifier в дереве исходного кода:
external/libtextclassifier/native/models/update.sh
Классификатор текста Android версии 8.1
В Android 8.1 появился API TextClassfier для реализации классификации текста.
TextClassificationManager tcm = context.getSystemService(TextClassificationManager.class); TextClassifier classifier = tcm.getTextClassifier(); TextSelection selection = classifier.suggestSelection(...); TextClassification classification = classifier.classifyText(...);
Разработчики могут установить собственный классификатор текста:
tcm.setTextClassifier(customTextClassifier);
Но если разработчик приложения устанавливает для классификатора текста значение null
, для getTextClassifier()
возвращается системный классификатор текста по умолчанию.
См. android.view.textclassifier.TextClassifierImpl
.
TextView и WebView используют TextClassifier для интеллектуального выбора и функций интеллектуального обмена текстом.
Модели нейронных сетей TextClassifier
Проект Android с открытым исходным кодом (AOSP) включает ряд моделей нейронных сетей для классификации текста. Каждый файл модели обучен для одного языка. Вы можете установить любую комбинацию моделей. Модели определены в:
external/libtextclassifier/Android.mk
Предварительная установка языковых моделей на устройствах
Вы можете указать пакет языковых моделей и установить их на устройство:
# ----------------------- # 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)
Например, в device/google/marlin/device-common.mk
.
# TextClassifier smart selection model files
PRODUCT_PACKAGES += \
textclassifier.smartselection.bundle1
Проверьте установленные языковые модули
Используйте ADB для вывода списка файлов в каталоге:
$ 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
Обновления модели
Модели можно обновлять либо путем включения новой модели в состав обновления образа системы, либо динамически, используя системный компонент, который запускает обновление через намерение системного API ACTION_UPDATE_SMART_SELECTION
. Передавая это намерение системного API, платформа может обновлять языковую модель текущего установленного языка. Сами модели содержат поддерживаемый язык и номер версии, поэтому используется последняя подходящая модель.
Таким образом, вам не нужно предварительно загружать модели для всех языков, поскольку их можно добавить позже. Если файл модели для указанного языка не найден, классификация текста возвращает неактивные значения.
Тесты набора тестов совместимости
Соответствующие тесты пакета тестов совместимости Android (CTS) можно найти в:
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
Классификатор текста использует методы машинного обучения, чтобы помочь разработчикам классифицировать текст.
Классификатор текста версии Android 11
В Android 11 представлена обновляемая реализация службы классификатора текста по умолчанию в модуле ExtServices . На устройствах под управлением Android 11 или более поздней версии метод getTextClassifier()
возвращает реализацию по умолчанию в модуле ExtServices. Производителям устройств рекомендуется использовать эту реализацию TextClassifierService
, поскольку ее можно обновлять через обновления Mainline OTA.
В Android 11 также удалена реализация локального классификатора текста по умолчанию, представленная ранее в Android 8.1 . В результате getLocalTextClassifier()
возвращает текстовый классификатор NO_OP
. Вместо локальной реализации следует использовать метод getDefaultTextClassifierImplementation()
.
Производители устройств, которые могут захотеть использовать свои собственные алгоритмы классификации текста, могут реализовать собственную службу классификатора текста, указав config_defaultTextClassifierPackage
в файле config.xml
. Если эта конфигурация не указана, используется системная реализация по умолчанию. Пользовательские реализации могут получить экземпляр реализации по умолчанию, вызвав TextClassifierService.getDefaultTextClassifierImplementation(Context)
. Дополнительные сведения см. в разделе «Реализация пользовательской службы классификатора текста» .
Тестирование
Чтобы проверить реализацию службы классификатора текста, используйте тесты набора тестов совместимости (CTS) в platform/cts/tests/tests/textclassifier/
.
Улучшения классификатора текста в Android 10
В Android 10 в API TextClassifier представлены два метода: suggestConversationActions
detectLanguage
. Метод suggestConversationActions
генерирует предлагаемые ответы и действия на основе данного разговора, а метод detectLanguage
определяет язык текста.
Файлы моделей для этих методов показаны ниже и их можно найти в external/libtextclassifier/models/
.
-
suggestionConversationActions
:actions_suggestions.universal.model
-
detectLanguage
:lang_id.model
Чтобы выпустить устройство с файлами последней модели в заводском образе, выполните следующие действия:
Загрузите файлы последней модели.
external/libtextclassifier/models/update.sh
- Переименуйте загруженные файлы, чтобы заменить существующие.
- Проверьте настройку.
adb shell dumpsys textclassification
Это пример вывода этой команды.
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
Android 9 расширил структуру классификации текста, представленную в Android 8.1, за счет новой службы классификатора текста. Служба классификатора текста — это рекомендуемый OEM-производителям способ обеспечить поддержку системы классификации текста. Служба классификатора текста может быть частью любого системного APK и при необходимости обновляться.
Android 9 включает реализацию службы классификатора текста по умолчанию ( TextClassifierImpl
), которая используется, если вы не замените ее собственной реализацией службы классификатора текста.
Реализация пользовательской службы классификатора текста
В следующих разделах описывается, как реализовать разработанную вами службу классификатора текста.
Расширьте 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) { ... } ... }
Определите службу в манифесте Android
[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>
Обратите внимание, что для службы должно потребоваться разрешение android.permission.BIND_TEXTCLASSIFIER_SERVICE
и должно быть указано действие намерения android.service.textclassifier.TextClassifierService
.
Установите системную службу классификатора текста по умолчанию в наложении конфигурации.
[ конфиг.xml ]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
Встройте службу классификатора текста в образ системы.
Пользовательская служба классификатора текста может представлять собой отдельный APK-файл, встроенный в образ системы, или часть другого системного APK-файла. Система использует PackageManager.MATCH_SYSTEM_ONLY
для разрешения службы.
Тестирование
Запустите тесты в android.view.textclassifier.cts
.
Другие изменения классификации текста в Android 9
См . Проверка установленных языковых модулей .
Файлы моделей Android 9 несовместимы с файлами моделей Android 8.x.
Файлы моделей Android 9 имеют шаблон именования: texclassifier.[language-code].model
(например, textclassifier.en.model
) вместо textclassifier.smartselection.en.model
в Android 8.x.
Получите последние файлы модели классификации текста.
Чтобы получить самые актуальные модели, можно запустить следующий скрипт, который обновляет модели TextClassifier в дереве исходного кода:
external/libtextclassifier/native/models/update.sh
Классификатор текста Android версии 8.1
В Android 8.1 появился API TextClassfier для реализации классификации текста.
TextClassificationManager tcm = context.getSystemService(TextClassificationManager.class); TextClassifier classifier = tcm.getTextClassifier(); TextSelection selection = classifier.suggestSelection(...); TextClassification classification = classifier.classifyText(...);
Разработчики могут установить собственный классификатор текста:
tcm.setTextClassifier(customTextClassifier);
Но если разработчик приложения устанавливает для классификатора текста значение null
, для getTextClassifier()
возвращается системный классификатор текста по умолчанию.
См. android.view.textclassifier.TextClassifierImpl
.
TextView и WebView используют TextClassifier для интеллектуального выбора и функций интеллектуального обмена текстом.
Модели нейронной сети TextClassifier
Проект Android с открытым исходным кодом (AOSP) включает ряд моделей нейронных сетей для классификации текста. Каждый файл модели обучен для одного языка. Вы можете установить любую комбинацию моделей. Модели определены в:
external/libtextclassifier/Android.mk
Предварительная установка языковых моделей на устройствах
Вы можете указать пакет языковых моделей и установить их на устройство:
# ----------------------- # 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)
Например, в device/google/marlin/device-common.mk
.
# TextClassifier smart selection model files
PRODUCT_PACKAGES += \
textclassifier.smartselection.bundle1
Проверьте установленные языковые модули
Используйте ADB для вывода списка файлов в каталоге:
$ 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
Обновления модели
Модели можно обновлять либо путем включения новой модели в состав обновления образа системы, либо динамически, используя системный компонент, который запускает обновление через намерение системного API ACTION_UPDATE_SMART_SELECTION
. Передавая это намерение системного API, платформа может обновить языковую модель текущего установленного языка. Сами модели содержат поддерживаемый язык и номер версии, поэтому используется последняя подходящая модель.
Таким образом, вам не нужно предварительно загружать модели для всех языков, поскольку их можно добавить позже. Если файл модели для указанного языка не найден, классификация текста возвращает неактивные значения.
Тесты набора тестов совместимости
Соответствующие тесты пакета тестов совместимости Android (CTS) можно найти в:
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