Magazine

Cómo utilizar Scikit-LLM para análisis de texto con modelos de lenguaje grandes

Publicado el 10 octubre 2023 por Maxisoria @maxialiados

Scikit-LLM es un paquete de Python que ayuda a integrar modelos de lenguajes grandes (LLM) en el marco de scikit-learn. Ayuda a realizar tareas de análisis de texto. Si está familiarizado con scikit-learn, le resultará más fácil trabajar con Scikit-LLM.

Es importante tener en cuenta que Scikit-LLM no reemplaza a scikit-learn. scikit-learn es una biblioteca de aprendizaje automático de uso general, pero Scikit-LLM está diseñada específicamente para tareas de análisis de texto.

Comenzando con Scikit-LLM

Para comenzar con Scikit-LLM, deberá instalar la biblioteca y configurar su clave API. Para instalar la biblioteca, abra su IDE y cree un nuevo entorno virtual. Esto ayudará a evitar posibles conflictos con la versión de la biblioteca. Luego, ejecute el siguiente comando en la terminal.

Este comando instalará Scikit-LLM y sus dependencias requeridas.

Para configurar su clave API, debe adquirir una de su proveedor de LLM. Para obtener la clave API de OpenAI, siga estos pasos:

Vaya a la página de la API de OpenAI. Luego haga clic en su perfil ubicado en la esquina superior derecha de la ventana. Seleccionar Ver claves API. Esto te llevará al Claves API página.

Sobre el Claves API página, haga clic en el Crear nueva clave secreta botón.

Asigne un nombre a su clave API y haga clic en Crear clave secreta botón para generar la clave. Después de la generación, debe copiar la clave y guardarla en un lugar seguro, ya que OpenAI no volverá a mostrar la clave. Si lo pierdes, tendrás que generar uno nuevo.

Ahora que tiene su clave API, abra su IDE e importe SKLLMConfig clase de la biblioteca Scikit-LLM. Esta clase le permite establecer opciones de configuración relacionadas con el uso de modelos de lenguaje grandes.

Esta clase espera que configure su clave API OpenAI y los detalles de su organización.


SKLLMConfig.set_openai_key("Your API key")
SKLLMConfig.set_openai_org("Your organization ID")

El ID de la organización y el nombre no son iguales. El ID de la organización es un identificador único de su organización. Para obtener el ID de su organización, vaya a la página de configuración de la organización OpenAI y cópiela. Ahora ha establecido una conexión entre Scikit-LLM y el modelo de lenguaje grande.

Intentar utilizar la cuenta de prueba gratuita generará un error similar al siguiente al realizar el análisis de texto.

Para obtener más información sobre los límites de tarifas. Continúe con la página de límites de tasas de OpenAI.

Importación de las bibliotecas necesarias y carga del conjunto de datos

Importa pandas que usarás para cargar el conjunto de datos. Además, desde Scikit-LLM y scikit-learn, importe las clases requeridas.

import pandas as pd
from skllm import ZeroShotGPTClassifier, MultiLabelZeroShotGPTClassifier
from skllm.preprocessing import GPTSummarizer
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.preprocessing import MultiLabelBinarizer

A continuación, cargue el conjunto de datos en el que desea realizar el análisis de texto. Este código utiliza el conjunto de datos de películas IMDB. Sin embargo, puedes modificarlo para utilizar tu propio conjunto de datos.

No es obligatorio utilizar solo las primeras 100 filas del conjunto de datos. Puede utilizar todo su conjunto de datos.

A continuación, extraiga las características y las columnas de etiquetas. Luego divida su conjunto de datos en conjuntos de entrenamiento y de prueba.

El Género La columna contiene las etiquetas que desea predecir.

Clasificación de texto Zero-Shot con Scikit-LLM

La clasificación de texto de disparo cero es una característica que ofrecen los modelos de lenguaje grandes. Clasifica texto en categorías predefinidas sin la necesidad de una formación explícita sobre datos etiquetados. Esta capacidad es muy útil cuando se trata de tareas en las que es necesario clasificar texto en categorías que no anticipó durante el entrenamiento del modelo.

Para realizar una clasificación de texto de disparo cero usando Scikit-LLM, use el Clasificador ZeroShotGPT clase.


zero_shot_clf = ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")
zero_shot_clf.fit(X_train, y_train)
zero_shot_predictions = zero_shot_clf.predict(X_test)


print("Zero-Shot Text Classification Report:")
print(classification_report(y_test, zero_shot_predictions))

El resultado es el siguiente:

El informe de clasificación proporciona métricas para cada etiqueta que el modelo intenta predecir.

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

En algunos escenarios, un único texto puede pertenecer a varias categorías simultáneamente. Los modelos de clasificación tradicionales luchan con esto. Scikit-LLM, por otro lado, hace posible esta clasificación. La clasificación de texto de disparo cero con múltiples etiquetas es crucial para asignar múltiples etiquetas descriptivas a una sola muestra de texto.

Usar Clasificador MultiLabelZeroShotGPT para predecir qué etiquetas son apropiadas para cada muestra de texto.


candidate_labels = ["Action", "Comedy", "Drama", "Horror", "Sci-Fi"]
multi_label_zero_shot_clf = MultiLabelZeroShotGPTClassifier(max_labels=2)
multi_label_zero_shot_clf.fit(X_train, candidate_labels)
multi_label_zero_shot_predictions = multi_label_zero_shot_clf.predict(X_test)


mlb = MultiLabelBinarizer()
y_test_binary = mlb.fit_transform(y_test)
multi_label_zero_shot_predictions_binary = mlb.transform(multi_label_zero_shot_predictions)


print("Multi-Label Zero-Shot Text Classification Report:")
print(classification_report(y_test_binary, multi_label_zero_shot_predictions_binary))

En el código anterior, usted define las etiquetas candidatas a las que podría pertenecer su texto.

El resultado es el que se muestra a continuación:

Este informe le ayuda a comprender qué tan bien se está desempeñando su modelo para cada etiqueta en la clasificación de etiquetas múltiples.

Vectorización de texto con Scikit-LLM

En la vectorización de texto, los datos textuales se convierten a un formato numérico que los modelos de aprendizaje automático pueden comprender. Scikit-LLM ofrece GPTVectorizer para esto. Le permite transformar texto en vectores de dimensiones fijas utilizando modelos GPT.

Puede lograr esto utilizando el término Frecuencia-Frecuencia de documento inversa.


tfidf_vectorizer = TfidfVectorizer(max_features=1000)
X_train_tfidf = tfidf_vectorizer.fit_transform(X_train)
X_test_tfidf = tfidf_vectorizer.transform(X_test)


print("TF-IDF Vectorized Features (First 5 samples):")
print(X_train_tfidf[:5])

Aquí está el resultado:

El resultado representa las características vectorizadas de TF-IDF para las primeras 5 muestras del conjunto de datos.

Resumen de texto con Scikit-LLM

El resumen de texto ayuda a condensar un fragmento de texto preservando al mismo tiempo su información más crítica. Scikit-LLM ofrece GPTSummarizer, que utiliza los modelos GPT para generar resúmenes concisos de texto.


summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)

El resultado es el siguiente:

Lo anterior es un resumen de los datos de la prueba.

Cree aplicaciones sobre los LLM

Scikit-LLM abre un mundo de posibilidades para el análisis de texto con grandes modelos de lenguaje. Comprender la tecnología detrás de los grandes modelos lingüísticos es crucial. Le ayudará a comprender sus fortalezas y debilidades que pueden ayudarlo a crear aplicaciones eficientes sobre esta tecnología de vanguardia.


Volver a la Portada de Logo Paperblog