Sentiment Analizi: Müşteri Yorumlarında Duygu Analizi ve NLP
Müşteri yorumlarını otomatik analiz edin. Pozitif/negatif/nötr sınıflandırma, Türkçe NLP, aspect-based sentiment, sosyal medya monitoring ve marka itibar yönetimi için kapsamlı rehber.
😊Sentiment Analizi Nedir?
Sentiment analizi (Duygu analizi), metinlerdeki duygusal tonu otomatik tespit eden NLP (Natural Language Processing) tekniğidir. Müşteri yorumlarının pozitif, negatif veya nötr olup olmadığını %85-95 doğrulukla belirler.
Sentiment Analizi Seviyeleri
Document-Level (Doküman Seviyesi)
Tüm metnin genel duygusu. En basit ve yaygın yöntem.
Sentence-Level (Cümle Seviyesi)
Her cümlenin ayrı duygusu. Karma yorumlarda faydalı.
Aspect-Based (Yön Bazlı) - En Gelişmiş
Ürünün farklı özelliklerine (aspect) göre sentiment. Restoran: yemek, servis, fiyat.
🇹🇷Türkçe Sentiment Analizi Zorlukları
Türkçe, eklemeli dil yapısı ve zengin kelime çeşitliliği nedeniyle sentiment analizinde İngilizce'den daha zorlayıcıdır.
⚠️Zorluk 1: Olumsuzluk Ekleri
⚠️Zorluk 2: İroni ve Kinaye
⚠️Zorluk 3: Slang ve Jargon
⚠️Zorluk 4: Veri Eksikliği
✅ Türkçe Sentiment Analizi için Öneriler
- • mBERT (Multilingual BERT): 104 dil desteği, Türkçe için iyi
- • BERTurk: Türkçe'ye özel eğitilmiş BERT modeli (ITU/TOBB)
- • XLM-RoBERTa: Cross-lingual model, %88-92 Türkçe accuracy
- • GPT-4: Zero-shot sentiment, prompt engineering ile %90+ doğruluk
- • Hybrid: Rule-based (ek kontrolü) + ML model (best practice)
💻Sentiment Analizi Implementation
Python ile Basit Sentiment Analizi
# 1. Transformers (Hugging Face) ile Türkçe Sentiment
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# BERTurk sentiment model
model_name = "savasy/bert-base-turkish-sentiment-cased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
def analyze_sentiment(text):
# Tokenize
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
# Predict
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
# Labels: 0=negative, 1=positive
sentiment = "Pozitif" if probs[0][1] > 0.5 else "Negatif"
confidence = probs[0][1].item() if probs[0][1] > 0.5 else probs[0][0].item()
return sentiment, confidence
# Test
text = "Bu ürün gerçekten harika! Çok memnun kaldım."
sentiment, confidence = analyze_sentiment(text)
print(f"Sentiment: {sentiment}, Confidence: {confidence:.2f}")
# Output: Sentiment: Pozitif, Confidence: 0.94GPT-4 ile Zero-Shot Sentiment
# OpenAI GPT-4 kullanarak sentiment analizi
from openai import OpenAI
client = OpenAI()
def gpt4_sentiment(text):
response = client.chat.completions.create(
model="gpt-4-turbo-preview",
messages=[
{
"role": "system",
"content": """Sen bir sentiment analiz asistanısın.
Verilen Türkçe metni analiz et ve şu formatta yanıt ver:
{
"sentiment": "pozitif/negatif/nötr",
"score": 0.0 ile 1.0 arası,
"reason": "kısa açıklama"
}"""
},
{
"role": "user",
"content": f"Metni analiz et: {text}"
}
],
response_format={ "type": "json_object" }
)
return response.choices[0].message.content
# Test
text = "Ürün güzel ama kargo çok geç geldi."
result = gpt4_sentiment(text)
print(result)
# Output: {"sentiment": "nötr", "score": 0.55, "reason": "Ürün hakkında pozitif, kargo hakkında negatif ifade var"}Aspect-Based Sentiment (Advanced)
# Aspect-based sentiment extraction
import spacy
from transformers import pipeline
# Türkçe NLP model
nlp = spacy.load("xx_ent_wiki_sm") # Multilingual
# Sentiment pipeline
sentiment_analyzer = pipeline(
"sentiment-analysis",
model="savasy/bert-base-turkish-sentiment-cased"
)
def aspect_based_sentiment(text, aspects):
"""
aspects: ["kamera", "batarya", "fiyat", "ekran"]
"""
results = {}
# Metni cümlelere böl
doc = nlp(text)
sentences = [sent.text for sent in doc.sents]
# Her aspect için ilgili cümleleri bul ve sentiment analiz et
for aspect in aspects:
aspect_sentences = [s for s in sentences if aspect.lower() in s.lower()]
if aspect_sentences:
# Her cümlenin sentiment'ini al
sentiments = sentiment_analyzer(aspect_sentences)
# Ortalama sentiment score
avg_score = sum(s['score'] if s['label']=='POSITIVE' else -s['score']
for s in sentiments) / len(sentiments)
results[aspect] = {
'sentiment': 'pozitif' if avg_score > 0.2 else 'negatif' if avg_score < -0.2 else 'nötr',
'score': avg_score,
'mentions': len(aspect_sentences)
}
else:
results[aspect] = None
return results
# Test
text = """iPhone 15 Pro'nun kamerası gerçekten mükemmel, gece çekimleri harika.
Ama bataryası çok zayıf, akşama kadar zor dayaniyor.
Ekran kalitesi de süper ama fiyat çok yüksek."""
aspects = ["kamera", "batarya", "ekran", "fiyat"]
results = aspect_based_sentiment(text, aspects)
for aspect, data in results.items():
if data:
print(f"{aspect}: {data['sentiment']} ({data['score']:.2f})")
# Output:
# kamera: pozitif (0.87)
# batarya: negatif (-0.74)
# ekran: pozitif (0.81)
# fiyat: negatif (-0.68)📊Kullanım Alanları ve ROI
1. E-Ticaret Yorum Analizi
Binlerce ürün yorumunu otomatik analiz et, düşük puanlı ürünleri tespit et
- • Use case: Hepsiburada, Trendyol seller paneli
- • Fayda: Problematik ürünleri 10x hızlı tespit
- • ROI: Müşteri memnuniyeti %15 artış, iade %20 azalma
2. Sosyal Medya Monitoring
Twitter, Instagram, Facebook'ta marka bahislerini izle
- • Use case: Crisis management, brand reputation
- • Fayda: Negatif kampanyaları 24 saat içinde tespit
- • ROI: PR krizlerini önleme, %40 hızlı müdahale
3. Müşteri Hizmetleri Önceliklendirme
Gelen ticket'ları sentiment'e göre sırala, negatif olanlar önce
- • Use case: Zendesk, Intercom entegrasyonu
- • Fayda: Kızgın müşterilere öncelik, churn önleme
- • ROI: Müşteri kaybı %25 azalma
4. Ürün Geliştirme Insights
Aspect-based sentiment ile hangi özellikler beğeniliyor/beğenilmiyor
- • Use case: Product roadmap belirleme
- • Fayda: Data-driven karar, müşteri sesi
- • ROI: Başarılı feature lansmanı %30 artış
Gerçek Örnek: Hepsiburada Yorum Analizi
Hepsiburada Seller Dashboard (2025)
Sentiment Analizi Sisteminizi Kurmaya Hazır Mısınız?
Türkçe NLP, aspect-based sentiment, sosyal medya monitoring ile marka itibarınızı koruyun ve müşteri memnuniyetini artırın. Ücretsiz POC için iletişime geçin.