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 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. 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 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 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. L’effet de cette étape est 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

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 transformateur et qui s’exécute comme modèle avec décodeur uniquement. Les composants clés 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 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 de 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 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 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. 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. 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 de traitement du langage naturel est une tâche qui consomme beaucoup de ressources de calcul et un GPU est donc recommandé.

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. 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 jeu 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 (I - inside, O - outside, B - beginning tags) proposé par Ramshaw et Marcus dans l’article intitulé Text Chunking using Transformation-Based Learning.

        Le dossier des 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 des 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 de texte.

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é 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 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 transformateur 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. 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 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. 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 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.

Ressources

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

"Attention Is All You Need" par Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser et Illia Polosukhin, arXivLabs, université Cornell

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.

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.

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