Entrenar un modelo de clasificación de texto (GeoAI)

Resumen

Entrena un modelo de clasificación de texto para asignar una categoría o etiqueta predefinida al texto no estructurado.

Más información sobre cómo funciona la herramienta de clasificación de texto

Uso

  • Esta herramienta requiere instalar marcos de aprendizaje profundo. Para configurar su equipo para usar marcos de aprendizaje profundo en ArcGIS AllSource, consulte Instalar marcos de aprendizaje profundo para ArcGIS.

  • Esta herramienta también puede utilizarse para ajustar un modelo ya entrenado.

  • Para ejecutar esta herramienta utilizando la GPU, establezca 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 de la herramienta es una tabla o una clase de entidad que contiene datos de entrenamiento, con un campo de texto que contiene el texto de entrada y un campo de etiqueta que contiene las etiquetas de la clase de destino.

  • 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
Tabla de entrada

Clase de entidad o tabla que contiene un campo de texto con el texto de entrada para el modelo y un campo de etiqueta que contiene las etiquetas de la clase de destino.

Feature Layer; Table View
Campo de texto

Campo de texto de la tabla o clase de entidad de entrada que contiene el texto que el modelo va a clasificar.

Field
Campo de etiqueta

Campo de texto de la clase de entidad o tabla entrada que contiene las etiquetas de clase de destino para entrenar el modelo. En el caso de la clasificación de texto multietiqueta, especifique más de un campo de texto.

Field
Modelo de salida

Ubicación de la carpeta de salida que almacenará el modelo entrenado.

Folder
Archivo del modelo preentrenado
(Opcional)

Un modelo previamente entrenado que se usará para ajustar 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).

Puede ajustarse un modelo previamente entrenado con clases similares para adaptarse al nuevo modelo. El modelo previamente entrenado debe haber sido entrenado con el mismo tipo de modelo y modelo base que se usará para entrenar el nuevo modelo.

File
Máximo de épocas
(Opcional)

El número máximo de épocas para las que se entrenará el modelo. Un valor máximo de épocas de 1 significa que el dataset se pasa hacia delante y hacia atrás por la red neuronal una vez. El valor predeterminado es 5.

Long
Modelo central
(Opcional)

Especifica la red neuronal preconfigurada que servirá de codificador para el modelo y extraerá representaciones de características del texto de entrada en forma de vectores de longitud fija. Luego estos vectores se pasan como entrada al encabezado de clasificación del modelo.

  • bert-base-casedEl modelo se entrenará con la red neuronal BERT. BERT se preentrena utilizando el objetivo de modelado del lenguaje enmascarado y la predicción de la siguiente 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 entrenando la siguiente frase con lotes pequeños 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 la coherencia entre frases, lo que da lugar a 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, lo que subsana los inconvenientes de BERT.
  • xlm-roberta-baseEl modelo se entrenará con la red neuronal XLM-RoBERTa. XLM-RoBERTa es un modelo multilingüe entrenado en 100 idiomas diferentes. A diferencia de algunos modelos multilingües XLM, no requiere tensores lingüísticos para comprender qué idioma se utiliza e identifica el idioma correcto a partir de los ID de entrada.
  • distilroberta-baseEl modelo se entrenará con la red neuronal DistilRoBERTa. DistilRoBERTa es un modelo de lengua inglesa preentrenado con la supervisión de roberta-base ú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 del lenguaje más pequeño y de uso general.
String
Tamaño de lote
(Opcional)

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

El rendimiento de la herramienta puede mejorarse aumentando el tamaño del lote; sin embargo, conforme 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 para inicializar el modelo, como seq_len para la longitud máxima de secuencia de los datos de entrenamiento, que se tendrán en cuenta para entrenar el modelo.

Consulte los argumentos de palabra clave en la documentación de TextClassifier para ver la lista de argumentos de modelo admitidos que se pueden utilizar.

Value Table
Tasa de aprendizaje
(Opcional)

