Kategoriler
Yapay Zeka / AI

Sentiment Analizi ile Müşteri Duygularını Anlama

Dijital dünyada müşteri yorumları, markalar için paha biçilemez bir hazineye dönüşmüş durumda. Ancak, bu hazineden faydalanmak için müthiş bir şey lazım: Duygusal zekâ. Sentiment analizi (duygu analizi) tam da bu noktada devreye giriyor ve yapay zekâyla müşteri yorumlarından anlamlı çıkarımlar elde etmeyi mümkün kılıyor.

Müşteri Yorumları Bir Bilmece Gibi

Bir müşterinin “Bu ürünü almayı asla düşünmezdim ama iyi ki almışım!” yorumu ne kadar olumlu? Ya da “Beklentilerimi karşılamadı ama fiyatı uygundu” yorumu ne kadar olumsuz?”

Yorumları okumak kolay, ama anlamak zor.

“Elimizde binlerce yorum olduğunda, bunları tek tek analiz etmek bir insanın altından kalkabileceği bir şey değil.

Neden Bu Sorunu Çözmeliyiz?

Olumlu bir yorumu yanlışlıkla olumsuz olarak yorumlarsan müşterin kendini anlaşılmamış hissedebilir. Bu konuda yanlış bir adım atarsan, müşteri sana ‘Sen benim kim olduğumu biliyor musun?’ dercesine soğuyabilir. Ya da tam tersi: Şikayet olarak algılamadığın bir yorum, başka müşterilere kötü bir izlenim bırakabilir.

Sonuç? Marka sadakati azalır, gelirler düşer ve rakiplerin sana bir adım daha yaklaşır.

Hatalar zincirleme bir reaksiyon gibi çalışır; domino taşlarını dizmek kolaydır, ama düşüşlerini durdurmak zordur.

Yapay Zekâ ile Duyguları Anlamak

Sentiment analizi, yapay zekâ tabanlı bir doğal dil işleme (NLP) yöntemiyle yorumları analiz eder ve bunların olumlu, olumsuz ya da nötr olup olmadığını belirler. Bunu uygulamak için aşağıdaki adımları takip edelim:

1. Veri Toplama

E-ticaret sitendeki müşteri yorumlarını bir veritabanında saklamalıyız.

CREATE TABLE customer_reviews (
    id INT AUTO_INCREMENT PRIMARY KEY,
    product_id INT NOT NULL,
    review_text TEXT NOT NULL,
    sentiment_label VARCHAR(10), -- 'positive', 'negative', 'neutral'
    year INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. Python ile Sentiment Analizi Modeli

Python’da bir NLP modeli oluşturarak yorumları analiz edebiliriz. Eğer hazır bir Türkçe sentiment veri setine ulaşmak istersen Kaggle gibi platformları ziyaret edebilir ya da e-ticaret sitendeki yorumları manuel olarak etiketleyerek kendi veri setini oluşturabilirsin. Bu, dilin bağlamına uygun sonuçlar almanda yardımcı olacaktır.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
import pickle

# Veri setini yükle (Eğitim verisi olarak hazır bir sentiment veri seti kullanabilirsin)
data = pd.read_csv('sentiment_data.csv')

# Özellikler ve hedef değişken
X = data['review_text']
y = data['sentiment']

# Veriyi böl
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Metin verisini sayısal verilere dönüştür
vectorizer = CountVectorizer()
X_train_vec = vectorizer.fit_transform(X_train)

# Modeli eğit
model = MultinomialNB()
model.fit(X_train_vec, y_train)

# Modeli ve vektörizeri kaydet
with open('sentiment_model.pkl', 'wb') as model_file:
    pickle.dump(model, model_file)

with open('vectorizer.pkl', 'wb') as vec_file:
    pickle.dump(vectorizer, vec_file)

Modeli Güncellemek

Eğer yeni yorumlar geldikçe modelini güncellemek istersek, aşağıdaki gibi bir iş akışı oluşturabiliriz:

  1. Yeni yorumları topla ve etiketle (manuel ya da yarı otomatik yöntemlerle).
  2. Yeni veriyi mevcut veri setine ekle.
  3. Modeli tekrar eğit ve güncelle.
def update_model(new_data):
    global model, vectorizer

    # Yeni veriyi ekle
    data = pd.read_csv('sentiment_data.csv')
    updated_data = pd.concat([data, new_data])

    # Yeniden eğit
    X = updated_data['review_text']
    y = updated_data['sentiment']
    X_vec = vectorizer.fit_transform(X)
    model.fit(X_vec, y)

    # Güncellenmiş modeli kaydet
    with open('sentiment_model.pkl', 'wb') as model_file:
        pickle.dump(model, model_file)

3. Python API’sı ile Sentiment Analizi

from flask import Flask, request, jsonify
import pickle

app = Flask(__name__)

# Model ve vektörizeri yükle
with open('sentiment_model.pkl', 'rb') as model_file:
    model = pickle.load(model_file)

with open('vectorizer.pkl', 'rb') as vec_file:
    vectorizer = pickle.load(vec_file)

@app.route('/analyze', methods=['POST'])
def analyze():
    data = request.json
    review_text = data['review_text']

    # Yorum metnini vektörize et
    review_vec = vectorizer.transform([review_text])

    # Tahmin yap
    prediction = model.predict(review_vec)[0]

    return jsonify({"sentiment": prediction})

if __name__ == '__main__':
    app.run(debug=True)

4. PHP ile Python API’sine Bağlanma

class SentimentAnalyzer {
    public function analyze($reviewText) {
        $url = 'http://127.0.0.1:5000/analyze';
        $data = json_encode(['review_text' => $reviewText]);

        $options = [
            'http' => [
                'header'  => "Content-type: application/json\r\n",
                'method'  => 'POST',
                'content' => $data,
            ],
        ];

        $context  = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        return json_decode($result, true);
    }
}

// Kullanım Örneği
$analyzer = new SentimentAnalyzer();
$sentiment = $analyzer->analyze("Bu ürün harika, çok memnun kaldım!");
echo "Duygu: " . $sentiment['sentiment'];

Bu sistem sayesinde yorumları etkili bir şekilde analiz edebilir, müşteri geri bildirimlerini anlamlı hale getirerek stratejik kararlar alabilirsin. Yapay zeka ile müşteri duygularını anlamak artık senin elinde!

Yorum yapar ve paylaşırsan beni mutlu edersin!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir