Crear un pipeline de clasificación con la clasificación personalizada de Amazon Comprehend (Parte I)

Crear pipeline clasificación con clasificación personalizada de Amazon Comprehend (Parte I)

“Los datos bloqueados en texto, audio, redes sociales y otras fuentes no estructuradas pueden ser una ventaja competitiva para las empresas que descubren cómo utilizarlos”

Solo el 18% de las organizaciones en una encuesta de Deloitte en 2019 informaron poder aprovechar los datos no estructurados. La mayoría de los datos, entre el 80% y el 90%, son datos no estructurados. Eso es un recurso sin explotar que tiene el potencial de dar a las empresas una ventaja competitiva si pueden descubrir cómo usarlo. Puede ser difícil encontrar ideas a partir de estos datos, especialmente si se necesitan esfuerzos para clasificar, etiquetar o categorizarlos. La clasificación personalizada de Amazon Comprehend puede ser útil en esta situación. Amazon Comprehend es un servicio de procesamiento de lenguaje natural (NLP) que utiliza aprendizaje automático para descubrir ideas valiosas y conexiones en el texto.

La categorización o clasificación de documentos tiene beneficios significativos en diversos ámbitos empresariales:

  • Mejora de la búsqueda y recuperación: al categorizar documentos en temas o categorías relevantes, se facilita la búsqueda y recuperación de los documentos necesarios para los usuarios. Pueden buscar dentro de categorías específicas para reducir los resultados.
  • Gestión del conocimiento: categorizar documentos de manera sistemática ayuda a organizar la base de conocimientos de una organización. Facilita la ubicación de información relevante y la identificación de conexiones entre contenido relacionado.
  • Flujos de trabajo optimizados: la clasificación automática de documentos puede ayudar a agilizar muchos procesos empresariales, como el procesamiento de facturas, el soporte al cliente o el cumplimiento normativo. Los documentos se pueden enviar automáticamente a las personas o flujos de trabajo correctos.
  • Ahorro de costos y tiempo: la clasificación manual de documentos es tediosa, consume mucho tiempo y es costosa. Las técnicas de inteligencia artificial pueden encargarse de esta tarea monótona y clasificar miles de documentos en poco tiempo y a un costo mucho menor.
  • Generación de ideas: analizar las tendencias en las categorías de documentos puede proporcionar ideas útiles para el negocio. Por ejemplo, un aumento en las quejas de los clientes en una categoría de productos podría indicar problemas que deben abordarse.
  • Gobernanza y cumplimiento de políticas: establecer reglas de categorización de documentos ayuda a garantizar que los documentos se clasifiquen correctamente de acuerdo con las políticas y los estándares de gobernanza de una organización. Esto permite un mejor monitoreo y auditoría.
  • Experiencias personalizadas: en contextos como el contenido de un sitio web, la categorización de documentos permite mostrar contenido personalizado a los usuarios en función de sus intereses y preferencias determinados a partir de su comportamiento de navegación. Esto puede aumentar la participación del usuario.

La complejidad de desarrollar un modelo de aprendizaje automático de clasificación adaptado varía según diversos aspectos, como la calidad de los datos, el algoritmo, la escalabilidad y el conocimiento del dominio, por mencionar algunos. Es esencial comenzar con una definición clara del problema, datos limpios y relevantes, y avanzar gradualmente a través de las diferentes etapas del desarrollo del modelo. Sin embargo, las empresas pueden crear sus propios modelos únicos de aprendizaje automático utilizando la clasificación personalizada de Amazon Comprehend para clasificar automáticamente documentos de texto en categorías o etiquetas, para cumplir con requisitos específicos del negocio y mapear a categorías tecnológicas y de documentos empresariales. Como ya no es necesario etiquetar o categorizar manualmente, esto puede ahorrar a las empresas mucho tiempo, dinero y mano de obra. Hemos simplificado este proceso al automatizar todo el proceso de capacitación.

En la primera parte de esta serie de blogs, aprenderás cómo crear un pipeline de capacitación escalable y preparar datos de capacitación para modelos de clasificación personalizados de Comprehend. Presentaremos un pipeline de capacitación de clasificadores personalizados que se puede implementar en tu cuenta de AWS con unos pocos clics. Estamos utilizando el conjunto de datos de noticias de la BBC y capacitaremos un clasificador para identificar la clase (por ejemplo, política, deportes) a la que pertenece un documento. El pipeline permitirá a tu organización responder rápidamente a los cambios y capacitar nuevos modelos sin tener que comenzar desde cero cada vez. Puedes escalar y capacitar varios modelos según tu demanda fácilmente.

