Skip to main content

Fonctionnement de la reconnaissance d’entités

La reconnaissance d’entités, également appelée Reconnaissance d’entités nommées (NER - Named Entity Recognition), est le processus d’extraction d’informations à partir de phrases, de paragraphes, de rapports textuels ou d’autres formes de texte non structuré. Le jeu d’outils Text Analysis (Analyse de texte) de la boîte à outils GeoAI contient des outils qui utilisent des techniques de traitement du langage naturel (NLP) pour entraîner des modèles de reconnaissance d’entités utilisés pour extraire des entités d’un texte non structuré.

L’outil Train Entity Recognition Model (Entraîner le modèle de reconnaissance d’entités) permet d’entraîner les modèles NLP à extraire un ensemble prédéfini d’entités (des organisations, des personnes, une date ou un pays, par exemple) fourni dans le cadre d’un jeu de données d’entraînement. Les modèles de reconnaissance d’entités entraînés peuvent être utilisés avec l’outil Extract Entities Using Deep Learning (Extraire des entités à l’aide de Deep Learning) pour extraire ces entités d’un texte brut dans un format structuré.

Applications possibles

Les applications possibles de cet outil sont les suivantes :

  • Extraction de données telles qu’un emplacement, un agent de contrôle ou une arme utilisée de rapports de crime. Cela peut permettre d’afficher les tendances et de faciliter la planification des interventions.

  • Des informations telles que l’emplacement ou les besoins d’assistance peuvent être extraites de tweets ou de posts sur les réseaux sociaux. Cela peut faciliter l’identification des zones ayant immédiatement besoin d’aide en cas de catastrophe naturelle.

Diagramme de flux Entity Recognition Model (Modèle de reconnaissance d’entités)

Ce modèle de reconnaissance d’entités permet d’extraire des entités (une date, une heure et un emplacement, par exemple) de rapports textuels.

Dans ArcGIS, les modèles de reconnaissance d’entités reposent sur l’architecture Transformer qui fonctionne sur la structure Intégrer, encoder, participer, prédire.

  • Intégrer : dans ce processus, le texte en entrée est transformé en intégrations de mots denses. Ces intégrations capturent les informations sémantiques du texte en entrée et sont plus faciles à gérer pour le modèle.

    Processus d’intégration

  • Coder : dans ce processus, le contexte est codé dans un vecteur de mots. Pour ce faire, des réseaux neuronaux convolutifs (CNN) de trigramme résiduel sont utilisés.

    Processus Encode (Coder)

  • Participer : la sortie matricielle de l’étape précédente est réduite en un seul vecteur qui sera transmis pour prévision à un réseau standard à propagation directe. L’effet de cette étape est similaire à celui du mécanisme d’attention.

    Processus de participation

  • Prévoir : la dernière étape du modèle consiste à faire une prévision en fonction du texte en entrée. Ici, le vecteur de la couche d’attention est transmis à un perceptron multicouche pour sortir l’ID d’étiquette de l’entité.

    Processus Predict (Prévoir)

Le back-end reposant sur le module de transformation utilise l’architecture proposée par Vaswani et al. dans l’article " Attention Is All You Need." Ainsi, les modèles sont plus précis et parallélisables et nécessitent des données étiquetées moins précises pour l’entraînement. En interne, les modèles de reconnaissance d’entités reposant sur le module de transformation dans ArcGIS s’appuient sur deux composants :

  • Codeur : le codeur est l’épine dorsale du modèle et transforme le texte en entrée en représentation d’entités sous la forme de vecteurs à taille fixe. Le modèle utilise des codeurs bien connus tels que BERT, ALBERT et RoBERTa, qui reposent sur l’architecture du module de transformation et qui sont pré-entraînés sur d’énormes volumes de texte.

  • Module de classification au niveau du jeton : le module de classification au niveau du jeton se trouve au sommet du modèle et permet de classer la représentation d’entités de chaque jeton dans plusieurs catégories représentant les différentes entités. La plupart du temps, un module de classification est une couche linéaire dans le réseau neuronal.

Composants du modèle de reconnaissance d’entités

