Entrenar modelo de reconocimiento de entidades (GeoAI)

Resumen

Entrena un modelo de reconocimiento de entidades con nombre para extraer un conjunto predefinido de entidades de texto sin procesar.

Más información sobre cómo funciona Reconocimiento de entidades

Uso

  • Esta herramienta requiere la instalación de marcos de aprendizaje profundo. Para configurar su equipo para usar marcos de aprendizaje profundo en ArcGIS Pro, consulte Instalar marcos de aprendizaje profundo para ArcGIS.

  • Esta herramienta también se puede utilizar para ajustar un modelo entrenado existente.

  • Para ejecutar esta herramienta con la GPU, configure el entorno Tipo de procesador en GPU. Si tiene más de una GPU, especifique el entorno de Id. de GPU en su lugar.

  • La entrada puede ser una clase de entidad o una tabla con un campo de texto y etiquetas de entidad con nombre, o una carpeta con datos de entrenamiento en archivos .json o .csv.

  • Esta herramienta utiliza bases basadas en transformadores para entrenar modelos NER y también es compatible con el aprendizaje en contexto con indicaciones mediante el LLM Mistral. Para instalar la base Mistral, consulte base Mistral de ArcGIS.

  • Para obtener información sobre los requisitos para ejecutar esta herramienta y los problemas que pueden presentarse, consulte Preguntas frecuentes sobre el aprendizaje profundo.

Parámetros

EtiquetaExplicaciónTipo de datos
Carpeta o tabla de entrada

La entrada puede ser cualquiera de las siguientes:

  • Una tabla o clase de entidad que contiene un campo de texto con el texto de entrada para el modelo y las entidades etiquetadas donde el campo de texto seleccionado se utilizará como texto de entrada para el modelo y los campos restantes se tratarán como etiquetas de entidades con nombre.
  • Carpeta que contiene datos de entrenamiento en forma de datasets estándar para tareas NER. Los datos de entrenamiento deben estar en archivos .json o .csv. El formato de archivo determina el tipo de dataset de la entrada.
    • Cuando la entrada es una carpeta, se admiten los siguientes tipos de datasets:
      • ner_json: la carpeta de datos de entrenamiento debe contener un archivo .json con texto y las entidades etiquetadas con el formato de entrenamiento JSON de spaCy.
      • IOB: el formato IOB (etiquetas interiores –I, del inglés "inside"–, exteriores –O, del inglés "outside"– e iniciales –B, del inglés "beginning"–) propuesto por Ramshaw y Marcus en el ensayo Text Chunking using Transformation-Based Learning.

        La carpeta de datos de entrenamiento debe contener estos dos archivos .csv:

        • tokens.csv: contiene texto como fragmentos de entrada
        • tags.csv: contiene etiquetas IOB para los fragmentos de texto
      • BILUO: extensión del formato IOB que contiene además etiquetas finales L, del inglés "last" y de unidad U, del inglés "unit".

        La carpeta de datos de entrenamiento debe contener estos dos archivos .csv:

        • tokens.csv: contiene texto como fragmentos de entrada
        • tags.csv: contiene etiquetas BILUO para los fragmentos de texto
Folder; Feature Layer; Table View; Feature Class
Modelo de salida

La ubicación de la carpeta de salida donde se almacenará el modelo entrenado.

Folder
Archivo de modelo preentrenado
(Opcional)

Modelo previamente entrenado que se utilizará para ajustar con precisión el nuevo modelo. La entrada puede ser un archivo de definición de modelo de Esri (.emd) o un archivo de paquete de aprendizaje profundo (.dlpk).

Es posible ajustar un modelo previamente entrenado con entidades similares para que se adapte al nuevo modelo. El modelo previamente entrenado se debe haber entrenado con el mismo tipo de modelo y el mismo modelo de base que se utilizará para entrenar el nuevo modelo.

File
Entidad de dirección
(Opcional)

La entidad de dirección se tratará como una ubicación. Durante la inferencia, dichas entidades se geocodificarán con el localizador especificado y se producirá una clase de entidad como resultado del proceso de extracción de entidades. Si no se proporciona ningún localizador o el modelo entrenado no extrae entidades de dirección, se generará en su lugar una tabla con las entidades extraídas.

String
Máximo de épocas
(Opcional)

Número máximo de épocas para las que se entrenará el modelo. Un valor máximo de época de 1 significa que el dataset se enviará una vez por la red neuronal. El valor predeterminado es 5.

Long
Base del modelo
(Opcional)