Prerrequisitos

  • Una cuenta activa de AWS (Haz clic aquí para crear una nueva cuenta de AWS)
  • Acceso a Amazon Comprehend, Amazon S3, Amazon Lambda, Amazon Step Function, Amazon SNS y Amazon CloudFormation
  • Datos de capacitación (semi-estructurados o de texto) preparados en la siguiente sección
  • Conocimientos básicos sobre Python y aprendizaje automático en general

Preparar datos de capacitación

Esta solución puede tomar datos de entrada en formato de texto (por ejemplo, CSV) o en formato semi-estructurado (por ejemplo, PDF).

Entrada de texto

La clasificación personalizada de Amazon Comprehend admite dos modos: multi-clase y multi-etiqueta.

En el modo multi-clase, cada documento puede tener asignada una y solo una clase. Los datos de capacitación deben prepararse como un archivo CSV de dos columnas, donde cada línea del archivo contiene una sola clase y el texto de un documento que demuestra la clase.

CLASE, Texto del documento 1
CLASE, Texto del documento 2
...

Ejemplo para el conjunto de datos de noticias de la BBC:

Negocios, Europa culpa a Estados Unidos por el dólar débil...
Tecnología, Los taxis recogen montañas de teléfonos móviles...
...

En el modo de múltiples etiquetas, cada documento tiene al menos una clase asignada, pero puede tener más. Los datos de entrenamiento deben estar en un archivo CSV de dos columnas, donde cada línea del archivo contiene una o más clases y el texto del documento de entrenamiento. Más de una clase debe ser indicada utilizando un delimitador entre cada clase.

CLASE, Texto del documento 1
CLASE|CLASE|CLASE, Texto del documento 2
...

No se debe incluir encabezado en el archivo CSV para ninguno de los modos de entrenamiento.

Entrada semiestructurada

A partir de 2023, Amazon Comprehend ahora admite entrenar modelos utilizando documentos semiestructurados. Los datos de entrenamiento para la entrada semiestructurada consisten en un conjunto de documentos etiquetados, que pueden ser documentos preidentificados de un repositorio de documentos al que ya tienes acceso. A continuación se muestra un ejemplo de un archivo de anotaciones CSV requerido para el entrenamiento (Datos de muestra):

CLASE, documento1.pdf, 1
CLASE, documento1.pdf, 2
...

El archivo CSV de anotaciones contiene tres columnas: La primera columna contiene la etiqueta para el documento, la segunda columna es el nombre del documento (es decir, el nombre del archivo) y la última columna es el número de página del documento que deseas incluir en el conjunto de datos de entrenamiento. En la mayoría de los casos, si el archivo CSV de anotaciones se encuentra en la misma carpeta que todos los demás documentos, solo necesitas especificar el nombre del documento en la segunda columna. Sin embargo, si el archivo CSV se encuentra en una ubicación diferente, deberás especificar la ruta a la ubicación en la segunda columna, como ruta/hasta/prefijo/documento1.pdf.

Para obtener detalles sobre cómo preparar tus datos de entrenamiento, consulta aquí.

