Guide de classification de texte pour iOS

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:

  1. Clonez le dépôt Git à l'aide de la commande suivante:

    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. 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:

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.