Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

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

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
  2. Добавьте зависимости для библиотек ML Kit Android в файл 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 .