Mit ML Kit unter Android die Sprache eines Textes ermitteln

Sie können ML Kit verwenden, um die Sprache einer Textzeichenfolge zu identifizieren. Sie können die wahrscheinlichste Sprache der Zeichenfolge oder Konfidenzwerte für alle möglichen Sprachen der Zeichenfolge abrufen.

ML Kit erkennt Text in 103 verschiedenen Sprachen in ihren nativen Skripten. Darüber hinaus kann romanisierter Text für Arabisch, Bulgarisch, Chinesisch, Griechisch, Hindi, Japanisch und Russisch erkannt werden.

Bevor Sie beginnen

  1. Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls Sie dies noch nicht getan haben .
  2. Fügen Sie die Abhängigkeiten für die ML Kit-Android-Bibliotheken zu Ihrer Modul-Gradle-Datei (auf App-Ebene) hinzu (normalerweise 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'
    }
    

Identifizieren Sie die Sprache einer Zeichenfolge

Rufen Sie zum Identifizieren der Sprache einer Zeichenfolge eine Instanz von FirebaseLanguageIdentification und übergeben Sie die Zeichenfolge dann an die Methode identifyLanguage() .

Zum Beispiel:

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

Wenn der Aufruf erfolgreich ist, wird ein BCP-47-Sprachcode an den Erfolgs-Listener weitergegeben, der die Sprache des Textes angibt. Sehen Sie sich die vollständige Liste der unterstützten Sprachen an . Konnte keine Sprache sicher erkannt werden, wird der Code und (unbestimmt) übergeben.

Standardmäßig gibt ML Kit nur dann einen anderen Wert als und zurück, wenn es die Sprache mit einem Konfidenzwert von mindestens 0,5 identifiziert. Sie können diesen Schwellenwert ändern, indem Sie ein FirebaseLanguageIdentificationOptions -Objekt an getLanguageIdentification() :

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

Holen Sie sich die möglichen Sprachen einer Zeichenfolge

Um die Konfidenzwerte der wahrscheinlichsten Sprachen einer Zeichenfolge abzurufen, rufen Sie eine Instanz von FirebaseLanguageIdentification ab und übergeben Sie die Zeichenfolge dann an die Methode identifyAllLanguages() .

Zum Beispiel:

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

Wenn der Aufruf erfolgreich ist, wird eine Liste von IdentifiedLanguage -Objekten an den Erfolgs-Listener übergeben. Von jedem Objekt können Sie den BCP-47-Code der Sprache und die Gewissheit abrufen, dass die Zeichenfolge in dieser Sprache vorliegt. Sehen Sie sich die vollständige Liste der unterstützten Sprachen an . Beachten Sie, dass diese Werte das Vertrauen angeben, dass die gesamte Zeichenfolge in der angegebenen Sprache vorliegt; ML Kit identifiziert nicht mehrere Sprachen in einer einzigen Zeichenfolge.

Standardmäßig gibt ML Kit nur Sprachen mit Konfidenzwerten von mindestens 0,01 zurück. Sie können diesen Schwellenwert ändern, indem Sie ein FirebaseLanguageIdentificationOptions -Objekt an getLanguageIdentification() :

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

Wenn keine Sprache diesen Schwellenwert erreicht, enthält die Liste ein Element mit dem Wert und .