Skip to content

enescidem/Twitter-Topic-Modeling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 

Repository files navigation

Twitter Topic Modeling

Medium Links:

English: https://medium.com/@enescidem/twitter-x-topic-modeling-556d5aad5d0a

Türkçe: https://medium.com/@enescidem/twitter-x-konu-modelleme-e713fea6224f


Dünyada En Çok Etkileşime Giren Yerli Twitter Hesaplarının Topic Modeling'i

Topic Modeling, bir metin belgesinde “topics(konular)” adı verilen kelime gruplarını bulmak için kullanılan denetimsiz(unsupervised) bir yaklaşımdır. Twitter(X)'dan alınmış olan farklı hesaplardan (BabalaTv, ProfDemirtas, haluklevent, pusholder, Darkwebhaber, yirmiucderece, solcugazete, OguzhanUgur, vekilince, GalatasaraySK, aykiricomtr ve RTErdogan) çekilen tweetler analiz edilip topiclerinin belirlenmesi.

Kullanılan Kütüphaneler

-Pandas
-NumPy
-Ntscrapper
-Matplotlibt
-Scikit-learn

VERİ SETİ'NİN OLUŞTURULMASI

Dataseti Twitter(X)'dan çekilen ve istenilen hesaplardan atılmış tweetlerden oluşacaktır. Seçilen hesaplar BabalaTv, ProfDemirtas, haluklevent, pusholder, Darkwebhaber, yirmiucderece, solcugazete, OguzhanUgur, vekilince, GalatasaraySK, aykiricomtr ve RTErdogan ' dır. Bu hesaplardaki veriler ile model eğitileceği için bu verilerin düzgün veriler olması gerekir. Bu yüzden verilerin çekileceği twitter hesapları düzgün bir şekilde seçilmiştir.


Bu twitter hesaplarının seçilme sebebi dünyada en çok etkileşime giren yerli Twitter(X) hesapları olmasıdır:

image image

https://dogruveri.com/wp-content/uploads/2023/03/Dunyada-en-cok-etkilesime-giren-yerli-Twitter-hesaplari-.png


Pythonda twitter'dan istenilen tweetleri çekebilmek için scraping işlemi yapan ntscraper kütüphanesi kullanılıyor.
https://github.com/zedeus/nitter?tab=readme-ov-file

Bu kütüphane verilen kullanıcı adına veya hastage göre ve istenilen tweet sayısına göre istenilen tweetleri döndürüyor.

Data seti'ni oluştururken yapılan sorgular 12 adet hesaptan 1000'er adet tweet çekilerek oluşturulmuştur. Her hesaptan 1000'er adet tweet çekemediği için 900, 800, 750, 600 olarak değişkenlik göstermektedir. Toplam 12 hesaptan 8810 adet tweet çekilmiştir.



12 hesap için 8810 adet verinin çekilmesi işlemi ortalama 35-40 dakika sürüyor.



Veri seti'ndeki kolonlarımız aşağıdaki gibidir:
-Tweet'in linki
-Tweet'in kendisi.
-Tweet'in like sayısı.
-Tweet'in yorum sayısı.

Oluşturulmuş Olan Veri seti'nin Görseli:

image

Tweetlerin Temizlenmesi ve Lemmatization İşlemi

Veriseti oluşturulduktan sonra modelin daha iyi çalışması ve başarı oranının daha yüksek olması için tweetlerin temizlenmesi gerekmektedir. Tweetlerin içerisinde emojiler, noktalama işaretleri, stopwordsler, linkler gibi istenmeyen ve modelin başarısını düşürecek veriler tweetlerin içerisinden temizleniyor.

Tweetlerin Temizlenmesi Sırasında Yapılan İşlemler

image image



Oluşturulan Temiz Tweet Görseli

image

Modelin Oluşturulması ve Tweetlerin Kategorilendirilmesi

Model Tanımı

Modelimiz metin verileri üzerinde iki farklı konu çıkarma yöntemi olan LDA ve NMF'nin çıkarılması ve her iki yöntemin sonuçlarını görselleştirmek için grafikler oluşturulmasından ibaretdir.

Latent Dirichlet Allocation (LDA):

LDA, belgelerin bir koleksiyonu içinde gizli olan temel konuları (topic) çıkarmak için kullanılan bir olasılıksal bir modeldir. Temel bir varsayım, belgelerin bir veya birden fazla konuya ait olabileceği ve her bir konunun bir olasılık dağılımı ile temsil edilebileceğidir. LDA, belge-konu ve kelime-konu olasılık dağılımlarını keşfetmeye çalışarak belgeleri bu gizli konulara ayırır. Bu model, genellikle metin belgeleri üzerinde konu çıkarma, belge sınıflandırma ve benzeri görevlerde kullanılır.

Non-negative Matrix Factorization (NMF):

