Kelompok:
-Andika Demas Riyandi 51414067
-Denny Aditya P 52414708
-M. Andika Nugraha 57414084
-Rendytio Arifian Puspito 59414055
Sentiment Analyst pada graph facebook menggunakan Python3, NLTK Analisa
sentiment Vader dan visualisasi menggunakan matplotlib.
sentiment Vader dan visualisasi menggunakan matplotlib.
Opinion Mining / Sentiment Analysis (sebagian besar researcher menganggap dua istilah ini
sama/interchangeable) merupakan sebuah cabang penelitian di domain Text Mining yang
mulai booming pada awal tahun 2002-an. Riset-nya mulai marak semenjak paper
dari B.Pang dan L.Lee [1] keluar. Secara umum, Sentiment analysis ini dibagi menjadi 2 kategori besar :
sama/interchangeable) merupakan sebuah cabang penelitian di domain Text Mining yang
mulai booming pada awal tahun 2002-an. Riset-nya mulai marak semenjak paper
dari B.Pang dan L.Lee [1] keluar. Secara umum, Sentiment analysis ini dibagi menjadi 2 kategori besar :
- Coarse-grained sentiment analysis
- Fined-grained sentiment analysis
Coarse-grained sentiment analysis - kita mencoba melakukan proses analysis pada level Dokumen.
Singkatnya adalah kita mencoba mengklasifikasikan orientasi sebuah dokumen secara keseluruhan.
Orientasi ini ada 3 jenih : Positif, Netral, Negatif. Akan tetapi, ada juga yang menjadikan nilai orientasi ini bersifat kontinu / tidak diskrit.
Singkatnya adalah kita mencoba mengklasifikasikan orientasi sebuah dokumen secara keseluruhan.
Orientasi ini ada 3 jenih : Positif, Netral, Negatif. Akan tetapi, ada juga yang menjadikan nilai orientasi ini bersifat kontinu / tidak diskrit.
Fined-grained sentiment analysis - kategori kedua ini yang sedang Naik Daun sekarang. Maksudnya adalah para researcher sebagian
besar fokus pada jenis ini. Obyek yang ingin diklasifikasi bukan berada pada level dokumen melainkan sebuah kalimat pada
suatu dokumen.
besar fokus pada jenis ini. Obyek yang ingin diklasifikasi bukan berada pada level dokumen melainkan sebuah kalimat pada
suatu dokumen.
contoh :
- Saya tidak suka programming. (negatif)
- Hotel yang baru saja dikunjungi sangat indah sekali. (positif)
Graph facebook merupakan API yang disediakan oleh Facebook. Untuk dapat menggunakan
Graph facebook diperlukan akun facebook guna mendapatkan Token API.
Graph facebook diperlukan akun facebook guna mendapatkan Token API.
Untuk mendapatkan token dapat mengunjungi https://developers.facebook.com/tools-and-support/
lalu pilih “Penjelajahan API Graf” kemudian pilih dapatkan token dan centang service yang diperlukan
lalu pilih “Penjelajahan API Graf” kemudian pilih dapatkan token dan centang service yang diperlukan
Kemudian klik “Dapatkan token” dan lakukan Authenticate maka anda akan segera mendapatkan Token API
Gambar di atas merupakan Akses Token yang nantinya dapat digunakan pada code yang akan dibuat.
Disini kami akan melakukan Analisa pada halaman Facebook Eddie Griffin. Berikut adalah post yang akan
kami Analisa.
kami Analisa.
https://www.facebook.com/EddieGriffinOfficial/posts/10155290098795967
Sebelumnya kita akan mengambil semua komentar pada post tersebut, maka kami akan mencobanya
terlebih dahulu pada Graph facebook. Dengan versi 2.12. dengan code graph sebagai berikut.
terlebih dahulu pada Graph facebook. Dengan versi 2.12. dengan code graph sebagai berikut.
Method GET -> /v2.12/ EddieGriffinOfficial untuk mengetahui ID dari halaman tersebut.
Gambar di atas merupakan Id dari halaman yang kita inginkan sedangkan Id post yang akan kita Analisa
adalah 10155290098795967. Maka untuk mendapatkan semua komentar dari post tersebut kita dapat
menggunakan
adalah 10155290098795967. Maka untuk mendapatkan semua komentar dari post tersebut kita dapat
menggunakan
GET ->/v2.12/73107530966_10155290098795967/comments
Maka akan di dapatkan output sebagai berikut
Pada gambar di atas terdapat 407 komentar yang akan kami Analisa. Setelah itu kita akan menggunakan
Bahasa Python untuk mengambil semua data tersebut yang selanjutnya akan dibuatkan
file dalam bentuk .txt untuk di Analisa.
Bahasa Python untuk mengambil semua data tersebut yang selanjutnya akan dibuatkan
file dalam bentuk .txt untuk di Analisa.
Berikut adalah code untuk melakukan pengambilan data atau disebut dengan data Scrapping.
import requests
import signal
import sys
graph_api_version = 'v2.12'
access_token = 'ISI DENGAN AKSES TOKEN'
user_id = '73107530966'
post_id = '10155290098795967'
url = 'https://graph.facebook.com/{}/{}_{}/comments'.format(graph_api_version, user_id, post_id)
comments = []
limit = 0
def write_comments_to_file(filename):
print()
if len(comments) == 0:
print('No comments to write.')
return
with open(filename, 'w', encoding='utf-8') as f:
for comment in comments:
f.write(comment + '\n')
print('Wrote {} comments to {}'.format(len(comments), filename))
def signal_handler(signal, frame):
print('KeyboardInterrupt')
write_comments_to_file('comments.txt')
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
r = requests.get(url, params={'access_token': access_token})
while True:
data = r.json()
if 'error' in data:
raise Exception(data['error']['message'])
for comment in data['data']:
text = comment['message'].replace('\n', ' ')
comments.append(text)
print('Got {} comments, total: {}'.format(len(data['data']), len(comments)))
if 0 < limit <= len(comments):
break
if 'paging' in data and 'next' in data['paging']:
r = requests.get(data['paging']['next'])
else:
break
write_comments_to_file('comments.txt')
|
Pada kode di atas coment dalam bentuk graf akan disimpan dalam bentuk .txt
Gambar di atas merupakan proses dari scrapping data, dan berikut adalah output dari data yang telah di ambil
dalam bentuk .txt
dalam bentuk .txt
Data yang akan dilakukan Analisa sudah tersedia maka selanjutnya akan dilakukan Analisa sentimental
menggunakan Natural Language Toolkit atau NLTK dengan metode Analisa sentiment Vander.
Yang mana data tersbut akan di export ke dalam bentuk xls dengan menggunakan
library xlsxwriter dan dilakukan visualisasi data dalam bentuk pie chart menggunakan Matplotlib.
Berikut adalah code untuk melakukan sentiment analis
menggunakan Natural Language Toolkit atau NLTK dengan metode Analisa sentiment Vander.
Yang mana data tersbut akan di export ke dalam bentuk xls dengan menggunakan
library xlsxwriter dan dilakukan visualisasi data dalam bentuk pie chart menggunakan Matplotlib.
Berikut adalah code untuk melakukan sentiment analis
import nltk
import string
import xlsxwriter
import matplotlib.pyplot as plt
messages = [line.rstrip() for line in open("comments.txt",encoding="utf8")]
from nltk.sentiment.vader import SentimentIntensityAnalyzer
sid = SentimentIntensityAnalyzer()
summary = {"positive":0,"neutral":0,"negative":0}
data_and_result = []
for x in messages:
ss = sid.polarity_scores(x)
if ss["compound"] == 0.0:
summary["neutral"] +=1
data_x_result = [x,'neutral']
elif ss["compound"] > 0.0:
summary["positive"] +=1
data_x_result = [x,'positive']
else:
summary["negative"] +=1
data_x_result = [x,'negative']
data_and_result.append(data_x_result)
print(summary)
# plot
labels = 'Positive', 'Neutral', 'Negative'
sizes = [summary["positive"], summary["neutral"], summary["negative"]]
fig1, ax1 = plt.subplots()
ax1.pie(sizes, labels=labels, autopct='%1.1f%%',
startangle=90)
ax1.axis('equal')
plt.show()
workbook = xlsxwriter.Workbook('Analisa.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
for data, result in (data_and_result):
worksheet.write(row, col, data)
worksheet.write(row, col + 1, result)
row += 1
workbook.close()
|
Gambar di atas merupakan visualisasi dari commentar yang telah dilakukan Analisa sentiment,
berikut adalh hasil dalam bentuk xls yang sudah dilakukan Analisa.
berikut adalh hasil dalam bentuk xls yang sudah dilakukan Analisa.
Sumber Referensi
https://medium.com/@sharonwoo/sentiment-analysis-with-nltk-422e0f794b8
Tidak ada komentar:
Posting Komentar