La tâche de classification de texte MediaPipe vous permet de classer du texte en un ensemble de catégories définies, comme un sentiment positif ou négatif. Les catégories déterminent le modèle que vous utilisez et comment ce modèle a été entraîné. Ces instructions vous expliquent comment utiliser le classificateur de texte avec les applications Android.
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 de configuration de cette tâche, consultez la Présentation.
Exemple de code
L'exemple de code pour le classificateur de texte fournit une implémentation simple de ce pour référence. Ce code vous aide à tester cette tâche et à commencer créer votre propre application de classification de texte. Vous pouvez parcourir les Exemple de code pour le classificateur de texte 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:
- Clonez le dépôt Git à l'aide de la commande suivante:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Vous pouvez éventuellement configurer votre instance Git pour utiliser le paiement creuse.
Vous n'avez donc que les fichiers de l'application exemple de classificateur de texte:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/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:
- TextClassifierHelper.kt : Initialise le classificateur de texte et gère la sélection du modèle.
- MainActivity.kt :
Elle implémente l'application, y compris en appelant
TextClassifierHelper
etResultsAdapter
- ResultsAdapter.kt : Il gère et met en forme les résultats.
Configuration
Cette section décrit les étapes clés à suivre pour configurer votre environnement de développement projets de code spécifiquement pour utiliser le classificateur de texte. Pour obtenir des informations générales sur configurer votre environnement de développement pour utiliser MediaPipe Tasks, y compris versions de la plate-forme requises, consultez la Guide de configuration pour Android
<ph type="x-smartling-placeholder">Dépendances
Le classificateur de texte 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 classification de texte MediaPipe nécessite un modèle entraîné compatible avec tâche. Pour en savoir plus sur les modèles entraînés disponibles pour le classificateur de texte, consultez la page la section Modèles de la présentation des tâches.
Sélectionnez et téléchargez un modèle, puis stockez-le dans votre projet assets
.
répertoire:
<dev-project-root>/src/main/assets
Utiliser la méthode BaseOptions.Builder.setModelAssetPath()
pour spécifier le chemin d'accès
du modèle à utiliser. Pour obtenir un exemple de code, consultez la section suivante.
Créer la tâche
Utilisez l'une des fonctions TextClassifier.createFrom...()
de l'outil de classification de texte pour :
préparer la tâche à exécuter des inférences. Vous pouvez utiliser l'createFromFile()
avec un chemin d'accès relatif ou absolu vers le fichier de modèle entraîné. Le code
L'exemple ci-dessous illustre l'utilisation de TextClassifier.createFromOptions()
.
. Pour en savoir plus sur les options de configuration disponibles, consultez
Options de configuration.
Le code suivant montre comment compiler et configurer cette tâche.
// no directory path required if model file is in src/main/assets:
String currentModel = "text_classifier_model.tflite";
fun initClassifier() {
val baseOptionsBuilder = BaseOptions.builder()
.setModelAssetPath(currentModel)
try {
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder = TextClassifier.TextClassifierOptions.builder()
.setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textClassifier = TextClassifier.createFromOptions(context, options)
} catch (e: IllegalStateException) { // exception handling
}
}
Vous trouverez un exemple de création d'une tâche dans l'exemple de code
TextClassifierHelper
fonction initClassifier()
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 |
---|---|---|---|
displayNamesLocale |
Définit la langue des libellés à utiliser pour les noms à afficher fournis dans les
les métadonnées du modèle de la tâche, le cas échéant. La valeur par défaut est en pour
anglais. Vous pouvez ajouter des libellés localisés aux métadonnées d'un modèle personnalisé
à l'aide de l'API TensorFlow Lite Metadata Writer ;
| Code des paramètres régionaux | en |
maxResults |
Définit le nombre maximal facultatif de résultats de classification les mieux notés sur retour. Si < 0, 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 noms de catégories autorisés. Si ce champ n'est pas vide,
les résultats de classification dont le nom de catégorie ne fait pas partie de cet ensemble seront
filtrées. Les noms de catégories en double ou inconnus sont ignorés.
Cette option s'exclue mutuellement avec categoryDenylist et utilise
génèrent une erreur. |
Toutes les chaînes | Non défini |
categoryDenylist |
Définit la liste facultative des noms de catégories non autorisés. Si
non vide, les résultats de classification dont le nom de catégorie se trouve dans cet ensemble seront filtrés
s'affiche. Les noms de catégories en double ou inconnus sont ignorés. Cette option est mutuellement
exclusive avec categoryAllowlist et l'utilisation des deux entraîne une erreur. |
Toutes les chaînes | Non défini |
Préparer les données
L'outil de classification de texte 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.
L'ensemble du prétraitement est géré dans la fonction classify()
. Il n'est pas nécessaire
pour prétraiter davantage le texte d'entrée.
String inputText = "The input text to be classified.";
Exécuter la tâche
Le classificateur de texte utilise la fonction TextClassifier.classify()
pour exécuter
les inférences. Utiliser un thread d'exécution distinct pour exécuter la classification
pour éviter de bloquer le thread de l'interface utilisateur Android 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.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = textClassifier.classify(text)
listener.onResult(results)
}
}
Vous pouvez voir un exemple d'exécution d'une tâche dans l'exemple de code
TextClassifierHelper
fonction classify()
de la classe.
Gérer et afficher les résultats
Le classificateur de texte génère un TextClassifierResult
qui contient la liste
de catégories possibles pour le texte d'entrée. Ces catégories sont définies par
Le modèle que vous utilisez.
Si vous souhaitez utiliser des catégories différentes,
ou à réentraîner un modèle existant.
Voici un exemple de données de sortie de cette tâche:
TextClassificationResult:
Classification #0 (single classification head):
ClassificationEntry #0:
Category #0:
category name: "positive"
score: 0.8904
index: 0
Category #1:
category name: "negative"
score: 0.1096
index: 1
Ce résultat a été obtenu en exécutant le classificateur BERT sur le texte d'entrée:
"an imperfect but overall entertaining mystery"
Vous pouvez voir un exemple d'affichage des résultats dans l'exemple de code
ResultsAdapter
et ViewHolder
en classe interne.