Comment créer un projet de classification de texte personnalisée

Utilisez cet article afin de découvrir comment configurer les conditions requises pour commencer par la classification de texte personnalisée et créer un projet.

Prérequis

Avant de commencer à utiliser la classification de texte personnalisée, vous avez besoin des éléments suivants :

Créer une ressource de langue

Avant de commencer à utiliser la classification de texte personnalisée, vous avez besoin d’une ressource Azure Language in Foundry Tools. Nous vous recommandons de créer votre ressource de langue et de connecter un compte de stockage à celui-ci dans le portail Azure. La création d’une ressource dans le portail Azure vous permet de créer un compte de stockage Azure en même temps, avec toutes les autorisations requises préconfigurées. Vous pouvez également lire plus en détail dans l’article pour découvrir comment utiliser une ressource préexistante et la configurer pour fonctionner avec la classification de texte personnalisée.

Vous avez également besoin d’un compte de stockage Azure où charger vos .txt documents utilisés pour entraîner un modèle pour classifier du texte.

Remarque

  • Vous devez avoir un rôle de propriétaire affecté sur le groupe de ressources pour créer une ressource de langue.
  • Si vous connectez un compte de stockage préexistant, vous devez lui attribuer un rôle de propriétaire .

Créer une ressource de langue et connecter un compte de stockage

Remarque

Vous ne devez pas déplacer le compte de stockage vers un autre groupe de ressources ou un autre abonnement une fois qu’il est lié à la ressource De langue Azure.

Créer une ressource à partir du portail Azure

  1. Accédez au portail Azure pour créer une nouvelle ressource Azure Language in Foundry Tools.

  2. Dans la fenêtre qui s’affiche, sélectionnez Classification de texte personnalisée et reconnaissance d’entités nommées personnalisées dans les fonctionnalités personnalisées. Sélectionnez Continuer pour créer votre ressource en bas de l’écran.

    Capture d’écran montrant l’option de sélection pour la classification de texte personnalisée et la reconnaissance d’entité nommée personnalisée dans le Portail Azure.

  3. Créez une ressource de langue avec les détails suivants.

    Nom Valeur requise
    Abonnement Votre abonnement Azure.
    groupe de ressources Un groupe de ressources comprenant votre ressource. Vous pouvez utiliser un groupe de resources existant ou en créer un.
    Région Une des régions prises en charge. Par exemple, « USA Ouest 2 ».
    Nom Nom de votre ressource.
    Niveau tarifaire Un des niveaux tarifaires pris en charge. Vous pouvez utiliser le niveau tarifaire gratuit (F0) pour tester le service.

    Si vous recevez un message indiquant « votre compte de connexion n’est pas propriétaire du groupe de ressources du compte de stockage sélectionné », votre compte doit avoir un rôle de propriétaire affecté sur le groupe de ressources avant de pouvoir créer une ressource Language. Pour obtenir de l’aide, contactez le propriétaire de votre abonnement Azure.

    Vous pouvez déterminer le propriétaire de votre abonnement Azure en recherchant votre groupe de ressources et en suivant le lien vers l’abonnement associé. Ensuite :

    1. Sélectionnez l’onglet Contrôle d’accès (IAM).
    2. Sélectionnez Attributions de rôle.
    3. Filtrez par Rôle : Propriétaire.
  4. Dans la section Classification de texte personnalisée et reconnaissance d’entités nommées personnalisées, sélectionnez un compte de stockage existant ou Nouveau compte de stockage. Notez que ces valeurs vous aident dans le cadre d’un démarrage rapide. Il ne s’agit pas des valeurs du compte de stockage à utiliser dans les environnements de production. Pour éviter la latence lors de la création de votre projet, connectez-vous à des comptes de stockage dans la même région que votre ressource de langue.

    Valeur du compte de stockage Valeur recommandée
    Nom du compte de stockage Nom quelconque
    Type de compte de stockage LRS standard
  5. Vérifiez que l’Avis d’IA responsable est coché. Au bas de la page, sélectionnez Examiner et créer.

