Twitter Duyarlılık Analizi, tweetlerde ifade edilen duygu veya düşünceleri otomatik olarak anlamak için Python kullanma sürecidir. Metni analiz ederek tweetleri olumlu olumsuz veya nötr olarak sınıflandırabiliriz. Bu, işletmelerin ve araştırmacıların genel ruh hali marka itibarını veya olaylara verilen tepkileri gerçek zamanlı olarak izlemelerine yardımcı olur. TextBlob Tweepy ve NLTK gibi Python kitaplıkları, tweet toplamayı, metni işlemeyi ve duygu analizini verimli bir şekilde gerçekleştirmeyi kolaylaştırır. 
Twitter Duygu Analizi Ne Kadar Faydalıdır?
- Twitter Duyarlılık Analizi önemlidir çünkü insanların ve işletmelerin halkın ne düşündüğünü gerçek zamanlı olarak anlamalarına yardımcı olur.
- Her gün markaların ürün etkinlikleri veya sosyal konular hakkında görüşlerin paylaşıldığı milyonlarca tweet atılıyor. Şirketler bu devasa veri akışını analiz ederek müşteri memnuniyetini ölçebilir, trendleri erkenden tespit edebilir, olumsuz geri bildirimleri hızlı bir şekilde ele alabilir ve insanların gerçekte nasıl hissettiğine dayalı olarak daha iyi kararlar alabilir.
- Ham tweet'leri değerli içgörülere dönüştürdüğü için araştırmacıların ve hükümetlerin seçim krizleri veya büyük olaylar sırasında halkın ruh halini izlemesi de yararlıdır.
Adım Adım Uygulama
Adım 1: Gerekli Kitaplıkları Kurun
Bu blok gerekli kitaplıkları yükler ve içe aktarır. Kullanır pandalar verileri yüklemek ve işlemek için TfidfVektörleştirici metni sayılara dönüştürmek ve scikit öğren modeli eğitmek.
Pythonpip install pandas scikit-learn import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split from sklearn.naive_bayes import BernoulliNB from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC from sklearn.metrics import accuracy_score classification_report
2. Adım: Veri Kümesini Yükleyin
- Burada şunu yüklüyoruz Sentiment140 veri kümesi sıkıştırılmış bir CSV dosyasından Kaggle'dan indirebilirsiniz.
- Yalnızca polariteyi saklıyoruz ve tweet metni sütunlarını netlik açısından yeniden adlandırıyoruz ve verileri kontrol etmek için ilk birkaç satırı yazdırıyoruz.
df = pd.read_csv('training.1600000.processed.noemoticon.csv.zip' encoding='latin-1' header=None) df = df[[0 5]] df.columns = ['polarity' 'text'] print(df.head())
Çıkış:
Çıkış3. Adım: Yalnızca Olumlu ve Olumsuz Duyguları Tutun
- Burada, polaritenin 2 olduğu ve etiketlerin eşleştiği nötr tweetleri kaldırıyoruz, böylece 0 negatif kalıyor ve 4 pozitif için 1 oluyor.
- Daha sonra verilerde kaç tane olumlu ve olumsuz tweet kaldığını yazdırıyoruz.
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts())
Çıkış:
Çıkış4. Adım: Tweetleri temizleyin
- Burada tutarlılık sağlamak amacıyla tüm metni küçük harfe dönüştüren ve bunu veri kümesindeki her tweet'e uygulayan basit bir işlev tanımlıyoruz.
- Daha sonra ilk birkaç tweetin orijinal ve temizlenmiş versiyonlarını gösterir.
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head())
Çıkış:
ÇıkışAdım 5: Test Bölümünü Eğitin
- Bu kod, clean_text ve polarity sütunlarını 80/20'lik bir bölünme kullanarak eğitim ve test kümelerine böler.
- random_state=42 tekrarlanabilirliği sağlar.
X_train X_test y_train y_test = train_test_split( df['clean_text'] df['polarity'] test_size=0.2 random_state=42 ) print('Train size:' len(X_train)) print('Test size:' len(X_test))
Çıkış:
Tren büyüklüğü: 1280000
Test boyutu: 320000
Adım 6: Vektörleştirmeyi Gerçekleştirin
- Bu kod, 5000 özellik ile sınırlı unigramlar ve bigramlar kullanarak metni sayısal özelliklere dönüştüren bir TF IDF vektörleştiricisi oluşturur.
- Eğitim verilerini sığdırıp dönüştürür, test verilerini dönüştürür ve ardından elde edilen TF IDF matrislerinin şekillerini yazdırır.
vectorizer = TfidfVectorizer(max_features=5000 ngram_range=(12)) X_train_tfidf = vectorizer.fit_transform(X_train) X_test_tfidf = vectorizer.transform(X_test) print('TF-IDF shape (train):' X_train_tfidf.shape) print('TF-IDF shape (test):' X_test_tfidf.shape)
Çıkış:
TF-IDF şekli (tren): (1280000 5000)
TF-IDF şekli (test): (320000 5000)
Adım 7: Bernoulli Naive Bayes modelini eğitin
- Burada bir kişiyi eğitiyoruz Bernoulli Naif Bayes eğitim verilerinden TF IDF özelliklerine ilişkin sınıflandırıcı.
- Test verilerine ilişkin duyarlılıkları tahmin eder ve ardından doğruluk ve ayrıntılı bir sınıflandırma raporu yazdırır.
bnb = BernoulliNB() bnb.fit(X_train_tfidf y_train) bnb_pred = bnb.predict(X_test_tfidf) print('Bernoulli Naive Bayes Accuracy:' accuracy_score(y_test bnb_pred)) print('nBernoulliNB Classification Report:n' classification_report(y_test bnb_pred))
Çıkış:
ÇıkışAdım 9: Destek Vektör Makinesi (SVM) modelini eğitin
- Bu kod bir Destek Vektör Makinesi (SVM) TF IDF özelliklerinde maksimum 1000 yineleme ile.
- Test etiketlerini tahmin eder, ardından doğruluğu ve SVM'nin ne kadar iyi performans gösterdiğini gösteren ayrıntılı bir sınıflandırma raporunu yazdırır.
svm = LinearSVC(max_iter=1000) svm.fit(X_train_tfidf y_train) svm_pred = svm.predict(X_test_tfidf) print('SVM Accuracy:' accuracy_score(y_test svm_pred)) print('nSVM Classification Report:n' classification_report(y_test svm_pred))
Çıkış:
rr algoritması
ÇıkışAdım 10: Lojistik Regresyon modelini eğitin
- Bu kod bir Lojistik Regresyon TF IDF özelliklerinde 100'e kadar yinelemeye sahip model.
- Test verileri için duyarlılık etiketlerini tahmin eder ve model değerlendirmesi için doğruluk ve ayrıntılı sınıflandırma raporunu yazdırır.
logreg = LogisticRegression(max_iter=100) logreg.fit(X_train_tfidf y_train) logreg_pred = logreg.predict(X_test_tfidf) print('Logistic Regression Accuracy:' accuracy_score(y_test logreg_pred)) print('nLogistic Regression Classification Report:n' classification_report(y_test logreg_pred))
Çıkış:
ÇıkışAdım 11: Örnek Tweetlere ilişkin Tahminlerde Bulunun
- Bu kod üç örnek tweet alır ve bunları aynı vektörleştiriciyi kullanarak TF IDF özelliklerine dönüştürür.
- Daha sonra eğitilmiş BernoulliNB SVM ve Lojistik Regresyon modellerini kullanarak duyarlılıklarını tahmin eder ve her sınıflandırıcı için sonuçları yazdırır.
- Burada 1 Pozitif ve 0 Negatif anlamına gelir.
sample_tweets = ['I love this!' 'I hate that!' 'It was okay not great.'] sample_vec = vectorizer.transform(sample_tweets) print('nSample Predictions:') print('BernoulliNB:' bnb.predict(sample_vec)) print('SVM:' svm.predict(sample_vec)) print('Logistic Regression:' logreg.predict(sample_vec))
Çıkış:
ÇıkışModellerimizin iyi çalıştığını ve farklı yaklaşımlarla bile aynı tahminleri verdiğini görebiliyoruz.
Test OluşturKaynak kodunu buradan indirebilirsiniz- Python kullanarak Twitter Duyarlılık Analizi