hidup itu penuh warna

Selasa, 20 Maret 2018

Streaming Data dan Sentiment Analysis Pada Twitter Menggunakan Python

Sentiment analysis adalah salah satu cabang text mining yang bertujuan menganalisas suatu sentimen atau opini. Biasanya sentiment analysis disebut juga opinion mining. banyak orang yang menggunakan teknik ini untuk menganalisa fenomena dari platform social media yang mempunyai potensi besar untuk mengetahui opini yang berkembang di masyarakat.

Twitter merupakan salah satu social media yang banyak digunakan orang. untuk melakukan analisa terhadap opini di twitter secara manual dengan jumlah data yang besar tidaklah mungkin. Dengan sentiment analysis hal ini dapat tertangani.

pada Sentiment Analysis biasanya hasil yang didapatkan adalah apakah tweet atau kalimat ini positif, negatif atau netral. Python merupakan salah satu bahasa pemrograman yang banyak digunakan dalam implementasi sentiment analysis.

sebelum kita melakukan sentiment analysis, langkah-langkah yang harus dilakukan adalah:

1. Siapkan aplikasi berupa ( Python dan Pycharm )
2. Lakukan pendaftaran apps yang akan analisis pada https://apps.twitter.com , untuk mendapatkan  
    key untuk mengakses twiiter, jangan lupa harus memiliki akun twiiter dan blog / website
3. Lakukan Collecting data dan Export data menjadi .txt
4. Siapkan file positife.txt dan negative.txt yang berisi keyword untuk melakukan sentimen analysis
5. Lakukan Sentiment Analysis terhadap data yang berhasil kita kumpulkan dan buat laporan dalam bentuk csv.

langkah - langkah tersebut akan dilakukan seperti dibawah ini :
 1. Siapkan aplikasi berupa ( Python dan Pycharm )

I. Python 
 python : download disini

2. Pycharm 












Pycharm : download disini

lalu ? install dan tunggu saja :D

2. Lakukan pendaftaran apps

Pada langkah ini, untuk mendapatkan key yang akan digunakan untuk ouath ketika melakukan penarikan data , perlu dilakukan pendaftaran pada https://apps.twitter.com


lengkapi data hingga apps berhasil dibuat :


setelah itu ambil key yang dibutuhkan :


simpen  4 key tadi:
consumer_key = ''consumer_secret = ''access_token = ''access_secret = ''

4 key ini adalah kerahasian data, jadi jangan di share umum ya  :D

 3. Lakukan Collecting data dan Export as .txt

Buat project terlebih dahulu lalu, default setting project dilakukan import library

pertama lakukan import tweepy pada project interpreter:

setting-> projet interpreter + modul -> search tweepy -> package install


 setelah itu buat file , misalnya filetweeter.py :

dengan syntax sebagai berikut : 

#Import the necessary methods from tweepy libraryfrom tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream

#Variables that contains the user credentials to access Twitter API
 consumer_key = 'Your key' consumer_secret = 'Your key' access_token = 'Your key' access_token_secret = ' Your key'


#This is a basic listener that just prints received tweets to stdout.class StdOutListener(StreamListener):

    def on_status(self, status):
        try:
            with open('blackcampaign2.txt', 'a') as record:
                record.write(str(status.text) + '\n')
                return True        except BaseException as e:
            print("Error on_data: %s" % str(e))
        print(status.text)
        return True
    # def on_direct_message(self, data):    #    #     print(data.text)    #     return True    # def on_data(self, raw_data):    #     # if status.retweeted_status:    #     #     return    #     print(raw_data)    #     return True
    def on_error(self, status_code):
        if status_code == 420:
            return False

if __name__ == '__main__':

    #This handles Twitter authetification and the connection to Twitter Streaming API    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    stream = Stream(auth, l)

    #This line filter Twitter Streams to capture data by the keywords: 'python',
 'javascript', 'ruby'    stream.filter(track=['#jokowi', 'jokowi', 'capres', '#prabowo', 'prabowo','#ahy', 'agus yudiyono', '#mahfud_md', 'mahfud md',])

 Penjelasan :

    def on_status(self, status):
        try:
            with open('blackcampaign.txt', 'a') as record:
                record.write(str(status.text) + '\n')
                return True        except BaseException as e:
            print("Error on_data: %s" % str(e))
        print(status.text)
        return True

 adalah syntax untuk melakukan penarikan strem collecting data.

