Entraîner le modèle de reconnaissance d’entités (GeoAI)

Synthèse

Entraîne un modèle de reconnaissance d’entités nommées pour extraire un ensemble prédéfini d’entités à partir d’un texte brut.

En savoir plus sur le fonctionnement de l’outil Reconnaissance d’entités

Utilisation

  • Cet outil requiert l’installation des structures de Deep Learning. Pour configurer votre machine afin d’utiliser des structures d’apprentissage profond dans ArcGIS Pro, consultez la rubrique Installer les structures d’apprentissage profond pour ArcGIS.

  • Cet outil permet également d’optimiser un modèle entraîné existant.

  • Pour exécuter cet outil avec un processeur, 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.

  • L’entrée peut être une table ou une classe d’entités avec un champ de texte et des étiquettes d’entités nommées ou un dossier avec des données d’entraînement dans des fichiers .json ou .csv.

  • Cet outil utilise des backbones basés sur des transformeurs pour entraîner des modèles NER et prend en charge l’apprentissage en contexte avec des invites à l’aide du grand modèle de langage (LLM) Mistral. Pour installer le backbone Mistral, reportez-vous à la rubrique ArcGIS Mistral Backbone.

  • Pour en savoir plus sur les exigences relatives à l’exécution de cet outil, ainsi que sur les problèmes que vous pouvez rencontrer, consultez les rubriques FAQ Apprentissage profond. .

Paramètres

ÉtiquetteExplicationType de données
Dossier ou table en entrée

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.
Folder; Feature Layer; Table View; Feature Class
Modèle en sortie

Emplacement du dossier en sortie où sera stocké le modèle entraîné.

Folder
Fichier de modèle pré-entraîné
(Facultatif)

Modèle pré-entraîné utilisé pour optimiser le nouveau modèle. L’entrée peut être un fichier de définition de modèle Esri (.emd) ou un fichier de paquetage d’apprentissage profond (.dlpk).

Un modèle pré-entraîné avec des entités similaires peut être optimisé pour s’ajuster au nouveau modèle. Le modèle pré-entraîné doit avoir été entraîné avec le même type de modèle et le même modèle backbone que ceux qui serviront à entraîner le nouveau modèle.

File
Entité d’adresse
(Facultatif)

Entité d’adresse qui sera traitée comme un emplacement. Au cours de l’inférence, de telles 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.

String
Nombre maximal d’époques
(Facultatif)

Nombre maximal d’époques pour lesquelles le modèle est entraîné. Si le nombre maximal d’époques est égal à 1, le jeu de données est transmis une fois à travers le réseau neuronal. La valeur par défaut est 5.

Long
Backbone du modèle
(Facultatif)