Tamaño del paso que indica cuánto se ajustarán los pesos del modelo durante el proceso de entrenamiento. Si no se especifica ningún valor, se determinará automáticamente una tasa de aprendizaje óptima.

Double
Porcentaje de validación
(Opcional)

El porcentaje de muestras de entrenamiento que se usará para validar el modelo. El valor predeterminado es 10.

Double
Detener cuando el modelo deja de mejorar
(Opcional)

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

  • Activado: el entrenamiento del modelo se detendrá cuando el modelo ya no mejore, independientemente del valor especificado del parámetro Máximo de épocas. Esta es la opción predeterminada.
  • Desactivado: el entrenamiento del modelo continuará hasta que se alcance el valor del parámetro Máximo de épocas.
Boolean
Convertir el modelo central en entrenable
(Opcional)

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

  • Activado: las capas base no se congelarán, y los pesos y sesgos del valor del parámetro Modelo central se pueden modificar para que se ajusten a las muestras de formación. Esto conlleva más tiempo de procesamiento, pero suele producir mejores resultados. Esta es la opción predeterminada.
  • Desactivado: las capas base se congelarán, y los pasos y sesgos predefinidos del valor del parámetro Modelo central no se modificarán durante el entrenamiento.

Boolean
Quitar etiquetas HTML
(Opcional)

Especifica si se eliminarán las etiquetas HTML del texto introducido.

  • Activado: se eliminarán las etiquetas HTML del texto introducido. Esta es la opción predeterminada.
  • Desactivado: las etiquetas HTML del texto introducido no se eliminarán.

Boolean
Quitar URL
(Opcional)

Especifica si se eliminarán las direcciones URL del texto introducido.

  • Activado: se eliminarán las direcciones URL del texto introducido. Esta es la opción predeterminada.
  • Desactivado: las direcciones URL del texto introducido no se eliminarán.

Boolean

arcpy.geoai.TrainTextClassificationModel(in_table, text_field, label_field, out_model, {pretrained_model_file}, {max_epochs}, {model_backbone}, {batch_size}, {model_arguments}, {learning_rate}, {validation_percentage}, {stop_training}, {make_trainable}, {remove_html_tags}, {remove_urls})
NombreExplicaciónTipo de datos
in_table

Clase de entidad o tabla que contiene un campo de texto con el texto de entrada para el modelo y un campo de etiqueta que contiene las etiquetas de la clase de destino.

Feature Layer; Table View
text_field

Campo de texto de la tabla o clase de entidad de entrada que contiene el texto que el modelo va a clasificar.

Field
label_field
[label_field,...]

Campo de texto de la clase de entidad o tabla entrada que contiene las etiquetas de clase de destino para entrenar el modelo. En el caso de la clasificación de texto multietiqueta, especifique más de un campo de texto.

Field
out_model

Ubicación de la carpeta de salida que almacenará el modelo entrenado.

Folder
pretrained_model_file
(Opcional)

Un modelo previamente entrenado que se usará para ajustar 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).

Puede ajustarse un modelo previamente entrenado con clases similares para adaptarse al nuevo modelo. El modelo previamente entrenado debe haber sido entrenado con el mismo tipo de modelo y modelo base que se usará para entrenar el nuevo modelo.

File
max_epochs
(Opcional)

El número máximo de épocas para las que se entrenará el modelo. Un valor máximo de épocas de 1 significa que el dataset se pasa hacia delante y hacia atrás por la red neuronal una vez. El valor predeterminado es 5.

Long
model_backbone
(Opcional)

