Kelompok :
Adi Nugraha Yunanda 50414234
Muhammad Ilham Afemi 57414327
Muhammad Ulil Amri 57414576
Rio Octaviano 59414462
Hal yang dibutuhkan
Akun Twitter
Python versi 3.6.x
Kode
import twitter # menangani API Twitter
import pandas as pd # menangani Data
import numpy as np # menangani Komputasi angka
# For plotting and visualization:
from IPython.display import display
from textblob import TextBlob
import re
# keyword yang mau dicari
QUERY = "autism"
# banyak tweet yang ingin didapat
COUNT = 30
#consumers
C_KEY = 'jOpIWjAivmBusTjtUffWXVk0A'
C_SEC = 'JFdRhvIJICqDUed0h2y2RIpL5wQHex6QmOixmXCzPeZQjw5dQj'
#access token
AT_KEY = '974493124125802496-byVzjdQH1eirceDZ7cl560jw8Bc7qYG'
AT_SEC = 'm3S02Ek7ucAd4R7ncEoyYaNEMJnZvvUZ6dnmT9ORehY3V
api = twitter.Api(consumer_key=C_KEY, consumer_secret=C_SEC,
access_token_key=AT_KEY, access_token_secret=AT_SEC)
tweets = api.GetSearch(
raw_query="q=%s&count=%i&result_type=recent&lang=en" % (QUERY,COUNT))
# membentuk data frame dengan kolom Tweets
data = pd.DataFrame(data=[tweet.text for tweet in tweets], columns=['Tweets'])
# tampilkan deret data pada dataframe
display(data.head(COUNT))
# tambahkan data lainnya yang mendukung
data['len'] = np.array([len(tweet.text) for tweet in tweets])
data['ID'] = np.array([tweet.id for tweet in tweets])
data['Date'] = np.array([tweet.created_at for tweet in tweets])
data['Source'] = np.array([tweet.source for tweet in tweets])
data['Likes'] = np.array([tweet.favorite_count for tweet in tweets])
data['RTs'] = np.array([tweet.retweet_count for tweet in tweets])
# hitung rata-rata banyak data
mean = np.mean(data['len'])
def clean_tweet(tweet):
'''
fungsi ini bertugas untuk membersihkan tweet dari
selain abjad dan angka dengan memanfaatkan format
regex
'''
return ' '.join(
re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", tweet).split())
def analize_sentiment(tweet):
'''
fungsi ini bertugas untuk memisahkan polaritas tweet
dengan menggunakan textblob
'''
analysis = TextBlob(clean_tweet(tweet))
if analysis.sentiment.polarity > 0:
return 1
elif analysis.sentiment.polarity == 0:
return 0
else:
return -1
# buat kolom yang berisi hasil analisis sentimen
data['SA'] = np.array([ analize_sentiment(tweet) for tweet in data['Tweets'] ])
# buat deret pengelompokkan tweets
pos_tweets = [ tweet for index, tweet in enumerate(data['Tweets']) if data['SA'][index] > 0]
net_tweets = [ tweet for index, tweet in enumerate(data['Tweets']) if data['SA'][index] == 0]
neg_tweets = [ tweet for index, tweet in enumerate(data['Tweets']) if data['SA'][index] < 0]
# Cetak persentase
print(("\n\nAnalisis sentimen Bahasa Inggris terhadap kata %s sebanyak %i tweet\n"+ \
" - Positif : %.2f\n"+ \
" - Netral : %.2f\n"+ \
" - Negatif : %.2f\n") % (\
QUERY, COUNT, \
(len(pos_tweets)*100/len(data['Tweets'])),\
(len(net_tweets)*100/len(data['Tweets'])),\
(len(neg_tweets)*100/len(data['Tweets'])) \
)\
)
Untuk mendapatkan Consumers dan Access Token, buat Twitter Apps dengan mengunjungi situs https://apps.twitter.com/. Setelah Apps berhasil dibuat, pindah ke tab Keys and Access Token dan akan terlihat kode tersebut.
Hasil