Spécifie le réseau neuronal préconfiguré à utiliser comme architecture pour entraîner le nouveau modèle.

  • bert-base-casedLe modèle sera entraîné avec le réseau neuronal BERT. BERT est pré-entraîné avec l’objectif de modélisation de langage masqué et la prédiction de phrase suivante.
  • roberta-baseLe modèle sera entraîné avec le réseau neuronal RoBERTa. Dans RoBERTa, la modification des hyperparamètres principaux de BERT induit l’élimination de l’objectif de pré-entraînement et l’entraînement de la phrase suivante avec de petits lots et des taux d’apprentissage plus élevés.
  • albert-base-v1Le modèle sera entraîné avec le réseau neuronal ALBERT. ALBERT utilise une perte auto-supervisée axée sur la modélisation de la cohérence entre les phrases, ce qui rend ce réseau neuronal plus évolutif que BERT.
  • xlnet-base-casedLe modèle sera entraîné avec le réseau neuronal XLNet. XLNet est une méthode de pré-entraînement auto-régressive généralisée. Ce réseau neuronal permet d’apprendre des contextes bidirectionnels, en maximisant la probabilité attendue sur toutes les permutations de l’ordre de factorisation, ce qui remédie aux inconvénients de BERT.
  • xlm-roberta-baseLe modèle sera entraîné avec le réseau neuronal XLM-RoBERTa. XLM-RoBERTa est un modèle multilingue entraîné sur 100 langues différentes. Contrairement à certains modèles multilingues XLM, il ne nécessite pas de tenseurs de langage pour comprendre quelle est la langue utilisée et il identifie la langue correcte à partir des identifiants en entrée.
  • distilroberta-baseLe modèle sera entraîné avec le réseau neuronal DistilRoBERTa. DistilRoBERTa est un modèle de langue anglaise pré-entraîné sous la supervision du réseau neuronal Roberta qui repose uniquement sur OpenWebTextCorpus, une reproduction du jeu de données WebText d’OpenAI.
  • distilbert-base-casedLe modèle sera entraîné avec le réseau neuronal DistilBERT. DistilBERT est un modèle de représentation du langage plus petit à usage général.
  • mistralLe modèle sera entraîné à l’aide du grand modèle de langage (LLM) Mistral. Mistral est un transformateur avec décodeur uniquement qui utilise la technique Sliding Window Attention (fenêtre d’attention glissante), Grouped Query Attention (attention de requête groupée) et le tokenizer BPE (Byte-Pair Encoding) Byte-fallback. Pour installer le backbone Mistral, reportez-vous à la rubrique ArcGIS Mistral Backbone.
String
Taille de lot
(Facultatif)

Nombre d’échantillons d’entraînement qui seront traités en une fois. La valeur par défaut est de 2.

Il est possible d’augmenter la taille de lot pour améliorer les performances de l’outil. Il convient toutefois de noter que le volume de mémoire utilisée est proportionnel à la taille de lot. Si un message d’erreur s’affiche pour mémoire insuffisante, utilisez une taille de lot plus petite.

Double
Arguments du modèle
(Facultatif)

Arguments supplémentaires utilisés pour initialiser le modèle. L’argument de modèle pris en charge est sequence_length, ce qui permet de définir la longueur de séquence maximale des données d’entraînement à prendre en compte pour l’entraînement du modèle.

Value Table
Vitesse d’apprentissage
(Facultatif)

Taille de l’intervalle indiquant dans quelle mesure les pondérations du modèle seront ajustées au cours du processus d’entraînement. Si aucune valeur n’est spécifiée, une vitesse d’apprentissage optimale est déduite automatiquement.

Double
Pourcentage de validation
(Facultatif)

Pourcentage des échantillons d’entraînement utilisés pour valider le modèle. La valeur par défaut est 10 pour les modèles de backbone basés sur des transformeurs et 50 pour le backbone Mistral.

Double
Arrêter lorsque le modèle ne s’améliore plus
(Facultatif)

Indique si l’entraînement du modèle s’arrête lorsque ce dernier cesse de s’améliorer ou continue jusqu’à atteindre la valeur du paramètre Max Epochs (Nombre maximal d’époques).

  • Activé : l’entraînement du modèle s’arrête lorsque ce dernier cesse de s’améliorer, quelle que soit la valeur du paramètre Nombre maximal d’époques. Il s’agit de l’option par défaut.
  • Désactivé : l’entraînement du modèle continue jusqu’à atteindre la valeur du paramètre Nombre maximal d’époques.
Boolean
Adapter le backbone du modèle pour l’entraînement
(Facultatif)

Spécifie 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.

  • Activé : les couches 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. Il s’agit de l’option par défaut.
  • Désactivé : les couches backbone sont figées et les pondérations et biais prédéfinis de la valeur de paramètre Backbone du modèle ne sont pas altérés lors de l’entraînement.

Boolean
Champ de texte

Champ de texte dans la table ou la classe d’entités en entrée qui contient le texte que le modèle doit utiliser en entrée. Ce paramètre est requis lorsque la valeur du paramètre Dossier ou table en entrée est une table ou une classe d’entités.

