Clasificación de texto de etiquetas múltiples con Scikit-LLM

En este artículo, aprenderá cómo realizar una clasificación de texto con múltiples etiquetas utilizando modelos de lenguaje grandes y la biblioteca scikit-LLM, sin la necesidad de datos de entrenamiento etiquetados o entrenamiento de modelos complejos.

Los temas que cubriremos incluyen:

Qué es la clasificación de etiquetas múltiples y por qué es importante para el análisis de texto matizado. Cómo instalar y configurar scikit-LLM con un LLM gratuito y de código abierto de Groq para una inferencia cero. Cómo cargar un conjunto de datos del mundo real y ejecutar predicciones de sentimiento de múltiples etiquetas utilizando un flujo de trabajo familiar estilo scikit-learn.

Clasificación de texto de etiquetas múltiples con Scikit-LLM

Introducción

La clasificación de texto generalmente se reduce a escenarios en los que la reseña de un producto es “positiva” o “negativa”, o la consulta de un cliente pertenece a una categoría u otra. Sin embargo, cuando se trata de sentimientos humanos, la categorización rara vez es clara. A veces, incluso una sola frase puede transmitir tanto alegría como enojo; por ejemplo, “Me encanta la duración mejorada de la batería, pero el nuevo diseño es increíblemente horrible”. Ingrese a la clasificación de etiquetas múltiples: una tarea de clasificación “actualizada” capaz de asignar múltiples categorías a objetos de datos, como fragmentos de texto, simultáneamente.

La creación de clasificadores de etiquetas múltiples para texto normalmente requiere grandes cantidades de datos de entrenamiento etiquetados junto con arquitecturas de redes neuronales complejas, pero hoy existe un truco maestro: aprovechar la capacidad de razonamiento de los modelos de lenguaje grandes (LLM); en concreto, el razonamiento de tiro cero. Gracias a bibliotecas novedosas como scikit-LLM, esto se puede hacer como si se utilizara un flujo de trabajo de aprendizaje automático tradicional con scikit-learn. Este artículo le mostrará cómo abordar un problema de clasificación de opiniones de múltiples etiquetas utilizando un conjunto de datos de código abierto del mundo real.

Tutorial paso a paso

Scikit-LLM se destaca por una buena razón: actúa como un envoltorio fabuloso que hace que sea increíblemente fácil para los usuarios de scikit-learn (y también para aquellos nuevos en ambas bibliotecas) usar los LLM existentes para inferencia, sin la necesidad de una capacitación intensiva. La guinda del pastel: también permite utilizar LLM gratuitos y de código abierto sin límites de cuota. Y eso es precisamente lo que haremos: cargar, adaptar y aprovechar un LLM previamente capacitado para una tarea de clasificación de etiquetas múltiples donde a un fragmento de texto se le pueden asignar una o varias categorías.

Primero, importaremos las bibliotecas necesarias:

Usaremos un LLM gratuito de Groq, un recurso que proporciona LLM de inferencia rápida, así que asegúrese de registrarse en su sitio web y obtener una clave API aquí. Deberá copiar esta clave una vez creada (tenga en cuenta que solo se puede copiar una vez) y pegarla en el código siguiente:

Observe que creamos una instancia específica de un objeto de la clase MultiLabelZeroShotGPTClassifier para alojar nuestro LLM previamente entrenado de Groq.

A continuación, importamos un conjunto de datos. Hugging Face tiene un excelente repositorio de conjuntos de datos para esto, y usaremos específicamente su conjunto de datos go_emotions, que es ideal para nuestra tarea; dependiendo del entorno de ejecución utilizado, es posible que se le solicite una clave API de Hugging Face (HF), pero obtener una es tan simple como registrarse en el sitio web de HF y crearla.

Verá un resultado como este, que muestra una muestra del conjunto de datos cargado:

Para “entrenar” el LLM cargado, simplemente necesitamos indicar nuestro conjunto de etiquetas específico de dominio, y adaptará el modelo para clasificar instancias usando etiquetas de este conjunto. En particular, utilizaremos el siguiente conjunto de etiquetas:

Realmente no realizamos un proceso de entrenamiento como tal: simplemente exponemos el modelo al conjunto de etiquetas que especificamos para crear una instancia del escenario del problema. He aquí cómo:

Una vez que se hayan completado los pasos anteriores, estará casi listo para hacer algunas predicciones sobre algunos ejemplos de texto. Hagámoslo con cinco textos del conjunto de datos y mostremos algunos resultados:

Extracto del resultado: solo se muestran dos de las cinco predicciones:

Descargo de responsabilidad: el redactor y editor del artículo no se hacen responsables del contenido real del conjunto de datos de terceros que se utiliza ni del lenguaje utilizado en algunas de sus muestras.

Observe cómo se pueden asignar varias etiquetas a un solo texto como parte de la predicción.

Además, no entre en pánico si el proceso de predicción tarda un poco. Esto es normal, ya que el uso de estos LLM localmente es un proceso computacional intensivo. Por muy contradictorio que parezca, en el ejemplo anterior, la inferencia lleva mucho más tiempo que ajustar el modelo, porque no realizamos ningún entrenamiento real ni pasamos ningún conjunto de entrenamiento para fit(): simplemente pasamos el conjunto de etiquetas para definir nuestro escenario específico.

Concluyendo

Este artículo ilustró cómo llevar a cabo un proceso de clasificación de texto de múltiples etiquetas con scikit-LLM: una biblioteca que aprovecha las capacidades de los LLM previamente capacitados y permite su uso como si fueran modelos clásicos de aprendizaje automático basados ​​en scikit-learn.

Como siguiente paso, podría experimentar expandiendo el conjunto de etiquetas candidatas para reflejar mejor el rango emocional completo de su dominio objetivo, o intercambiar un modelo diferente alojado en Groq para comparar el comportamiento de predicción. Si desea ir más allá, scikit-LLM también admite otras estrategias de clasificación de tiro cero y de pocos tiros: alimentar al clasificador con una pequeña cantidad de ejemplos etiquetados a veces puede agudizar notablemente sus predicciones sin requerir un proceso de capacitación completo. Finalmente, para los casos de uso de producción, vale la pena crear un ciclo de evaluación adecuado para medir la precisión y la recuperación a nivel de etiqueta en comparación con una muestra anotada reservada, de modo que tenga una idea concreta de dónde el modelo funciona bien y dónde tiene problemas.