Les modèles de reconnaissance d’entité dans ArcGIS prennent également en charge le modèle de backbone Mistral. Mistral est un grand modèle de langage basé sur une architecture de transformeur et qui s’exécute comme modèle avec décodeur uniquement. Les principaux composants de l’architecture de Mistral sont notamment les suivants :

  • Attention par fenêtre coulissante (SWA) : gère avec efficacité les longs textes en les traitant sous forme de petits segments superposés, ce qui réduit le coût de calcul et l’utilisation de la mémoire tout en préservant le contexte important.

  • Attention de requête groupée (GQA) : améliore l’efficacité en agrégeant des requêtes similaires, ce qui réduit la quantité de calculs d’attention et accélère le traitement.

  • Tokenisation BPE (Byte-Pair Encoding) Byte-fallback : convertit du texte en jetons pour le modèle à traiter.

Remarque :

Les modèles NLP peuvent être des outils puissants au moment d’automatiser l’analyse d’énormes volumes de texte non structuré. Comme avec d’autres types de modèles, il faut veiller à les appliquer aux tâches appropriées, avec le niveau approprié de contrôle humain et de transparence quant au type de modèle et aux jeux de données d’entraînement utilisés pour entraîner le modèle.

Utilisation des modèles de reconnaissance d’entités

Vous pouvez utiliser l’outil Extract Entities Using Deep Learning (Extraire des entités à l’aide de Deep Learning) pour appliquer un modèle de reconnaissance d’entités entraîné au texte non structuré et en extraire toutes les informations utiles sous la forme de données structurées. Vous pouvez utiliser les modèles de reconnaissance d’entités pré-entraînés depuis ArcGIS Living Atlas of the World ou entraîner vos propres modèles à l’aide de l’outil Train Entity Recognition Model (Entraîner le modèle de reconnaissance d’entités).

L’entrée dans l’outil Extract Entities Using Deep Learning (Extraire des entités à l’aide du Deep Learning) est un dossier contenant les fichiers texte ou une colonne de texte dans une classe d’entités ou une table sur lesquels la reconnaissance d’entités nommées aura lieu. Le modèle en entrée peut être un fichier JSON de définition de modèle Esri (.emd) ou un paquetage de modèle de Deep Learning (.dlpk). Le modèle contient le chemin d’accès au fichier de modèle de Deep Learning (contenant les pondérations de modèle) et aux autres paramètres. Certains modèles peuvent avoir des arguments de modèle supplémentaires.

L’outil crée une table contenant les entités extraites de chaque fichier texte. Si un localisateur est indiqué et que le modèle peut extraire des adresses, une classe d’entités est générée par le géocodage des adresses extraites. Si un fichier texte contient plusieurs adresses, une entité est créée par le géocodage de chaque adresse et la réplication des autres entités pour ce fichier texte.

Bien que l’outil puisse fonctionner sur des CPU, il est recommandé d’utiliser un processeur graphique pour le traitement, car le Deep Learning demande beaucoup de ressources de calcul. Pour exécuter cet outil avec un processeur graphique, définissez l’environnement Processor Type (Type de processeur) sur GPU. Si vous disposez de plusieurs GPU, indiquez le paramètre d’environnement GPU ID (ID de GPU) à la place.

Entraîner les modèles de reconnaissance d’entités

Vous pouvez utiliser l’outil Train Entity Recognition Model (Entraîner le modèle de reconnaissance d’entités) pour entraîner les modèles NLP pour la reconnaissance d’entités nommées. Cet outil utilise une approche d’apprentissage machine et entraîne le modèle en lui fournissant des modèles d’entraînement composés de paires texte en entrée/entités étiquetées dans ce texte. Avec le modèle de backbone Mistral, il utilise l’apprentissage en contexte, ce qui guide la compréhension et les réponses du modèle via des invites en entrée et en fournissant au modèle des exemples spécifiques qui l’aide à inférer la sortie souhaitée. L’entraînement de modèles NLP étant une tâche qui demande beaucoup de ressources de calcul, il est recommandé d’utiliser un processeur graphique.

