Вы можете использовать ML Kit для определения языка строки текста. Вы можете получить наиболее вероятный язык строки, а также оценки достоверности для всех возможных языков строки.
ML Kit распознает текст на более чем 100 различных языках в их родных скриптах. Кроме того, латинизированный текст может быть распознан для арабского, болгарского, китайского, греческого, хинди, японского и русского языков. См. полный список поддерживаемых языков и скриптов.
В комплекте | Разделенный | |
---|---|---|
Название библиотеки | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Выполнение | Модель статически привязывается к вашему приложению во время сборки. | Модель динамически загружается через Google Play Services. |
Влияние размера приложения | Увеличение размера примерно на 900 КБ. | Увеличение размера примерно на 200 КБ. |
Время инициализации | Модель доступна немедленно. | Возможно, придется подождать, пока модель загрузится перед первым использованием. |
Попробуйте это
- Поэкспериментируйте с образцом приложения , чтобы увидеть пример использования этого API.
Прежде чем начать
В файле
build.gradle
на уровне проекта обязательно включите репозиторий Maven от Google в разделыbuildscript
иallprojects
.Добавьте зависимости для библиотек Android ML Kit в файл gradle уровня приложения вашего модуля, который обычно называется
app/build.gradle
. Выберите одну из следующих зависимостей в зависимости от ваших потребностей:Для объединения модели с вашим приложением:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
Для использования модели в Google Play Services:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0' }
Если вы решили использовать модель в Google Play Services , вы можете настроить свое приложение на автоматическую загрузку модели на устройство после установки приложения из Play Store. Для этого добавьте следующее объявление в файл
AndroidManifest.xml
вашего приложения:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Вы также можете явно проверить доступность модели и запросить загрузку через API ModuleInstallClient сервисов Google Play.
Если вы не включите загрузку модели во время установки или не запросите явную загрузку, модель будет загружена при первом запуске идентификатора. Запросы, которые вы делаете до завершения загрузки, не дадут никаких результатов.
Определите язык строки
Чтобы определить язык строки, вызовите LanguageIdentification.getClient()
для получения экземпляра LanguageIdentifier
, а затем передайте строку методу identifyLanguage()
объекта LanguageIdentifier
.
Например:
Котлин
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyLanguage(text) .addOnSuccessListener { languageCode -> if (languageCode == "und") { Log.i(TAG, "Can't identify language.") } else { Log.i(TAG, "Language: $languageCode") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Ява
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyLanguage(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@Nullable String languageCode) { if (languageCode.equals("und")) { Log.i(TAG, "Can't identify language."); } else { Log.i(TAG, "Language: " + languageCode); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
Если вызов успешен, то код языка BCP-47 передается слушателю успеха, указывающему язык текста. Если язык не обнаружен уверенно, передается код und
(неопределено).
По умолчанию ML Kit возвращает значение, отличное от und
, только когда он идентифицирует язык с доверительным значением не менее 0,5. Вы можете изменить этот порог, передав объект LanguageIdentificationOptions
в getClient()
:
Котлин
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Ява
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
Получить возможные языки строки
Чтобы получить значения достоверности наиболее вероятных языков строки, получите экземпляр LanguageIdentifier
, а затем передайте строку методу identifyPossibleLanguages()
.
Например:
Котлин
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener { identifiedLanguages -> for (identifiedLanguage in identifiedLanguages) { val language = identifiedLanguage.languageTag val confidence = identifiedLanguage.confidence Log.i(TAG, "$language $confidence") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Ява
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() { @Override public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) { for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) { String language = identifiedLanguage.getLanguageTag(); float confidence = identifiedLanguage.getConfidence(); Log.i(TAG, language + " (" + confidence + ")"); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
Если вызов успешен, список объектов IdentifiedLanguage
передается прослушивателю успеха. Из каждого объекта вы можете получить код языка BCP-47 и уверенность в том, что строка находится на этом языке. Обратите внимание, что эти значения указывают уверенность в том, что вся строка находится на данном языке; ML Kit не идентифицирует несколько языков в одной строке.
По умолчанию ML Kit возвращает только языки со значениями достоверности не менее 0,01. Вы можете изменить этот порог, передав объект LanguageIdentificationOptions
в getClient()
:
Котлин
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Ява
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
Если ни один язык не соответствует этому пороговому значению, в списке остается один элемент со значением und
.