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 Texte 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. Falls noch nicht geschehen, fügen Sie Firebase zu Ihrem Android-Projekt hinzu .
  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

Um die Sprache einer Zeichenfolge zu identifizieren, rufen Sie eine Instanz von FirebaseLanguageIdentification ab 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 Erfolgslistener übergeben, der die Sprache des Textes angibt. Sehen Sie sich die vollständige Liste der unterstützten Sprachen an. Wenn keine Sprache sicher erkannt werden konnte, 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() übergeben:

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

Ermitteln Sie die möglichen Sprachen einer Zeichenfolge

Um die Konfidenzwerte der wahrscheinlichsten Sprachen einer Zeichenfolge zu erhalten, 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 Erfolgslistener ü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 die Sicherheit 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() übergeben:

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 .