NMF, bir matrisin çarpanlarını (faktörlerini) bulmaya çalışan bir matris ayrıştırma tekniğidir. Belirli bir veri matrisini, iki veya daha fazla alt matrise çarpanları çarpanları (faktörleri) olarak ayrıştırmaya odaklanır. Bu faktörler genellikle pozitif değerlere sahiptir. Metin madenciliği bağlamında, NMF belgeleri ve kelimeleri içeren bir matrisi, temel konuların (topic) lineer kombinasyonları olarak ifade etmeye çalışır. NMF'nin kullanıldığı yerler arasında konu çıkarma, görüntü işleme ve özellik seçimi gibi alanlar bulunmaktadır.

Modelin Oluşturulmaya Başlanması

Veri Setinin Hazırlanması

Clean tweetlerin bulunduğu clean_tweets.csv dosyası dataframeye aktarılmıştır. Daha sonra veri seti içinde NaN değeri olan satırlar varsa bu satırlar silinir. NaN değerleri olursa modelimiz hata vermektedir.

Metin Verilerini Sayısal Bir Formata Dönüştürme İşlemi

TfidfVectorizer fonksiyonu bir metin madenciliği aracıdır ve metin verilerini TF-IDF (Term Frequency-Inverse Document Frequency) vektörlerine dönüştürmek için kullanılır. max_df ve min_df parametreleri, vektörleştirme işlemi sırasında dikkate alınacak terimlerin belirlenmesine yardımcı olan önemli parametrelerdir: max_df: Belirtilen bir eşik değerinden yüksek olan terimler, belgelerin yüzde kaçında görülüyorsa, dikkate alınmaz. Bu, genellikle sık kullanılan kelimelerin (stop words) veya çok spesifik kelimelerin filtrelenmesinde kullanılır.

min_df: Belirtilen bir eşik değerinden düşük olan terimler, belgelerin yüzde kaçında görülüyorsa, dikkate alınmaz.
Bu, nadir görülen terimleri filtrelemek için kullanılır.

vectorizer.fit_transform(df["clean"]) ile, clean adlı sütundaki metin verileri üzerinde TF-IDF vektörleştirmesi yapılır. Bu işlem, her bir belgeyi vektörlerle temsil eden bir matris oluşturur.

image

Latent Dirichlet Allocation (LDA) modeli oluşturma

LatentDirichletAllocation bir konu modelleme tekniğidir ve belgelerin gizli konularını çıkarmak için kullanılır.

n_components=8 parametresi, modelin kaç adet konu çıkaracağını belirtir. Bu örnekte, 8 adet konu belirlenmiştir.

random_state=42 parametresi, modelin tekrarlanabilirliğini sağlamak için kullanılır. Aynı random_state değeri kullanıldığında, modelin başlangıç durumu her seferinde aynı olacaktır.

Bu yapılandırma ile LatentDirichletAllocation sınıfından bir LDA modeli oluşturulur. Bu model, veri setindeki belgelerin gizli konularını keşfetmeye çalışacaktır.

Daha sonra, bu model lda.fit(X) ile eğitilir. X önceki aşamada oluşturulan TF-IDF vektör matrisini temsil eder. Model, bu vektör matrisi üzerinde çalışarak belgelerin gizli konularını öğrenir.

image



Modelleri Görselleştirme

Modeli görselleştirmek için plot_top_words fonksiyonunu yazıyoruz.

image

LDA Modelinin Görselleştirilmiş Hali

image

NMF Modelinin Görselleştirilmiş Hali

image

Modellerin Tweetlere Göre Önerdiği Topicler

LDA Modelinin Tweetlere Göre Önerdiği Topicler

Test 1:

image

Test 2:

image

Test 3:

image

Test 4:

image

Test 5:

image

NMF Modelinin Tweetlere Göre Önerdiği Topicler

Test 1:

image

Test 2:

image

Test 3:

image

Test 4:

image

Test 5:

image

Sonuç

Sonuca bakıldığında yapılan projede seçilen modelin ne kadar önemli olduğu görülmektedir. Veri setindeki verilerin miktarı bu model için yeterli olmayabilir bu yüzden daha çok veri ile proje daha iyi hale getirilebilir. Model seçiminin önemi kadar verisetinin güzel bir şekilde hazırlanmış olması, verisetindeki noktalama işaretleri, semboller ve modele olumsuz etki edecek stopwordslerden arındırılmış olmasıdır. Bu projede başarı oranı çok yüksek değildir bunun en önemli sebebi verilerin yeterli sayıda olamamsıdır. Seçilmiş olan twitter hesaplarının türkiyede en çok etkileşim alan hesaplardan seçilmiş olması bu model için uygundur. Ancak bütün hesaplar aynı tweetleri paylaşabildiği için bu modelde farklı kategorilerin bulunduğu hesaplar seçilebilir. Örneğin bir spor paylaşımı yapan twitter hesabı, asgari ücret açıklandığında önemli bir haber olduğu varsayılarak aynı tweeti paylaşabilmektedir. Verisetinde 8500 üzerinde tweet olduğu için bu tweetlerin tek tek kontrol edilmesi mümkün değildir.

About

Topic modeling is an unsupervised method to identify topics in text. This project analyzes tweets from prominent Turkish accounts to uncover underlying themes in their shared content.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors