La tâche de classification de texte vous permet de classer du texte en un ensemble de catégories définies, comme un sentiment positif ou négatif. Ces catégories sont déterminées en fonction le modèle que vous utilisez et comment il a été entraîné. Ces instructions vous indiquent comment utiliser le classificateur de texte dans les applications iOS. L'exemple de code décrit dans ces sont disponibles sur GitHub
Pour voir une démonstration de cette tâche, consultez cette page Web une démonstration. Pour plus d'informations sur les fonctionnalités, les modèles et les options de configuration cette tâche, consultez les Aperçu.
Exemple de code
L'exemple de code MediaPipe Tasks est une implémentation de base d'un classificateur de texte pour iOS.
Vous pouvez utiliser l'application comme point de départ pour votre propre application iOS ou vous y référer. lorsque vous modifiez une application existante. Reportez-vous à l'exemple de code de l'outil de classification 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 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
Si vous le souhaitez, vous pouvez configurer votre instance Git pour utiliser le paiement creuse. uniquement les fichiers de l'application exemple de classificateur de texte:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
Après avoir créé une version locale de l'exemple de code, vous pouvez installer bibliothèque de tâches MediaPipe, ouvrez le projet avec Xcode et exécutez l'application. Pour instructions, consultez le Guide de configuration pour iOS.
Composants clés
Les fichiers suivants contiennent le code essentiel pour l'exemple de l'outil de classification de texte application:
- TextClassifierHelper.swift: Initialise le classificateur de texte et gère la sélection du modèle.
- ViewController.swift: Elle implémente l'interface utilisateur et met en forme les résultats.
Configuration
Cette section décrit les étapes clés à suivre pour configurer votre environnement de développement pour utiliser le classificateur de texte. Pour obtenir des informations générales sur la configuration environnement de développement permettant d'utiliser des tâches MediaPipe, y compris la version de la plate-forme consultez le Guide de configuration pour iOS.
<ph type="x-smartling-placeholder">Dépendances
Le classificateur de texte utilise la bibliothèque MediaPipeTasksText
, qui doit être installée
à l'aide de CocoaPods. La bibliothèque est compatible avec les applications Swift et Objective-C
et ne nécessite aucune configuration de langue supplémentaire.
Pour obtenir des instructions sur l'installation de CocoaPods sous macOS, reportez-vous au document CocoaPods
guide d'installation.
Pour savoir comment créer un Podfile
avec les pods nécessaires pour votre
consultez la section Utilisation
CocoaPods
Ajoutez le pod MediaPipeTasksText dans le fichier Podfile
à l'aide du code suivant:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Si votre application inclut des cibles de tests unitaires, reportez-vous au Guide de configuration
iOS.
votre Podfile
.
Modèle
La tâche de classification de texte MediaPipe nécessite un modèle entraîné et compatible pour cette tâche. Pour en savoir plus sur les modèles entraînés disponibles pour de l'outil de classification de texte, consultez la présentation des tâches Modèles .
Sélectionnez et téléchargez un modèle, puis ajoutez-le au répertoire de votre projet à l'aide de Xcode. Pour savoir comment ajouter des fichiers à votre projet Xcode, reportez-vous à la section Gestion fichiers et dossiers dans votre Xcode projet.
Utilisez la propriété BaseOptions.modelAssetPath
pour spécifier le chemin d'accès au modèle.
dans votre app bundle. Pour obtenir un exemple de code, consultez la section suivante.
Créer la tâche
Vous pouvez créer la tâche de classificateur de texte en appelant l'un de ses initialiseurs. La
L'initialiseur TextClassifier(options:)
définit les valeurs de la configuration
options.
Si vous n'avez pas besoin d'un classificateur de texte initialisé avec une configuration personnalisée
vous pouvez utiliser l'initialiseur TextClassifier(modelPath:)
pour créer
Classificateur de texte avec les options par défaut. Pour en savoir plus sur la configuration
consultez la page Présentation de la configuration.
Le code suivant montre comment compiler et configurer cette tâche.
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6
let textClassifier = try TextClassifier(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;
MPPTextClassifier *textClassifier =
[[MPPTextClassifier alloc] initWithOptions:options error:nil];
Options de configuration
Cette tâche comporte les options de configuration suivantes pour les applications iOS:
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. 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(text:)
. Il n'y a aucun
un prétraitement supplémentaire
du texte d'entrée au préalable.
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
Exécuter la tâche
Pour exécuter le classificateur de texte, utilisez la méthode classify(text:)
. Classificateur de texte
renvoie les catégories possibles pour le texte d'entrée.
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
Remarque: La tâche bloque le thread actuel jusqu'à ce qu'il ait fini d'exécuter l'inférence. sur le texte. Pour éviter de bloquer le thread actuel, exécutez le traitement dans une thread d'arrière-plan avec iOS Dispatch ou NSOperation cadres réglementaires.
Gérer et afficher les résultats
Lors de l'exécution de l'inférence, la tâche de classification de texte renvoie un TextClassifierResult
qui contient la liste des catégories possibles pour le texte d'entrée. La
les catégories sont définies par le modèle utilisé. Si vous souhaitez
des catégories, choisissez un autre modèle ou réentraînez 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"
La ViewController.swift dans l'exemple de code montre comment afficher les résultats de la détection renvoyées par la tâche.