Préparer des données d'entraînement textuelles pour la classification

Cette page explique comment préparer des données textuelles à utiliser dans un ensemble de données Vertex AI pour entraîner des modèles de classification à étiquette unique et multi-étiquettes.

Classification à étiquette unique

Pour la classification à étiquette unique, les données d'entraînement comprennent des documents et la catégorie de classification qui s'applique à ces documents. La classification à étiquette unique permet d'attribuer une seule étiquette à un document.

Exigences en matière de données

  • Vous devez fournir au minimum 20 ou au maximum 1 000 000 de documents d'entraînement.
  • Vous devez fournir au minimum 2 ou au maximum 5000 étiquettes uniques.
  • Vous devez appliquer chaque étiquette à au moins 10 documents.
  • Pour la classification multi-étiquette, vous pouvez appliquer une ou plusieurs étiquettes à un document.
  • Vous pouvez intégrer directement les documents ou faire référence à des fichiers TXT situés dans des buckets Cloud Storage.

Bonnes pratiques pour les données textuelles utilisées afin d'entraîner des modèles AutoML

Les recommandations suivantes s'appliquent aux ensembles de données utilisés pour entraîner les modèles AutoML.

  • Utilisez des données d'entraînement aussi variées que les données sur lesquelles les prédictions seront effectuées. Incluez des documents de différentes longueurs, des documents rédigés par des auteurs différents, dans des styles différents ou avec des formulations différentes, etc…
  • Utilisez des documents qu'un lecteur humain pourrait classifier aisément. Les modèles AutoML ne peuvent généralement pas prédire les étiquettes de catégorie que des humains ne sauraient pas attribuer. Si un humain ne peut pas apprendre à attribuer une étiquette à un document en le lisant, il est probable que votre modèle ne pourra pas le faire non plus.
  • Fournissez autant de documents d'entraînement que possible pour chaque étiquette. Vous pouvez améliorer le score de confiance du modèle en utilisant davantage d'exemples par étiquette. Entraînez un modèle en utilisant 50 exemples par étiquette puis évaluez les résultats. Ajoutez plus d'exemples et renouvellez le processus d'entraînement jusqu'à atteindre vos objectifs de précision, ce qui peut nécessiter des centaines, voire même 1 000 exemples par étiquette.
  • Le modèle fonctionne de manière optimale s'il existe au maximum 100 fois plus de documents pour l'étiquette la plus courante que pour l'étiquette la moins courante. Nous recommandons de supprimer les étiquettes sont la fréquence est très faible.
  • Pensez à inclure une étiquette hors domaine (par exemple, None_of_the_above) pour les documents ne correspondant à aucune des étiquettes définies. Par exemple, si vous n'étiquetez que des documents relatifs aux arts et au divertissement, mais que votre ensemble de données contient des documents relatifs à d'autres sujets tels que le sport ou la technologie, attribuez une étiquette None_of_the_above (Aucune des étiquettes ci-dessus) à ces documents. Sans ce type d'étiquette, le modèle entraîné tentera d'attribuer à chaque document l'une des étiquettes définies, y compris aux documents pour lesquels ces étiquettes ne conviennent pas.
  • Si vous avez un grand nombre de documents ne correspondant actuellement pas à vos étiquettes, filtrez-les afin de ne pas biaiser les prédictions de votre modèle avec une étiquette hors domaine. Vous pouvez par exemple utiliser un modèle de filtrage capable de prédire si un document correspond à l'ensemble d'étiquettes actuel ou s'il est hors domaine. Après le filtrage, vous pouvez utiliser un autre modèle qui ne classe que les documents du domaine.

Fichiers d'entrée

La classification à étiquette unique est compatible avec les fichiers d'entrée JSON Lines ou CSV. Vous ne pouvez spécifier qu'une seule étiquette (annotation) par document. Les sections suivantes décrivent les fichiers d'entrée et fournissent des exemples pour chaque type de fichier.

JSON Lines

Le format, les noms de champ et les types de valeurs pour les fichiers JSON Lines sont déterminés par un fichier de schéma qui est un fichier YAML publiquement accessible.

Vous pouvez télécharger le fichier de schéma pour la classification à étiquette unique à partir de l'emplacement Cloud Storage suivant :
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_single_label_io_format_1.0.0.yaml

Exemple JSON Lines

L'exemple suivant montre comment utiliser le schéma pour créer votre propre fichier JSON Lines. L'exemple inclut des sauts de ligne pour des raisons de lisibilité. Dans vos fichiers JSON, n'incluez des sauts de ligne qu'après chaque document. Le champ facultatif dataItemResourceLabels peut par exemple spécifier ml_use.

{
  "classificationAnnotation": {
    "displayName": "label"
  },
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotation": {
    "displayName": "label2"
  },
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

Chaque ligne d'un fichier CSV fait référence à un seul document. L'exemple suivant montre le format général d'un fichier CSV valide. La colonne ml_use est facultative.

[ml_use],gcs_file_uri|"inline_text",label

L'extrait suivant est un exemple de fichier CSV d'entrée.

test,gs://path_to_file,label1
test,"inline_text",label2
training,gs://path_to_file,label3
validation,gs://path_to_file,label1

Classification multi-étiquette

Pour la classification multi-étiquette, les données d'entraînement sont constituées par des documents et les catégories de classification associées. La classification multi-étiquettes permet d'attribuer une ou plusieurs étiquettes à un document.

