Inference Unlimited

Costruzione del proprio strumento di analisi del sentiment utilizzando LLM

Introduzione

L'analisi del sentiment è un processo che determina il tono emotivo di un testo, che può essere applicato in molte aree, come il marketing, il servizio clienti o le ricerche di opinione pubblica. In questo articolo, vi mostreremo come costruire il vostro strumento di analisi del sentiment utilizzando grandi modelli linguistici (LLM).

Scelta del modello

Il primo passo è la scelta del modello linguistico appropriato. Possiamo scegliere tra:

Per il nostro esempio, utilizzeremo Hugging Face Transformers con il modello DistilBERT, che è una versione più leggera di BERT e si adatta bene ai compiti di analisi del sentiment.

Installazione delle librerie necessarie

Per iniziare, installiamo le librerie necessarie:

pip install transformers torch pandas

Caricamento del modello e del tokenizzatore

Successivamente, carichiamo il modello e il tokenizzatore:

from transformers import pipeline

# Caricamento dello strumento pronto per l'analisi del sentiment
sentiment_pipeline = pipeline("sentiment-analysis")

Preparazione dei dati

Prepariamo un set di dati per il test. Possiamo utilizzare un semplice esempio:

texts = [
    "Adoro questo prodotto, è fantastico!",
    "Non lo consiglio, molto deluso.",
    "Prodotto medio, niente di speciale.",
    "Il funzionamento è soddisfacente, ma il prezzo è troppo alto."
]

Analisi del sentiment

Ora possiamo eseguire l'analisi del sentiment per i nostri testi:

results = sentiment_pipeline(texts)

for text, result in zip(texts, results):
    print(f"Testo: {text}")
    print(f"Sentiment: {result['label']} (Certanza: {result['score']:.2f})")
    print("---")

Adattamento del modello

Se vogliamo adattare il modello ai nostri dati specifici, possiamo utilizzare la libreria Hugging Face Transformers per addestrare il modello sul nostro set di dati.

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

# Esempio di set di dati
data = pd.DataFrame({
    "text": ["Adoro questo prodotto", "Non lo consiglio", "Prodotto medio"],
    "label": [1, 0, 0]  # 1 - positivo, 0 - negativo
})

# Suddivisione dei dati in set di addestramento e test
train_texts, test_texts, train_labels, test_labels = train_test_split(
    data["text"], data["label"], test_size=0.2
)

# Caricamento del tokenizzatore e del modello
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# Tokenizzazione dei dati
train_encodings = tokenizer(list(train_texts), truncation=True, padding=True)
test_encodings = tokenizer(list(test_texts), truncation=True, padding=True)

# Classe per la gestione dei dati
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)

# Impostazioni di addestramento
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,
)

# Addestramento del modello
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=test_dataset
)

trainer.train()

Implementazione del modello

Dopo aver addestrato il modello, possiamo salvarlo e utilizzarlo per l'analisi del sentiment:

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

# Caricamento del modello personalizzato
custom_model = AutoModelForSequenceClassification.from_pretrained("./custom_sentiment_model")
custom_tokenizer = AutoTokenizer.from_pretrained("./custom_sentiment_model")

# Esempio di analisi
custom_pipeline = pipeline("sentiment-analysis", model=custom_model, tokenizer=custom_tokenizer)
print(custom_pipeline("Questo prodotto è fantastico!"))

Conclusione

In questo articolo, abbiamo mostrato come costruire il proprio strumento di analisi del sentiment utilizzando grandi modelli linguistici. Passo dopo passo, abbiamo discusso la scelta del modello, la preparazione dei dati, l'analisi del sentiment e l'adattamento del modello alle nostre esigenze. Grazie a questo strumento, possiamo analizzare efficacemente il tono emotivo dei testi in vari settori.

Język: IT | Wyświetlenia: 6

← Powrót do listy artykułów