Sentiment Analysis API Facebook dengan Topik Pornografi


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