Budovanie vlastného nástroja na analýzu sentimentu s použitím LLM
Úvod
Analýza sentimentu je proces určovania emocionálneho tónu textu, ktorý sa dá použiť v mnohých oblastiach, ako je marketing, zákaznícka podpora alebo výskum verejnej mienky. V tomto článku vám ukážeme, ako postaviť vlastný nástroj na analýzu sentimentu využívajúci veľké jazykové modely (LLM).
Výber modelu
Prvým krokom je výber vhodného jazykového modelu. Môžeme vybrať medzi:
- Predtrénovanými modelmi (napr. BERT, RoBERTa, DistilBERT) – hotové na použitie, ale vyžadujú prispôsobenie.
- Špecializovanými modelmi (napr. VADER, TextBlob) – navrhnutými špeciálne pre analýzu sentimentu.
- Vlastnými modelmi – trénovanými na dátach špecifických pre vašu oblasť.
Pre náš príklad použijeme Hugging Face Transformers s modelom DistilBERT, ktorý je ľahšou verziou BERT a dobře sa hodí na úlohy analýzy sentimentu.
Inštalácia potrebných knižníc
Aby ste mohli začať, nainštalujte potrebné knižnice:
pip install transformers torch pandas
Načítanie modelu a tokenizéra
Nasledne načítajte model a tokenizér:
from transformers import pipeline
# Načítanie hotového nástroja na analýzu sentimentu
sentiment_pipeline = pipeline("sentiment-analysis")
Príprava dát
Prípravte sadu dát na testovanie. Môžete použiť jednoduchý príklad:
texts = [
"Kocham ten produkt, je fantastický!",
"Neporučujem, veľmi rozčarovaný.",
"Průmerný produkt, nič výnimočné.",
"Funkcia je uspokojivá, ale cena je príliš vysoká."
]
Analýza sentimentu
Teraz môžete vykonať analýzu sentimentu pre vaše texty:
results = sentiment_pipeline(texts)
for text, result in zip(texts, results):
print(f"Text: {text}")
print(f"Sentiment: {result['label']} (Istota: {result['score']:.2f})")
print("---")
Prispôsobenie modelu
Ak chcete model prispôsobiť vaším špecifickým dátam, môžete použiť knižnicu Hugging Face Transformers na tréning modelu na vašej sadě dát.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from transformers import Trainer, TrainingArguments
import pandas as pd
from sklearn.model_selection import train_test_split
# Príklad sady dát
data = pd.DataFrame({
"text": ["Kocham ten produkt", "Neporučujem", "Průmerný produkt"],
"label": [1, 0, 0] # 1 - pozitívny, 0 - negatívny
})
# Rozdelenie dát na tréningovú a testovaciu sadu
train_texts, test_texts, train_labels, test_labels = train_test_split(
data["text"], data["label"], test_size=0.2
)
# Načítanie tokenizéra a modelu
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
# Tokenizácia dát
train_encodings = tokenizer(list(train_texts), truncation=True, padding=True)
test_encodings = tokenizer(list(test_texts), truncation=True, padding=True)
# Trieda na spracovanie dát
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)
# Nastavenie tréningu
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,
)
# Tréning modelu
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=test_dataset
)
trainer.train()
Nasadenie modelu
Po tréningu modelu ho môžete uložiť a použiť na analýzu sentimentu:
model.save_pretrained("./custom_sentiment_model")
tokenizer.save_pretrained("./custom_sentiment_model")
# Načítanie prispôsobeného modelu
custom_model = AutoModelForSequenceClassification.from_pretrained("./custom_sentiment_model")
custom_tokenizer = AutoTokenizer.from_pretrained("./custom_sentiment_model")
# Príklad analýzy
custom_pipeline = pipeline("sentiment-analysis", model=custom_model, tokenizer=custom_tokenizer)
print(custom_pipeline("Ten produkt je skvelý!"))
Záver
V tomto článku sme vám ukázali, ako postaviť vlastný nástroj na analýzu sentimentu využívajúci veľké jazykové modely. Krok za krokom sme diskutovali o výbere modelu, príprave dát, analýze sentimentu a prispôsobení modelu vaším potrebám. Pomocou tohto nástroja môžete efektívne analyzovať emocionálny tón textov v rôznych oblastiach.