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 dans les différentes langues possibles.

ML Kit reconnaît du texte dans 103 langues différentes dans son écriture native. Le texte romanisé est également reconnu pour les langues suivantes : arabe, bulgare, chinois, grec, hindi, japonais et russe.

Avant de commencer

  1. Si ce n'est pas déjà fait, Ajoutez Firebase à votre projet Android.
  2. Ajouter les dépendances des bibliothèques Android ML Kit à votre module Fichier Gradle (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, récupérez une instance de FirebaseLanguageIdentification, puis transmettez la chaîne à la fonction identifyLanguage().

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 aboutit, une Le code de langue BCP-47 est transmis à l'écouteur de réussite, indiquant la langue du texte. Consultez le liste complète des langues acceptées Si non langue peut être détectée avec certitude, le code und (indéterminé) est transmis.

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

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

Obtenir 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 identifyAllLanguages().

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 aboutit, une liste d'objets IdentifiedLanguage est transmise à écouteur de réussite. À partir de chaque objet, vous pouvez obtenir le code BCP-47 du langage et le niveau de confiance de la chaîne dans cette langue. Consultez le liste complète des langues acceptées Notez que ces valeurs indiquent le niveau de confiance 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 ne renvoie que les langues dont le niveau de confiance est au moins égal 0,01. Vous pouvez modifier ce seuil en transmettant 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, dont la valeur und