Задача MediaPipe Language Detector позволяет определить язык фрагмента текста. В этих инструкциях показано, как использовать детектор языка с приложениями для Android. Пример кода, описанный в этой инструкции, доступен на GitHub .
Увидеть эту задачу в действии можно, просмотрев демо-версию . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Пример кода
В примере кода Language Detector представлена простая реализация этой задачи. Этот код поможет вам протестировать эту задачу и приступить к созданию собственной функции определения языка. Вы можете просмотреть пример кода Language Detector на GitHub.
Загрузите код
Следующие инструкции показывают, как создать локальную копию примера кода с помощью инструмента командной строки управления версиями git .
Чтобы загрузить пример кода:
- Клонируйте репозиторий git, используя следующую команду:
git clone https://github.com/google-ai-edge/mediapipe-samples
- При желании настройте свой экземпляр git на использование разреженной проверки, чтобы у вас были только файлы для примера приложения Language Detector:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/languagedetector/android
Инструкции по настройке и запуску примера с помощью Android Studio см. в инструкциях по настройке примера кода в Руководстве по установке для Android .
Ключевые компоненты
Следующие файлы содержат важный код для примера приложения классификации текста:
- LanguageDetectorHelper.kt — инициализирует детектор языка и обрабатывает выбор модели.
- ResultAdapter.kt — обрабатывает и форматирует результаты обнаружения.
- MainActivity.kt — реализует приложение, включая вызов
LanguageDetectorHelper
ResultsAdapter
.
Настраивать
В этом разделе описаны ключевые шаги по настройке среды разработки и проектов кода специально для использования Language Detector. Общие сведения о настройке среды разработки для использования задач MediaPipe, включая требования к версии платформы, см. в руководстве по настройке для Android .
Зависимости
Language Detector использует библиотеки com.google.mediapipe:tasks-text
. Добавьте эту зависимость в файл build.gradle
вашего проекта разработки приложения для Android. Вы можете импортировать необходимые зависимости с помощью следующего кода:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Модель
Для задачи «Детектор языка MediaPipe» требуется обученная модель, совместимая с этой задачей. Дополнительную информацию о доступных обученных моделях для Language Detector смотрите в разделе «Модели обзора задач».
Выберите и загрузите модель, а затем сохраните ее в каталоге вашего проекта:
<dev-project-root>/src/main/assets
Укажите путь к модели в параметре ModelName
.
Создать задачу
Для создания задачи вы можете использовать одну из функций createFrom...()
. Функция createFromOptions()
принимает параметры конфигурации детектора языка. Вы также можете инициализировать задачу с помощью фабричной функции createFromFile()
. Функция createFromFile()
принимает относительный или абсолютный путь к файлу обученной модели. Дополнительные сведения о настройке задач см. в разделе Параметры конфигурации .
Следующий код демонстрирует, как создать и настроить эту задачу.
// For creating a language detector instance:
LanguageDetectorOptions options =
LanguageDetectorOptions.builder()
.setBaseOptions(
BaseOptions.builder()
.setModelAssetPath(modelPath)
.build()
)
.build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);
Пример создания задачи вы можете увидеть в примере кода функции initDetector()
класса LanguageDetectorHelper .
Варианты конфигурации
Эта задача имеет следующие параметры конфигурации для приложений Android:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
maxResults | Устанавливает необязательное максимальное количество возвращаемых языковых подсказок с наибольшим количеством оценок. Если это значение меньше нуля, возвращаются все доступные результаты. | Любые положительные числа | -1 |
scoreThreshold | Устанавливает порог оценки прогноза, который переопределяет тот, который указан в метаданных модели (если таковые имеются). Результаты ниже этого значения отклоняются. | Любой плавающий | Не установлено |
categoryAllowlist | Устанавливает дополнительный список разрешенных кодов языков. Если оно не пусто, языковые прогнозы, код языка которых отсутствует в этом наборе, будут отфильтрованы. Эта опция является взаимоисключающей с categoryDenylist , и использование обеих приводит к ошибке. | Любые строки | Не установлено |
categoryDenylist | Устанавливает дополнительный список кодов языков, которые не разрешены. Если оно не пусто, языковые прогнозы, код языка которых находится в этом наборе, будут отфильтрованы. Этот параметр является взаимоисключающим с categoryAllowlist , и использование обоих приводит к ошибке. | Любые строки | Не установлено |
Подготовьте данные
Language Detector работает с текстовыми ( String
) данными. Задача выполняет предварительную обработку входных данных, включая токенизацию и предварительную обработку тензоров. Вся предварительная обработка выполняется внутри функции detect()
. Предварительная дополнительная обработка входного текста не требуется.
String inputText = "Some input text for the language detector";
Запустить задачу
Детектор языка использует метод LanguageDetector.detect()
для обработки входного текста и прогнозирования языка текста. Для выполнения обнаружения следует использовать отдельный поток выполнения, чтобы избежать блокировки потока пользовательского интерфейса Android вашим приложением.
Следующий код демонстрирует, как выполнить обработку с помощью модели задачи, используя отдельный поток выполнения.
// Predict the language of the input text.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = languageDetector.detect(text)
listener.onResult(results)
}
}
Вы можете увидеть пример запуска задачи в примере кода функции detect()
класса LanguageDetectorHelper .
Обработка и отображение результатов
Детектор языка выводит LanguageDetectorResult
, состоящий из списка языковых прогнозов, а также вероятностей этих прогнозов. Категории языков определены в модели. Подробную информацию об используемой вами модели см. в разделе «Модели обзора задач».
Ниже показан пример выходных данных этой задачи:
LanguageDetectorResult:
LanguagePrediction #0:
language_code: "fr"
probability: 0.999781
Этот результат был получен путем запуска модели на входном тексте: "Il ya beaucoup de bouches qui parlent et fort peu de têtes qui pensent."
.
Вы можете увидеть пример отображения результатов в примере кода классаResultAdapter и внутреннего класса ViewHolder
.