Field
Prompt
(Facultatif)

Entrée ou instruction spécifique donnée à un grand modèle de langage (LLM) pour générer une sortie attendue.

La valeur par défaut est Extraire les entités nommées appartenant aux classes spécifiées dans le texte fourni. Ne pas ajouter de balise aux entités appartenant à une autre classe.

String

arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_model, {pretrained_model_file}, {address_entity}, {max_epochs}, {model_backbone}, {batch_size}, {model_arguments}, {learning_rate}, {validation_percentage}, {stop_training}, {make_trainable}, text_field, {prompt})
NomExplicationType de données
in_folder

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.
Folder; Feature Layer; Table View; Feature Class
out_model

Emplacement du dossier en sortie où sera stocké le modèle entraîné.

Folder
pretrained_model_file
(Facultatif)

Modèle pré-entraîné utilisé pour optimiser le nouveau modèle. L’entrée peut être un fichier de définition de modèle Esri (.emd) ou un fichier de paquetage d’apprentissage profond (.dlpk).

Un modèle pré-entraîné avec des entités similaires peut être optimisé pour s’ajuster au nouveau modèle. Le modèle pré-entraîné doit avoir été entraîné avec le même type de modèle et le même modèle backbone que ceux qui serviront à entraîner le nouveau modèle.

File
address_entity
(Facultatif)

Entité d’adresse qui sera traitée comme un emplacement. Au cours de l’inférence, de telles 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.

String
max_epochs
(Facultatif)

Nombre maximal d’époques pour lesquelles le modèle est entraîné. Si le nombre maximal d’époques est égal à 1, le jeu de données est transmis une fois à travers le réseau neuronal. La valeur par défaut est 5.

Long
model_backbone
(Facultatif)

Spécifie le réseau neuronal préconfiguré à utiliser comme architecture pour entraîner le nouveau modèle.

  • bert-base-casedLe modèle sera entraîné avec le réseau neuronal BERT. BERT est pré-entraîné avec l’objectif de modélisation de langage masqué et la prédiction de phrase suivante.
  • roberta-baseLe modèle sera entraîné avec le réseau neuronal RoBERTa. Dans RoBERTa, la modification des hyperparamètres principaux de BERT induit l’élimination de l’objectif de pré-entraînement et l’entraînement de la phrase suivante avec de petits lots et des taux d’apprentissage plus élevés.
  • albert-base-v1Le modèle sera entraîné avec le réseau neuronal ALBERT. ALBERT utilise une perte auto-supervisée axée sur la modélisation de la cohérence entre les phrases, ce qui rend ce réseau neuronal plus évolutif que BERT.
  • xlnet-base-casedLe modèle sera entraîné avec le réseau neuronal XLNet. XLNet est une méthode de pré-entraînement auto-régressive généralisée. Ce réseau neuronal permet d’apprendre des contextes bidirectionnels, en maximisant la probabilité attendue sur toutes les permutations de l’ordre de factorisation, ce qui remédie aux inconvénients de BERT.
  • xlm-roberta-baseLe modèle sera entraîné avec le réseau neuronal XLM-RoBERTa. XLM-RoBERTa est un modèle multilingue entraîné sur 100 langues différentes. Contrairement à certains modèles multilingues XLM, il ne nécessite pas de tenseurs de langage pour comprendre quelle est la langue utilisée et il identifie la langue correcte à partir des identifiants en entrée.
  • distilroberta-baseLe modèle sera entraîné avec le réseau neuronal DistilRoBERTa. DistilRoBERTa est un modèle de langue anglaise pré-entraîné sous la supervision du réseau neuronal Roberta qui repose uniquement sur OpenWebTextCorpus, une reproduction du jeu de données WebText d’OpenAI.
  • distilbert-base-casedLe modèle sera entraîné avec le réseau neuronal DistilBERT. DistilBERT est un modèle de représentation du langage plus petit à usage général.
  • mistralLe modèle sera entraîné à l’aide du grand modèle de langage (LLM) Mistral. Mistral est un transformateur avec décodeur uniquement qui utilise la technique Sliding Window Attention (fenêtre d’attention glissante), Grouped Query Attention (attention de requête groupée) et le tokenizer BPE (Byte-Pair Encoding) Byte-fallback. Pour installer le backbone Mistral, reportez-vous à la rubrique ArcGIS Mistral Backbone.
