Open Source

Elasticsearch İle Twitter Analizi Bölüm-3 Duygusal Analiz

Herkese merhaba ilk iki makalede twitter üzerinde akan tweet’ler üzerinde analiz yapmak için analiz platformumuzu kurmuş sonraki makalede ise tweet analizini yapmıştık.

Bu makalenin konusu ise duygusal analiz. Yapmak istediğimiz şey atılan tweet’leri analiz edip “olumlu“, “olumsuz” veya “normal” olarak sınıflamak ve görselleştirmek.

Aşağıda topolojimizi görmekteyiz. Bu sefer numaralandırılmış yolu takip edeceğiz.

Sırayla incelersek:

  • Python kodu kullanarak twitter API ile anlık tweet’leri alacağız.
  • Python kodu ile sınıflayacağız.
  • Elasticsearch veri tabanında depolayacağız.
  • Kibana ile görselleştireceğiz.

Başlamadan önce aşağıdaki Python modüllerinin ELK yüklü sistem üzerine yüklenmiş olması gerekiyor.

  • tweepy
  • dotenv
  • geocoder
  • textblob
  • elasticsearch

Sonrasında “config.py” adında bir dosya oluşturuyor ve aşağıdaki satırları giriyorum.

consumer_key = "" - #API bilgilerimi yazıyorum
consumer_secret = "" - #API bilgilerimi yazıyorum
access_token = ""  - #API bilgilerimi yazıyorum
access_token_secret = "" - #API bilgilerimi yazıyorum

İkinici olarka ayı dizine “twitter.py” adında bir dosya oluşturuyorum.

Dosyanın içerisine aşağıdaki kodu kopyalıyorum. Ben bu örnekte ünlü ingiliz müzük grubu “Beatles” geçen tweet’ler üzerinde duygusal analiz yaptım.

import json
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
from textblob import TextBlob
from elasticsearch import Elasticsearch


from config import *


es = Elasticsearch()


class TweetStreamListener(StreamListener):


    def on_data(self, data):


        dict_data = json.loads(data)


        tweet = TextBlob(dict_data["text"])


        print (tweet.sentiment.polarity)


        if tweet.sentiment.polarity < 0:
            sentiment = "olumsuz"
        elif tweet.sentiment.polarity == 0:
            sentiment = "normal"
        else:
            sentiment = "olumlu"


        print (sentiment)


        es.index(index="twitter2",
                 doc_type="test-type",
                 body={"author": dict_data["user"]["screen_name"],
                       "date": dict_data["created_at"],
		       "location": dict_data["user"]["location"],
		       "followers": dict_data["user"]["followers_count"],
                       "friends": dict_data["user"]["friends_count"],
                       "time_zone": dict_data["user"]["time_zone"],
                       "lang": dict_data["user"]["lang"],
                       "message": dict_data["text"],
                       "polarity": tweet.sentiment.polarity,
                       "subjectivity": tweet.sentiment.subjectivity,
                       "sentiment": sentiment})
        return True


    def on_error(self, status):
        print (status)

if __name__ == '__main__':


    listener = TweetStreamListener()


    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)


    stream = Stream(auth, listener)


    stream.filter(track=['beatles']) # Ben bu örnekte ünlü ingiliz müzik grubu The Beatles kelimesi üzerinde analiz yaptım.

Tüm bu adımlardan sonra sonra oluşturduğumuz kodu çalıştırmaya geldi. Aşağıdaki komutu vererek python scriptimizi çalıştırıyoruz.

 python3 twitter.py

Python script’in çalışmaya başlaması ile aşağıda görüldüğü gibi tweet’ler “olumlu“, “olumsuz” ve “normal” olarak sınıflanmaya başlandı.

Yeniden kibana üzerinde indexleme ve görselleştirme işlemleri sonunda aşağıda görüldüğü gibi duygusal analizimiz başarı ile yapılmış durumda.

Evet bu makale ile “Elasticsearch İle Twitter Analizi” makale serimizin sonuna geldik, faydalı olmasını dilerim.

Keyifli okumalar.

2 Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

Reklam Engelleyici Algılandı

ÇözümPark Bilişim Portalı gönüllü bir organizasyon olup tek gelir kaynağı reklamlardır. Bu nedenle siteyi gezerken lütfen reklam engelleme eklentinizi kapatın veya Çözümpark web sitesi için izin tanımı yapın. Anlayışınız için teşekkürler.