Como usar o Scikit-LLM para análise de texto com grandes modelos de linguagem

Scikit-LLM é um pacote Python que ajuda a integrar grandes modelos de linguagem (LLMs) na estrutura scikit-learn. Ajuda na realização de tarefas de análise de texto. Se você estiver familiarizado com o scikit-learn, será mais fácil trabalhar com o Scikit-LLM.


É importante observar que o Scikit-LLM não substitui o scikit-learn. scikit-learn é uma biblioteca de aprendizado de máquina de uso geral, mas o Scikit-LLM foi projetado especificamente para tarefas de análise de texto.


Primeiros passos com Scikit-LLM

Para começar Scikit-LLM, você precisará instalar a biblioteca e configurar sua chave de API. Para instalar a biblioteca, abra seu IDE e crie um novo ambiente virtual. Isso ajudará a evitar possíveis conflitos de versão da biblioteca. Em seguida, execute o seguinte comando no terminal.

 pip install scikit-llm 

Este comando instalará o Scikit-LLM e suas dependências necessárias.

Para configurar sua chave de API, você precisa adquirir uma de seu provedor LLM. Para obter a chave da API OpenAI, siga estas etapas:

Prossiga para o Página da API OpenAI. Em seguida, clique no seu perfil localizado no canto superior direito da janela. Selecione Ver chaves de API. Isto o levará ao Chaves de API página.

Página da chave da API OpenAI

No Chaves de API página, clique no Crie uma nova chave secreta botão.

Página de geração de chave da API OpenAI

Nomeie sua chave de API e clique no botão Criar chave secreta botão para gerar a chave. Após a geração, você precisa copiar a chave e armazená-la em um local seguro, pois o OpenAI não exibirá a chave novamente. Se você perdê-lo, precisará gerar um novo.

Agora que você tem sua chave API, abra seu IDE e importe SKLLMConfig classe da biblioteca Scikit-LLM. Esta classe permite definir opções de configuração relacionadas ao uso de grandes modelos de linguagem.

 from skllm.config import SKLLMConfig

Esta classe espera que você defina sua chave de API OpenAI e detalhes da organização.

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

O ID da organização e o nome não são iguais. ID da organização é um identificador exclusivo da sua organização. Para obter o ID da sua organização, vá para o Organização OpenAI página de configurações e copie-a. Agora você estabeleceu uma conexão entre o Scikit-LLM e o modelo de linguagem grande.

Scikit-LLM exige que você tenha um plano pré-pago. Isso ocorre porque a conta OpenAI de teste gratuito tem um limite de taxa de três solicitações por minuto, o que não é suficiente para o Scikit-LLM.

Tentar usar a conta de teste gratuita causará um erro semelhante ao abaixo durante a análise do texto.

Erro de limite de taxa Scikit-LLM

Para saber mais sobre limites de taxa. Prossiga para o Página de limites de taxa OpenAI.

O provedor LLM não está limitado apenas ao OpenAI. Você também pode usar outros provedores de LLM.

Importando as bibliotecas necessárias e carregando o conjunto de dados

Importe pandas que você usará para carregar o conjunto de dados. Além disso, do Scikit-LLM e do scikit-learn, importe as classes necessárias.

 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

Em seguida, carregue o conjunto de dados no qual deseja realizar a análise de texto. Este código usa o conjunto de dados de filmes IMDB. No entanto, você pode ajustá-lo para usar seu próprio conjunto de dados.

 
data = pd.read_csv("imdb_movies_dataset.csv")
data = data.head(100)

Usar apenas as primeiras 100 linhas do conjunto de dados não é obrigatório. Você pode usar todo o seu conjunto de dados.

Em seguida, extraia os recursos e as colunas de rótulos. Em seguida, divida seu conjunto de dados em conjuntos de treinamento e teste.

 
X = data('Description')

y = data('Genre')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

O Gênero coluna contém os rótulos que você deseja prever.

Classificação de texto Zero-Shot com Scikit-LLM

A classificação de texto zero-shot é um recurso oferecido por modelos de linguagem grandes. Classifica o texto em categorias predefinidas sem a necessidade de treinamento explícito em dados rotulados. Esse recurso é muito útil ao lidar com tarefas nas quais você precisa classificar o texto em categorias que não previu durante o treinamento do modelo.

Para realizar a classificação de texto zero-shot usando Scikit-LLM, use o ZeroShotGPTClassificador aula.

 
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))

A saída é a seguinte:

Relatório de classificação de texto zero-quente

O relatório de classificação fornece métricas para cada rótulo que o modelo está tentando prever.

Classificação de texto multi-rótulo Zero-Shot com Scikit-LLM

Em alguns cenários, um único texto pode pertencer a múltiplas categorias simultaneamente. Os modelos de classificação tradicionais lutam contra isso. O Scikit-LLM, por outro lado, torna essa classificação possível. A classificação de texto zero-shot com vários rótulos é crucial na atribuição de vários rótulos descritivos a uma única amostra de texto.

Usar MultiLabelZeroShotGPTClassificador para prever quais rótulos são apropriados para cada amostra 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))

No código acima, você define os rótulos candidatos aos quais seu texto pode pertencer.

A saída é mostrada abaixo:

Relatório de classificação de vários rótulos Scikit-LLM

Este relatório ajuda você a entender o desempenho do seu modelo para cada rótulo na classificação de vários rótulos.

Vetorização de texto com Scikit-LLM

Na vetorização de texto, os dados textuais são convertidos em um formato numérico que os modelos de aprendizado de máquina podem compreender. Scikit-LLM oferece o GPTVectorizer para isso. Ele permite transformar texto em vetores de dimensão fixa usando modelos GPT.

Você pode conseguir isso usando o termo Frequency-Inverse Document Frequency.

 
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))

Aqui está a saída:

Saída do Scikit-LLM mostrando recursos vetorizados do TF-IDF

A saída representa os recursos vetorizados do TF-IDF para as primeiras 5 amostras do conjunto de dados.

Resumo de texto com Scikit-LLM

O resumo de texto ajuda a condensar um trecho de texto, preservando suas informações mais críticas. Scikit-LLM oferece o GPTSummarizer, que utiliza os modelos GPT para gerar resumos concisos de texto.

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

A saída é a seguinte:

Saída de resumo do conjunto de dados Scikit-LLM

O acima é um resumo dos dados de teste.

Crie aplicativos com base em LLMs

Scikit-LLM abre um mundo de possibilidades para análise de texto com grandes modelos de linguagem. Compreender a tecnologia por trás de grandes modelos de linguagem é crucial. Isso o ajudará a compreender seus pontos fortes e fracos que podem ajudá-lo a construir aplicativos eficientes com base nessa tecnologia de ponta.

Artigos Populares

Artigos Recentes

Veja Também

Receba as notícias diárias em sua caixa de entrada