Определите язык текста с помощью ML Kit на Android

Вы можете использовать ML Kit для определения языка текстовой строки. Вы можете получить наиболее вероятный язык строки или получить оценки достоверности для всех возможных языков строки.

ML Kit распознает текст на 103 различных языках в их родном алфавите. Кроме того, латинизированный текст можно распознать на арабском, болгарском, китайском, греческом, хинди, японском и русском языках.

Прежде чем вы начнете

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
  2. Добавьте зависимости для библиотек Android ML Kit в файл Gradle вашего модуля (на уровне приложения) (обычно app/build.gradle ):
    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
      // ...
    
      implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
      implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7'
    }
    

Определить язык строки

Чтобы определить язык строки, получите экземпляр FirebaseLanguageIdentification , а затем передайте строку identifyLanguage() .

Например:

FirebaseLanguageIdentification languageIdentifier =
        FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyLanguage(text)
      .addOnSuccessListener(
          new OnSuccessListener<String>() {
            @Override
            public void onSuccess(@Nullable String languageCode) {
              if (languageCode != "und") {
                Log.i(TAG, "Language: " + languageCode);
              } else {
                Log.i(TAG, "Can't identify language.");
              }
            }
          })
      .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. Вы можете изменить этот порог, передав объект FirebaseLanguageIdentificationOptions в getLanguageIdentification() :

FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
        .getInstance()
        .getLanguageIdentification(
                new FirebaseLanguageIdentificationOptions.Builder()
                        .setIdentifyLanguageConfidenceThreshold(0.34f)
                        .build());

Получить возможные языки строки

Чтобы получить значения достоверности наиболее вероятных языков строки, получите экземпляр FirebaseLanguageIdentification , а затем передайте строку identifyAllLanguages() .

Например:

FirebaseLanguageIdentification languageIdentifier =
        FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyAllLanguages(text)
      .addOnSuccessListener(
          new OnSuccessListener<String>() {
            @Override
            public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) {
              for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) {
                String language = identifiedLanguage.getLanguageCode();
                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. Вы можете изменить этот порог, передав объект FirebaseLanguageIdentificationOptions в getLanguageIdentification() :

FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
        .getInstance()
        .getLanguageIdentification(
                new FirebaseLanguageIdentificationOptions.Builder()
                        .setIdentifyAllLanguagesConfidenceThreshold(0.5f)
                        .build());

Если ни один язык не соответствует этому порогу, в списке будет один элемент со значением und .