Resumen de la solución

  1. El pipeline de entrenamiento de Amazon Comprehend comienza cuando los datos de entrenamiento (archivo .csv para entrada de texto y archivo .csv de anotaciones para entrada semiestructurada) se cargan en un bucket dedicado de Amazon Simple Storage Service (Amazon S3).
  2. Una función AWS Lambda es invocada por el disparador de Amazon S3 de manera que cada vez que se carga un objeto en la ubicación especificada de Amazon S3, la función AWS Lambda recupera el nombre del bucket de origen y el nombre de clave del objeto cargado y lo pasa al flujo de trabajo de la función de paso de entrenamiento.
  3. En la función de paso de entrenamiento, después de recibir el nombre del bucket de datos de entrenamiento y el nombre de clave del objeto como parámetros de entrada, se inicia un flujo de trabajo de entrenamiento de modelo personalizado como una serie de funciones de lambda, como se describe a continuación:
    1. IniciarEntrenamientoComprehend: Esta función AWS Lambda define un objeto ComprehendClassifier dependiendo del tipo de archivos de entrada (es decir, texto o semiestructurados) y luego inicia una tarea de entrenamiento de clasificación personalizada de Amazon Comprehend llamando a la API create_document_classifier, que devuelve un Amazon Resource Names (ARN) de trabajo de entrenamiento. Posteriormente, esta función verifica el estado del trabajo de entrenamiento invocando la API describe_document_classifier. Por último, devuelve un ARN de trabajo de entrenamiento y el estado del trabajo como salida para la siguiente etapa del flujo de trabajo de entrenamiento.
    2. ObtenerEstadoTrabajoEntrenamiento: Esta función AWS Lambda verifica el estado del trabajo de entrenamiento cada 15 minutos, llamando a la API describe_document_classifier, hasta que el estado del trabajo de entrenamiento cambie a Completado o Fallido.
    3. GenerarMultiClase o GenerarMultiEtiqueta: Si seleccionas para el informe de rendimiento al iniciar la pila, una de estas dos funciones de AWS Lambda se ejecutará según las salidas del modelo Amazon Comprehend, lo que generará un análisis de rendimiento por clase y lo guardará en Amazon S3.
    4. GenerarMultiClase: Esta función AWS Lambda será llamada si tu entrada es MultiClase y seleccionas para el informe de rendimiento.
    5. GenerarMultiEtiqueta: Esta función AWS Lambda será llamada si tu entrada es MultiEtiqueta y seleccionas para el informe de rendimiento.
  4. Una vez que el entrenamiento se haya completado satisfactoriamente, la solución generará las siguientes salidas:
    1. Modelo de clasificación personalizado: Un ARN de modelo entrenado estará disponible en tu cuenta para futuros trabajos de inferencia.
    2. Matriz de confusión [Opcional]: Una matriz de confusión (confusion_matrix.json) estará disponible en la ruta de salida de Amazon S3 definida por el usuario, dependiendo de la selección del usuario.
    3. Notificación del servicio de notificación simple de Amazon [Opcional]: Se enviará un correo electrónico de notificación sobre el estado del trabajo de entrenamiento a los suscriptores, dependiendo de la selección inicial del usuario.

Guía

Lanzando la solución

Para implementar tu pipeline, completa los siguientes pasos:

  1. Elige el botón Lanzar Stack:

  1. Elige Siguiente

  1. Especifica los detalles de la pipeline con las opciones que se ajusten a tu caso de uso:

