Określ język tekstu za pomocą ML Kit na Androidzie

Za pomocą pakietu ML Kit możesz określić język ciągu tekstowego. Dostępne opcje możesz pobrać 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ęzykach arabskim, bułgarskim, chińskim, greckim, hindi, japońskim i rosyjskim.

Zanim zaczniesz

  1. Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.
  2. Dodaj do modułu zależności między bibliotekami ML Kit na Androida Plik Gradle (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 określić język ciągu, pobierz wystąpienie FirebaseLanguageIdentification, a następnie przekaż ten ciąg do funkcji Metoda 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, Kod języka BCP-47 to do detektora powodzenia, wskazując język tekstu. Zobacz pełną listę obsługiwanych języków. Jeśli nie .und

Domyślnie ML Kit zwraca wartość inną niż und tylko wtedy, gdy identyfikuje język z wartością ufności równą 0,5. Możesz to zmienić 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 najbardziej prawdopodobnych języków ciągu, pobierz metodę wystąpienie FirebaseLanguageIdentification, a następnie przekazać ciąg znaków do funkcji Metoda 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, lista obiektów IdentifiedLanguage zostanie przekazana do funkcji słuchaczem sukcesu. Z każdego obiektu możesz pobrać kod BCP-47 języka pewność, że tekst jest w tym języku. Zobacz pełną listę obsługiwanych języków. Pamiętaj, że te wartości wskazują pewność, że cały ciąg jest w danym język; ML Kit nie identyfikuje wielu języków w 1 ciągu znaków.

Domyślnie ML Kit zwraca tylko te języki, w przypadku których poziom ufności wynosi co najmniej 0,01. Możesz zmienić ten próg, przekazując FirebaseLanguageIdentificationOptions obiekt do getLanguageIdentification():

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

Jeśli żaden język nie spełnia tego progu, na liście będzie znajdować się 1 element z wartością und