Exigences en matière de données

  • Vous devez fournir au minimum 20 ou au maximum 1 000 000 de documents d'entraînement.
  • Vous devez fournir au minimum 2 ou au maximum 5000 étiquettes uniques.
  • Vous devez appliquer chaque étiquette à au moins 10 documents.
  • Pour la classification multi-étiquette, vous pouvez appliquer une ou plusieurs étiquettes à un document.
  • Vous pouvez intégrer directement les documents ou faire référence à des fichiers TXT situés dans des buckets Cloud Storage.

Bonnes pratiques pour les données textuelles utilisées afin d'entraîner des modèles AutoML

Les recommandations suivantes s'appliquent aux ensembles de données utilisés pour entraîner les modèles AutoML.

  • Utilisez des données d'entraînement aussi variées que les données sur lesquelles les prédictions seront effectuées. Incluez des documents de différentes longueurs, des documents rédigés par des auteurs différents, dans des styles différents ou avec des formulations différentes, etc…
  • Utilisez des documents qu'un lecteur humain pourrait classifier aisément. Les modèles AutoML ne peuvent généralement pas prédire les étiquettes de catégorie que des humains ne sauraient pas attribuer. Si un humain ne peut pas apprendre à attribuer une étiquette à un document en le lisant, il est probable que votre modèle ne pourra pas le faire non plus.
  • Lorsque vous utilisez la classification multi-étiquettes, appliquez toutes les étiquettes pertinentes à chaque document. Par exemple, si vous étiquetez des documents contenant des informations détaillées sur des produits pharmaceutiques, vous pouvez avoir un document avec les étiquettes Dosage et Side Effects.
  • Fournissez autant de documents d'entraînement que possible pour chaque étiquette. Vous pouvez améliorer le score de confiance du modèle en utilisant davantage d'exemples par étiquette. Les scores de confiance élevés sont particulièrement utiles lorsque le modèle renvoie plusieurs étiquettes lors de la classification d'un document. Entraînez un modèle en utilisant 50 exemples par étiquette puis évaluez les résultats. Ajoutez plus d'exemples et renouvellez le processus d'entraînement jusqu'à atteindre vos objectifs de précision, ce qui peut nécessiter des centaines, voire même 1 000 exemples par étiquette.
  • Le modèle fonctionne de manière optimale s'il existe au maximum 100 fois plus de documents pour l'étiquette la plus courante que pour l'étiquette la moins courante. Nous recommandons de supprimer les étiquettes sont la fréquence est très faible.
  • Pensez à inclure une étiquette hors domaine (par exemple, None_of_the_above) pour les documents ne correspondant à aucune des étiquettes définies. Par exemple, si vous n'étiquetez que des documents relatifs aux arts et au divertissement, mais que votre ensemble de données contient des documents relatifs à d'autres sujets tels que le sport ou la technologie, attribuez une étiquette None_of_the_above (Aucune des étiquettes ci-dessus) à ces documents. Sans ce type d'étiquette, le modèle entraîné tentera d'attribuer à chaque document l'une des étiquettes définies, y compris aux documents pour lesquels ces étiquettes ne conviennent pas.
  • Si vous avez un grand nombre de documents ne correspondant actuellement pas à vos étiquettes, filtrez-les afin de ne pas biaiser les prédictions de votre modèle avec une étiquette hors domaine. Vous pouvez par exemple utiliser un modèle de filtrage capable de prédire si un document correspond à l'ensemble d'étiquettes actuel ou s'il est hors domaine. Après le filtrage, vous pouvez utiliser un autre modèle qui ne classe que les documents du domaine.

Fichiers d'entrée

La classification multi-étiquettes accepte les fichiers d'entrée JSON Lines ou CSV. Vous pouvez spécifier plusieurs étiquettes (annotation) pour un document donné. Les sections suivantes décrivent les fichiers d'entrée et fournissent des exemples pour chaque type de fichier.

JSON Lines

Le format, les noms de champ et les types de valeurs pour les fichiers JSON Lines sont déterminés par un fichier de schéma qui est un fichier YAML publiquement accessible.

Vous pouvez télécharger le fichier de schéma pour la classification multi-étiquette à partir de l'emplacement Cloud Storage suivant :
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_multi_label_io_format_1.0.0.yaml

Exemple JSON Lines

L'exemple suivant montre comment utiliser le schéma pour créer votre propre fichier JSON Lines. L'exemple inclut des sauts de ligne pour des raisons de lisibilité. Dans vos fichiers JSON, n'incluez des sauts de ligne qu'après chaque document. Le champ facultatif dataItemResourceLabels peut par exemple spécifier ml_use.

{
  "classificationAnnotations": [{
    "displayName": "label1"
    },{
    "displayName": "label2"
  }],
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotations": [{
    "displayName": "label2"
    },{
    "displayName": "label3"
  }],
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

Chaque ligne d'un fichier CSV fait référence à un seul document. L'exemple suivant montre le format général d'un fichier CSV valide. La colonne ml_use est facultative.

[ml_use],gcs_file_uri|"inline_text",label1,label2,...

L'extrait suivant est un exemple de fichier CSV d'entrée.

test,gs://path_to_file,label1,label2
test,"inline_text",label3
training,gs://path_to_file,label1,label2,label3
validation,gs://path_to_file,label4,label5