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 pour l'arabe, le bulgare, le chinois, le grec, l'hindi, le japonais et le russe.
Avant que tu commences
- Si vous ne l'avez pas déjà fait, ajoutez Firebase à votre projet Android .
- 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'écouteur de succès, 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 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 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 succès. À partir de chaque objet, vous pouvez obtenir le code BCP-47 du langage et la certitude 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 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 contiendra un élément, avec la valeur und
.