Guide de classification de texte pour le Web

La tâche de classificateur de texte MediaPipe vous permet de classer du texte selon un ensemble de catégories définies, comme les sentiments positifs ou négatifs. Les catégories sont déterminées par le modèle utilisé et la manière dont ce modèle a été entraîné. Ces instructions vous expliquent comment utiliser le classificateur de texte pour les applications Web et JavaScript.

Pour voir concrètement cette tâche, regardez la démonstration. Pour en savoir plus sur les fonctionnalités, les modèles et les options 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 complète de cette tâche en JavaScript à titre de référence. Ce code vous aide à tester cette tâche et à créer votre propre application de classification de texte. Vous pouvez afficher, exécuter et modifier l'exemple de code du classificateur de texte à l'aide de votre navigateur Web.

Préparation

Cette section décrit les étapes clés de la configuration de votre environnement de développement et de vos projets de code spécifiquement pour l'utilisation du classificateur de texte. Pour obtenir des informations générales sur la configuration de votre environnement de développement pour l'utilisation de MediaPipe Tasks, y compris sur les exigences de version de la plate-forme, consultez le guide de configuration pour le Web.

Packages JavaScript

Le code du classificateur de texte est disponible dans le package @mediapipe/tasks-text. Vous pouvez trouver et télécharger ces bibliothèques à partir des liens fournis dans le guide de configuration de la plate-forme.

Vous pouvez installer les packages requis avec le code suivant pour la préproduction locale à l'aide de la commande suivante:

npm install @mediapipe/tasks-text

Si vous souhaitez effectuer un déploiement sur un serveur, vous pouvez utiliser un service de réseau de diffusion de contenu (CDN) tel que jsDelivr pour ajouter du code directement à votre page HTML, comme suit:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

Modèle

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

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

<dev-project-root>/assets/bert_text_classifier.tflite

Spécifiez le chemin d'accès du modèle avec le paramètre modelAssetPath de l'objet baseOptions, comme indiqué ci-dessous:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

Créer la tâche

Utilisez l'une des fonctions TextClassifier.createFrom...() du classificateur de texte pour préparer la tâche à l'exécution d'inférences. Vous pouvez utiliser la fonction createFromModelPath() avec un chemin d'accès relatif ou absolu au fichier du modèle entraîné. L'exemple de code ci-dessous illustre l'utilisation de la fonction TextClassifier.createFromOptions(). Pour en savoir plus sur les options de configuration disponibles, consultez la section Options de configuration.

Le code suivant montre comment compiler et configurer cette tâche:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

Options de configuration

Cette tâche dispose des options de configuration suivantes pour les applications Web et JavaScript:

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 métadonnées du modèle de la tâche, le cas échéant. La valeur par défaut est en pour l'anglais. Vous pouvez ajouter des thèmes 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 à renvoyer. Si la valeur est inférieure à 0, tous les résultats disponibles sont renvoyés. Tout nombre positif -1
scoreThreshold Définit le seuil de score de prédiction qui remplace celui fourni dans les métadonnées du modèle (le cas échéant). Les résultats inférieurs à cette valeur sont refusés. N'importe quelle valeur flottante Non définie
categoryAllowlist Définit la liste facultative des noms de catégories autorisés. S'ils ne sont pas vides, les résultats de classification dont le nom de catégorie ne figure pas dans cet ensemble sont filtrés. Les noms de catégorie en double ou inconnus sont ignorés. Cette option s'exclut mutuellement avec categoryDenylist. L'utilisation des deux résultats génère une erreur. N'importe quelle chaîne Non définie
categoryDenylist Définit la liste facultative des noms de catégorie qui ne sont pas autorisés. S'ils ne sont pas vides, les résultats de classification dont le nom de catégorie figure dans cet ensemble seront filtrés. Les noms de catégorie en double ou inconnus sont ignorés. Cette option s'exclut mutuellement avec categoryAllowlist. L'utilisation des deux entraîne une erreur. N'importe quelle chaîne Non définie

Préparation des données

Le classificateur de texte fonctionne avec les données textuelles (String). La tâche gère le prétraitement de l'entrée des données, y compris la tokenisation et le prétraitement du Tensor.

L'ensemble du prétraitement est géré dans la fonction classify(). Aucun prétraitement supplémentaire du texte d'entrée n'est nécessaire au préalable.

const inputText = "The input text to be classified.";

Exécuter la tâche

Le classificateur de texte utilise la fonction classify() pour déclencher des inférences. Pour la classification de texte, cela signifie renvoyer les catégories possibles pour le texte d'entrée.

Le code suivant montre comment exécuter le traitement avec le modèle de tâche.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

Gérer et afficher les résultats

Le classificateur de texte génère un TextClassifierResult qui contient la liste des catégories possibles pour le texte d'entrée. Les catégories sont définies par le modèle que vous utilisez. Par conséquent, si vous souhaitez des catégories différentes, choisissez un autre modèle ou réentraînez un modèle existant.

Voici un exemple des 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

Vous avez obtenu ce résultat en exécutant BERT-classifier sur le texte d'entrée : "an imperfect but overall entertaining mystery".