Preparar datos de entrenamiento de texto para la clasificación

.

En esta página se describe cómo preparar datos de texto para usarlos en un conjunto de datos de Vertex AI con el fin de entrenar modelos de clasificación de una o varias etiquetas.

Clasificación con una sola etiqueta

En la clasificación de una sola etiqueta, los datos de entrenamiento constan de documentos y la categoría de clasificación que se aplica a esos documentos. La clasificación de una sola etiqueta permite asignar solo una etiqueta a un documento.

Requisitos de datos

  • Debes proporcionar al menos 20 y no más de 1.000.000 de documentos de entrenamiento.
  • Debes proporcionar al menos 2 y no más de 5000 etiquetas de categoría únicas.
  • Debes aplicar cada etiqueta a al menos 10 documentos.
  • En la clasificación de varias etiquetas, puedes aplicar una o varias etiquetas a un documento.
  • Puedes incluir documentos insertados o hacer referencia a archivos TXT que estén en segmentos de Cloud Storage.

Prácticas recomendadas para los datos de texto utilizados para entrenar modelos de AutoML

Las siguientes recomendaciones se aplican a los conjuntos de datos que se usan para entrenar modelos de AutoML.

  • Utiliza datos de entrenamiento que sean tan variados como los datos con los que se harán las predicciones. Incluye documentos de diferentes longitudes, documentos escritos por diferentes personas, documentos que usen diferentes palabras o estilos, etc.
  • Usa documentos que un lector humano pueda clasificar fácilmente. Por lo general, los modelos de AutoML no pueden predecir etiquetas de categorías que los humanos no pueden asignar. Por lo tanto, si no se puede entrenar a una persona para que asigne una etiqueta leyendo un documento, es probable que tampoco se pueda entrenar a tu modelo para que lo haga.
  • Proporciona tantos documentos de entrenamiento por etiqueta como sea posible. Puedes mejorar las puntuaciones de confianza de tu modelo usando más ejemplos por etiqueta. Entrena un modelo con 50 ejemplos por etiqueta y evalúa los resultados. Añade más ejemplos y vuelve a entrenar el modelo hasta que alcances los objetivos de precisión, lo que puede requerir cientos o incluso miles de ejemplos por etiqueta.
  • El modelo funciona mejor cuando hay como máximo 100 veces más documentos para la etiqueta más común que para la menos común. Te recomendamos que elimines las etiquetas de frecuencia muy baja.
  • Puedes incluir una etiqueta fuera del dominio (por ejemplo, None_of_the_above) para los documentos que no coincidan con ninguna de las etiquetas que hayas definido. Por ejemplo, si solo ha etiquetado documentos sobre arte y entretenimiento, pero su conjunto de datos contiene documentos sobre otros temas, como deportes o tecnología, etiquete los documentos sobre otros temas como None_of_the_above. Si no se incluye esta etiqueta, el modelo entrenado intentará asignar todos los documentos a una de las etiquetas definidas, incluso los documentos para los que esas etiquetas no sean adecuadas.
  • Si tienes un gran número de documentos que no coinciden con tus etiquetas, fíltralos para que tu modelo no sesgue las predicciones hacia una etiqueta fuera del dominio. Por ejemplo, puedes tener un modelo de filtrado que prediga si un documento se ajusta al conjunto de etiquetas actual o está fuera del dominio. Después de filtrar, tendrás otro modelo que clasifique solo los documentos del dominio.

Archivos de entrada

La clasificación de una sola etiqueta admite archivos de entrada JSON Lines o CSV. Solo puedes especificar una etiqueta (anotación) para un documento determinado. En las secciones siguientes se describen los archivos de entrada y se proporcionan ejemplos de cada tipo de archivo.

JSON Lines

El formato, los nombres de los campos y los tipos de valores de los archivos JSON Lines se determinan mediante un archivo de esquema, que son archivos YAML de acceso público.

Puedes descargar el archivo de esquema para la clasificación de una sola etiqueta desde la siguiente ubicación de Cloud Storage:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_single_label_io_format_1.0.0.yaml

Ejemplo de JSON Lines

En el siguiente ejemplo se muestra cómo puedes usar el esquema para crear tu propio archivo JSON Lines. En el ejemplo se incluyen saltos de línea para facilitar la lectura. En tus archivos JSON, incluye saltos de línea solo después de cada documento. El campo dataItemResourceLabels especifica, por ejemplo, ml_use y es opcional.

{
  "classificationAnnotation": {
    "displayName": "label"
  },
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotation": {
    "displayName": "label2"
  },
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

Cada línea de un archivo CSV hace referencia a un único documento. En el siguiente ejemplo se muestra el formato general de un archivo CSV válido. La columna ml_use es opcional.

[ml_use],gcs_file_uri|"inline_text",label

El siguiente fragmento es un ejemplo de archivo CSV de entrada.

test,gs://path_to_file,label1
test,"inline_text",label2
training,gs://path_to_file,label3
validation,gs://path_to_file,label1

Clasificación de varias etiquetas

