300 ham gönderi içeren bir tabloyu açtığında sorun anında göze çarpar: kopyala, yapıştır, oku, gözlerini kıs, tahmin et, tekrar et — yine de takip ettiğin lansmanı insanların sevip sevmediğini tam olarak anlayamayabilirsin.
Twitter duygu analizi tam da bu yüzden var. Ama mesele şu ki, bu konudaki eğitimlerin çoğu 2022’de kalmış durumda. Artık olmayan ücretsiz API erişimini varsayıyorlar, alaycılığı ve emojiyi doğru okuyamayan modeller öneriyorlar ve sonuçlarının gerçekten anlamlı olup olmadığını belirleyen ön işleme adımlarını atlıyorlar. SaaS ve otomasyon dünyasında epey vakit geçirdim (Thunderbit](https://thunderbit.com/) inşa etmek de buna dahil) ve duygu analizi dünyasının ciddi biçimde değiştiğini gördüm. Dürüst ve güncel yaklaşım, 2026’daki gerçeklere uygun veri toplama yöntemleri ve modellerle birlikte hem Python hem de kodsuz iş akışlarını kapsıyor.
Twitter Duygu Analizi Nedir?
Twitter duygu analizi, X üzerindeki gönderileri metin, emoji ve bağlama göre otomatik olarak olumlu, olumsuz ya da nötr şeklinde sınıflandırma sürecidir. Bunu, bir makineye tweet okumayı öğretip şu soruyu sordurmak gibi düşünebilirsiniz: "Bu kişi mutlu mu, mutsuz mu, yoksa ikisinin arasında mı?"
Ama duygu analizi, genel sosyal dinlemeden farklıdır. Sosyal dinleme, insanların neler konuştuğunu — konuları, trendleri, hacmi — takip etmeye odaklanır. Duygu analizi ise bunun bir üst katmanı olan skor ve sınıflandırma aşamasıdır: insanların söyledikleri hakkında nasıl hissettiklerini söyler. Bu kavramın kökleri onlarca yıl öncesine uzanan hesaplamalı dilbilim ve görüş madenciliği araştırmalarına dayanır, ancak iş dünyasında yaygın bir araç hâline gelmesi son birkaç yılda oldu.
Yaygın sınıflandırma seviyeleri şunlardır:
- İkili: Olumlu ya da olumsuz (en basit yaklaşım, ama nüansı kaçırır)
- Üçlü: Olumlu, nötr ya da olumsuz (en yaygın varsayılan yapı)
- Ayrıntılı: Çok olumlu → çok olumsuz (araştırma ve ayrıntılı marka takibi için faydalı)
Buna ek olarak, duygu analizinden farklı ama ilişkili başka görevler de vardır: duygu tespiti (öfkeli, üzgün, neşeli), tutum tespiti (bir öneriye karşı ya da yanında olma), yön bazlı duygu analizi (birinin fiyat ile kalite hakkında ne hissettiği) ve alaycılık/ironi tespiti. TweetEval benchmark’ı bunları ayrı görevler olarak ele alır ve bunun iyi bir nedeni vardır: tek bir duygu skoru her iş sorusuna cevap veremez. Bir ürün lansmanını izliyorsanız, büyük ihtimalle yön bazlı duygu analizi istersiniz ("kamerasını seviyorum, pilini sevmiyorum"). Bir kriz durumunu takip ediyorsanız ise yalnızca kutupsallık değil, duygu ve hacim de önemlidir.
Twitter Duygu Analizi İşletmeniz İçin Neden Önemlidir?
X, gerçek zamanlı konuşma etrafında kurulduğu için lansmanlara, canlı etkinliklere ve sıcak gelişmelere verilen tepkiler çok hızlı birikiyor. İşletmeler için asıl mesele de bu. Duygu analizi, yapılandırılmamış bir metin selini, ekibin inceleyip aksiyon alabileceği yapılandırılmış veriye dönüştürür.
En yaygın kullanım alanları şöyle özetlenebilir:
| Kullanım Alanı | Ekip | İş Sonucu |
|---|---|---|
| Marka itibarı takibi | PR, Pazarlama | Negatif sıçramalar viral olmadan önce fark edilir |
| Ürün lansmanı geri bildirimi | Ürün, Pazarlama | Gerçek zamanlı olarak neyin işe yaradığı, neyin yaramadığı anlaşılır |
| Rakip kıyaslaması | Strateji, Pazarlama | Belirli dönemlerde marka algısı rakiplerle karşılaştırılır |
| Kriz tespiti | PR, Operasyon | Negatif hacim yükseldiğinde insan incelemesi tetiklenir |
| Kampanya performansı | Pazarlama | Kreatif, kanal veya zamana göre duygu değişimi ölçülür |
| Piyasa/hisse duyarlılığı | Finans, Araştırma | Kazançlar, etkinlikler veya politikalar etrafındaki kamu havası izlenir |
| Siyasi ve politika araştırmaları | Araştırma, Kamu | Kamuoyunun konulara bakışı büyük ölçekte ölçülür |
Bunu somutlaştırmak için: X’in 2026 Super Bowl özeti tek bir etkinlik etrafında 4 milyon yazardan 16 milyon gönderi, 5 milyar gösterim ve 605 milyon video görüntülenmesi bildirdi — konuşmanın yarısı gerçek zamanlı yaşandı. Manuel okumanın imkânsız, otomatik duygu skorlamasının ise vazgeçilmez olduğu ölçek tam olarak budur.
Üstelik mesele yalnızca hacim değil. X’in kendi BrandRanx metodolojisi, hacim, etkileşim ve duyguyu birlikte kullanır — bu da duygunun tek başına değil, diğer sinyallerle birlikte kullanıldığında en güçlü hâline geldiğini gösterir.
Özetle: Ekibiniz kararlarını kamu algısına dayanarak veriyorsa — ürün, marka, kampanya ya da kriz olsun — X verisi üzerinde duygu analizi en hızlı geri bildirim döngülerinden biridir.
2026 X API Gerçeği: Tweet Verisini Gerçekte Nasıl Alırsınız?
Çoğu rehberin dağıldığı nokta burası. Eğer hiç Tweepy tabanlı bir kılavuzu takip edip kodu yapıştırdıktan sonra bir ödeme duvarına ya da gizemli bir hataya çarptıysanız, yalnız değilsiniz. Eski Free / Basic / Pro katmanları artık yok. X API artık ön ödemeli krediyle kullanım başına ücretlendirme, uç nokta bazlı maliyetler ve gerçek zamanlı kullanım takibi modeliyle çalışıyor.
Mevcut tüm veri toplama yöntemlerinin dürüst karşılaştırması:
| Yöntem | Maliyet (2026) | Hacim | Beceri Seviyesi | Notlar |
|---|---|---|---|---|
| X API v2 (kullanım başına ücret) | Okunan her gönderi için $0.005 | Aylık 2M gönderi okumasına kadar (self-serve) | Orta seviye (Python) | Resmî, tekrarlanabilir, uyumlu |
| Full-Archive Search | İade edilen gönderi başına $0.005; full-archive count isteği başına $0.010 | Mart 2006’ya kadar | Orta–ileri seviye | Kullanım başına ücretli ve Enterprise için mevcut |
| Filtered Stream | Teslimde gönderi okuması ücretlendirilir | Gerçek zamanlı, sürekli | Orta–ileri seviye | Canlı toplama için en iyisi |
| Hazır veri kümeleri (Kaggle, Sentiment140) | $0 | Statik, yalnızca geçmiş | Başlangıç seviyesi | Öğrenmek için harika, canlı analiz için değil |
| snscrape, Twint, Twikit vb. | $0 | Güvenilmez / sık sık bozulur | İleri seviye | snscrape 2023’ten beri X aramasında çalışmıyor; Twint arşivlendi; Twikit resmî olmayan yöntemler kullanıyor |
| Kendi X arşiviniz | $0 | Sadece kendi gönderileriniz | Başlangıç seviyesi | Kişisel analiz için kullanışlı |
Bilinmesi gereken birkaç önemli nokta:
- Eski Free/Basic/Pro katmanları artık yok. Bunları güncel sanan hiçbir eğitimi takip etmeyin.
- snscrape, X için artık çalışmıyor. Bakımcısı 2024’te Twitter arama kazımanın artık çalışmadığını doğruladı. Twint arşivlendi. Twikit ise resmî olmayan scraping ve çerezler kullanıyor — faaliyette bulunmak izin almak anlamına gelmez.
- X’in kullanım şartları, önceden yazılı izin olmadan tarayıcı scraping’ini yasaklıyor. Bu da Selenium, Playwright ve tarayıcı eklentilerinin X API erişimi için uyumlu geçici çözümler olmadığı anlamına gelir.
X API v2: Gerçekte Ne Elde Edersiniz?
Standart bir gönderi okuması iade edilen her gönderi için $0.005 tutar. Kullanıcı okuması ise her biri $0.010’dur. Yani 10.000 benzersiz gönderi okuması, diğer kaynak maliyetleri hariç yaklaşık $50 eder. Self-serve üst sınır aylık 2 milyon gönderi okumasıdır. Ücretler değişebilir — her zaman Developer Console üzerinden kontrol edin.
Duygu çalışmaları için yalnızca id ve text yeterli değildir. Faydalı bir minimum şema; created_at, lang, author_id, conversation_id, referenced_tweets, entities, context_annotations ve public_metrics alanlarını içerir. Ham yanıtı ve sorgunuzun, uç noktanın, UTC zaman aralığının ve sayfalama belirteçlerinin değişmez bir kaydını saklayın. Bunlar olmadan veri kümeniz tekrarlanabilir olmaz.
Bir başka önemli ayrıntı: X’in 4 Mayıs 2026 arama dizini geçişi gözlemlenen veri kümesini değiştirdi. Anahtar kelime REST araması artık yeniden paylaşımları döndürmüyor, Filtered Stream ise değişmedi. Bu tarihten önce ve sonra alınan sonuçları karşılaştırıyorsanız, farklı popülasyonları sayıyor olabilirsiniz.
Hazır Veri Kümeleri: Öğrenmek İçin İyi, Canlı Analiz İçin Değil
Sentiment140 (1,6 milyon tweet, uzaktan denetimli etiketler) ve çeşitli Kaggle veri kümeleri ücretsizdir ve eğitim ile benchmark için çok uygundur. Ancak Sentiment140 2009’da toplandı. TweetEval’in duygu alt kümesi ise 2013–2016 SemEval verilerini kullanır. Bunlar modelinizin 2026 dilinde, argosunda ya da olaylarında çalıştığını kanıtlayamaz.
Thunderbit ve X Verisi Hakkında Bir Not
Burada açık olayım, çünkü Thunderbit bizde geliştirildi: Thunderbit, birçok uyumlu web sitesinde çalışan bir AI web scraping ve otomasyon aracıdır. Ancak X’in mevcut şartları, izin olmadan tarayıcı scraping’ini yasaklıyor. Bu yüzden Thunderbit’i X API maliyetlerinden ya da erişim kontrollerinden kaçmanın bir yolu olarak konumlandırmayacağım — bu yanıltıcı olur. X verisi için resmî API’yi, yetkili bir sağlayıcıyı ya da kendi hesap arşivinizi kullanın. Thunderbit’in duygu iş akışında gerçekten devreye girdiği yer ise aşağı akış tarafıdır: zaten izinli bir yolla topladığınız veriyi yapılandırmak, etiketlemek ve dışa aktarmak. Buna birazdan döneceğim.
Doğru Duygu Modelini Seçmek: VADER, TextBlob ve RoBERTa Karşılaştırması

Seçeceğiniz model, çoğu rehberin kabul ettiğinden daha fazla önem taşır. Ve rakip rehberlerdeki en büyük eksik, tweet’ler üzerinde ince ayar yapılmış transformer tabanlı modelleri neredeyse hiç kapsamamalarıdır — oysa bugün en güçlü pratik başlangıç noktalarından bazıları bunlardır.
Aşağıda yan yana bir karşılaştırma bulacaksınız. Evrensel F1 sayıları bu tabloya bilerek eklenmedi; çünkü skorlar veri kümesine, bölünmeye, etiket tanımına, zaman aralığına ve metriğe göre değişir. Bunun yerine göreli performansı anlatacağım ve doğrulayabileceğiniz benchmark’lara yönlendireceğim.
| Model / Kütüphane | Yaklaşım | Alaycılığı Anlar mı? | Argo/Emojiyi Anlar mı? | Tweetlerde Göreli Doğruluk | Kurulum Karmaşıklığı |
|---|---|---|---|---|---|
| VADER (NLTK) | Kural tabanlı sözlük | Zayıf | Kısmen emoji desteği | En düşük | Çok düşük |
| TextBlob | Desen tabanlı | Zayıf | Hayır | Daha düşük | Çok düşük |
| Naive Bayes / Logistic Regression (TF-IDF) | Klasik ML | Hayır | Hayır | Orta | Orta |
| CardiffNLP RoBERTa | Transformer (tweet’lerde ince ayarlı) | Daha iyi (kusursuz değil) | Evet | Bunlar arasında en yüksek | Orta (HuggingFace pipeline) |
VADER: Hızlı ve Basit, Ama Sınırlı
VADER, sosyal metin için tasarlanmış kural tabanlı bir sözlük yaklaşımıdır. Hızlıdır, yorumlanabilir, eğitim verisi gerektirmez ve bazı emoji ile emoticon’ları işler. Olumsuzlama, derece belirteçleri, noktalama işaretleri ve büyük harf kullanımını dikkate alır. Hızlı bir başlangıç ya da hesaplama gücü ve şeffaflığın önemli olduğu durumlarda VADER faydalıdır. Zayıf kaldığı yerler ise alaycılık, argo, bağlama bağlı anlamlar ve tek tek kelimelerin ötesinde kavrayış gerektiren her şeydir. Varsayılan bileşik skor eşikleri (≥0.05 = olumlu, ≤-0.05 = olumsuz) evrensel iş eşikleri değil, yalnızca varsayılandır — kendi doğrulama kümeniz üzerinde ayarlayın.
TextBlob: Daha da Basit, Daha da Sınırlı
TextBlob, küçük bir eğitim amaçlı başlangıç çözümüdür. Varsayılan PatternAnalyzer’ı tweet tarzı metinlerde eğitilmemiştir. İlk NLP denemeniz için uygundur, ama üretim ortamında tweet analizi için doğru tercih değildir.
Klasik ML: Naive Bayes, Logistic Regression, SVM
Kelime ve karakter temelli bir TF-IDF hattı ile logistic regression veya LinearSVC hâlâ değerli bir denetimli başlangıç modelidir. Ucuzdur, yorumlanabilir ve çoğu zaman bir transformer’ın karmaşıklığına değip değmediğini anlamanıza yardımcı olur. Temel kural: Sözlüğü yalnızca eğitim/doğrulama ayrımından sonra eğitin; böylece kelime dağarcığı ve IDF sızıntısını önlersiniz.
Bu modeller, büyük etiketli veri kümelerinde kural tabanlı yaklaşımlardan daha iyi performans gösterebilir; ancak bağlamı, alaycılığı ve argoyu yine de kaçırırlar.
CardiffNLP RoBERTa: 2026’nın Tweet Duygu Standardı
cardiffnlp/twitter-roberta-base-sentiment-latest, bakımı yapılan, tweet odaklı üç sınıflı bir modeldir ve 2026 için mantıklı, güçlü bir başlangıç çizgisi sunar. Geniş bir tweet korpusunda önceden eğitildi ve duygu için ince ayarlandı; bu yüzden emojileri, argoyu ve gündelik dili kural tabanlı ya da klasik ML yöntemlerinden çok daha iyi işler.
Bunu çalıştırmak için minimal bir HuggingFace kod örneği:
from transformers import pipeline
classifier = pipeline(
"text-classification",
model="cardiffnlp/twitter-roberta-base-sentiment-latest",
top_k=None,
)
scores = classifier("@user Desteğe üç saat beklemeyi çok seviyorum 😒 http")
print(scores)
Birkaç önemli not:
- Çıktı bir model skorudur, kalibre edilmiş iş olasılığı değil. Güncel ve etiketli bir örnek üzerinde kalibrasyon yapın ya da bir çekimser kalma eşiği ekleyin.
- Bağlamsal modeller genellikle birçok tweet görevinde kural sistemlerinden daha iyi performans gösterir; ancak alaycılık, çoklu hedefler, eksik thread bağlamı, lehçeler ve kodlu dil hâlâ yapısal hata kaynaklarıdır. Hiçbir modelin alaycılığı "anladığını" söylemeyin — daha doğrusu daha iyi işlediğini ama kusursuz olmadığını söylemek daha doğrudur.
- Dil ve göreve bağlı olarak BERTweet, TimeLMs ve çok dilli Twitter-XLM-R modelleri de alternatifler arasındadır.
Peki Twitter duygu analizi gerçekten doğru olabilir mi? Evet — model, ön işleme, etiket tanımı ve değerlendirme örneği görevle uyumluysa. 2019 tarihli bir eğitimden kopyalanmış genel VADER kodu bir başlangıçtır; üretim kalitesinin kanıtı değildir.
Gerçek Bir Tweet Ön İşleme Hattı (Sadece text.lower() Değil)

Ham URL’leri, @mention’ları ve HTML varlıklarını bir duygu modeline verirseniz, oldukça iyi bir model bile saçmalık üretebilir. Çoğu rehber — üst sıralarda çıkanlar da dahil — modeli beslemeden önce yalnızca metni küçük harfe çevirir. Bu, özellikle ön işlemenin model seçimi kadar önemli olabildiği klasik ML’de, doğruluğu sessizce sabote eder.
Neleri Temizlemeli ve Neden?
| Öğe | Ne Yapmalı | Neden |
|---|---|---|
| URL’ler | http gibi bir yer tutucuyla değiştirin | URL’ler duygu açısından gürültüdür; çevresindeki metni silmek bağlamı bozar |
| @mention’lar | Etiketleri @user ile değiştirin | Yapıyı korur, yazar kimliği sızıntısını kaldırır |
| Emoji/emoticon’lar | Modern tokenizörlerde koruyun; seyrek modeller için metne dönüştürmeyi test edin | Emoji güçlü duygu sinyali taşır — onları silmek veri kaybetmektir |
| Hashtag’ler | Token’ı koruyun; gerekirse bölünmüş bir kopya ekleyin (ör. #ClimateChangeIsReal → Climate Change Is Real) | Hashtag’ler çoğu zaman fikri taşır |
| Olumsuzlama | not, no, never, kısaltmalar ve karşıtlık sözcüklerini koruyun | Genel stop-word listeleri bunları kaldırıp duyguyu tersine çevirebilir |
| Büyük/küçük harf ve noktalama | VADER ve uyumlu modeller için koruyun | VADER bunları özellik olarak kullanır |
| RT öneki | RT işaretini kaldırın | Bu metaveridir, duygu değildir |
| Yeniden paylaşımlar/tekrarlar | Bölmeden önce tam ve yakın tekrarları tespit edin | Eğitim ve test arasındaki tekrarlar veri sızıntısı yaratır |
Önce ve Sonra: Bir Tweet’i Ön İşleme Gerçekte Ne Yapar?
Somut bir örnek:
| Aşama | Metin |
|---|---|
| Ham tweet | RT @BrandX: Wow, #CustomerServiceFail 😡😡 https://t.co/abc123 Dürüst olayım, 3 saattir bekliyorum, bu berbat |
| URL kaldırıldıktan sonra | RT @BrandX: Wow, #CustomerServiceFail 😡😡 http 3 saattir bekliyorum, bu berbat |
| Mention normalizasyonundan sonra | RT @user: Wow, #CustomerServiceFail 😡😡 http 3 saattir bekliyorum, bu berbat |
| RT kaldırıldıktan sonra | @user: Wow, #CustomerServiceFail 😡😡 http 3 saattir bekliyorum, bu berbat |
| Hashtag ayrıştırmasından sonra | @user: Wow, #CustomerServiceFail Customer Service Fail 😡😡 http 3 saattir bekliyorum, bu berbat |
| Emoji metne çevrildikten sonra (seyrek modeller için) | @user: Wow, #CustomerServiceFail Customer Service Fail angry_face angry_face http 3 saattir bekliyorum, bu berbat |
| Son hâl (CardiffNLP RoBERTa için) | @user Wow, #CustomerServiceFail Customer Service Fail 😡😡 http 3 saattir bekliyorum, bu berbat |
CardiffNLP RoBERTa gibi bir transformer için emoji, noktalama ve harf biçimini korursunuz — çünkü model bu tür metinlerle eğitilmiştir. Bir TF-IDF modeli için ise emoji metne çevrilebilir, küçük harfe dönüştürülebilir ve lemmatization uygulanabilir.
Kopyala-Yapıştır Python Ön İşleme Kodu
Transformer uyumlu ön işleme için temiz ve modüler bir fonksiyon:
import html
import re
import unicodedata
URL_RE = re.compile(r"https?://\S+|www\.\S+", re.I)
MENTION_RE = re.compile(r"(?<!\w)@[A-Za-z0-9_]+")
def normalize_social_text(text: str) -> str:
"""Bir tweet’i transformer tabanlı duygu modelleri için normalleştir."""
text = html.unescape(text)
text = unicodedata.normalize("NFC", text)
text = URL_RE.sub("http", text)
text = MENTION_RE.sub("@user", text)
text = re.sub(r"\bRT\b", "", text)
return " ".join(text.split())
Klasik ML hatlarında bunu küçük harfe çevirme, emoji-to-text dönüşümü (emoji veya demoji kütüphaneleriyle), hashtag ayrıştırma (wordninja veya ekphrasis ile), argo normalizasyonu, stopword kaldırma ve lemmatization (spaCy ya da NLTK ile) adımlarıyla genişletirsiniz. Temel ilke şudur: ön işleme hattınızı modelinize göre eşleştirin. Örneğin BERTweet, kendi belgelenmiş normalizasyon kuralını kullanır — her modeli tek bir boru hattından zorla geçirmeyin.
Adım Adım: Python ile Twitter Duygu Analizi
Aşağıda, yukarıdaki her şeyi birleştiren tam iş akışını bulacaksınız. Baştan sona bu akışı izleyebilirsiniz.
Başlamadan önce:
- Zorluk: Orta seviye (biraz Python bilgisi varsayılır)
- Süre: Tüm işlem hattı için yaklaşık 30–60 dakika; hızlı transformer yolu için yaklaşık 10 dakika
- Gerekenler: Python 3.8+, ücretsiz Google Colab veya yerel ortam,
pandas,transformers,scikit-learn,matplotlib,seabornve isteğe bağlıwordcloud
Adım 1: Tweet Verinizi Toplayın
Bu eğitimde Sentiment140 veri kümesini kullanacağım (ücretsiz, 1,6 milyon tweet, Kaggle üzerinde mevcut). Geçmişe ait olsa da öğrenme ve benchmark için çok uygundur.
Canlı veri istiyorsanız X API v2 kullanım başına ücretli katmanı kullanın. Standart bir gönderi okuması 0.005$ tutar. 10.000 gönderi için bu yaklaşık 50$ eder.
Veri kümesini yükleyin:
import pandas as pd
columns = ["target", "id", "date", "flag", "user", "text"]
df = pd.read_csv(
"training.1600000.processed.noemoticon.csv",
encoding="latin-1",
names=columns,
)
# Etiketler: Sentiment140 0 = negatif, 4 = pozitif kullanır
df["label"] = df["target"].map({0: "negative", 4: "positive"})
print(df[["text", "label"]].head())
Ham tweet metni ve etiket sütunu içeren bir DataFrame görmelisiniz.
Adım 2: Tweet’lerinizi Temizleyin ve Ön İşleyin
Önceki bölümdeki ön işleme fonksiyonunu uygulayın:
df["clean_text"] = df["text"].apply(normalize_social_text)
print(df[["text", "clean_text"]].head())
URL’lerin değiştirildiğini, mention’ların normalleştirildiğini ve RT öneklerinin kaldırıldığını doğrulamak için birkaç satırı kontrol edin.
Adım 3: Modelinizi Seçin ve Duygu Sınıflandırması Yapın
Yol A: TF-IDF + Logistic Regression ile Klasik ML
Bu, "temelleri anlamak" için iyi bir yoldur. Verinizi bölün, vektörleştiriciyi yalnızca eğitim setinde eğitin ve bir logistic regression sınıflandırıcısı kurun:
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
X_train, X_test, y_train, y_test = train_test_split(
df["clean_text"], df["label"], test_size=0.2, random_state=42
)
vectorizer = TfidfVectorizer(max_features=50000, ngram_range=(1, 2))
X_train_tfidf = vectorizer.fit_transform(X_train)
X_test_tfidf = vectorizer.transform(X_test)
clf = LogisticRegression(max_iter=1000)
clf.fit(X_train_tfidf, y_train)
y_pred = clf.predict(X_test_tfidf)
print(classification_report(y_test, y_pred))
Her sınıf için precision, recall ve F1 içeren bir classification report görmelisiniz. Sentiment140 üzerinde TF-IDF ile logistic regression genellikle makul performans gösterir — ama unutmayın, bu veri 2009’dan kalmadır ve uzaktan denetim (etiket olarak emoticon’lar) kullanır; bu yüzden sonuçları üretim benchmark’ınız olarak görmeyin.
Yol B: HuggingFace ile CardiffNLP RoBERTa
Tweet metninde en iyi doğruluk için önceden eğitilmiş transformer’ı kullanın:
from transformers import pipeline
classifier = pipeline(
"text-classification",
model="cardiffnlp/twitter-roberta-base-sentiment-latest",
top_k=None,
)
sample_tweets = [
"@user Destek için üç saat beklemeyi çok seviyorum 😒 http",
"@user Bu yeni güncelleme kesinlikle harika, şimdiye kadarki en iyisi!",
"@user Etkinlik fena değildi, özel bir şey yoktu.",
]
for tweet in sample_tweets:
result = classifier(tweet)
print(f"Tweet: {tweet}\nScores: {result}\n")
Her tweet için etiket skorlarının (negatif, nötr, pozitif) bir listesini göreceksiniz. Alaycı tweet ("Üç saat beklemeyi çok seviyorum...") kural tabanlı bir modelin tahmin edeceğinden daha yüksek bir negatif skor almalıdır — ama hiçbir model burada kusursuz değildir.
Adım 4: Sonuçlarınızı Değerlendirin
Şimdi klasik ML yolu için bir confusion matrix ısı haritası oluşturun:
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred, labels=["negative", "positive"])
sns.heatmap(cm, annot=True, fmt="d", xticklabels=["negative", "positive"],
yticklabels=["negative", "positive"], cmap="Blues")
plt.xlabel("Tahmin")
plt.ylabel("Gerçek")
plt.title("Confusion Matrix: Sentiment140 Üzerinde Logistic Regression")
plt.show()
Transformer yolunda, küçük ve güncel bir örneği elle etiketleyin (50–100 tweet), modeli çalıştırın ve karşılaştırın. Macro F1, sınıf bazında precision ve recall ile confusion matrix raporlayın. Bunu gerçek bir proje için yapıyorsanız, ayrıca kalibrasyonu kontrol edin ve belirsiz vakalar için bir çekimser kalma eşiği belirleyin.
Adım 5: Sınır Durumlarını Test Edin
Alaycılık, emoji ve argoyu test eden birkaç tweet deneyin:
edge_cases = [
"Oh harika, yine her şeyi bozan bir güncelleme 🙄",
"ngl bu ürün gerçekten harika 🔥🔥🔥",
"Kamera harika ama pil ömrü berbat",
"Siparişim geldi. Şey... fena değil sanırım.",
]
for tweet in edge_cases:
clean = normalize_social_text(tweet)
result = classifier(clean)
print(f"Tweet: {tweet}\nScores: {result}\n")
Modelin nerede doğru yaptığını ve nerede zorlandığını görün. Birden fazla hedef içeren tweet’ler ("kamera harika ama pil berbat") bilinen bir zorluktur — yön bazlı duygu analizi ayrı bir görevdir.
Kod Yazmadan Twitter Duygu Analizi
Herkes Python yazmak istemez ve bu gayet normaldir. Eğer bir pazarlamacı, marka yöneticisi ya da operasyon lideriysen ve koda dokunmadan duygu içgörüsü elde etmek istiyorsan, yol haritan burada.
Dürüst bir not: kodsuz araçlar hız karşılığında özelleştirmeden biraz ödün verir. Hızlı marka takibi için idealdir; araştırma kalitesinde analiz ya da özel model eğitimi için değil.
Kodsuz Seçeneklere Kısa Bakış
| Araç | En İyi Olduğu Alan | Yerleşik Duygu Analizi Var mı? | Fiyat Aralığı |
|---|---|---|---|
| AWS Comprehend | Kurumsal ölçekte metin analizi | Evet | Kullanım başına ücret |
| Brandwatch / Sprinklr | Tam sosyal dinleme paketi | Evet | Kurumsal fiyatlandırma |
| Google Sheets + NLP eklentileri | Hızlı ve hafif analiz | Eklenti üzerinden | Ücretsiz–düşük |
| Thunderbit + tablo | Uyumlu sayfalardan veriyi yapılandırma ve etiketleme | Keşif amaçlı etiketler için AI Field Prompt | Ücretsiz plan mevcut |
Kodsuz İş Akışı: Veriyi Topla, Tablo İçinde Sınıflandır
Tweet verisine sahip olan biri için pratik bir iş akışı (veriler resmî X API, yetkili bir sağlayıcı ya da kendi arşivin aracılığıyla toplanmış olabilir):
- Tweet verini bir tabloya aktar. X API kullandıysan JSON’u CSV’ye aktar ya da otomasyonu izinli olduğun uyumlu sayfalarda veriyi yapılandırıp dışa aktarmak için Thunderbit gibi bir araç kullan.
- Google Sheets’te aç. Tweet metnini bir sütuna yapıştır ya da içe aktar.
- Bir duygu sınıflandırıcısı uygula. Google Sheets NLP eklentisi (güncel seçenekler için eklenti mağazasını kontrol et) veya AWS Comprehend gibi bir hizmet kullan. Bazı eklentiler hücre formülü içinde doğrudan duygu sınıflandırmasına izin verir.
- Gözden geçir ve görselleştir. Google Sheets’in yerleşik grafik özellikleriyle bir duygu dağılımı çubuk grafiği veya zamana göre duygu çizgi grafiği oluştur.
Thunderbit’in AI Field Prompt özelliği, uyumlu sayfalarda çıkarım sırasında istem tabanlı bir duygu etiketi de ekleyebilir — keşif amaçlı izleme için kullanışlıdır. Ancak denetimli ya da yüksek riskli kararlar için bir örneği doğrula ve belgelenmiş bir model kullan.
Ne Zaman Kodsuz, Ne Zaman Python?
| Senaryo | Önerilen Yol |
|---|---|
| Hızlı marka kontrolü, düşük hacim | Kodsuz (tablo + eklenti) |
| Ekip panosu, haftalık raporlama | Kodsuz veya düşük kodlu |
| Büyük ölçekli analiz, özel modeller | Python |
| Akademik araştırma, tekrarlanabilirlik | Python |
| Ölçekte gerçek zamanlı izleme | Python + API + zamanlanmış işlem hattı |
Twitter Duygu Sonuçlarınızı Görselleştirme

Çoğu rehber classification report’ta durur. Ama sonuçları bir ekiple paylaşmak ya da karar almak istiyorsan görsellere ihtiyacın var.
Duygu Dağılımı Çubuk Grafiği
En temel ama evrensel olarak faydalı çıktı:
import matplotlib.pyplot as plt
import seaborn as sns
sentiment_counts = df["label"].value_counts()
sns.barplot(x=sentiment_counts.index, y=sentiment_counts.values, palette="coolwarm")
plt.xlabel("Duygu")
plt.ylabel("Tweet Sayısı")
plt.title("Duygu Dağılımı")
plt.show()
Duygu Sınıfına Göre Word Cloud
Olumlu ve olumsuz tweet’ler için ayrı word cloud’lar, insanların gerçekten ne söylediğini gösterir:
from wordcloud import WordCloud
for sentiment in ["positive", "negative"]:
text = " ".join(df[df["label"] == sentiment]["clean_text"])
wc = WordCloud(width=800, height=400, background_color="white").generate(text)
plt.figure(figsize=(10, 5))
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.title(f"Word Cloud: {sentiment.capitalize()} Tweet’ler")
plt.show()
Zamana Göre Duygu: Başka Kimsenin Göstermediği Grafik
Ham veriyi bir hikâyeye dönüştüren görselleştirme budur. Zaman damgaların varsa, bir etkinlik, lansman ya da kriz sırasında duygunun nasıl değiştiğini izleyebilirsin:
df["date"] = pd.to_datetime(df["date"])
df["day"] = df["date"].dt.date
sentiment_map = {"positive": 1, "neutral": 0, "negative": -1}
df["score"] = df["label"].map(sentiment_map)
daily = df.groupby("day")["score"].mean()
plt.figure(figsize=(12, 5))
daily.plot()
plt.xlabel("Tarih")
plt.ylabel("Ortalama Duygu Skoru")
plt.title("Zamana Göre Duygu")
plt.axhline(0, color="gray", linestyle="--")
plt.show()
Lansman gününde ani bir düşüş mü var? Negatif tweet’lerin içine girip neyin ters gittiğini görmek için işaretin budur.
Confusion Matrix Isı Haritası
Yukarıdaki değerlendirme adımında zaten gösterildi. Temel nokta şu: Modelinin olumluyu olumsuz sanıp sanmadığına ya da tersine bak. Bunlar manuel okunmaya değer tweet’lerdir.
Kodsuzlar İçin: Google Sheets veya Notion’da Grafik Oluşturma
Duygu etiketli verilerini bir tabloya aktardıysan, duygu dağılımını ve trendleri doğrudan Google Sheets, Notion ya da herhangi bir BI aracında görselleştirebilirsin. Python gerekmez.
Twitter Duygu Analizinde Yaygın Hatalar (ve Bunlardan Nasıl Kaçınılır)
Gerçek dünyadaki duygu iş akışlarında aynı hatalar tekrar tekrar ortaya çıkıyor.
Alaycılık ve İroni
En büyük doğruluk düşmanı. "Desteğe üç saat beklemeyi çok seviyorum 😒" ifadesi kural tabanlı bir modele olumlu görünebilir. Transformer modelleri daha iyidir, ama alaycılık yapısal olarak zordur — özellikle gönderinin tek başına bağlamı eksikse (thread, yazarın geçmişi, etkinlik). Kritik kullanım alanlarında model çıktısını insan kontrolüyle birleştir.
Emoji ve Argo Kör Noktaları
Ön işleme emojileri metne çevirmek yerine siliyorsa (seyrek modeller için) veya transformer’larda korumuyorsa, verideki en güçlü duygu sinyallerinden bazılarını çöpe atıyorsun demektir. Argo için de aynı şey geçerlidir — "ngl this slaps" olumlu bir ifadedir ama resmî İngilizceyle eğitilmiş bir model bunu bilemez.
Eski API Eğitimleri ve Bozuk Scraper’lar
Bir eğitim Tweepy ile API v1.1 kullanıyorsa, eskimiştir. snscrape öneriyorsa, 2023’ten beri X aramasında çalışmıyor. Takip ettiğin her eğitimin tarihini ve API sürümünü mutlaka kontrol et.
Tek Bir Veri Kümesine Aşırı Uyum
Sentiment140 eğitim için harikadır, ama 2009’dandır. 2024 EMNLP’de yayımlanan 20 sosyal medya veri kümesi denetimi, tekrarların kaldırılmasının test edilen 19 veri kümesinin 14’ünde F1’i düşürdüğünü ve 19’un 17’sinde model sıralamalarını değiştirdiğini gösterdi. Zaman bazlı, olaydan ayrık ve mümkünse yazardan ayrık bölmeler kullan. Modelinin genellenip genelleşmediğini görmek için onu güncel tweet’lerde test et.
Duygu Skorlarını Mutlak Gerçek Gibi Görmek
Bir model skoru, kalibre edilmiş bir olasılık değildir. Sadece duygu etiketine dayanarak otomatik yanıtlar ya da kamuya açık kararlar tetikleme. Kişileri veya kriz müdahalelerini etkileyen kararlar için her zaman insan incelemesi gerektir.
Gizlilik, Platform Politikası ve Sorumlu Kullanım
Bu bölüm isteğe bağlı değildir.
X’in Developer Policy dokümanı; gizlilik, kullanıcı kontrolü, içerik silme ve platform dışı eşleştirme kısıtlamalarını vurgular. Uygulamada şu kurallara uy:
- Yalnızca gerekli alanları topla.
- Ham kullanıcı adlarını yayınlamak yerine sonuçları toplulaştır.
- Uyum için gönderi ID’lerini ve erişim zaman damgalarını sakla.
- Silme, koruma değişikliği veya geçerli talepler sonrasında saklanan içeriği kaldır ya da güncelle.
- Bireyler hakkında hassas özellikler çıkarmaya çalışma.
- İzinli bir dayanak ve rıza olmadan duygu skorlarını CRM kimlikleriyle eşleştirme.
- kısıtlı kullanım kuralları gereği yasaksa, X İçeriği üzerinde bir foundation model eğitme veya ince ayar yapma.
- Örneklem büyüklüğünü, sorgu terimlerini, zaman aralığını, dil filtrelerini ve dışlamaları belge.
- Sadece duygu skoruna dayanarak asla kamuya açık bir yanıtı otomatikleştirme.
Duygu analizi güçlü bir araçtır, ama gerçek sorumluluklarla birlikte gelir. Buna göre kullan.
Sonuç ve Temel Çıkarımlar
Twitter duygu analizi 2026’da çalışır — ama yalnızca yaklaşımını güncel gerçeklere uyarlarsan. Eski reçete (ücretsiz API, sadece küçük harfli ön işleme, VADER ya da Naive Bayes, değerlendirme yok) artık bozuk. Gerçekten işe yarayanlar şunlar:
- Verini izinli bir yoldan al. X API v2 (kullanım başına ücret), yetkili bir sağlayıcı ya da şeffaf bir veri kümesi kullan. Bozuk scraper’lara ya da tarayıcı geçici çözümlerine güvenme.
- Sadece gösteriş için değil, modeline uygun ön işleme yap. Transformer’lar için emoji, olumsuzlama ve harf biçimini koru. URL’leri ve mention’ları normalleştir. İşlem hattını modelin eğitim verisiyle eşleştir.
- Ucuz bir başlangıç modeli ile tweet’e özgü bir transformer’ı karşılaştır. TF-IDF + logistic regression hâlâ mükemmel bir sağduyu kontrolüdür. CardiffNLP RoBERTa, tweet duygu analizi için güncel güçlü varsayılan seçenektir.
- Dürüstçe değerlendir. Macro F1, sınıf bazlı metrikler ve confusion matrix raporla. Güncel, elle etiketlenmiş bir örnek kullan. Belirsiz vakalar için çekimser kalma eşiği belirle.
- Sadece süs olsun diye değil, karar için görselleştir. Zamana göre duygu grafikleri ve word cloud’lar, bir classification report’un anlatamayacağı bir hikâye verir.
- İnsanı döngüde tut. Hiçbir model alaycılıkta, karışık hedeflerde ya da bağlama bağlı anlamda kusursuz değildir. Yüksek riskli kullanım alanlarında model çıktısını insan incelemesiyle birleştir.
Yeni başlıyorsan, ücretsiz bir veri kümesi al, Google Colab aç ve HuggingFace pipeline’ını çalıştır. On dakikadan kısa sürede çalışan duygu skorlarına sahip olursun. İş akışının başka bölümleri için web verisini koda gerek olmadan toplamak ve yapılandırmak istiyorsan, izinli olduğun uyumlu sayfalarda Thunderbit yardımcı olabilir.
Ve bunu bir portföy ya da iş görüşmesi için yapıyorsan: bir transformer karşılaştırması, gerçek bir ön işleme hattı ve zamana göre duygu grafiği eklemek projenizi bootcamp standartlarından anında ayırır.
Daha Fazla Bilgi
- Thunderbit ile Otomatik Veri Kazımada Ustalaşma
- 2026’nın En İyi 6 Twitter (x.com) Scraper’ı
- 2025’te Python Kullanarak Twitter’dan Tweet’ler Nasıl Kazınır?
- Gelişmiş Veri İçgörüleri İçin Twitter AI Scraping Nasıl Kullanılır?
- Twitter (X) İstatistikleri 2026: Kullanıcılar, Demografi ve Reklamlar
SSS
Twitter duygu analizi doğru mu?
Modele ve nasıl değerlendirdiğine bağlıdır. VADER gibi kural tabanlı araçlar tweet verisinde düşük kalır. CardiffNLP RoBERTa gibi transformer modeller çok daha iyi performans gösterir — ama kesin skorlar veri kümesine, bölünmeye, etiket tanımına ve metriğe göre değişir. Ön işleme kalitesi de önemlidir. Tek bir benchmark sayısına güvenmek yerine, her zaman güncel ve elle etiketlenmiş bir örnek üzerinde değerlendirme yap.
Twitter duygu analizini ücretsiz yapabilir miyim?
Evet. Ücretsiz bir veri kümesi (Kaggle’daki Sentiment140), ücretsiz bir Python ortamı (Google Colab) ve önceden eğitilmiş bir HuggingFace modeli kullan. Canlı veri için X API gönderi okuması başına $0.005 ücret alır, bu yüzden küçük ölçekli toplama makuldür. Thunderbit, uyumlu sayfalarda veriyi yapılandırmak için ücretsiz bir plan sunar.
Twitter duygu analizi için en iyi Python kütüphanesi hangisi?
Hızlı prototipleme için: NLTK üzerinden VADER. Tweet’lerde en iyi doğruluk için: CardiffNLP’nin RoBERTa modeliyle birlikte HuggingFace transformers kütüphanesi. Klasik ML başlangıçları için: TF-IDF ile scikit-learn. Doğru seçim hacmine, doğruluk ihtiyacına ve hesaplama bütçene bağlıdır.
Twitter duygu analizinde alaycılığı nasıl ele alırım?
Transformer modeller, yalnızca tek tek kelimeleri değil bağlamı işledikleri için alaycılığı kural tabanlı ya da klasik ML modellerinden daha iyi işler. Ama hiçbir model alaycılıkta kusursuz değildir — araştırmalar insan etiketleyicilerin bile alaycı niyet konusunda fikir ayrılığı yaşayabildiğini gösteriyor. Kritik kullanım alanlarında model çıktısını insan incelemesiyle birleştir ve değerlendirme için alaycılığa özel veri kümelerini düşün.
Kod yazmadan Twitter duygu analizi yapabilir miyim?
Evet. Verini izinli bir yoldan topla (X API, yetkili sağlayıcı ya da kendi arşivin), Google Sheets’e aktar ve bir Sheets NLP eklentisi ya da AWS Comprehend gibi bir hizmetle kodsuz duygu sınıflandırması uygula. Thunderbit, uyumlu sayfalarda veri yapılandırma sırasında istem tabanlı duygu etiketleri de ekleyebilir. Kodsuz veri iş akışları hakkında daha fazla bilgi için Google Sheets için AI araçları rehberimize göz at.


