Identyfikowanie języka tekstu za pomocą ML Kit na Androida

Za pomocą pakietu ML Kit możesz określić język ciągu tekstowego. Możesz uzyskać najbardziej prawdopodobny język ciągu lub uzyskać wskaźniki ufności dla wszystkich możliwych języków ciągu.

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

Zanim zaczniesz

  1. Dodaj Firebase do swojego projektu Android, chyba że masz to już za sobą.
  2. Dodaj zależności bibliotek ML Kit na Androida 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'
    }
    

Określ język ciągu

Aby zidentyfikować język ciągu, uzyskaj wystąpienie FirebaseLanguageIdentification, a następnie przekaż ciąg znaków do metody identifyLanguage().

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, do detektora sukcesu zostanie przekazany kod języka BCP-47 wskazujący język tekstu. Zobacz pełną listę obsługiwanych języków. Jeśli języka nie uda się wykryć z wiarygodnością, przekazywany jest kod und (nieokreślony).

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());

Znajdź możliwe języki ciągu

Aby uzyskać wartości ufności dla najbardziej prawdopodobnego języka ciągu, pobierz wystąpienie FirebaseLanguageIdentification i przekaż ciąg do metody identifyAllLanguages().

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 się powiedzie, do detektora sukcesu zostanie przekazana lista obiektów IdentifiedLanguage. Z każdego obiektu możesz uzyskać kod języka BCP-47 i pewność, że ciąg znaków jest w tym języku. Zobacz pełną listę obsługiwanych języków. Pamiętaj, że te wartości dają pewność, że cały ciąg jest w danym języku. ML Kit nie rozpoznaje wielu języków w 1 ciągu znaków.

Domyślnie ML Kit zwraca tylko języki o poziomie ufności wynoszącym 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 osiąga tego progu, na liście będzie znajdować się 1 element o wartości und.