Nama Kelompok:
Akmal Alfarisi 50414710
Indra Arianggi S. 55414290
Kartiko Pramudito 55414792
Thomi Alghani 5A414736
Install Python. In case Python yang kami gunakan yaitu Python 2.7.14.
Akmal Alfarisi 50414710
Indra Arianggi S. 55414290
Kartiko Pramudito 55414792
Thomi Alghani 5A414736
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.
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')
Logika Program
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.