Especifica la red neuronal preconfigurada que servirá de codificador para el modelo y extraerá representaciones de características del texto de entrada en forma de vectores de longitud fija. Luego estos vectores se pasan como entrada al encabezado de clasificación del modelo.

  • bert-base-casedEl modelo se entrenará con la red neuronal BERT. BERT se preentrena utilizando el objetivo de modelado del lenguaje enmascarado y la predicción de la siguiente 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 entrenando la siguiente frase con lotes pequeños 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 la coherencia entre frases, lo que da lugar a 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, lo que subsana los inconvenientes de BERT.
  • xlm-roberta-baseEl modelo se entrenará con la red neuronal XLM-RoBERTa. XLM-RoBERTa es un modelo multilingüe entrenado en 100 idiomas diferentes. A diferencia de algunos modelos multilingües XLM, no requiere tensores lingüísticos para comprender qué idioma se utiliza e identifica el idioma correcto a partir de los ID de entrada.
  • distilroberta-baseEl modelo se entrenará con la red neuronal DistilRoBERTa. DistilRoBERTa es un modelo de lengua inglesa preentrenado con la supervisión de roberta-base ú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 del lenguaje más pequeño y de uso general.
String
batch_size
(Opcional)

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

El rendimiento de la herramienta puede mejorarse aumentando el tamaño del lote; sin embargo, conforme 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 para inicializar el modelo, como seq_len para la longitud máxima de secuencia de los datos de entrenamiento, que se tendrán en cuenta para entrenar el modelo.

Consulte los argumentos de palabra clave en la documentación de TextClassifier para ver la lista de argumentos de modelo admitidos que se pueden utilizar.

Value Table
learning_rate
(Opcional)

Tamaño del paso que indica cuánto se ajustarán los pesos del modelo durante el proceso de entrenamiento. Si no se especifica ningún valor, se determinará automáticamente una tasa de aprendizaje óptima.

Double
validation_percentage
(Opcional)

El porcentaje de muestras de entrenamiento que se usará para validar el modelo. El valor predeterminado es 10.

Double
stop_training
(Opcional)

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

  • STOP_TRAININGEl entrenamiento del modelo se detendrá cuando el modelo ya no mejore, independientemente del valor especificado del parámetro max_epochs. Esta es la opción predeterminada.
  • CONTINUE_TRAININGEl entrenamiento del modelo continuará hasta que se alcance el valor del parámetro max_epochs.
Boolean
make_trainable
(Opcional)

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

  • TRAIN_MODEL_BACKBONELas capas base no se congelarán, y los pesos y sesgos del valor del parámetro model_backbone se pueden modificar para que se ajusten a las muestras de formación. Esto conlleva más tiempo de procesamiento, pero suele producir mejores resultados. Esta es la opción predeterminada.
  • FREEZE_MODEL_BACKBONELas capas base se congelarán, y los pasos y sesgos predefinidos del valor del parámetro model_backbone no se modificarán durante el entrenamiento.
Boolean
remove_html_tags
(Opcional)

Especifica si se eliminarán las etiquetas HTML del texto introducido.

  • REMOVE_HTML_TAGSSe eliminarán las etiquetas HTML del texto introducido. Esta es la opción predeterminada.
  • DO_NOT_REMOVE_HTML_TAGSLas etiquetas HTML del texto introducido no se eliminarán.
Boolean
remove_urls
(Opcional)

Especifica si se eliminarán las direcciones URL del texto introducido.

  • REMOVE_URLSSe eliminarán las direcciones URL del texto introducido. Esta es la opción predeterminada.
  • DO_NOT_REMOVE_URLSLas direcciones URL del texto introducido no se eliminarán.
Boolean

Muestra de código

TrainTextClassificationModel (ventana de Python)

El siguiente script de la ventana de Python muestra cómo utilizar la función TrainTextClassificationModel.

# Name: TrainTextClassification.py
# Description: Train a text classifier model to classify text in different classes.  
#
# Requirements: ArcGIS Pro Advanced license

# Import system modules
import arcpy
import os

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

# Set local variables
in_table = "training_data_textclassifier.csv"
out_folder = "c\\textclassifier"

# Run Train Text Classification Model
arcpy.geoai.TrainTextClassificationModel(in_table, out_folder, 
            max_epochs=2, text_field="Address", label_field="Country", batch_size=16)