Fonctionnement de la reconnaissance d’entités

La reconnaissance d’entités, ou encore reconnaissance d’entités nommées (NER, Named Entity Recognition), est le processus consistant à extraire des informations à partir de phrases, de paragraphes, de rapports textuels ou d’autres formes de texte non structuré. Le jeu d’outils Analyse de texte de la boîte à outils GeoAI toolbox contient des outils qui utilisent des techniques de traitement du langage naturel (NLP, Natural Language Processing) pour entraîner des modèles de reconnaissance d’entités et utiliser ces modèles afin d’extraire des entités d’un texte non structuré.

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

Applications possibles

Les applications possibles de cet outil sont les suivantes :

  • Extraction de données (par exemple, lieu, officier à l’origine du rapport ou arme utilisée) de rapports de crime. Cela peut faciliter l’affichage des tendances et aider à planifier les efforts de correction.
  • Les informations telles que l’emplacement et la nécessité ou non d’une assistance peuvent être extraites à partir de tweets ou de publications sur les réseaux sociaux. Cela peut aider à identifier les endroits où une aide immédiate est nécessaire pendant un désastre naturel.
Organigramme Modèle de reconnaissance d’entités
Ce modèle de reconnaissance d’entités est destiné à extraire des entités telles qu’une date, une heure et un emplacement à partir de rapports de texte.

Dans ArcGIS, les modèles de reconnaissance d’entités reposent sur deux systèmes back-end : l’un basé sur l’architecture Transformer, et l’autre sur la bibliothèque spaCy opérant sur l’infrastructure 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 beaucoup plus simples pour utiliser le modèle.
    Processus d’intégration
  • Encoder : dans ce processus, le contexte est encodé dans un vecteur de mots. Cela s’effectue à l’aide de réseau CNN (Convolutional Neural Network) trigrammes résiduels.
    Processus d’intégration
  • Participer : la sortie issue de l’étape précédente est réduite en un vecteur unique allant être transmis à des fins de prédiction à un réseau de transfert de flux standard. Cette étape a un effet similaire à celui du mécanisme d’attention.
    Processus de participation
  • Prédire : l’étape finale dans le modèle consiste à faire une prédiction en fonction du texte en entrée. Ici, le vecteur de la couche d’attention est transmis à un perceptron multicouche pour produire l’ID d’étiquette d’entité.
    Processus de prévision

Le système back-end basé sur un module de transformation utilise l’architecture proposée par Vaswani et al. dans l’article« Attention Is All You Need. » Cela permet aux modèles d’être plus précis et parallélisables, tout en nécessitant des données étiquetées moins précises pour l’entraînement. En interne, les modèles de reconnaissance d’entités basés sur un module de transformation dans ArcGIS possèdent deux composants :

  • Encodeur : l’encodeur sert de backbone pour le modèle et transforme le texte en entrée en représentation d’entité sous forme de vecteurs de taille fixe. Le modèle utilise des encodeurs réputés tels que BERT, ALBERT et RoBERTa qui reposent sur l’architecture du module de transformation et qui sont pré-entraînés à l’aide d’énormes volumes de texte.
  • Classificateur de niveau jeton : un classificateur de niveau jeton sert de tête pour le modèle et classifie les représentations d’entité de chaque jeton dans plusieurs catégories représentant les diverses entités. Souvent, il s’agit d’une simple 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 dans le cadre de l’automatisation de l’analyse de grands volumes de texte non structuré. Comme pour les autres types de modèles, prenez soin de vous assurer qu’ils sont appliqués aux tâches pertinentes avec le niveau approprié de supervision humaine et de transparence concernant le type de modèle et les jeux de données d’entraînement utilisés pour entraîner le modèle.

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

Vous pouvez utiliser l’outil Extraire des entités à l’aide du Deep Learning pour appliquer un modèle de reconnaissance d’entités entraîné à du texte non structuré ou en extraire des 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 d’ArcGIS Living Atlas of the World ou entraîner vos propres modèles à l’aide de l’outil Entraîner le modèle de reconnaissance d’entités.

L’entrée dans l’outil Extraire des entités à l’aide du Deep Learning consiste en un dossier contenant les fichiers texte 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 du modèle) et d’autres paramètres de modèle. Certains modèles peuvent présenter des arguments de modèle supplémentaires.

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

L’outil peut s’exécuter sur des UC mais un GPU est recommandé pour le traitement car le Deep Learning sollicite d’importantes ressources de calcul. Pour exécuter cet outil sur un GPU, définissez le paramètre d’environnement Type de processeur sur GPU. Si vous avez plusieurs processeurs, spécifiez plutôt le paramètre d’environnement ID de GPU.

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

Vous pouvez utiliser l’outil Entraîner le modèle de reconnaissance d’entités afin d’entraîner les modèles NLP pour la reconnaissance d’entités nommées. Cet outil utilise une approche d’entraînement machine et entraîne le modèle en lui fournissant des échantillons d’entraînement composés de paires de texte en entrée et d’entités étiquetées dans ce texte. L’entraînement de modèles de traitement du langage naturel est une tâche qui consomme beaucoup de ressources de calcul et un GPU est donc recommandé.