Remarque

  • Le processus de connexion d’un compte de stockage à votre ressource de langage est irréversible. Il ne peut pas être déconnecté ultérieurement.
  • Vous ne pouvez connecter votre ressource de langue qu’à un seul compte de stockage.

Utilisation d’une ressource language préexistante

Condition requise Description
Régions Vérifiez que votre ressource existante est provisionnée dans une des régions prises en charge. Si vous n’avez pas de ressource, vous devez en créer une dans une région prise en charge.
Niveau tarifaire Le niveau tarifaire applicable à votre ressource.
Identité managée Vérifiez que le paramètre d’identité managée par la ressource est activé. Si ce n’est pas le cas, lisez la section suivante.

Pour utiliser la classification de texte personnalisée, vous devez créer un compte Stockage Azure si vous n’en avez pas déjà un.

Activer la gestion des identités pour votre ressource

Votre ressource de langue doit disposer de la gestion des identités. Pour l’activer à l’aide du portail Azure :

  1. Accéder à votre ressource de langue
  2. Dans le menu de gauche, sous la section Gestion des ressources, sélectionnez Identité
  3. Sous l’onglet Attribuée par le système, veillez à définir État sur Activé

Activer la fonctionnalité de classification de texte personnalisée

Veillez à activer la fonctionnalité Classification de texte personnalisée / Reconnaissance d’entité nommée personnalisée à partir du portail Azure.

  1. Accéder à votre ressource de langue dans le portail Azure
  2. Dans le menu de gauche, dans la sectionGestion des ressources, sélectionnez Fonctionnalités
  3. Activer la fonctionnalité Classification personnalisée des textes / la reconnaissance personnalisée des entités nommées
  4. Se connecter à votre compte de stockage
  5. Sélectionnez Appliquer

Important

  • Assurez-vous que votre ressource de langage possède le rôle de contributeur aux données blob de stockage attribué au compte de stockage auquel vous vous connectez.

Définir des rôles pour votre ressource et votre compte de stockage Azure Language

Procédez comme suit afin de définir les rôles requis pour votre ressource de langue et votre compte de stockage.

Une image animée montrant comment configurer des rôles dans le portail Azure.

Rôles pour votre ressource Azure Language in Foundry Tools

  1. Accédez à votre compte de stockage ou ressource de langue dans le portail Azure.

  2. Sélectionnez Contrôle d’accès (IAM) dans le volet gauche.

  3. Sélectionnez Ajouter pour Ajouter des attributions de rôles, puis choisissez le rôle approprié pour votre compte.

    Le rôle de propriétaire ou de contributeur doit vous être attribué sur votre ressource de langue.

  4. Dans le champ Attribuer l’accès à, sélectionnez Utilisateur, groupe ou principal du service

  5. Choisir Sélectionner des membres

  6. Sélectionnez votre nom d’utilisateur. Vous pouvez rechercher des noms d’utilisateur dans le champ Sélectionner. Répétez cette opération pour tous les rôles.

  7. Répétez ces étapes pour tous les comptes d’utilisateur qui ont besoin d’accéder à cette ressource.

Rôles pour votre compte de stockage

  1. Accédez à la page de votre compte de stockage dans le portail Azure.
  2. Sélectionnez Contrôle d’accès (IAM) dans le volet gauche.
  3. Sélectionnez Ajouter pour ajouter des attributions de rôle, puis choisissez le rôle de contributeur aux données Blob du stockage sur le compte de stockage.
  4. Dans le champ Attribuer l’accès à, sélectionnez Identité managée.
  5. Choisir Sélectionner des membres
  6. Sélectionnez votre abonnement et Langue comme identité managée. Vous pouvez rechercher des noms d’utilisateur dans le champ Sélectionner.

Important

Si vous disposez d’un réseau virtuel ou d’un point de terminaison privé, veillez à sélectionner Autoriser les services Azure dans la liste des services approuvés à accéder à ce compte de stockage dans le portail Azure.

