Identifizieren Sie die Textsprache mit ML Kit auf Android

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. Wenn Sie nicht bereits haben, fügen Sie Firebase zu dem Android - Projekt .
  2. Fügen Sie die Abhängigkeiten für die ML Kit Android - Bibliotheken zu Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel 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 zu einer Zeichenfolge zu identifizieren, erhält eine Instanz von FirebaseLanguageIdentification und dann die Zeichenfolge übergeben an die identifyLanguage() Methode.

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 , ein BCP-47 Sprachcode ist für den Erfolg Zuhörer weitergegeben, die Sprache des Textes angibt. Siehe die vollständige Liste der unterstützten Sprachen . Wenn keine Sprache sicher festgestellt werden kann, wird der Code und wird (nicht bestimmt) geleitet.

Standardmäßig gibt ML Kit einen anderen Wert als und nur dann , wenn sie die Sprache mit einem Vertrauenswert von mindestens 0,5 identifiziert. Sie können diese Schwelle ändern , um ein , indem FirebaseLanguageIdentificationOptions Objekt getLanguageIdentification() :

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

Holen Sie sich die möglichen Sprachen eines Strings

Um die Vertrauenswerte eines Strings ist höchstwahrscheinlich Sprachen zu erhalten, erhalten eine Instanz von FirebaseLanguageIdentification und dann die Zeichenfolge übergeben an die identifyAllLanguages() Methode.

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 ist Objekte zum Erfolg Zuhörer weitergegeben. Von jedem Objekt können Sie den BCP-47-Code der Sprache und die Sicherheit, dass die Zeichenfolge in dieser Sprache vorliegt, abrufen. Siehe die vollständige Liste der unterstützten Sprachen . 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 diese Schwelle ändern , um ein , indem FirebaseLanguageIdentificationOptions Objekt getLanguageIdentification() :

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

Wenn keine Sprache diese Schwelle erreicht, wird die Liste ein Element hat, mit dem Wert und .