L’entrée peut être une des suivantes :

  • Table ou classe d’entités contenant un champ de texte qui comporte le texte en entrée pour le modèle et les entités étiquetées où le champ de texte sera utilisé comme texte d’entrée pour le modèle et les champs restants seront considérés comme étiquettes d’entités désignées.

  • Dossier contenant des données d’entraînement sous la forme de jeux de données standard pour les tâches de reconnaissance d’entités nommées (NER). Les données d’entraînement doivent se trouver dans des fichiers .json ou .csv. Le format de fichier détermine le type de jeu de données de l’entrée.

    • Lorsque l’entrée est un dossier, les types de jeux de données suivants sont pris en charge :

      • ner_json : le dossier des données d’entraînement doit contenir un fichier .json dont le texte et les entités étiquetées sont au format d’entraînement JSON spaCy.

      • IOB : format IOB (balises I - inside, O - outside, B - beginning) proposé par Ramshaw et Marcus dans leur document Text Chunking using Transformation-Based Learning.

        Le dossier de données d’entraînement doit contenir les deux fichiers .csv suivants :

        • tokens.csv : contient du texte sous forme de blocs en entrée

        • tags.csv : contient des balises IOB pour les blocs en entrée

      • BILUO : extension du format IOB qui contient en plus les balises L (last) et U (unit).

        Le dossier de données d’entraînement doit contenir les deux fichiers .csv suivants :

        • tokens.csv : contient du texte sous forme de blocs en entrée

        • tags.csv : contient des balises BILUO pour les blocs en entrée

Lors de l’entraînement d’un modèle de reconnaissance d’entité, vous pouvez entraîner le modèle à partir de zéro, optimiser davantage un modèle déjà entraîné ou utiliser l’apprentissage en contexte (ICL).

Si vous avez déjà accès à un modèle de reconnaissance d’entités pré-entraîné avec le même ensemble d’entités cibles que ceux des modèles d’entraînement, vous pouvez choisir de l’affiner encore plus sur les nouvelles données d’entraînement. Il est souvent plus rapide d’affiner un modèle existant que d’entraîner un nouveau modèle, ce processus exigeant également moins de modèles d’entraînement. Au moment d’affiner un modèle pré-entraîné, veillez à conserver le même modèle de backbone que celui utilisé dans le modèle pré-entraîné.

Le modèle pré-entraîné peut être un fichier de définition de modèle Esri (.emd) ou un fichier de paquetage de Deep Learning (.dlpk). Le modèle en sortie est également enregistré dans ces formats dans le dossier de modèle en sortie spécifié.

Dans ArcGIS, les modèles de reconnaissance d’entités traitent les entités d’adresse différemment des autres entités. Si une entité doit être traitée comme un emplacement, elle doit être spécifiée comme étant une entité d’adresse dans les paramètres de l’outil. Lors de l’inférence, ces entités font l’objet d’un géocodage à l’aide du localisateur spécifié, une classe d’entités étant produite suite au processus d’extraction d’entités. Si aucun localisateur n’est fourni ou si le modèle entraîné n’extrait pas les entités d’adresse, un tableau contenant les entités extraites est généré à la place.

L’entraînement des modèles de Deep Learning est un processus itératif dans lequel les données d’entraînement en entrée sont transmises plusieurs fois par l’intermédiaire du réseau neuronal. Chaque entraînement qui traverse l’ensemble des données d’entraînement est appelé « époque ». Le paramètre Max Epochs (Nombre maximal d’époques) spécifie le nombre maximal de fois que les données d’entraînement sont consultées par le modèle lors de son entraînement. Cela dépend du modèle que vous entraînez, de la complexité de la tâche et du nombre de modèles d’entraînement dont vous disposez. Si vous disposez d’un grand nombre de modèles d’entraînement, vous pouvez utiliser une petite valeur. En règle générale, la bonne pratique consiste à poursuivre l’entraînement pendant plus d’époques de manière répétée, jusqu’à ce que la perte de validation continue de baisser.