Activer CORS pour votre compte de stockage

Veillez à autoriser les méthodes (GET, PUT, DELETE) au moment d’autoriser le partage de ressources cross-origin (CORS). Définissez le champ des origines autorisées sur https://language.cognitive.azure.com. Autorisez tous les en-têtes en ajoutant * aux valeurs d’en-tête autorisées et définissez l’âge maximal sur 500.

Une capture d’écran montrant comment utiliser CORS pour des comptes de stockage.

Créer un projet de classification de texte personnalisé (API REST)

Une fois votre ressource et votre conteneur de stockage configurés, créez un projet de classification de texte personnalisé. Un projet est une zone de travail qui vous permet de créer des modèles IA personnalisés en fonction de vos données. Votre projet est accessible uniquement par vous et d’autres personnes qui ont accès à la ressource Azure utilisée. Si vous avez étiqueté des données, vous pouvez l’importer pour commencer.

Pour commencer à créer un modèle de classification de texte personnalisée, vous devez créer un projet. La création d’un projet vous permet d’étiqueter des données, d’entraîner, d’évaluer, d’améliorer et de déployer vos modèles.

Remarque

Le nom du projet est sensible à la casse pour toutes les opérations.

Créez une requête PATCH en utilisant l’URL, les en-têtes et le corps JSON suivants pour créer votre projet.

URL de la demande

Utilisez l’URL suivante pour créer un projet. Remplacez les valeurs d’espace réservé par vos propres valeurs.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}?api-version={API-VERSION}
Espace réservé Valeur  Exemple
{ENDPOINT} Point de terminaison pour l’authentification de votre demande d’API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nom de votre projet. Cette valeur respecte la casse. myProject
{API-VERSION} Version de l’API que vous appelez. La valeur référencée correspond à la dernière version publiée. Pour plus d’informations sur les autres versions d’API disponibles, consultez Cycle de vie du modèle. 2022-05-01

headers

Utilisez l’en-tête suivant pour authentifier votre demande.

Clé Valeur
Ocp-Apim-Subscription-Key Clé de votre ressource. Utilisée pour authentifier vos demandes d’API.

body

Utilisez le code JSON suivant dans votre demande. Remplacez les valeurs d’espace réservé par vos propres valeurs.

{
  "projectName": "{PROJECT-NAME}",
  "language": "{LANGUAGE-CODE}",
  "projectKind": "customMultiLabelClassification",
  "description": "Project description",
  "multilingual": "True",
  "storageInputContainerName": "{CONTAINER-NAME}"
}

Clé Espace réservé Valeur  Exemple
projectName {PROJECT-NAME} Nom de votre projet. Cette valeur respecte la casse. myProject
langage {LANGUAGE-CODE} Chaîne spécifiant le code de langue des documents utilisés dans votre projet. Si votre projet est un projet multilingue, choisissez le code de langue de la plupart des documents. Consultez Prise en charge de la langue pour en savoir plus sur la prise en charge multilingue. en-us
projectKind customMultiLabelClassification Type de projet. customMultiLabelClassification
multilingue true Valeur booléenne permettant à l’ensemble de données de contenir des documents dans plusieurs langues. Quand votre modèle est déployé, vous pouvez interroger le modèle dans n’importe quelle langue prise en charge (pas nécessairement incluse dans vos documents d’apprentissage). Consultez Prise en charge linguistique pour en savoir plus sur la prise en charge multilingue. true
storageInputContainerName {CONTAINER-NAME} Nom de votre conteneur de stockage Azure pour vos documents chargés. myContainer

Cette requête retourne une réponse 201, ce qui signifie que le projet est créé.

Cette requête retourne une erreur si :

  • La ressource sélectionnée n’a pas les autorisations appropriées pour le compte de stockage.

Importer un projet de classification de texte personnalisé (API REST)

