Comprendre les types des projets de classification

Effectué

La classification de texte personnalisée attribue des étiquettes, qui, dans le service Azure AI Language, correspondent à une classe définie par le développeur et attribuée à des fichiers texte. Par exemple, un résumé de jeu vidéo peut être classé comme « Adventure », « Strategy », « Action » ou « Sports ».

La classification de texte personnalisée prend en charge deux types de projets :

  • Classification mono-étiquette : vous pouvez attribuer une seule classe à chaque fichier. D’après l’exemple ci-dessus, un résumé de jeu vidéo peut uniquement être classé comme « Adventure » ou « Strategy ».
  • Classification multi-étiquette : vous pouvez attribuer plusieurs classes à chaque fichier. Ce type de projet vous permet de classer un résumé de jeu vidéo comme « Adventure » ou « Adventure et Strategy ».

Quand vous créez votre projet de classification de texte personnalisée, vous pouvez spécifier le projet que vous voulez générer.

Projets mono-étiquettes et multi-étiquettes

En plus de la possibilité de placer des fichiers dans plusieurs classifications, les principales différences avec les projets de classification multi-étiquettes sont l’étiquetage, les considérations d’amélioration de votre modèle et la charge utile d’API pour les tâches de classification.

Étiquetage des données

Dans les projets mono-étiquettes, chaque fichier est attribué à une classe pendant le processus d’étiquetage. L’attribution de classe dans Azure AI Language vous permet seulement de sélectionner une classe.

Pour l’étiquetage de projets multi-étiquettes, vous pouvez attribuer autant de classes que vous le voulez par fichier. En raison de cette plus grande complexité, vos données doivent être claires et offrir une bonne distribution des entrées possibles pour l’entraînement de votre modèle.

Diagramme conceptuel montrant le mappage de documents à des étiquettes pour les classifications mono-étiquettes et multi-étiquettes.

Pour les projets multi-étiquettes, les performances de votre modèle sont directement liées au bon étiquetage des données. Plus votre jeu de données est clair, varié et de bonne qualité, plus votre modèle est précis.

Évaluation et amélioration de votre modèle

La mesure des performances prédictives de votre modèle ne se limite pas à compter le nombre de prédictions exactes. Les classifications sont correctes quand l’étiquette réelle est x et que le modèle prédit une étiquette x. Dans le monde réel, les documents génèrent différents types d’erreur quand une classification n’est pas correcte :

  • Faux positif : le modèle prédit x, mais le fichier n’est pas étiqueté x.
  • Faux négatif : le modèle ne prédit pas l’étiquette x, mais le fichier est en fait étiqueté x.

Ces métriques se traduisent par trois mesures fournies par Azure AI Language :

  • Rappel : parmi toutes les étiquettes réelles, combien ont été identifiées (ratio du nombre de vrais positifs sur l’ensemble de ce qui a été étiqueté).
  • Précision : combien d’étiquettes prédites sont correctes (ratio du nombre de vrais positifs sur l’ensemble de tous les positifs identifiés).
  • Score F1 : fonction de rappel et de précision, qui fournit un score à optimiser pour l’équilibre de chaque composant

Conseil

En savoir plus sur les métriques d’évaluation Azure AI Language, notamment la façon dont ces métriques sont calculées

Avec un projet mono-étiquette, vous pouvez identifier les classes qui ne sont pas classifiées ainsi que les autres, et trouver plus de données de qualité pour l’entraînement de votre modèle. Pour les projets multi-étiquettes, avoir des données de qualité devient plus complexe en raison de la matrice des permutations possibles d’étiquettes combinées.

Par exemple, supposons que votre modèle classifie correctement les jeux « Action » et certains jeux « Action et Strategy », mais ne parvient pas à classifier les jeux « Strategy ». Pour améliorer votre modèle, vous recherchez des résumés de meilleure qualité et plus variés pour les jeux « Action et stratégie » ainsi que pour les jeux « Stratégie » afin d’enseigner à votre modèle comment les différencier. Cette difficulté augmente de manière exponentielle avec le nombre de classes possibles pour classifier votre modèle.

Charge utile d’API

Azure AI Language fournit une API REST pour générer votre modèle et interagir avec lui, en utilisant un corps JSON pour spécifier la requête. Cette API est dissociée dans plusieurs SDK de langage, mais pour ce module, nous concentrons nos exemples sur l’API REST de base.

Pour envoyer une tâche de classification, l’API a besoin que le corps JSON spécifie la tâche à exécuter. Vous obtenez plus d’informations sur l’API REST dans l’unité suivante, mais vous devez vous familiariser avec les parties du corps utilisé.

Les modèles de classification mono-étiquettes spécifient un type de projet de customSingleLabelClassification :

{
  "projectFileVersion": "<API-VERSION>",
  "stringIndexType": "Utf16CodeUnit",
  "metadata": {
    "projectName": "<PROJECT-NAME>",
    "storageInputContainerName": "<CONTAINER-NAME>",
    "projectKind": "customSingleLabelClassification",
    "description": "Trying out custom multi label text classification",
    "language": "<LANGUAGE-CODE>",
    "multilingual": true,
    "settings": {}
  },
  "assets": {
    "projectKind": "customSingleLabelClassification",
        "classes": [
            {
                "category": "Class1"
            },
            {
                "category": "Class2"
            }
        ],
        "documents": [
            {
                "location": "<DOCUMENT-NAME>",
                "language": "<LANGUAGE-CODE>",
                "dataset": "<DATASET>",
                "class": {
                    "category": "Class2"
                }
            },
            {
                "location": "<DOCUMENT-NAME>",
                "language": "<LANGUAGE-CODE>",
                "dataset": "<DATASET>",
                "class": {
                    "category": "Class1"
                }
            }
        ]
    }
}

Les modèles de classification multi-étiquettes spécifient un type de projet de CustomMultiLabelClassification

{
  "projectFileVersion": "<API-VERSION>",
  "stringIndexType": "Utf16CodeUnit",
  "metadata": {
    "projectName": "<PROJECT-NAME>",
    "storageInputContainerName": "<CONTAINER-NAME>",
    "projectKind": "customMultiLabelClassification",
    "description": "Trying out custom multi label text classification",
    "language": "<LANGUAGE-CODE>",
    "multilingual": true,
    "settings": {}
  },
  "assets": {
    "projectKind": "customMultiLabelClassification",
    "classes": [
      {
        "category": "Class1"
      },
      {
        "category": "Class2"
      }
    ],
    "documents": [
      {
        "location": "<DOCUMENT-NAME>",
        "language": "<LANGUAGE-CODE>",
        "dataset": "<DATASET>",
        "classes": [
          {
            "category": "Class1"
          },
          {
            "category": "Class2"
          }
        ]
      },
      {
        "location": "<DOCUMENT-NAME>",
        "language": "<LANGUAGE-CODE>",
        "dataset": "<DATASET>",
        "classes": [
          {
            "category": "Class2"
          }
        ]
      }
    ]
  }
}