Kendi Duygu Analizi Aracınızı LLM Kullanarak Oluşturma
Giriş
Duygu analizi, metnin duygusal tonunu belirleme sürecidir ve pazarlama, müşteri hizmetleri veya kamuoyu araştırmaları gibi birçok alanda kullanılabilir. Bu makalede, büyük dil modelleri (LLM) kullanarak kendi duygu analizi aracınızı nasıl oluşturacağınızı gösterelim.
Model Seçimi
İlk adım, uygun bir dil modeli seçmektir. Şunlar arasında seçebiliriz:
- Ön eğitilmiş modeller (örneğin BERT, RoBERTa, DistilBERT) – kullanım için hazır, ancak uyarlama gerektirir.
- Özel modeller (örneğin VADER, TextBlob) – duygu analizi için özel olarak tasarlanmıştır.
- Kendi modellerimiz – alanın belirli verileri üzerinde eğitilmiştir.
Örnek için Hugging Face Transformers ile DistilBERT modelini kullanacağız, BERT'in daha hafif bir versiyonu ve duygu analizi görevleri için iyi uygun.
Gereken Kütüphanelerin Yükleme
Başlamak için gerekli kütüphaneleri yükleyelim:
pip install transformers torch pandas
Model ve Tokenizer'ın Yüklenmesi
Ardından model ve tokenizer'ı yükleyelim:
from transformers import pipeline
# Hazır duygu analizi aracının yüklenmesi
sentiment_pipeline = pipeline("sentiment-analysis")
Veri Hazırlığı
Test etmek için bir veri seti hazırlayalım. Basit bir örnek kullanabiliriz:
texts = [
"Bu ürünü seviyorum, harikadır!",
"Önermezdim, çok hayal kırıklığına uğradım.",
"Ortalama ürün, hiçbir şey özel.",
"Etkisi memnun edici, ancak fiyat çok yüksek."
]
Duygu Analizi
Şimdi metinlerimiz için duygu analizi yapabiliriz:
results = sentiment_pipeline(texts)
for text, result in zip(texts, results):
print(f"Metin: {text}")
print(f"Duygu: {result['label']} (Güven: {result['score']:.2f})")
print("---")
Modelin Uyarlanması
Eğer modelimizi belirli verilerimize uyarlamak istiyorsak, Hugging Face Transformers kütüphanesi kullanarak modelimizi veri setimizde eğitebiliriz.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from transformers import Trainer, TrainingArguments
import pandas as pd
from sklearn.model_selection import train_test_split
# Örnek veri seti
data = pd.DataFrame({
"text": ["Bu ürünü seviyorum", "Önermezdim", "Ortalama ürün"],
"label": [1, 0, 0] # 1 - olumlu, 0 - olumsuz
})
# Verilerin eğitim ve test setlerine bölünmesi
train_texts, test_texts, train_labels, test_labels = train_test_split(
data["text"], data["label"], test_size=0.2
)
# Tokenizer ve modelin yüklenmesi
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
# Verilerin tokenizasyonu
train_encodings = tokenizer(list(train_texts), truncation=True, padding=True)
test_encodings = tokenizer(list(test_texts), truncation=True, padding=True)
# Verileri işlemek için sınıf
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)
# Eğitim ayarları
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,
)
# Modelin eğitilmesi
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=test_dataset
)
trainer.train()
Modelin Uygulanması
Modeli eğittikten sonra onu kaydedip duygu analizi için kullanabiliriz:
model.save_pretrained("./custom_sentiment_model")
tokenizer.save_pretrained("./custom_sentiment_model")
# Uyarlanmış modelin yüklenmesi
custom_model = AutoModelForSequenceClassification.from_pretrained("./custom_sentiment_model")
custom_tokenizer = AutoTokenizer.from_pretrained("./custom_sentiment_model")
# Örnek analiz
custom_pipeline = pipeline("sentiment-analysis", model=custom_model, tokenizer=custom_tokenizer)
print(custom_pipeline("Bu ürün harikadır!"))
Özet
Bu makalede, büyük dil modelleri kullanarak kendi duygu analizi aracınızı nasıl oluşturacağınızı adım adım gösterdik. Model seçimi, veri hazırlığı, duygu analizi ve modelin ihtiyacınıza göre uyarlanması hakkında ayrıntılı olarak konuşduk. Bu araçla, farklı alanlarda metinlerin duygusal tonunu etkili bir şekilde analiz edebiliriz.