Skip to main content

Sentiment Analyst pada graph facebook menggunakan Python3, NLTK Analisa sentiment Vader dan visualisasi menggunakan matplotlib.

Tugas Deep Learning

4IA01
Andika Demas Riyandi (51414067)
Denny Aditya Pradipta (52414708)
Muhammad Andika Nugraha (57414084)
Rendytio Arifian Puspito (59414055)

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 :
  • 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.
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.
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.
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
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.
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.
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
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.
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 tealh di ambil 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

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 comtar yang telah dilakukan Analisa sentiment, berikut adalh hasil dalam bentuk xls yang sudah dilakukan Analisa.


Comments

Popular posts from this blog

Masalah Pokok Dalam Sistem Nilai Budaya

Pada kesempatan kali ini, saya akan membahas tentang masalah-masalah pokok yang terdapat dalam Sistem Nilai Budaya. Pada dasarnya, Sistem Nilai Budaya merupakan sistem nilai- nilai yang disepakati dan tertanam dalam suatu masyarakat yang mengakar pada suatu kebiasaan, kepercayaan (believe), dengan karakteristik tertentu yang berbeda-beda untuk acuan perilaku. [1] Sistem Nilai Budaya memiliki 5 masalah pokok menurut Kluckhohn dalam Pelly (1994), yaitu: 1. Hakekat hidup 2. Hakekat kerja atau karya manusia 3. Hakekat kedudukan manusia dalam ruang dan waktu 4. Hakekat hubungan manusia dengan alam sekitar 5. Hakekat dari hubungan manusia dengan manusia sesamanya. 1. Hakekat Hidup Masyarakat dipengaruhi oleh kebudayaan-kebudayaan dalam memahami arti dari hidup.Sebagai contoh dalam Buddha, hidup itu buruk dan manusia harus mencapai Nirvana. Hal ini mempengaruhi pola pikir masyarakat dalam menjalani kehidupannya. Namun, banyak kebudayaan yang menganggap hidup itu baik. Jadi, variasi

Membuat Animasi Stickman Menggunakan Macromedia Flash 8

Membuat animasi Stickman menggunakan Macromedia Flash 8 Baiklah pada postingan kali ini kita akan membuat animasi sederhana stickman menggunakan aplikasi macromedia flash 8 : Sudah pernah memainkan game animasi stickman sebelumnya? Nah sekarang kita akan membuat animasi stickman yang serupa seperti pada game tersebut. Aplikasi yang kita gunakan disini adalah macromedia flash 8. Langsung saja yaa kita akan membuat animasi stickman step by step Pertama kita perlu menggambar karakter stickman sebagai karakter utama dalam animasi ini : Setelah kita membuat karakter stickman pada layer satu di posisi frame satu, klik kanan pada frame 2 dan klik insert blank keyframe. Kemudian sesuai dengan gambar ada 2 buah tombol onion skin, ada onion skin dan onion skin outlines. Kita akan pakai onion skin outlines :        Selanjutnya setelah mengklik tombol onion skin outlines, klik modify onion markers dan pilih show onion all                   Secara o

Mediatek dan Qualcomm, Manakah Processor yang Lebih Baik?

Tahun 2015, hampir seluruh orang di muka bumi menggunakan smartphone Android. Android adalah sistem operasi berbasis Linux yang dirancang untuk perangkat seluler layar sentuh seperti telepon pintar dan komputer tablet . Seperti halnya dengan komputer, smartphone Android menggunakan berbagai macam komponen seperti komponen layar, Graphic Processing Unit, Processor, dan sebagainya. Untuk saat ini, pokok bahasan kita adalah: Processor. Processor merupakan salah satu komponen utama dalam sebuah smartphone. Biasanya, vendor pembuat smartphone membuat sebuah produk menggunakan processor yang dibuat oleh perusahaan lain, seperti Qualcomm dan Mediatek. Namun, semakin zaman berkembang, vendor kini pun ikut serta dalam membuat processor masing-masing. Yang perlu kita ketahui adalah nama perusahaan dengan nama procesor yang mereka produksi. Qualcomm mengunakan nama Snapdragon procesor Mediatek mengunakan nama MTxxxx Huawei mengunakan nama Kirin LG mengunakan nama Nuclun Samsung men