Selasa, 20 Maret 2018

Sentiment Analysis API Facebook dengan Topik Pornografi

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.

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.

1 komentar:

  1. Saya telah berpikir bahwa semua perusahaan pinjaman online curang sampai saya bertemu dengan perusahaan pinjaman Suzan yang meminjamkan uang tanpa membayar lebih dulu.

    Nama saya Amisha, saya ingin menggunakan media ini untuk memperingatkan orang-orang yang mencari pinjaman internet di Asia dan di seluruh dunia untuk berhati-hati, karena mereka menipu dan meminjamkan pinjaman palsu di internet.

    Saya ingin membagikan kesaksian saya tentang bagaimana seorang teman membawa saya ke pemberi pinjaman asli, setelah itu saya scammed oleh beberapa kreditor di internet. Saya hampir kehilangan harapan sampai saya bertemu kreditur terpercaya ini bernama perusahaan Suzan investment. Perusahaan suzan meminjamkan pinjaman tanpa jaminan sebesar 600 juta rupiah (Rp600.000.000) dalam waktu kurang dari 48 jam tanpa tekanan.

    Saya sangat terkejut dan senang menerima pinjaman saya. Saya berjanji bahwa saya akan berbagi kabar baik sehingga orang bisa mendapatkan pinjaman mudah tanpa stres. Jadi jika Anda memerlukan pinjaman, hubungi mereka melalui email: (Suzaninvestment@gmail.com) Anda tidak akan kecewa mendapatkan pinjaman jika memenuhi persyaratan.

    Anda juga bisa menghubungi saya: (Ammisha1213@gmail.com) jika Anda memerlukan bantuan atau informasi lebih lanjut

    BalasHapus