Especifica la red neuronal preconfigurada que se usará como arquitectura para entrenar el nuevo modelo.

  • bert-base-casedEl modelo se entrenará con la red neuronal BERT. BERT está preentrenado con el objetivo de modelado del lenguaje enmascarado y la siguiente predicción de frase.
  • roberta-baseEl modelo se entrenará con la red neuronal RoBERTa. RoBERTa modifica los hiperparámetros clave de BERT, eliminando el objetivo de preentrenamiento y la formación de la siguiente frase con pequeños lotes y tasas de aprendizaje más altas.
  • albert-base-v1El modelo se entrenará con la red neuronal ALBERT. ALBERT utiliza una pérdida autosupervisada que se centra en modelar coherencia entre frases, lo que resulta en una mejor escalabilidad que BERT.
  • xlnet-base-casedEl modelo se entrenará con la red neuronal XLNet. XLNet es un método de preentrenamiento autorregresivo generalizado. Permite aprender contextos bidireccionales maximizando la probabilidad esperada en todas las permutaciones del orden de factorización, que superan las desventajas de BERT.
  • xlm-roberta-baseEl modelo se entrenará con la red neuronal XLM-RoBERTa. XLM-RoBERTa es un modelo multilingüe entrenado en 100 lenguajes diferentes. A diferencia de algunos modelos multilingües de XLM, no requiere que los tensores de lenguaje comprendan el lenguaje que se utiliza e identifica el lenguaje correcto de los Id. de entrada.
  • distilroberta-baseEl modelo se entrenará con la red neuronal DistilRoBERTa. DistilRoBERTa es un modelo de idioma inglés preentrenado con la supervisión de la red neural base de RoBERTa basado únicamente en OpenWebTextCorpus, una reproducción del dataset WebText de OpenAI.
  • distilbert-base-casedEl modelo se entrenará con la red neuronal DistilBERT. DistilBERT es un modelo de representación de lenguaje de propósito general más pequeño.
  • mistralEl modelo se entrenará utilizando el modelo de gran lenguaje (LLM) Mistral. Mistral es un transformador exclusivamente descodificador que utiliza atención de ventana deslizante, atención de consulta agrupada y divisor en tokens BPE de reserva de bytes. Para instalar la base Mistral, consulte base Mistral de ArcGIS.
String
Tamaño de lote
(Opcional)

El número de muestras de entrenamiento que se procesarán a la vez. El valor predeterminado es 2.

Aumentar el tamaño de lote puede mejorar el rendimiento de la herramienta; sin embargo, a medida que aumenta el tamaño del lote, se utiliza más memoria. Si se produce un error de memoria insuficiente, utilice un tamaño de lote más pequeño.

Double
Argumentos de modelo
(Opcional)

Argumentos adicionales que se utilizarán para inicializar el modelo. El argumento de modelo admitido es sequence_length, que se utiliza para fijar la longitud máxima de secuencia de los datos de entrenamiento que se tendrán en cuenta para entrenar el modelo.

Value Table
Tasa de aprendizaje
(Opcional)

El tamaño del paso que indica cuánto se ajustarán las ponderaciones del modelo durante el proceso de entrenamiento. Si no se especifica ningún valor, se derivará automáticamente una tasa de aprendizaje óptima.

Double
Porcentaje de validación
(Opcional)

Porcentaje de muestras de entrenamiento que se utilizarán para validar el modelo. El valor predeterminado es 10 para las bases del modelo basadas en transformadores y 50 para la base Mistral.

Double
Detener cuando el modelo deja de mejorar
(Opcional)

Especifica si el entrenamiento del modelo se detendrá cuando el modelo deje de mejorar o continuará hasta alcanzar el valor del parámetro Máximo de épocas.

  • Activado: el entrenamiento del modelo se detendrá cuando el modelo deje de mejorar, independientemente del valor del parámetro Máximo de épocas. Esta es la opción predeterminada.
  • Desactivado: el entrenamiento del modelo continuará hasta alcanzar el valor del parámetro Máximo de épocas.
Boolean
Hacer que la base del modelo se pueda entrenar
(Opcional)

Especifica si las capas de base del modelo previamente entrenado se inmovilizarán, de modo que los pesos y sesgos permanezcan tal como se diseñaron originalmente.

  • Activado: las capas de base no se inmovilizarán y los pesos y sesgos del valor del parámetro Base del modelo se pueden modificar para adaptarse a las muestras de entrenamiento. Esto tarda más tiempo en procesarse, pero generalmente produce mejores resultados. Esta es la opción predeterminada.
  • Desactivado: las capas de base se inmovilizarán y los pesos y sesgos predefinidos del valor del parámetro Base del modelo no se modificarán durante el entrenamiento.

