Guide sur la détection de la langue pour Android

La tâche "Détecteur de langue MediaPipe" vous permet d'identifier la langue d'un texte. Ces vous explique comment utiliser le détecteur de langue avec les applications Android. Le code l'exemple décrit dans ces instructions est disponible sur GitHub

Pour voir concrètement en quoi consiste cette tâche, consultez le demo. Pour en savoir plus sur les fonctionnalités, les modèles et les options de configuration de cette tâche, consultez la section Présentation.

Exemple de code

L'exemple de code du détecteur de langue fournit une implémentation simple pour référence. Ce code vous aide à tester cette tâche et à commencer créer votre propre fonctionnalité de détection de la langue. Vous pouvez parcourir les Exemple de code du détecteur de langue sur GitHub.

Télécharger le code

Les instructions suivantes vous expliquent comment créer une copie locale de l'exemple à l'aide de l'outil de ligne de commande de contrôle des versions git.

<ph type="x-smartling-placeholder">

Pour télécharger l'exemple de code:

  1. Clonez le dépôt Git à l'aide de la commande suivante:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Vous pouvez éventuellement configurer votre instance Git pour utiliser le paiement creuse. Vous n'avez donc que les fichiers de l'application exemple Détecteur de langue:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

Pour savoir comment configurer et exécuter un exemple avec Android Studio, consultez les exemples d'instructions de configuration du code dans le Guide de configuration pour Android

Composants clés

Les fichiers suivants contiennent le code crucial pour la classification de texte exemple d'application:

Configuration

Cette section décrit les étapes clés à suivre pour configurer votre environnement de développement spécifiquement pour utiliser le détecteur de langage. Pour obtenir des informations générales sur configurer votre environnement de développement pour utiliser les tâches MediaPipe, y compris versions de la plate-forme requises, consultez la Guide de configuration pour Android

<ph type="x-smartling-placeholder">

Dépendances

Le détecteur de langue utilise les bibliothèques com.google.mediapipe:tasks-text. Ajouter au fichier build.gradle de votre projet de développement d'applications Android. Vous pouvez importer les dépendances requises avec le code suivant:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

Modèle

La tâche de détection de la langue MediaPipe nécessite un modèle entraîné et compatible avec cette tâche. Pour en savoir plus sur les modèles entraînés disponibles pour le détecteur de langue, consultez la section Modèles de la présentation des tâches.

Sélectionnez et téléchargez le modèle, puis stockez-le dans le répertoire de votre projet:

<dev-project-root>/src/main/assets

Spécifiez le chemin d'accès du modèle dans le paramètre ModelName.

Créer la tâche

Vous pouvez utiliser l'une des fonctions createFrom...() pour créer la tâche. La La fonction createFromOptions() accepte les options de configuration pour le langage détecteur de fumée et de monoxyde de carbone. Vous pouvez également initialiser la tâche à l'aide de la fabrique createFromFile(). . La fonction createFromFile() accepte un chemin d'accès relatif ou absolu vers le fichier du modèle entraîné. Pour plus d'informations sur la configuration des tâches, consultez Options de configuration.

Le code suivant montre comment créer et configurer cette tâche.

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

Vous trouverez un exemple de création d'une tâche dans l'exemple de code LanguageDetectorHelper fonction initDetector() de la classe.

Options de configuration

Cette tâche comporte les options de configuration suivantes pour les applications Android:

Nom de l'option Description Plage de valeurs Valeur par défaut
maxResults Définit le nombre maximal facultatif de prédictions de langues les mieux notées sur retour. Si cette valeur est inférieure à zéro, tous les résultats disponibles sont renvoyés. Tous les nombres positifs -1
scoreThreshold Définit le seuil de score de prédiction qui remplace celui indiqué dans les métadonnées du modèle (le cas échéant). Les résultats inférieurs à cette valeur sont refusés. N'importe quel nombre décimal Non défini
categoryAllowlist Définit la liste facultative des codes de langue autorisés. Si ce champ n'est pas vide, les prédictions de langue dont le code de langue n'est pas dans cet ensemble seront filtrées. Cette option s'exclue mutuellement avec categoryDenylist et l'utilisation des deux entraînent une erreur. Toutes les chaînes Non défini
categoryDenylist Définit la liste facultative des codes de langue qui ne sont pas autorisés. Si non vide, les prédictions de langue dont le code de langue fait partie de cet ensemble seront filtrées s'affiche. Cette option s'exclue mutuellement avec categoryAllowlist et l'utilisation des deux entraîne une erreur. Toutes les chaînes Non défini

Préparer les données

Le détecteur de langue fonctionne avec des données textuelles (String). La tâche gère la saisie des données le prétraitement, y compris la tokenisation et le prétraitement des Tensors. Tout le prétraitement est géré dans la fonction detect(). Il n'est pas nécessaire un prétraitement supplémentaire du texte d'entrée au préalable.

String inputText = "Some input text for the language detector";

Exécuter la tâche

Le détecteur de langue utilise la méthode LanguageDetector.detect() pour traiter l'entrée du texte et prédire sa langue. Vous devez utiliser une méthode d'exécution distincte thread pour exécuter la détection afin d'éviter de bloquer l'utilisateur Android thread d'interface utilisateur avec votre application.

Le code suivant montre comment exécuter le traitement avec la tâche à l'aide d'un thread d'exécution distinct.

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

Vous pouvez voir un exemple d'exécution d'une tâche dans l'exemple de code LanguageDetectorHelper fonction detect() de la classe.

Gérer et afficher les résultats

Le détecteur de langue génère un LanguageDetectorResult composé d'une liste de des prédictions en langage et les probabilités de ces prédictions. La des catégories de langage définies dans le modèle, consultez la présentation des tâches Modèles pour en savoir plus sur le modèle que vous utilisez.

Voici un exemple de données de sortie de cette tâche:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

Ce résultat a été obtenu en exécutant le modèle sur le texte d'entrée: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."

Vous pouvez voir un exemple d'affichage des résultats dans l'exemple de code ResultsAdapter et ViewHolder en classe interne.