Python ile Twitter Üzerinden Kelime Bulutu ve Sentiment Analizi Çalışması

Günümüzün en popüler kavramlarından birisi, kelime bulutu ve onun üzerinden yapılan çalışmalardır. İnsanlar kelime bulutu üzerine denemeler yaparken nltk kütüphanesini kullanırlar. Burada amaç doğal dil işleme evrelerinden öncesinde yapılan işlemlerdir. Python programlama dili, her geçen gün daha geniş kitlelere ulaştığı için nltk ile yapılan projelerin çeşitliliği artmaktadır. Başlangıç seviyesinde olan insanlar, genellikle Twitter üzerinde herhangi bir konu üzerine atılan tweetleri analiz eder ve onun üzerinden görselleştirmeler, analizler ve çıkarımlar yaparlar. Kelime bulutu oluşturacak olurken kilit noktalardan birisi de tekrar sayılarıdır. Kelime ne kadar tekrar ederse, kelime bulutu içerisinde kendisini belirgin etme durumu daha ön plana çıkar. Yapacağınız araştırmaları, aşağıdaki görsel ile anlatmaya çalıştım. Burada q ile belirtilen kısım, aratacağınız kelime ya da cümlenin olduğu kısımdır. Bunları yapabilmek için öncelikle Twitter Developers hesabınızın olması gerekmektedir. Ek olarak buradan çekeceğimiz için bağlantıyı buradan sağlıyor olacaksınız. Bağlantı aracılığıyla tweetleri kendi local çalışma yerinize çekerek üzerinde işlemler yapabilirsiniz.
 

Üst taraftaki fotoğrafta da görüldüğü gibi işin en kritik kısmı, def yapısını iyi bir şekilde kurmak ve hangi değişkenler üzerinde etiket yapacağınıza karar vermektir. Token ve key değerlerini bir yere kaydedip oradan çekebilirsiniz. Burada ben gizlilikten ötürü key değerlerini göstermedim fakat Twitter Developer hesabınız olunca, bu değerlere kendiniz erişebilir ve gerekli atamaları yapabilirsiniz. Twitter üzerinde analiz yaparken spesifik değerlere erişmek isterseniz, özel aramalar yapabilirsiniz. Kaynaklar kısmında gerekli dokümantasyonu bırakacağım oradan isteğinize göre inceleyip kendi kodunuza ve analizinize entegre edebilirsiniz. Ekstra bilgi vermem gerekirse, kullanacağız nltk içerisinden birkaç metot bulunmaktadır. Benim bireysel olarak kullandıklarımdan birisi ‘stopwords’ bir diğeri ise ‘wordnet’tir. İngilizce seçeneğini üzerine çalışacağınız dile göre dilediğiniz gibi değiştirebilirsiniz. Kelime sağlamlığı ve etkinliği bakımından geniş kapsamlı olan İngilizce dilidir. Kendi diliniz üzerinde çalışırken tam anlamıyla kaliteli bir sözcük topluluğu varsa, yorumlar sekmesinden belirtebilirsiniz. Böylece etkileşimi yüksek tutabilir ve alınacak verim oranını arttırabiliriz. Aşağıda olan görselde burada anlattığım kısmı gözlemleyebilirsiniz.

 
Kelime Bulutu çalışması için ben ‘samsung’ kelimesini seçtim. Lang kısmında dil seçeneğinin kısaltmasını girerek seçtiğiniz hashtag verisini kendi çalışma alanınıza çekebilirsiniz. İlk başta gerekli kütüphaneleri ekliyoruz hemen sonrasında çalışacağımız arka plan rengini kişisel isteğinize göre değiştirebiliriz. Ek olarak plt.axis değerini ‘on’ hale getirirseniz tekrar eden kelimelerin frekansını gözlemleyebilirsiniz. Ben bunu kendim ön plana çıkarma metodu ile yaptığım için eksenlerini ekstra olarak göstermeyi gereksiz buldum. Burada yaptığım işlem temel bir wordcloud yapısı kurmak ve sizlerin giriş seviyesinde bile olsa bir şeyler kazandırmak. Doğal dil işleme için kariyer planlamanız varsa, bunu bir başlangıç olarak görüp gerekli notları takip ederek kendini geliştirmeye devam edebilirsiniz. Kelime bulutu yapısı bu işlerin en alt sekmesidir. Ben de bir junior olarak sizlere de öğretirken kendim de bu alanda çalışmaları sürdürüyorum. Doğal dil işleme kariyeri, geniş çaplı kaynak tarama ve github gibi platformlarda başkalarının neler yaptığını, nasıl kod yazdıklarını ve ne gibi projelerin yapıldığına dair her an takipte kalmanız gereken bir alandır.

 
Son kısımda da bahsedeceğimi söylediğim giriş seviyesi bir sentiment analizini göstereceğim. Burada anlatacaklarıma başlamadan önce, Python’da kod yazarken def kalıplarını iyi kurmanız ve kodunuzu burada içeriye iyice yedirmeniz gerekmektedir. Fonksiyonel işlemlerinin hızlandırılması ve ileri zamanlarda çalışırken sizden sonrasında yerinize gelecek kişilere anlaşılır, ölçeklenebilir bir kod yazmanız herkes açısından fayda sağlayacaktır. Bunu da def yapıları ile temiz kod yazarak sizin yerinize gelen kişiye kolay bir şekilde orada yaptıklarınızı aktarabilirsiniz. Sentiment analizine dönecek olursam, burada halihazırda textblob kütüphanesi aracılığıyla bu skorlama işini yapabiliriz. Twitter üzerinden atılan tweetlerin içeriği ve bu içeriğin olumlu – olumsuz kelimeler barındırılması sonucunda TextBlob bunu sınıflandırır. Bu sınıflandırma sonrası, sizlere üzerinde analiz yapılacak hazır hale gelmiş bir kolon verir. Bunu isteğinize göre analiz edebilir, farklı çalışmalar deneyebilirsiniz. Örnek olarak grafik haline dökebilir, tekrar eden kelimelerin sayısını gözlemleyebilir ve bu değerler sayesinde farklılıkları ele alarak, arka planını kendiniz düzenlediğiniz bir resme entegre edebilirsiniz.
 

References:
-https://globalaihub.com/sentiment-analysis-with-naive-bayes/
-https://globalaihub.com/duygu-analizi-nedir/
-https://www.veribilimiokulu.com/
-https://amueller.github.io/word_cloud/
-https://www.datacamp.com/community/tutorials/wordcloud-python
-https://monkeylearn.com/sentiment-analysis/