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 deux éléments dorsaux : l’un reposant sur l’architecture Transformer (Module de transformation) et l’autre sur la bibliothèque spaCy qui fonctionne sur la structure Intégrer, coder, participer, prévoir.

  • 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 Intégrer
  • 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 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. Cette étape produit le même effet que le mécanisme d’attention.
    Processus Participer
  • 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 Prévoir

L’élément dorsal basé sur le module de transformation utilise l’architecture proposée par Vaswani et al. dans « Attention Is All You Need ». Cela permet aux modèles d’être plus précis et parallélisables, en ayant par la même occasion besoin de 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

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).

Dans l’outil Extract Entities Using Deep Learning (Extraire des entités à l’aide de Deep Learning), l’entrée est un dossier contenant les fichiers texte qui vont faire l’objet de la reconnaissance d’entités nommées. 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 un tableau contenant les entités extraites de chaque fichier texte dans le dossier en entrée. 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. 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.

Les données d’entraînement sont placées dans un dossier sous la forme d’un jeu de données standard pour les tâches NER. Les données d’entraînement se présentent sous la forme de fichiers .json ou .csv. Les types de jeux de données suivants sont pris en charge :

  • ner_json : le dossier doit contenir un fichier .json avec le texte et les entités étiquetées au format d’entraînement JSON de spaCy.
  • IOB : format IOB (Inside, Outside, Beginning - Intérieur, Extérieur, Début) proposé par Ramshaw et Marcus dans « Text Chunking using Transformation-Based Learning ». Dans ce format, le dossier doit contenir les deux fichiers .csv suivants :
    • token.csv : ce fichier doit contenir le texte sous forme de blocs en entrée.
    • tags.csv : ce fichier doit contenir des balises IOB pour les blocs de texte.
  • BILUO : extension du format IOB contenant les balises suivantes : B pour « Beginning » (Début), I pour « Inside » (Intérieur), L pour « Last » (Dernier), U pour « Unit » (Unité) et O pour « Outside » (Extérieur). Lorsque ce format est utilisé, le dossier contenant les données d’entraînement doit contenir les deux fichiers .csv suivants :
    • token.csv : ce fichier doit contenir le texte sous forme de blocs en entrée.
    • tags.csv : ce fichier doit contenir des balises BILUO pour les blocs de texte.

Pour plus d’informations sur ces formats et sur l’étiquetage des données dans ces formats, reportez-vous au guide sur l’étiquetage de texte avec Doccano.

Lors de l’entraînement d’un modèle de reconnaissance d’entités, vous pouvez choisir d’entraîner le modèle à partir de zéro ou d’affiner encore plus un modèle déjà entraîné.

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 modèle prend en charge les codeurs basés sur BERT, ALBERT, RoBERTa et spaCy qui reposent sur l’architecture du module de transformation et sont pré-entraînés sur d’importants volumes de texte de manière semi-supervisée.

L’entraînement de modèle se déroule par lots, le paramètre de taille de lot spécifiant le nombre de modèles d’entraînement traités pour l’entraînement en une seule 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 (10 % par défaut) comme ensemble 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.

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.

Bibliographie

Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. « Attention Is All You Need. » 6 décembre 2017. https://arxiv.org/abs/1706.03762.

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.E

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.

« Doccano. » https://github.com/doccano/doccano.D

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.