Información para cada detalle del stack:

  • Nombre del stack (Requerido) – el nombre que especificaste para este stack de AWS CloudFormation. El nombre debe ser único en la región en la que lo estás creando.
  • Q01ClassifierInputBucketName (Requerido) – El nombre del bucket de Amazon S3 para almacenar tus datos de entrada. Debe ser un nombre único a nivel global y AWS CloudFormation te ayuda a crear el bucket mientras se lanza.
  • Q02ClassifierOutputBucketName (Requerido) – El nombre del bucket de Amazon S3 para almacenar las salidas de Amazon Comprehend y la pipeline. También debe ser un nombre único a nivel global.
  • Q03InputFormat – Una selección en el menú desplegable, puedes elegir texto (si tus datos de entrenamiento son archivos csv) o semi-estructurados (si tus datos de entrenamiento son semi-estructurados [por ejemplo, archivos PDF]) según el formato de entrada de tus datos.
  • Q04Language – Una selección en el menú desplegable, elige el idioma de los documentos de la lista de idiomas admitidos. Ten en cuenta que actualmente solo se admite el inglés si el formato de entrada es semi-estructurado.
  • Q05MultiClass – Una selección en el menú desplegable, selecciona si tu entrada está en modo MultiClase. De lo contrario, selecciona no.
  • Q06LabelDelimiter – Solo requerido si tu respuesta de Q05MultiClass es no. Este delimitador se utiliza en tus datos de entrenamiento para separar cada clase.
  • Q07ValidationDataset – Una selección en el menú desplegable, cambia la respuesta a si deseas probar el rendimiento del clasificador entrenado con tus propios datos de prueba.
  • Q08S3ValidationPath – Solo requerido si tu respuesta de Q07ValidationDataset es .
  • Q09PerformanceReport – Una selección en el menú desplegable, selecciona si deseas generar un informe de rendimiento a nivel de clase después del entrenamiento del modelo. El informe se guardará en el bucket de salida especificado en Q02ClassifierOutputBucketName.
  • Q10EmailNotification – Una selección en el menú desplegable. Selecciona si deseas recibir notificaciones después de que el modelo se haya entrenado.
  • Q11EmailID – Ingresa una dirección de correo electrónico válida para recibir notificaciones de informes de rendimiento. Ten en cuenta que debes confirmar la suscripción desde tu correo electrónico después de que se lance el stack de AWS CloudFormation, antes de poder recibir notificaciones cuando se complete el entrenamiento.
  1. En la sección Configurar opciones del stack de Amazon, agrega etiquetas opcionales, permisos y otras configuraciones avanzadas.

  1. Elige Siguiente
  2. Revisa los detalles del stack y selecciona Acepto que AWS CloudFormation podría crear recursos de AWS IAM.

  1. Elija Enviar. Esto inicia la implementación de la canalización en su cuenta de AWS.
  2. Después de que la pila se implemente correctamente, puede comenzar a utilizar la canalización. Cree una carpeta /training-data en la ubicación especificada de Amazon S3 para la entrada. Nota: Amazon S3 aplica automáticamente el cifrado en el lado del servidor (SSE-S3) para cada objeto nuevo a menos que especifique una opción de cifrado diferente. Consulte Protección de datos en Amazon S3 para obtener más detalles sobre la protección de datos y el cifrado en Amazon S3.

  1. Cargue sus datos de entrenamiento en la carpeta. (Si los datos de entrenamiento son semi-estructurados, cargue todos los archivos PDF antes de cargar la información de etiquetas en formato .csv).

¡Listo! Ha implementado correctamente su canalización y puede verificar el estado de la canalización en la función de paso implementada. (Tendrá un modelo entrenado en su panel de clasificación personalizada de Amazon Comprehend).

Si elige el modelo y su versión dentro de la Consola de Amazon Comprehend, ahora puede ver más detalles sobre el modelo que acaba de entrenar. Incluye el Modo que seleccionó, que corresponde a la opción Q05MultiClass, el número de etiquetas y el número de documentos de entrenamiento y prueba en sus datos de entrenamiento. También puede verificar el rendimiento general a continuación; sin embargo, si desea verificar el rendimiento detallado para cada clase, consulte el Informe de rendimiento generado por la canalización implementada.

Cuotas de servicio

Su cuenta de AWS tiene cuotas predeterminadas para Amazon Comprehend y AmazonTextract, si las entradas están en formato semi-estructurado. Para ver las cuotas de servicio, consulte aquí para Amazon Comprehend y aquí para AmazonTextract.

Limpieza

Para evitar cargos continuos, elimine los recursos que creó como parte de esta solución cuando haya terminado.

  1. En la consola de Amazon S3, elimine manualmente el contenido dentro de los buckets que creó para los datos de entrada y salida.
  2. En la consola de AWS CloudFormation, elija Stacks en el panel de navegación.
  3. Seleccione la pila principal y elija Eliminar.

Esto elimina automáticamente la pila implementada.

  1. Su modelo de clasificación personalizada de Amazon Comprehend entrenado permanecerá en su cuenta. Si ya no lo necesita, en la consola de Amazon Comprehend, elimine el modelo creado.

Conclusión

En esta publicación, le mostramos el concepto de una canalización de entrenamiento escalable para modelos de clasificación personalizada de Amazon Comprehend y proporcionamos una solución automatizada para entrenar nuevos modelos de manera eficiente. La plantilla de AWS CloudFormation proporcionada le permite crear sus propios modelos de clasificación de texto sin esfuerzo, adaptados a las escalas de demanda. La solución adopta la función Euclid anunciada recientemente y acepta entradas en formato de texto o semi-estructurado.

Ahora, animamos a nuestros lectores a probar estas herramientas. Puede encontrar más detalles sobre la preparación de datos de entrenamiento y comprender las métricas del clasificador personalizado. Pruébelo y vea de primera mano cómo puede agilizar su proceso de entrenamiento de modelos y mejorar la eficiencia. ¡Por favor, comparta sus comentarios con nosotros!