Identifier la langue du texte avec ML Kit sur Android

Vous pouvez utiliser ML Kit pour identifier la langue d'une chaîne de texte. Vous pouvez obtenir la langue la plus probable de la chaîne ou obtenir des scores de confiance pour toutes les langues possibles de la chaîne.

ML Kit reconnaît le texte dans 103 langues différentes dans leurs scripts natifs. De plus, le texte romanisé peut être reconnu en arabe, bulgare, chinois, grec, hindi, japonais et russe.

Avant que tu commences

  1. Si vous ne l'avez pas déjà fait, ajoutez Firebase à votre projet Android .
  2. Ajoutez les dépendances des bibliothèques ML Kit Android au fichier Gradle de votre module (au niveau de l'application) (généralement 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'
    }
    

Identifier la langue d'une chaîne

Pour identifier la langue d'une chaîne, obtenez une instance de FirebaseLanguageIdentification , puis transmettez la chaîne à la méthode identifyLanguage() .

Par exemple:

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

Si l'appel réussit, un code de langue BCP-47 est transmis à l'auditeur réussi, indiquant la langue du texte. Consultez la liste complète des langues prises en charge . Si aucune langue n'a pu être détectée avec certitude, le code und (indéterminé) est transmis.

Par défaut, ML Kit renvoie une valeur autre que und uniquement lorsqu'il identifie la langue avec une valeur de confiance d'au moins 0,5. Vous pouvez modifier ce seuil en passant un objet FirebaseLanguageIdentificationOptions à getLanguageIdentification() :

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

Récupère les langues possibles d'une chaîne

Pour obtenir les valeurs de confiance des langues les plus probables d'une chaîne, obtenez une instance de FirebaseLanguageIdentification , puis transmettez la chaîne à la méthode identifyAllLanguages() .

Par exemple:

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

Si l’appel réussit, une liste d’objets IdentifiedLanguage est transmise à l’écouteur de réussite. À partir de chaque objet, vous pouvez obtenir le code BCP-47 du langage et être sûr que la chaîne est dans ce langage. Consultez la liste complète des langues prises en charge . Notez que ces valeurs indiquent la certitude que la chaîne entière est dans la langue donnée ; ML Kit n'identifie pas plusieurs langues dans une seule chaîne.

Par défaut, ML Kit renvoie uniquement les langues avec des valeurs de confiance d'au moins 0,01. Vous pouvez modifier ce seuil en passant un objet FirebaseLanguageIdentificationOptions à getLanguageIdentification() :

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

Si aucune langue n'atteint ce seuil, la liste comportera un élément, avec la valeur und .