Boolean
Campo de texto

Un campo de texto de la tabla o clase de entidad de entrada que contiene el texto que utilizará el modelo como entrada. Este parámetro es necesario cuando el valor del parámetro Carpeta o tabla de entrada tiene una clase de entidad o tabla.

Field
Solicitar
(Opcional)

Entrada o instrucción específica dada a un modelo de gran lenguaje (LLM) para generar la salida esperada.

El valor predeterminado es Extraer entidades con nombre pertenecientes a las clases especificadas dentro del texto proporcionado. No etiquete entidades que pertenezcan a otra clase.

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})
NombreExplicaciónTipo de datos
in_folder

La entrada puede ser cualquiera de las siguientes:

  • Una tabla o clase de entidad que contiene un campo de texto con el texto de entrada para el modelo y las entidades etiquetadas donde el campo de texto seleccionado se utilizará como texto de entrada para el modelo y los campos restantes se tratarán como etiquetas de entidades con nombre.
  • Carpeta que contiene datos de entrenamiento en forma de datasets estándar para tareas NER. Los datos de entrenamiento deben estar en archivos .json o .csv. El formato de archivo determina el tipo de dataset de la entrada.
    • Cuando la entrada es una carpeta, se admiten los siguientes tipos de datasets:
      • ner_json: la carpeta de datos de entrenamiento debe contener un archivo .json con texto y las entidades etiquetadas con el formato de entrenamiento JSON de spaCy.
      • IOB: el formato IOB (etiquetas interiores –I, del inglés "inside"–, exteriores –O, del inglés "outside"– e iniciales –B, del inglés "beginning"–) propuesto por Ramshaw y Marcus en el ensayo Text Chunking using Transformation-Based Learning.

        La carpeta de datos de entrenamiento debe contener estos dos archivos .csv:

        • tokens.csv: contiene texto como fragmentos de entrada
        • tags.csv: contiene etiquetas IOB para los fragmentos de texto
      • BILUO: extensión del formato IOB que contiene además etiquetas finales L, del inglés "last" y de unidad U, del inglés "unit".

        La carpeta de datos de entrenamiento debe contener estos dos archivos .csv:

        • tokens.csv: contiene texto como fragmentos de entrada
        • tags.csv: contiene etiquetas BILUO para los fragmentos de texto
Folder; Feature Layer; Table View; Feature Class
out_model

La ubicación de la carpeta de salida donde se almacenará el modelo entrenado.

Folder
pretrained_model_file
(Opcional)

Modelo previamente entrenado que se utilizará para ajustar con precisión el nuevo modelo. La entrada puede ser un archivo de definición de modelo de Esri (.emd) o un archivo de paquete de aprendizaje profundo (.dlpk).

Es posible ajustar un modelo previamente entrenado con entidades similares para que se adapte al nuevo modelo. El modelo previamente entrenado se debe haber entrenado con el mismo tipo de modelo y el mismo modelo de base que se utilizará para entrenar el nuevo modelo.

File
address_entity
(Opcional)

La entidad de dirección se tratará como una ubicación. Durante la inferencia, dichas entidades se geocodificarán con el localizador especificado y se producirá una clase de entidad como resultado del proceso de extracción de entidades. Si no se proporciona ningún localizador o el modelo entrenado no extrae entidades de dirección, se generará en su lugar una tabla con las entidades extraídas.

String
max_epochs
(Opcional)

Número máximo de épocas para las que se entrenará el modelo. Un valor máximo de época de 1 significa que el dataset se enviará una vez por la red neuronal. El valor predeterminado es 5.

Long
model_backbone
(Opcional)