Le paramètre Model Backbone (Backbone de modèle) spécifie le réseau neuronal préconfiguré qui fait office de codeur pour le modèle et extrait les représentations d’entités du texte en entrée. Ce paramètre prend en charge les encodeurs reposant sur BERT-, ALBERT- et RoBERTa qui s’appuient sur l’architecture du transformeur et qui sont pré-entraînés à l’aide de grands volumes de texte en mode semi-supervisé. Le paramètre Modèle Backbone prend également en charge le grand modèle de langage (LLM) Mistral. Mistral est un transformeur avec décodeur uniquement qui utilise la technique Attention par fenêtre coulissante (SWA, Sliding Window Attention) pour traiter les longs textes avec efficacité, Attention de requête groupée (GQA, Grouped Query Attention) pour rationaliser les calculs et la tokenisation BPE (Byte-Pair Encoding) Byte-fallback pour gérer différentes entrées de texte.

L’entraînement du modèle a lieu par lots et le paramètre Taille de lot spécifie le nombre d’échantillons d’entraînement qui sont traités pour l’entraînement en une fois. L’augmentation de la taille de lot peut améliorer les performances de l’outil, mais la quantité de mémoire utilisée est plus importante au fur et à mesure de l’augmentation de la taille de lot. En cas de saturation de la mémoire pendant l’entraînement du modèle, utilisez une taille de lot plus petite.

Le paramètre Learning Rate (Vitesse d’apprentissage) est l’un des hyperparamètres les plus importants. Il s’agit de la vitesse à laquelle les pondérations de modèle sont ajustées pendant l’entraînement. Si vous spécifiez une faible vitesse d’apprentissage, le modèle s’améliore lentement et l’entraînement peut prendre beaucoup de temps, ce qui entraîne une perte de temps et de ressources. Une vitesse d’entraînement élevée peut être contre-productive et le modèle risque de ne pas apprendre correctement. Avec des vitesses d’apprentissage élevées, les pondérations de modèle peuvent être ajustées de manière drastique, produisant des résultats erronés. Il est souvent plus judicieux de ne pas spécifier de valeur pour le paramètre Learning Rate (Vitesse d’apprentissage), car l’outil utilise un outil de recherche de vitesse d’apprentissage automatisé conformément au document Cyclical Learning Rates for Training Neural Networks de Leslie N. Smith.

L’outil utilise une partie des données d’entraînement comme jeu de validation. Le paramètre Validation Percentage (Pourcentage de validation) permet d’ajuster la quantité de données d’entraînement à utiliser pour la validation. Pour le modèle Mistral, au moins 50 pour cent des données doivent être réservées à la validation, car Mistral requiert un ensemble d’entraînement plus restreint et s’appuie sur un ensemble de validation plus vaste pour évaluer les performances du modèle.

Par défaut, l’outil utilise une technique d’arrêt prématuré qui provoque l’arrêt de l’entraînement du modèle lorsque ce dernier ne s’améliore plus sur des époques d’entraînement successives. Vous pouvez désactiver ce comportement en décochant la case Stop when model stops improving (Arrêter lorsque le modèle ne s’améliore plus).

Vous pouvez également spécifier si les couches de backbone dans le modèle pré-entraîné vont être figées pour que la conception originale des pondérations et des biais soit conservée. Par défaut, les couches de modèle de backbone ne sont pas figées et les pondérations et biais de la valeur Model Backbone (Backbone du modèle) peuvent être modifiées pour correspondre aux modèles d’entraînement. Le traitement est plus long, mais produit généralement de meilleurs résultats.

Ressources

Pour plus d’informations, reportez-vous aux rubriques suivantes :

"Attention Is All You Need" by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, and Illia Polosukhin on arXivLabs at Cornell University

Honnibal, Matthew. "Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models." https://explosion.ai/blog/deep-learning-formula-nlp.

Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "Fully Understanding the Hashing Trick." 22 mai 2018. https://arxiv.org/pdf/1805.08539.pdf.

Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." 24 mai 2019. https://arxiv.org/pdf/1810.04805.pdf.

Smith, Leslie N. "Cyclical Learning Rates for Training Neural Networks." 4 avril 2017. https://doi.org/10.48550/arxiv.1506.01186.

Ramshaw, Lance, and Mitch Marcus. "Text Chunking using Transformation-Based Learning." 1995. In Third Workshop on Very Large Corpora.

"Mistral." https://docs.mistral.ai/getting-started/open_weight_models/.