Inference Unlimited

Construindo sua própria ferramenta de análise de sentimento usando LLM

Introdução

A análise de sentimento é um processo de determinar o tom emocional de um texto, que pode ser aplicado em várias áreas, como marketing, atendimento ao cliente ou pesquisas de opinião pública. Neste artigo, apresentaremos como construir sua própria ferramenta de análise de sentimento utilizando grandes modelos de linguagem (LLM).

Escolha do modelo

O primeiro passo é escolher o modelo de linguagem adequado. Podemos escolher entre:

Para nosso exemplo, usaremos Hugging Face Transformers com o modelo DistilBERT, que é uma versão mais leve do BERT e se adapta bem a tarefas de análise de sentimento.

Instalação das bibliotecas necessárias

Para começar, instalemos as bibliotecas necessárias:

pip install transformers torch pandas

Carregamento do modelo e tokenizador

Em seguida, carregamento do modelo e tokenizador:

from transformers import pipeline

# Carregamento da ferramenta pronta para análise de sentimento
sentiment_pipeline = pipeline("sentiment-analysis")

Preparação dos dados

Preparemos um conjunto de dados para testar. Podemos usar um exemplo simples:

texts = [
    "Amo este produto, é fantástico!",
    "Não recomendo, muito decepcionado.",
    "Produto médio, nada excepcional.",
    "O desempenho é satisfatório, mas o preço é muito alto."
]

Análise de sentimento

Agora podemos realizar a análise de sentimento para nossos textos:

results = sentiment_pipeline(texts)

for text, result in zip(texts, results):
    print(f"Texto: {text}")
    print(f"Sentimento: {result['label']} (Confiança: {result['score']:.2f})")
    print("---")

Ajuste do modelo

Se quisermos ajustar o modelo para nossos dados específicos, podemos usar a biblioteca Hugging Face Transformers para treinar o modelo em nosso conjunto de dados.

from transformers import AutoTokenizer, AutoModelForSequenceClassification
from transformers import Trainer, TrainingArguments
import pandas as pd
from sklearn.model_selection import train_test_split

# Conjunto de dados de exemplo
data = pd.DataFrame({
    "text": ["Amo este produto", "Não recomendo", "Produto médio"],
    "label": [1, 0, 0]  # 1 - positivo, 0 - negativo
})

# Divisão dos dados em conjunto de treinamento e teste
train_texts, test_texts, train_labels, test_labels = train_test_split(
    data["text"], data["label"], test_size=0.2
)

# Carregamento do tokenizador e modelo
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# Tokenização dos dados
train_encodings = tokenizer(list(train_texts), truncation=True, padding=True)
test_encodings = tokenizer(list(test_texts), truncation=True, padding=True)

# Classe para manipulação dos dados
class SentimentDataset(torch.utils.data.Dataset):
    def __init__(self, encodings, labels):
        self.encodings = encodings
        self.labels = labels

    def __getitem__(self, idx):
        item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
        item["labels"] = torch.tensor(self.labels[idx])
        return item

    def __len__(self):
        return len(self.labels)

train_dataset = SentimentDataset(train_encodings, train_labels)
test_dataset = SentimentDataset(test_encodings, test_labels)

# Configurações de treinamento
training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=64,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir="./logs",
    logging_steps=10,
)

# Treinamento do modelo
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=test_dataset
)

trainer.train()

Implantação do modelo

Após o treinamento do modelo, podemos salvá-lo e usá-lo para análise de sentimento:

model.save_pretrained("./custom_sentiment_model")
tokenizer.save_pretrained("./custom_sentiment_model")

# Carregamento do modelo ajustado
custom_model = AutoModelForSequenceClassification.from_pretrained("./custom_sentiment_model")
custom_tokenizer = AutoTokenizer.from_pretrained("./custom_sentiment_model")

# Análise de exemplo
custom_pipeline = pipeline("sentiment-analysis", model=custom_model, tokenizer=custom_tokenizer)
print(custom_pipeline("Este produto é ótimo!"))

Resumo

Neste artigo, mostramos como construir sua própria ferramenta de análise de sentimento utilizando grandes modelos de linguagem. Passo a passo, discutimos a escolha do modelo, preparação dos dados, análise de sentimento e ajuste do modelo para nossas necessidades. Com essa ferramenta, podemos analisar eficazmente o tom emocional de textos em várias áreas.

Język: PT | Wyświetlenia: 10

← Powrót do listy artykułów