Zidentyfikuj język tekstu za pomocą ML Kit na Androida

Możesz użyć ML Kit do identyfikacji języka ciągu tekstu. Możesz uzyskać najbardziej prawdopodobny język ciągu lub uzyskać oceny ufności dla wszystkich możliwych języków ciągu.

ML Kit rozpoznaje tekst w 103 różnych językach w ich natywnych skryptach. Ponadto zromanizowany tekst można rozpoznać w językach arabskim, bułgarskim, chińskim, greckim, hindi, japońskim i rosyjskim.

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .
  2. Dodaj zależności dla bibliotek ML Kit dla systemu Android do pliku Gradle modułu (na poziomie aplikacji) (zwykle 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'
    }
    

Zidentyfikuj język ciągu

Aby zidentyfikować język ciągu, pobierz instancję FirebaseLanguageIdentification , a następnie przekaż ciąg do metody identifyLanguage() .

Na przykład:

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.
              // ...
            }
          });

Jeśli wywołanie się powiedzie, kod języka BCP-47 jest przekazywany do odbiornika sukcesu, wskazując język tekstu. Zobacz pełną listę obsługiwanych języków . Jeśli żaden język nie może być pewnie wykryty, kod und (nieokreślony) jest przekazywany.

Domyślnie ML Kit zwraca wartość inną niż und tylko wtedy, gdy identyfikuje język z wartością ufności co najmniej 0,5. Możesz zmienić ten próg, przekazując obiekt FirebaseLanguageIdentificationOptions do getLanguageIdentification() :

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

Uzyskaj możliwe języki ciągu

Aby uzyskać wartości ufności najbardziej prawdopodobnych języków ciągu, pobierz instancję FirebaseLanguageIdentification , a następnie przekaż ciąg do metody identifyAllLanguages() .

Na przykład:

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.
              // ...
            }
          });

Jeśli wywołanie powiedzie się, lista obiektów IdentifiedLanguage jest przekazywana do odbiornika sukcesu. Z każdego obiektu można uzyskać kod BCP-47 języka i pewność, że ciąg jest w tym języku. Zobacz pełną listę obsługiwanych języków . Zauważ, że te wartości wskazują pewność, że cały ciąg jest w danym języku; ML Kit nie identyfikuje wielu języków w jednym ciągu.

Domyślnie ML Kit zwraca tylko języki o wartościach ufności co najmniej 0,01. Możesz zmienić ten próg, przekazując obiekt FirebaseLanguageIdentificationOptions do getLanguageIdentification() :

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

Jeśli żaden język nie spełnia tego progu, lista będzie zawierać jedną pozycję o wartości und .