Comprendre la reconnaissance d’entités nommées personnalisées
La reconnaissance d’entités nommées (NER, Named Entity Recognition) personnalisées est un service d’API Azure qui examine des documents, et identifie et extrait des entités définies par l’utilisateur. Ces entités peuvent être n’importe quoi, par exemple des noms et des adresses sur des relevés bancaires, ou être issues de l’exploration des connaissances pour améliorer les résultats de la recherche.
La Reconnaissance d’entité nommée personnalisée fait partie de Azure AI Language dans Azure AI Services.
Reconnaissance d’entités nommées personnalisées ou intégrées
Azure AI Language fournit une reconnaissance de certaines entités intégrées qui permet de reconnaître des choses comme une personne, un endroit, une organisation ou une URL. La reconnaissance d’entités nommées intégrées vous permet de configurer le service avec une configuration minimale et d’extraire des entités. Pour appeler une reconnaissance d’entités nommées intégrées, créez votre service et appelez le point de terminaison pour ce service de reconnaissance d’entités nommées comme ceci :
<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Paramètre substituable | Valeur | Exemple |
---|---|---|
<YOUR-ENDPOINT> |
Point de terminaison de votre demande d’API | https://<your-resource>.cognitiveservices.azure.com |
<API-VERSION> |
La version de l’API que vous appelez | 2023-05-01 |
Le corps de cet appel va contenir le ou les documents dont les entités sont extraites, et les en-têtes contiennent votre clé de service.
La réponse de l’appel ci-dessus contient un tableau d’entités reconnues, comme :
<...>
"entities":[
{
"text":"Seattle",
"category":"Location",
"subcategory":"GPE",
"offset":45,
"length":7,
"confidenceScore":0.99
},
{
"text":"next week",
"category":"DateTime",
"subcategory":"DateRange",
"offset":104,
"length":9,
"confidenceScore":0.8
}
]
<...>
La recherche d’emplacements, de noms ou d’URL dans des documents texte longs sont des exemples où il convient d’utiliser la reconnaissance d’entités nommées intégrées.
Conseil
Une liste complète des catégories d’entités reconnues est disponible dans la documentation de la reconnaissance d’entités nommées.
La reconnaissance d’entités nommées personnalisées, à laquelle le reste de ce module est consacré, est disponible quand les entités que vous souhaitez extraire ne font pas partie du service intégré ou que vous voulez extraire seulement des entités spécifiques. Vous pouvez rendre votre modèle de reconnaissance d’entités nommées personnalisées aussi simple ou complexe que nécessaire pour votre application.
Des données juridiques ou bancaires spécifiques, l’exploration des connaissances pour améliorer la recherche dans des catalogues ou la recherche de texte spécifique pour des stratégies d’audit sont des exemples où vous utiliseriez la reconnaissance d’entités nommées personnalisée. Chacun de ces projets nécessite un ensemble spécifique d’entités et de données qu’il doit extraire.
Cycle de vie d’un projet Azure AI Language
La création d’un modèle d’extraction d’entités suit généralement une voie similaire à la plupart des fonctionnalités du service Azure AI Language :
- Définir des entités : comprendre les données et les entités que vous voulez identifier et essayer de les rendre aussi claires que possible. Par exemple, définir exactement les parties d’un relevé bancaire que vous voulez extraire.
- Données des étiquettes : étiquetez vos données existantes, en spécifiant quel texte dans votre jeu de données correspond à quelle entité. Cette étape est importante pour procéder de façon précise et complète, car des étiquettes incorrectes ou manquantes réduisent l’efficacité du modèle entraîné. Un bon éventail des documents d’entrée possibles est utile. Par exemple, étiquetez le nom de la banque, le nom du client, l’adresse du client, les conditions d’un prêt ou d’un compte spécifique, le montant du prêt ou du compte, et le numéro de compte.
- Entraîner le modèle : entraînez votre modèle une fois que vos entités sont étiquetées. L’entraînement apprend à votre modèle à reconnaître les entités que vous avez étiquetées.
- Visualiser le modèle : une fois votre modèle entraîné, visualisez les résultats du modèle. Cette page inclut un score de 0 à 1 basé sur la précision et le rappel des données testées. Vous pouvez voir quelles entités ont bien fonctionné (par exemple le nom du client) et celles qui ont besoin d’amélioration (par exemple le numéro de compte).
- Améliorer le modèle : améliorez votre modèle en regardant les entités qui n’ont pas pu être identifiées et celles qui ont été extraites incorrectement. Découvrez quelles données doivent être ajoutées à l’entraînement de votre modèle pour améliorer les performances. Cette page vous montre comment les entités ont échoué et quelles entités (comme le numéro de compte) doivent être différenciées d’autres entités similaires (comme le montant du prêt).
- Déployer le modèle : une fois que votre modèle fonctionne comme souhaité, déployez-le pour le rendre disponible via l’API. Dans notre exemple, vous pouvez envoyer des demandes au modèle quand il est déployé pour extraire des entités dans des relevés bancaires.
- Extraire des entités : utilisez votre modèle pour extraire des entités. Le labo montre comment utiliser l’API, et vous pouvez consulter les informations de référence sur l’API pour plus d’informations.
Considérations sur la sélection des données et à l’amélioration des entités
Pour des performances optimales, vous devez utiliser à la fois des données de grande qualité pour entraîner le modèle et des types d’entités clairement définis.
Des données de grandes qualité vous permettent de consacrer moins de temps à l’amélioration et de produire de meilleurs résultats à partir de votre modèle.
- Diversité : utilisez un jeu de données aussi diversifié que possible sans perdre la distribution réelle attendue dans les données réelles. Vous allez utiliser des exemples de données provenant du plus grand nombre possible de sources, chacune avec ses propres formats et son propre nombre d’entités. Il est préférable que votre jeu de données représente autant de sources différentes que possible.
- Distribution : utilisez la distribution appropriée des types de documents. Un jeu de données plus diversifié pour entraîner votre modèle permet d’éviter d’apprendre des relations incorrectes dans les données.
- Justesse : utilisez des données aussi proches que possible des données réelles. Les données factices fonctionnent pour démarrer le processus d’entraînement, mais elles vont probablement différer des données réelles de façon telle que votre modèle ne va pas effectuer l’extraction correctement.
Les entités doivent également être soigneusement prises en compte et définies de façon aussi distincte que possible. Évitez les entités ambiguës (comme deux noms à proximité l’un de l’autre sur un relevé bancaire), car le modèle aura du mal à les différencier. Si certaines entités ambiguës sont nécessaires, veillez à avoir plus d’exemples à partir desquels votre modèle peut apprendre afin qu’il puisse comprendre la différence.
Le fait de garder vos entités distinctes va aussi contribuer aux performances de votre modèle. Par exemple, essayer d’extraire quelque chose comme des « Informations de contact » qui peuvent être un numéro de téléphone, un identifiant sur un réseau social ou une adresse e-mail nécessite plusieurs exemples pour que votre modèle les apprennent correctement. Au lieu de cela, essayez de les décomposer en entités plus spécifiques, comme « Téléphone », « E-mail » et « Réseaux sociaux », et laissez le modèle étiqueter le type d’informations de contact qu’il trouve.
Comment extraire des entités
Pour soumettre une tâche d’extraction, l’API a besoin que le corps JSON spécifie la tâche à exécuter. Pour la reconnaissance d’entités nommées personnalisées, la tâche pour la charge utile JSON est CustomEntityRecognition
.
Votre charge utile sera similaire au JSON suivant :
{
"displayName": "string",
"analysisInput": {
"documents": [
{
"id": "doc1",
"text": "string"
},
{
"id": "doc2",
"text": "string"
}
]
},
"tasks": [
{
"kind": "CustomEntityRecognition",
"taskName": "MyRecognitionTaskName",
"parameters": {
"projectName": "MyProject",
"deploymentName": "MyDeployment"
}
}
]
}
Limites de projet
Le service Azure AI Language applique les restrictions suivantes :
- Entraînement : au moins 10 fichiers et pas plus de 100 000
- Déploiements : 10 noms de déploiement par projet
- API
- Création : cette API crée un projet, entraîne et déploie votre modèle. Limitée à 10 requêtes POST et 100 requêtes GET par minute
- Analyser : cette API effectue le travail d’extraction réelle des entités, elle demande une tâche et récupère les résultats. Limitée à 20 requêtes GET ou POST
- Projets : seulement 1 compte de stockage par projet, 500 projets par ressource et 50 modèles entraînés par projet
- Entités : chaque entité peut avoir jusqu’à 500 caractères. Vous pouvez avoir jusqu’à 200 types d’entités.
Pour plus d’informations, consultez la page Limites de service pour Azure AI Language .