Si vous avez déjà étiqueté des données, vous pouvez l’utiliser pour commencer à utiliser le service. Assurez-vous que vos données étiquetées utilisent les formats de données acceptés.

Soumettez une demande POST en utilisant l’URL, les en-têtes et le corps JSON suivants pour importer votre fichier d’étiquettes. Vérifiez que votre fichier d’étiquettes respecte le format accepté.

Si un projet portant le même nom existe déjà, les données de ce projet sont remplacées.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}/:import?api-version={API-VERSION}
Espace réservé Valeur  Exemple
{ENDPOINT} Point de terminaison pour l’authentification de votre demande d’API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nom de votre projet. Cette valeur respecte la casse. myProject
{API-VERSION} Version de l’API que vous appelez. La valeur référencée correspond à la dernière version publiée. En savoir plus sur les autres versions d’API disponibles 2022-05-01

headers

Utilisez l’en-tête suivant pour authentifier votre demande.

Clé Valeur
Ocp-Apim-Subscription-Key Clé de votre ressource. Utilisée pour authentifier vos demandes d’API.

body

Utilisez le code JSON suivant dans votre demande. Remplacez les valeurs d’espace réservé par vos propres valeurs.

{
  "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"
          }
        ]
      }
    ]
  }
}

Clé Espace réservé Valeur  Exemple
api-version {API-VERSION} Version de l’API que vous appelez. La version utilisée ici doit être la même version d’API dans l’URL. En savoir plus sur les autres versions d’API disponibles 2022-05-01
projectName {PROJECT-NAME} Nom de votre projet. Cette valeur respecte la casse. myProject
projectKind customMultiLabelClassification Type de projet. customMultiLabelClassification
langage {LANGUAGE-CODE} Chaîne spécifiant le code de langue des documents utilisés dans votre projet. Si votre projet est un projet multilingue, choisissez le code de langue pour la plupart des documents. Consultez Prise en charge linguistique pour en savoir plus sur la prise en charge multilingue. en-us
multilingue true Valeur booléenne permettant à l’ensemble de données de contenir des documents dans plusieurs langues. Quand votre modèle est déployé, vous pouvez interroger le modèle dans n’importe quelle langue prise en charge (pas nécessairement incluse dans vos documents d’apprentissage). Consultez Prise en charge linguistique pour en savoir plus sur la prise en charge multilingue. true
storageInputContainerName {CONTAINER-NAME} Nom de votre conteneur de stockage Azure pour vos documents chargés. myContainer
classes [] Tableau contenant l’ensemble des classes contenues dans le projet. []
documents [] Tableau contenant tous les documents de votre projet et les classes étiquetées pour ce document. []
location {DOCUMENT-NAME} Emplacement des documents dans le conteneur de stockage. Étant donné que tous les documents se trouvent à la racine du conteneur, il doit s’agir du nom du document. doc1.txt
dataset {DATASET} L'ensemble de test auquel ce document est destiné lorsqu'il est divisé avant l'entraînement. Découvrez comment entraîner un modèle. Les valeurs possibles pour ce champ sont Train et Test. Train

Une fois que vous avez envoyé votre demande d’API, vous recevez une 202 réponse indiquant que le travail a été envoyé correctement. Dans les en-têtes de réponse, extrayez la valeur operation-location formatée comme suit :

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}

{JOB-ID} sert à identifier votre demande, car cette opération est asynchrone. Vous utilisez cette URL pour obtenir l’état de la tâche d’importation.

Scénarios d’erreur possibles pour cette requête :

  • La ressource sélectionnée n’a pas les autorisations appropriées pour le compte de stockage.
  • Le storageInputContainerName spécifié n’existe pas.
  • Le code de langue utilisé est non valide ou si le type de code de langue n’est pas une chaîne.
  • La valeur multilingual est une chaîne et non pas une valeur booléenne.

Obtenir les détails du projet (API REST)

