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, ainsi que les scores de confiance pour toutes les langues possibles de la chaîne.
ML Kit reconnaît des textes dans plus de 100 langues différentes dans leur écriture native. En outre, le texte romanisé est reconnu pour l'arabe, le bulgare, le chinois, le grec, l'hindi, le japonais et le russe. Consultez la liste complète des langages et scripts acceptés.
Groupée | Sans catégorie | |
---|---|---|
Nom de la bibliothèque | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Implémentation | Le modèle est associé de manière statique à votre application au moment de la compilation. | Le modèle est téléchargé de manière dynamique via les services Google Play. |
Impact sur la taille de l'application | Augmentation de la taille d'environ 900 Ko. | Augmentation de la taille d'environ 200 Ko. |
Délai d'initialisation | Le modèle est disponible immédiatement. | Vous devrez peut-être attendre que le modèle soit téléchargé avant de l'utiliser pour la première fois. |
Essayer
- Jouez avec l'application exemple pour voir un exemple d'utilisation de cette API.
Avant de commencer
Dans le fichier
build.gradle
au niveau du projet, veillez à inclure le dépôt Maven de Google dans vos sectionsbuildscript
etallprojects
.Ajoutez les dépendances des bibliothèques Android ML Kit au fichier Gradle au niveau de l'application de votre module, qui est généralement
app/build.gradle
. Choisissez l'une des dépendances suivantes en fonction de vos besoins:Pour regrouper le modèle avec votre application:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.5' }
Pour utiliser le modèle dans les services Google Play:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0' }
Si vous choisissez d'utiliser le modèle dans les services Google Play, vous pouvez configurer votre application pour qu'elle télécharge automatiquement le modèle sur l'appareil une fois qu'elle a été installée depuis le Play Store. Pour ce faire, ajoutez la déclaration suivante au fichier
AndroidManifest.xml
de votre application:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Vous pouvez également vérifier explicitement la disponibilité du modèle et demander un téléchargement via l'API ModuleInstallClient des services Google Play.
Si vous n'activez pas le téléchargement du modèle au moment de l'installation ou si vous ne demandez pas de téléchargement explicite, le modèle est téléchargé la première fois que vous exécutez l'identifiant. Les requêtes que vous effectuez avant la fin du téléchargement ne produisent aucun résultat.
Identifier la langue d'une chaîne
Pour identifier la langue d'une chaîne, appelez LanguageIdentification.getClient()
pour obtenir une instance de LanguageIdentifier
, puis transmettez la chaîne à la méthode identifyLanguage()
de LanguageIdentifier
.
Exemple :
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyLanguage(text) .addOnSuccessListener { languageCode -> if (languageCode == "und") { Log.i(TAG, "Can't identify language.") } else { Log.i(TAG, "Language: $languageCode") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyLanguage(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@Nullable String languageCode) { if (languageCode.equals("und")) { Log.i(TAG, "Can't identify language."); } else { Log.i(TAG, "Language: " + languageCode); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
Si l'appel aboutit, un code de langue BCP-47 est transmis à l'écouteur de réussite, indiquant la langue du texte. Si aucune langue n'est détectée avec certitude, le code und
(indéterminé) est transmis.
Par défaut, ML Kit ne renvoie une valeur autre que und
que lorsqu'il identifie la langue avec un niveau de confiance supérieur ou égal à 0,5. Vous pouvez modifier ce seuil en transmettant un objet LanguageIdentificationOptions
à getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(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 LanguageIdentifier
, puis transmettez la chaîne à la méthode identifyPossibleLanguages()
.
Exemple :
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener { identifiedLanguages -> for (identifiedLanguage in identifiedLanguages) { val language = identifiedLanguage.languageTag val confidence = identifiedLanguage.confidence Log.i(TAG, "$language $confidence") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() { @Override public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) { for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) { String language = identifiedLanguage.getLanguageTag(); 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 à l'écouteur de réussite. À partir de chaque objet, vous pouvez obtenir le code BCP-47 de la langue et le niveau de confiance que la chaîne est dans cette langue. Notez que ces valeurs indiquent le niveau de confiance de la chaîne entière 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 les valeurs de confiance sont d'au moins 0,01. Vous pouvez modifier ce seuil en transmettant un objet LanguageIdentificationOptions
à getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
Si aucune langue n'atteint ce seuil, la liste ne comporte qu'un élément, avec la valeur und
.