En la clasificación multietiqueta, los datos de entrenamiento se componen de documentos y las categorías de clasificación que se aplican a esos documentos. La clasificación multietiqueta permite asignar una o varias etiquetas a un documento.

Requisitos de datos

  • Debes proporcionar al menos 20 y no más de 1.000.000 de documentos de entrenamiento.
  • Debes proporcionar al menos 2 y no más de 5000 etiquetas de categoría únicas.
  • Debes aplicar cada etiqueta a al menos 10 documentos.
  • En la clasificación de varias etiquetas, puedes aplicar una o varias etiquetas a un documento.
  • Puedes incluir documentos insertados o hacer referencia a archivos TXT que estén en segmentos de Cloud Storage.

Prácticas recomendadas para los datos de texto utilizados para entrenar modelos de AutoML

Las siguientes recomendaciones se aplican a los conjuntos de datos que se usan para entrenar modelos de AutoML.

  • Utiliza datos de entrenamiento que sean tan variados como los datos con los que se harán las predicciones. Incluye documentos de diferentes longitudes, documentos escritos por diferentes personas, documentos que usen diferentes palabras o estilos, etc.
  • Usa documentos que un lector humano pueda clasificar fácilmente. Por lo general, los modelos de AutoML no pueden predecir etiquetas de categorías que los humanos no pueden asignar. Por lo tanto, si no se puede entrenar a una persona para que asigne una etiqueta leyendo un documento, es probable que tampoco se pueda entrenar a tu modelo para que lo haga.
  • Cuando se usa la clasificación multietiqueta, se deben aplicar todas las etiquetas pertinentes a cada documento. Por ejemplo, si etiquetas documentos que proporcionan detalles sobre productos farmacéuticos, puedes tener un documento etiquetado con Dosage y Side Effects.
  • Proporciona tantos documentos de entrenamiento por etiqueta como sea posible. Puedes mejorar las puntuaciones de confianza de tu modelo usando más ejemplos por etiqueta. Las puntuaciones de confianza más altas son especialmente útiles cuando el modelo devuelve varias etiquetas al clasificar un documento. Entrena un modelo con 50 ejemplos por etiqueta y evalúa los resultados. Añade más ejemplos y vuelve a entrenar el modelo hasta que alcances los objetivos de precisión, lo que puede requerir cientos o incluso miles de ejemplos por etiqueta.
  • El modelo funciona mejor cuando hay como máximo 100 veces más documentos para la etiqueta más común que para la menos común. Te recomendamos que elimines las etiquetas de frecuencia muy baja.
  • Puedes incluir una etiqueta fuera del dominio (por ejemplo, None_of_the_above) para los documentos que no coincidan con ninguna de las etiquetas que hayas definido. Por ejemplo, si solo ha etiquetado documentos sobre arte y entretenimiento, pero su conjunto de datos contiene documentos sobre otros temas, como deportes o tecnología, etiquete los documentos sobre otros temas como None_of_the_above. Si no se incluye esta etiqueta, el modelo entrenado intentará asignar todos los documentos a una de las etiquetas definidas, incluso los documentos para los que esas etiquetas no sean adecuadas.
  • Si tienes un gran número de documentos que no coinciden con tus etiquetas, fíltralos para que tu modelo no sesgue las predicciones hacia una etiqueta fuera del dominio. Por ejemplo, puedes tener un modelo de filtrado que prediga si un documento se ajusta al conjunto de etiquetas actual o está fuera del dominio. Después de filtrar, tendrás otro modelo que clasifique solo los documentos del dominio.

Archivos de entrada

La clasificación multietiqueta admite archivos de entrada JSON Lines o CSV. Puedes especificar más de una etiqueta (anotación) para un documento determinado. En las secciones siguientes se describen los archivos de entrada y se proporcionan ejemplos de cada tipo de archivo.

JSON Lines

El formato, los nombres de los campos y los tipos de valores de los archivos JSON Lines se determinan mediante un archivo de esquema, que son archivos YAML de acceso público.

Puedes descargar el archivo de esquema para la clasificación multietiqueta desde la siguiente ubicación de Cloud Storage:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_multi_label_io_format_1.0.0.yaml

Ejemplo de JSON Lines

En el siguiente ejemplo se muestra cómo puedes usar el esquema para crear tu propio archivo JSON Lines. En el ejemplo se incluyen saltos de línea para facilitar la lectura. En tus archivos JSON, incluye saltos de línea solo después de cada documento. El campo dataItemResourceLabels especifica, por ejemplo, ml_use y es opcional.

{
  "classificationAnnotations": [{
    "displayName": "label1"
    },{
    "displayName": "label2"
  }],
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotations": [{
    "displayName": "label2"
    },{
    "displayName": "label3"
  }],
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

Cada línea de un archivo CSV hace referencia a un único documento. En el siguiente ejemplo se muestra el formato general de un archivo CSV válido. La columna ml_use es opcional.

[ml_use],gcs_file_uri|"inline_text",label1,label2,...

El siguiente fragmento es un ejemplo de archivo CSV de entrada.

test,gs://path_to_file,label1,label2
test,"inline_text",label3
training,gs://path_to_file,label1,label2,label3
validation,gs://path_to_file,label4,label5