Pour obtenir les détails du projet de classification de texte personnalisée, envoyez une requête GET en utilisant l’URL et les en-têtes suivants. Remplacez les valeurs d’espace réservé par vos propres valeurs.

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}?api-version={API-VERSION}
Espace réservé Valeur  Exemple
{ENDPOINT} Point de terminaison pour l’authentification de votre demande d’API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nom de votre projet. Cette valeur respecte la casse. myProject
{API-VERSION} Version de l’API que vous appelez. La valeur référencée concerne la dernière version du modèle publiée. 2022-05-01

headers

Utilisez l’en-tête suivant pour authentifier votre demande.

Clé Valeur
Ocp-Apim-Subscription-Key Clé de votre ressource. Utilisée pour authentifier vos demandes d’API.

Corps de la réponse

Une fois la requête envoyée, vous recevez la réponse suivante.

{
  "createdDateTime": "2022-04-23T13:39:09.384Z",
  "lastModifiedDateTime": "2022-04-23T13:39:09.384Z",
  "lastTrainedDateTime": "2022-04-23T13:39:09.384Z",
  "lastDeployedDateTime": "2022-04-23T13:39:09.384Z",
  "projectKind": "customSingleLabelClassification",
  "storageInputContainerName": "{CONTAINER-NAME}",
  "projectName": "{PROJECT-NAME}",
  "multilingual": true,
  "description": "Project description",
  "language": "{LANGUAGE-CODE}"
}

Valeur espace réservé Description  Exemple
projectKind customSingleLabelClassification Type de projet. Cette valeur peut être customSingleLabelClassification ou customMultiLabelClassification.
storageInputContainerName {CONTAINER-NAME} Nom de votre conteneur de stockage Azure pour vos documents chargés. myContainer
projectName {PROJECT-NAME} Nom de votre projet. Cette valeur respecte la casse. myProject
multilingual Valeur booléenne qui vous permet d’utiliser des documents en plusieurs langues dans votre jeu de données. Lorsque votre modèle est déployé, vous pouvez interroger le modèle dans n’importe quelle langue prise en charge (pas nécessairement incluse dans vos documents d’apprentissage). Pour plus d’informations sur la prise en charge multilingue, consultez Prise en charge de la langue. true
language {LANGUAGE-CODE} Chaîne spécifiant le code de langue des documents utilisés dans votre projet. Si votre projet est un projet multilingue, choisissez le code de langue pour la plupart des documents. Consultez Prise en charge de la langue pour en savoir plus sur la prise en charge multilingue. en-us

Une fois que vous avez envoyé votre demande d’API, vous recevez une 200 réponse indiquant la réussite et le corps de la réponse JSON avec les détails de votre projet.

Supprimer un projet (API REST)

Quand vous n’avez plus besoin de votre projet, vous pouvez le supprimer avec la demande DELETE suivante. Remplacez les valeurs d’espace réservé par vos propres valeurs.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}?api-version={API-VERSION}
Espace réservé Valeur  Exemple
{ENDPOINT} Point de terminaison pour l’authentification de votre demande d’API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nom de votre projet. Cette valeur respecte la casse. myProject
{API-VERSION} Version de l’API que vous appelez. La valeur référencée correspond à la dernière version publiée. En savoir plus sur les autres versions d’API disponibles 2022-05-01

headers

Utilisez l’en-tête suivant pour authentifier votre demande.

Clé Valeur
Ocp-Apim-Subscription-Key Clé de votre ressource. Utilisée pour authentifier vos demandes d’API.

Une fois que vous avez envoyé votre demande d’API, vous recevez une 202 réponse indiquant la réussite, ce qui signifie que votre projet est supprimé. Un appel réussi donne un en-tête Operation-Location utilisé pour vérifier l’état du travail.

Étapes suivantes

  • Vous devez planifier le schéma de projet utilisé pour étiqueter vos données.

  • Une fois votre projet créé, vous pouvez commencer à étiqueter vos données. L’étiquetage informe votre modèle de classification de texte comment interpréter du texte et est utilisé pour la formation et l’évaluation.