С помощью ML Kit можно определить язык текстовой строки. Вы можете получить наиболее вероятный язык строки, а также оценки достоверности для всех возможных языков строки.
ML Kit распознает текст более чем на 100 различных языках в их исходных системах письма. Кроме того, распознается романизированный текст на арабском, болгарском, китайском, греческом, хинди, японском и русском языках. См. полный список поддерживаемых языков и систем письма.
| В комплекте | Разобран | |
|---|---|---|
| Название библиотеки | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
| Выполнение | Модель статически связывается с вашим приложением во время сборки. | Модель загружается динамически через сервисы Google Play. |
| влияние размера приложения | Увеличение размера примерно на 900 КБ. | Размер увеличился примерно на 200 КБ. |
| Время инициализации | Модель доступна немедленно. | Возможно, придётся подождать, пока модель загрузится, прежде чем использовать её в первый раз. |
Попробуйте!
- Поэкспериментируйте с примером приложения , чтобы увидеть, как используется этот API.
Прежде чем начать
В файле
build.gradleна уровне проекта обязательно укажите репозиторий Maven от Google в разделахbuildscriptиallprojects.Добавьте зависимости для библиотек ML Kit Android в файл 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. // ... }
Java
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())
Java
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. // ... }
Java
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())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
Если ни один язык не соответствует этому порогу, список содержит один элемент со значением und .