Especifica la red neuronal preconfigurada que se usará como arquitectura para entrenar el nuevo modelo.

  • bert-base-casedEl modelo se entrenará con la red neuronal BERT. BERT está preentrenado con el objetivo de modelado del lenguaje enmascarado y la siguiente predicción de frase.
  • roberta-baseEl modelo se entrenará con la red neuronal RoBERTa. RoBERTa modifica los hiperparámetros clave de BERT, eliminando el objetivo de preentrenamiento y la formación de la siguiente frase con pequeños lotes y tasas de aprendizaje más altas.
  • albert-base-v1El modelo se entrenará con la red neuronal ALBERT. ALBERT utiliza una pérdida autosupervisada que se centra en modelar coherencia entre frases, lo que resulta en una mejor escalabilidad que BERT.
  • xlnet-base-casedEl modelo se entrenará con la red neuronal XLNet. XLNet es un método de preentrenamiento autorregresivo generalizado. Permite aprender contextos bidireccionales maximizando la probabilidad esperada en todas las permutaciones del orden de factorización, que superan las desventajas de BERT.
  • xlm-roberta-baseEl modelo se entrenará con la red neuronal XLM-RoBERTa. XLM-RoBERTa es un modelo multilingüe entrenado en 100 lenguajes diferentes. A diferencia de algunos modelos multilingües de XLM, no requiere que los tensores de lenguaje comprendan el lenguaje que se utiliza e identifica el lenguaje correcto de los Id. de entrada.
  • distilroberta-baseEl modelo se entrenará con la red neuronal DistilRoBERTa. DistilRoBERTa es un modelo de idioma inglés preentrenado con la supervisión de la red neural base de RoBERTa basado únicamente en OpenWebTextCorpus, una reproducción del dataset WebText de OpenAI.
  • distilbert-base-casedEl modelo se entrenará con la red neuronal DistilBERT. DistilBERT es un modelo de representación de lenguaje de propósito general más pequeño.
  • mistralEl modelo se entrenará utilizando el modelo de gran lenguaje (LLM) Mistral. Mistral es un transformador exclusivamente descodificador que utiliza atención de ventana deslizante, atención de consulta agrupada y divisor en tokens BPE de reserva de bytes. Para instalar la base Mistral, consulte base Mistral de ArcGIS.
String
batch_size
(Opcional)

El número de muestras de entrenamiento que se procesarán a la vez. El valor predeterminado es 2.

Aumentar el tamaño de lote puede mejorar el rendimiento de la herramienta; sin embargo, a medida que aumenta el tamaño del lote, se utiliza más memoria. Si se produce un error de memoria insuficiente, utilice un tamaño de lote más pequeño.

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

Argumentos adicionales que se utilizarán para inicializar el modelo. El argumento de modelo admitido es sequence_length, que se utiliza para fijar la longitud máxima de secuencia de los datos de entrenamiento que se tendrán en cuenta para entrenar el modelo.

Value Table
learning_rate
(Opcional)

El tamaño del paso que indica cuánto se ajustarán las ponderaciones del modelo durante el proceso de entrenamiento. Si no se especifica ningún valor, se derivará automáticamente una tasa de aprendizaje óptima.

Double
validation_percentage
(Opcional)

Porcentaje de muestras de entrenamiento que se utilizarán para validar el modelo. El valor predeterminado es 10 para las bases del modelo basadas en transformadores y 50 para la base Mistral.

Double
stop_training
(Opcional)

Especifica si el entrenamiento del modelo se detendrá cuando el modelo deje de mejorar o continuará hasta alcanzar el valor del parámetro max_epochs.

  • STOP_TRAININGEl entrenamiento del modelo se detendrá cuando el modelo deje de mejorar, independientemente del valor del parámetro max_epochs. Esta es la opción predeterminada.
  • CONTINUE_TRAININGEl entrenamiento del modelo continuará hasta alcanzar el valor del parámetro max_epochs.
Boolean
make_trainable
(Opcional)

Especifica si las capas de base del modelo previamente entrenado se inmovilizarán, de modo que los pesos y sesgos permanezcan tal como se diseñaron originalmente.

  • TRAIN_MODEL_BACKBONELas capas de base no se inmovilizarán y los pesos y sesgos del valor del parámetro model_backbone se pueden modificar para adaptarse a las muestras de entrenamiento. Esto tarda más tiempo en procesarse, pero generalmente produce mejores resultados. Esta es la opción predeterminada.
  • FREEZE_MODEL_BACKBONELas capas de base se inmovilizarán y los pesos y sesgos predefinidos del valor del parámetro model_backbone no se modificarán durante el entrenamiento.
Boolean
text_field

Un campo de texto de la tabla o clase de entidad de entrada que contiene el texto que utilizará el modelo como entrada. Este parámetro es necesario cuando el valor del parámetro in_folder tiene una clase de entidad o tabla.

Field
prompt
(Opcional)

Entrada o instrucción específica dada a un modelo de gran lenguaje (LLM) para generar la salida esperada.

El valor predeterminado es Extraer entidades con nombre pertenecientes a las clases especificadas dentro del texto proporcionado. No etiquete entidades que pertenezcan a otra clase.

String

Muestra de código

Entrenar el modelo de reconocimiento de entidades (secuencia de comandos independiente)

El siguiente ejemplo muestra cómo utilizar la función 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)

Información de licenciamiento

  • Basic: No
  • Standard: No
  • Advanced: Sí

Temas relacionados