String
batch_size
(Facultatif)

Nombre d’échantillons d’entraînement qui seront traités en une fois. La valeur par défaut est de 2.

Il est possible d’augmenter la taille de lot pour améliorer les performances de l’outil. Il convient toutefois de noter que le volume de mémoire utilisée est proportionnel à la taille de lot. Si un message d’erreur s’affiche pour mémoire insuffisante, utilisez une taille de lot plus petite.

Double
model_arguments
[model_arguments,...]
(Facultatif)

Arguments supplémentaires utilisés pour initialiser le modèle. L’argument de modèle pris en charge est sequence_length, ce qui permet de définir la longueur de séquence maximale des données d’entraînement à prendre en compte pour l’entraînement du modèle.

Value Table
learning_rate
(Facultatif)

Taille de l’intervalle indiquant dans quelle mesure les pondérations du modèle seront ajustées au cours du processus d’entraînement. Si aucune valeur n’est spécifiée, une vitesse d’apprentissage optimale est déduite automatiquement.

Double
validation_percentage
(Facultatif)

Pourcentage des échantillons d’entraînement utilisés pour valider le modèle. La valeur par défaut est 10 pour les modèles de backbone basés sur des transformeurs et 50 pour le backbone Mistral.

Double
stop_training
(Facultatif)

Indique si l’entraînement du modèle s’arrête lorsque ce dernier cesse de s’améliorer ou continue jusqu’à atteindre la valeur du paramètre max_epochs.

  • STOP_TRAININGL’entraînement du modèle s’arrête lorsque ce dernier cesse de s’améliorer, quelle que soit la valeur du paramètre max_epochs. Il s’agit de l’option par défaut.
  • CONTINUE_TRAININGL’entraînement du modèle continue jusqu’à atteindre la valeur du paramètre max_epochs.
Boolean
make_trainable
(Facultatif)

Spécifie 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.

  • TRAIN_MODEL_BACKBONELes couches backbone ne sont pas figées, et les pondérations et biais de la valeur du paramètre model_backbone 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. Il s’agit de l’option par défaut.
  • FREEZE_MODEL_BACKBONELes couches backbone sont figées et les pondérations et biais prédéfinis de la valeur de paramètre model_backbone ne sont pas altérés lors de l’entraînement.
Boolean
text_field

Champ de texte dans la table ou la classe d’entités en entrée qui contient le texte que le modèle doit utiliser en entrée. Ce paramètre est requis lorsque la valeur du paramètre in_folder est une table ou une classe d’entités.

Field
prompt
(Facultatif)

Entrée ou instruction spécifique donnée à un grand modèle de langage (LLM) pour générer une sortie attendue.

La valeur par défaut est Extraire les entités nommées appartenant aux classes spécifiées dans le texte fourni. Ne pas ajouter de balise aux entités appartenant à une autre classe.

String

Exemple de code

TrainEntityRecognitionModel (script autonome)

L’exemple suivant démontre comment utiliser la fonction TrainEntityRecognitionModel.

# Name: TrainEntityRecognizer.py
# Description: Train an Entity Recognition model to extract useful entities such as "Address", "Date" from text.  

# Import system modules
import arcpy

arcpy.env.workspace = "C:/textanalysisexamples/data"

# Set local variables
in_folder = "train_data"
out_folder = "test_bio_format"

# Run Train Entity Recognition Model
arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_folder)

Informations de licence

  • Basic: Non
  • Standard: Non
  • Advanced: Oui

Rubriques connexes