-  on_status berarti data yang diambil hanya status ( text nya saja )

- with open('nama csv yang dibuat', 'a') as record
  ket : a = append membuat baru

- record.write(......)
  ket:  aturan dalam penulisan data yang di tarik.

 - stream.filter(track=["keyword pencarian tweets"])
 ket: filter tweet yang ingin kita tarik

kesimpulannya pada stream collecting data ,  dilakukan penarikan data hanya status ( text nya saja ) , dan di export to .txt

berikut contoh hasilnya : download disini

 4. Siapkan file positife.txt dan negative.txt

file ini berfungsi untuk bank kata dalam pencarian kata-kata yang akan dilakukan sentiment analysis

positif : download disini
negatif: download disini

 5. Lakukan Sentiment Analysis

sentiment analysis pertweet yang mengandung kata positif dan negatif , dengan source code sebagai berikut:

from __future__ import division
import csv
from string import punctuation
positive_word = []
negative_word = []
positive_counts = []
negative_counts = []
clean_tweets = []
header = [("tweets","positif","negatif","posiftif %","negative %")]
# header = [("tweets","positif","negatif","clean tweets")]
tweets = open("source/blackcampaign.txt").read()
tweets_list = tweets.split('\n')

pos_sent = open("source/positive.txt").read()
positive_words = pos_sent.split('\n')

neg_sent = open("source/negative.txt").read()
negative_words = neg_sent.split('\n')

for tweet in tweets_list:
    text_positif=[]
    text_negatif=[]
    positive_counter = 0    negative_counter = 0    tweet_procces_2 = tweet.replace('!', '').replace('.', '')
    tweet_processed = tweet_procces_2.lower()

    for p in list(punctuation):
        tweet_processed = tweet_processed.replace(p, '')

    clean_tweets.append(tweet_processed)

    words = tweet_processed.split(' ')
    word_count = len(words)
    for word in words:
        if word in positive_words:
            text_positif.append(word)
            positive_counter = positive_counter+1        elif word in negative_words:
            text_negatif.append(word)
            negative_counter = negative_counter+1
    positive_counts.append((positive_counter / word_count)*100)
    negative_counts.append((negative_counter / word_count)*100)
    positive_word.append(text_positif)
    negative_word.append(text_negatif)

# output = zip(tweets_list, positive_counts, negative_counts, clean_tweets)output = zip(clean_tweets, positive_word, negative_word, positive_counts, negative_counts)
title = header
writer = csv.writer(open('source/Hasil_sentiment_analysis.csv', 'wb'))
writer.writerows(title)
writer.writerows(output)
 
 disini akan ada pengecekan perkata apakah termasuk positife atau negatif yang terus berulang hingga semua tweet berhasil dianalisis, berikut hasilnya :

>>hasil sentiment analysi <<





Post ini merupakan tugas kelompok, dengan beranggotakan:
- Alza Ichsan Kurniawan 50414925

- Annisa larasati arifianti 51414380
- Deni Mardiana 52414694
- Hasan El Jabir 54414837

Berikut video untuk lebih mudah memahami sentiment analysis:



Link Refrence :
http://codingasik.com/sentiment-analysis-dengan-python-part-3/
https://marcobonzanini.com/2015/03/02/mining-twitter-data-with-python-part-1/
google.com



, , , ,

4 komentar:

  1. Kalau boleh tau saya minta file blackcampaign.txt dan positif.txt - negative.txt mas. Di zippyshare sudah tak ada

    BalasHapus
    Balasan
    1. Hallo , langsung saja kunjungi github saya ya maaf jarang aktif di blog lagi 🙏.

      https://github.com/alzaichsank/Word2Vec

      Hapus
  2. Thank you so much too Mr.Charles, i am grateful that this information is useful.

    BalasHapus
  3. Thank you, i'm grateful if this information help you.

    BalasHapus

Pengunjung

Alza Ichsan Kurniawan. Diberdayakan oleh Blogger.