Inference Unlimited

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:

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.

Język: SK | Wyświetlenia: 13

← Powrót do listy artykułów