Assalamu'alaikum waramatullahi wabarakatuh
Kali ini, saya akan mempublikasikan cara membuat program sentiment analysis dengan API Facebook menggunakan Python. Berikut langkah-langkahnya :
Install
Python. In case Python yang kami gunakan yaitu Python 2.7.14.
Python
dapat di-download di website resminya, yaitu: https://www.python.org/downloads/
Setelah
selesai di-install, kemudian mengatur Path pada Python dengan cara membuka
Control Panel -> System and Security -> System -> Advanced system
settings. Lalu akan muncul jendela System Properties, pilih Environment Variables.
Akan
muncul jendela baru, lalu pada System variables, klik Path lalu klik tombol
Edit.
Klik
tombol New untuk menambahkan path baru dengan direktori C:\Python27.
Kemudian
men-install module-module yang dibutuhkan. Disini module yang. kami gunakan
yaitu: facebook-sdk, numpy, pandas, dan textblob.
Facebook-sdk
merupakan library yang dirancang untuk mendukung Facebook Graph API dan
Official Facebook JavaScript SDK, yang merupakan cara kanonik untuk menerapkan
otentikasi Facebook.
Graph
API adalah sarana utama yang digunakan aplikasi untuk membaca dan menulis ke
graf sosial Facebook. Semua SDK dan produk Facebook berinteraksi dengan Graph
API, dan API Facebook yang lain merupakan ekstensi dari Graph API, sehingga
penting untuk dapat memahami kinerja Graph API.
TextBlob
adalah library Python yang digunakan untuk memproses data tekstual. Library ini
menyediakan API sederhana untuk menyelam ke dalam tugas pemrosesan bahasa alami
(NLP) seperti penandaan part-of-speech, ekstraksi frase kata benda, analisis
sentimen, klasifikasi, terjemahan, dan lainnya.
NumPy
adalah paket mendasar untuk komputasi ilmiah dengan Python. NumPy dapat
digunakan sebagai wadah data multi dimensi yang efisien. Berbagai macam tipe
data dapat didefinisikan. Hal ini memungkinkan NumPy untuk mengintegrasikan
secara mulus dan cepat de
Panda
adalah sebuah open source, library berlisensi yang menyediakan struktur data
berkinerja tinggi dan mudah digunakan serta alat analisis data untuk bahasa
pemrograman Python.ngan berbagai macam database.
Cara
men-install module-module di atas yaitu bisa dilakukan dengan cara berikut:
Pertama,
buka cmd lalu masuk ke direktori C:\Python27\Scripts. Kemudian ketikkan pip install facebook-sdk, pip install textblob, pip install numpy, dan pip install pandas.
Setelah
Python beserta module-module yang dibutuhkan telah di-install. Maka sekarang
memulai mengetikkan source code pada texteditor kesayangan kalian. Disini kami
menggunakan Visual Studio Code. Sebelum memulai mengetikkan source code-nya, install
terlebih dahulu python extension dan Code Runner untuk dapat menjalan program
python-nya.
Listing Program
import facebook as fb
from textblob import TextBlob
import requests
import numpy as np
import pandas as pd
import re
corpus = []
datasets = []
graph = fb.GraphAPI(access_token="EAACEdEose0cBAAPwWQfDW1rKWjJ7xZBhVEnMrpBAz5OdVMX05Y0SXNJiuw5r22UHzukZAj0FUXiAgYC0Abn7gSBBKOVa4pk5OeQirNEQf4N326CjY0eB18PYYwRRgm83xQNJbIhxRAZAujYEpVENSeHitUhqg8VGvZC842MREzUdbn4KL6L9zdirfhqFwrFD9TtLNNMoowZDZD", version = "2.7")
# KATA KUNCI SEARCH
key = 'boobs'
# LIMIT PENCARIAN
(page, post, comment)
limit = 5
# REQUEST
req = "/search?q=%s&type=page&limit=%s"%(key,
limit)
pages =
graph.request(req)
pagelist = pages['data']
# dapatkan 5 post
dari masing-masing page
for page in pagelist:
posts = graph.request('/%s/posts?%s'%(page['id'], limit))
postslist = posts['data']
#
dapatkan 5 comment dari masing-masing post
for post in postslist:
comments = graph.request('/%s/comments?%s'%(post['id'], limit))
commentlist = comments['data']
#
dapatkan detail(text) dari masing-masing comment
for comment in commentlist:
#
print comment['message']
comment_clean = re.sub('[^a-zA-Z]',
' ',
comment['message'])
comment_clean = comment_clean.lower()
corpus.append(comment_clean)
#message
= TextBlob(comment['message'])
#datasets.append([comment['message'],
message.sentiment.polarity])
# print hasil
for data in corpus:
if(TextBlob(data).sentiment.polarity <= 0):
sentiment = 'negative'
else: sentiment = 'positive'
datasets.append([data, sentiment])
array =
np.array(datasets)
#np.savetxt('hasil.csv',
array, delimiter=',')
print array
df = pd.DataFrame(array)
df.to_csv('hasil.csv')
import
facebook as fb
from
textblob import TextBlob
import
requests
import
numpy as np
import
pandas as pd
Berfungsi untuk mengimpor package yang
diperlukan dalam menjalankan program.
corpus
= []
datasets
= []
Sintaks diatas berfungsi untuk memberi array
kosong terlebih dahulu sebelum diisi oleh data yang akan diproses selanjutnya.
graph
=
fb.GraphAPI(access_token="EAACEdEose0cBAFy4xrzEpWgSO5f0D53wmiq1sPfwPtCiDEYzEotZCPjlzx0PTXJG8zw8ZA43veEsve7szO28LZAaxJeXDZCAMw8d8hIWHyBZB9IZAryGl1WZBYMP4D3S4JLOSX2dbzBrPwVOer3EqHuTK9m3E3M9wSuilkBxshvnc9fTHJHz4MQDuxto30S1N1L4SBVusSJxFZByCiZAxhsKKBZAuAzeG0E77xM3tuBfPiswZDZD",
version = "2.7")
Sintaks diatas merupakan sintaks dimana
memberikan access token untuk mengakses seluruh data di dalam facebook sesuai
ID dan nama.
# KATA KUNCI
SEARCH
key =
'boobs'
# LIMIT
PENCARIAN (page, post, comment)
limit = 5
# REQUEST
req =
"/search?q=%s&type=page&limit=%s"%(key, limit)
pages =
graph.request(req)
pagelist =
pages['data']
Sintaks diatas menentukan apa yang berhubungan
dengan key-nya akan ditampilkan serta memberikan lima pages yang akan memuat
data-data tersebut yang selanjutnya ditampung ke dalam array.
for page in pagelist:
posts =
graph.request('/%s/posts?%s'%(page['id'], limit))
postslist = posts['data']
# dapatkan 5 comment dari masing-masing
post
for post in postslist:
comments =
graph.request('/%s/comments?%s'%(post['id'], limit))
commentlist = comments['data']
# dapatkan detail(text) dari masing-masing
comment
for comment in commentlist:
# print comment['message']
comment_clean = re.sub('[^a-zA-Z]',
' ', comment['message'])
comment_clean =
comment_clean.lower()
corpus.append(comment_clean)
Melakukan perulangan untuk mendapatkan komentar
di Facebook. Permintaan akan dimasukan dalam perulangan. Untuk menghindari
tanda baca yang tidak diperlukan, maka dicantumkan source code dimana tugasnya
membersihkan karakter yang dianggap mengganggu.
for data in corpus:
if(TextBlob(data).sentiment.polarity <=
0):
sentiment = 'negative'
else: sentiment = 'positive'
datasets.append([data, sentiment])
array =
np.array(datasets)
#np.savetxt('hasil.csv',
array, delimiter=',')
print (array)
df =
pd.DataFrame(array)
df.to_csv('hasil.csv')
Menjadikan pengklasifikasian antara dua jenis
yaitu positif dan negative. Komentar akan difilter menggunakan TextBlob.
Setelah data terkumpul, dimasukkan ke dalam array list yang selanjutnya diubah
formatnya menjadi csv.
Access
Token didapatkan dari Facebook Graph API, bisa diakses di link: https://developers.facebook.com/tools-and-support/
Kemudian
pilih Penjelajah API Graf.
klik
Dapatkan Token, lalu pilih Dapatkan Token Akses Pengguna.
Lalu
akan muncul jendela seperti gambar di bawah ini. Kemudian ceklis semua fields
yang ada pada Izin Data Pengguna, lalu klik Dapatkan Token Akses.
Kemudian
masuk dengan Facebook.
Klik
OK.
Maka
akan didapatkan token seperti gambar di bawah ini. Copy-kan token tersebut ke
source code yang telah dibuat.
Klik
tombol Kirim untuk mendapatkan id Facebook pengguna.
Output yang dihasilkan akan diubah dari JSON
(JavaScript Object Notation menjadi CSV (Comma Separated Value) dengan
menampilkan data seperti di bawah ini. Output yang dihasilkan lebih dari seribu query yang
dihasilkan.
Kelompok 5
Anggota :
Akmal Alfarisi 50414710
Indra Arianggi S 55414290
Kartiko Pramudito 55414792
Thomi Alghani 5A414736
Komentar
Posting Komentar