Les données d’entraînement sont fournies par l’intermédiaire d’un 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. Les données d’entraînement se présentent sous la forme de fichiers .json ou .csv. Les types de jeu de données suivants sont pris en charge :

  • ner_json : le dossier 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 (inside, outside, beginning) proposé par Ramshaw et Marcus dans l’article intitulé « Text Chunking using Transformation-Based Learning ». Dans ce format, le dossier doit contenir les deux fichiers .csv suivants :
    • token.csv : ce fichier doit contenir du 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 qui contient les balises suivantes : B pour « beginning », I pour « inside », L pour « last », U pour « unit » et O pour « outside ». 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 du 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 l’étiquetage de données dans ces formats, consultez le guide É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’optimiser 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é comportant le même ensemble d’entités cible que dans les échantillons d’entraînement, vous pouvez l’optimiser à l’aide des nouvelles données d’entraînement. L’optimisation d’un modèle existant est souvent plus rapide que l’entraînement d’un nouveau modèle. De plus, ce processus requiert moins d’échantillons d’entraînement. Lorsque vous optimisez un modèle pré-entraîné, veillez à conserver le modèle de backbone qui a été 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 des modèles 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 en tant qu’entité d’adresse dans les paramètres d’outil. Au cours de l’inférence, ces entités sont géocodées à l’aide du localisateur spécifié et une classe d’entités est générée par le 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, une table contenant les entités extraites est générée à la place.

L’entraînement de 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 le biais du réseau neuronal. Chaque phase d’entrainement transmettant l’intégralité des données d’entraînement est appelée époque. Le paramètre Nombre maximal d’époques spécifie le nombre maximal de fois que les données d’entraînement sont vues par le modèle lors de son entraînement. Sa valeur dépend du modèle que vous entraînez, de la complexité de la tâche et du nombre d’échantillons d’entraînement dont vous disposez. Si vous disposez de nombreux échantillons d’entraînement, vous pouvez utiliser une valeur faible. En général, il est judicieux de procéder à l’entraînement pour davantage d’époques de façon répétée, tant que la perte de validation continue de baisser.

Le paramètre Backbone du modèle spécifie le réseau neuronal préconfiguré qui sert d’encodeur pour le modèle et qui extrait les représentations d’entité du texte en entrée. Ce modèle prend en charge les encodeurs reposant sur BERT-, ALBERT-, RoBERTa- et spaCy- qui s’appuient sur l’architecture du module de transformation et qui sont pré-entraînés à l’aide de grands volumes de texte en mode semi-supervisé.

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. Augmenter la taille de lot peut améliorer les performances de l’outil, mais le volume de mémoire utilisée est proportionnel à la taille de lot. Si un message d’erreur s’affiche pour mémoire insuffisante lors de l’entraînement du modèle, utilisez une taille de lot plus petite.

Le paramètre Vitesse d’apprentissage est l’un des hyperparamètres les plus importants. Il s’agit de la vitesse à laquelle les pondérations du modèle sont ajustées au cours de l’entraînement. Si vous spécifiez une vitesse d’apprentissage faible, le modèle s’améliore lentement et son entraînement peut prendre du temps, ce qui peut mener à une perte de temps et à un gaspillage des ressources. Une vitesse d’apprentissage élevée peut être contre-productive et le modèle peut ne pas être entraîné correctement. Avec des vitesses d’apprentissage élevées, il est possible que les pondérations du modèle soient ajustées radicalement, ce qui peut provoquer des résultats erronés. Il est souvent plus judicieux de ne pas spécifier de valeur pour le paramètre Vitesse d’apprentissage car l’outil utilise un outil automatisé de recherche de la vitesse d’apprentissage, conformément à l’article de Leslie N. Smith intitulé « Cyclical Learning Rates for Training Neural Networks ».

L’outil utilise une partie des données d’entraînement (10 pour cent par défaut) comme jeu de validation. Le paramètre Pourcentage de validation vous 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 le modèle ne s’améliore plus au cours d’époques d’entraînement successives. Vous pouvez désactiver ce comportement en décochant la case Arrêter lorsque le modèle ne s’améliore plus.

Vous pouvez également spécifier si les couches backbone dans le modèle pré-entraîné sont figées afin que les pondérations et les biais conservent leur conception d’origine. Par défaut, les couches du modèle de backbone ne sont pas figées et les pondérations et biais de la valeur du paramètre Backbone du modèle peuvent être altérés pour s’ajuster aux échantillons d’entraînement. Le temps de traitement est plus long, mais les résultats obtenus sont généralement meilleurs.

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.

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

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

Devlin, Jacob, Ming-Wei Chang, Kenton Lee et 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 et Mitch Marcus. « Text Chunking using Transformation-Based Learning. » 1995. In Third Workshop on Very Large Corpora.