Nama Kelompok;
1. Emirza Mahendra
2. Fajar Sukma
3. Krisna Mustikarani
4. Ruth Inggrid Veronica
Pada artikel kali ini, akan dibahas mengenai cara menganalisa
sentimen masyarakat melalui media sosial Twitter terhadap bullying menggunakan aplikasi R.
Berikut ini adalah hal-hal yang harus disiapkan:
1. Install Software R, anda dapat mengunduhnya
disini. Usahakan menggunakan software R versi terbaru, versi saat ini yang terbaru adalah 3.4.4.
2.
Buat API Key dan Acces Token dari Twitter.
Caranya dengan membuat akun pada Twitter Apps.
3. Kunjungi https://apps.twitter.com
dan Login menggunakan akun Twitter yang anda miliki, agar selanjutnya dapat
membuat akun pada Twitter Apps.
4.
Kemudian Create New App.
5. Isikan
Form-Form wajib seperti Nama Aplikasi pada kolom NAME , dan DESCRIPTION yang
dapat diisi dengan bebas. Kemudian, pada kolom Website, isikan dengan Website
apa saja yang anda miliki, sebaiknya gunakan Website resmi. Disini digunakan URL
LinkedIn.
6. Ceklis
pada Developer Agreement
7. Kemudian
klik “Create your Twitter Application” .
8. Setelah
akun terbuat, masuk pada jendela “Keys and Access Tokens”. Dapat dilihat bahwa
kita sudah memiliki Consumer Key (API key) dan Consumer Secret (API secret).
Tetapi belum memilik Token, untuk mendapatkan Token, bisa dengan klik “Create
my access token” yang berada pada bagian bawah.
9. Setelah
berhasil mendapatkan API Key dan Access Token Twitter, selanjutnya adalah membuka
aplikasi R yang sudah terinstall. Gunakan aplikasi R versi 3.4.4. Setelah
terbuka akan muncul window seperti dibawah ini. Pada R selain terdapat console
juga terdapat sebuah Text Editor. Untuk menampilkan Text Editor, pilih menu File->
New Script. Untuk me Run syntax oada editor, dapat melakukan block pada syntax
tersebut, klik kanan lalu Klik Run Line on Selection.
10.
Setelah itu lakukan installasi packages yang dibutuhkan.
Pada saat menginstall packages twitteR, nantinya akan muncul Secure CRAN
mirrors, pilih Indonesia(Jakarta)[https]
# Install R packages required
install.packages("twitteR")
install.packages("stringr")
install.packages("xlsx")
install.packages("plyr")
# Load the required R libraries
library(twitteR)
library(stringr)
library(xlsx)
library(plyr)
Penginstallan packages tambahan R
digunakan sintaks install.packages disertai dengan sintaks library (nama_package).
Packages yang ditambahkan dalam sentiment analysis pada Twitter adalah:
ü
twitteR
Package ini yang akan membantu dalam pengaksesan ke API Twitter, sehingga
memungkinkan crawling atau
pengambilan data pada Twitter.
ü
Stringr
Package ini berguna untuk menangan masalah string yang umumnya ditemui, misalnya
menghasilkan output yang lebih bersih dan rapih.
ü
Xlsx
Package ini berguna untuk mengexport hasil analisis kedalam file excel,
yang biasanya berekstensi .xlxs
ü
Rcurl
Package ini berguna untuk menyediakan fasilitas HTTP yang memungkinkan untuk
mendownload file dari web server, post form, menagani redirect, autentikasi
password.
ü
ROAuth
Package ini merupakan interface untuk
melakukan autentikasi ke server yang menerapkan Oauth.
ü
Base64enc
Package ini digunakan untuk menangani masalah encoding base 64.
11.
Selanjutnya masukan API yang sudah didapatkan
sebelumnya, dengan syntax berikut:
consumerKey <- " kcvzlbxxxxxxxxxxxxxxxxxxxxxxx"
consumerSecret <- " VLcNdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
accessToken <- " 1329527xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
accessTokenSecret <- " i0qfY9Ek95xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
setup_twitter_oauth(consumerKey, consumerSecret,
accessToken, accessTokenSecret)
2
Ketika fungsi dijalankan setup_twitter_oauth(), R console akan
menanyakan: “Use a local file to cache OAuth access credentials between R
sessions?”. Masukkan angka “2” yang berarti No.
12.
Jika sudah berhasil, artinya kita sudah terkoneksi
pada Twitter API dan R siap untuk mengambil data. Maka, untuk menguji apakah
kita sudah dapat melakukan crawling pada
tweet dengan suatu keywoard, kita dapat melakukan percobaan mendapatkan tweet
dengan cara seperti dibawah ini, yang akan menghasilkan 25 tweet yang merupakan
default dari pengambilan tweet dalam R.
searchTwitter("perundungan")
13.
Selanjutnya adalah memindai kata-kata Positive
dan Negative dengan membuat bank kata yang berisi kata-kata Positivedan
Negative secara lengkap, makin lengkap bank kata yang kita miliki, maka akan
semakin akurat juga analisis yang kita dapatkan.
Disini terdapat bank kata berupa file text
yaitu text yang berisikan kata-kata bermuatan positif dan juga kata-kata yang
bermuatan negatif, bank kata ini tersimpan ke dalam file positive-word.txt dan
negative-word.txt.
Kita akan membaca file tersebut dengan
fungsi scan pada R, dan menyimpannya kedalam variabel ‘pos’ untuk kata positif, dan ‘neg’ untuk
kata negatif. Dengan cara mengetikkan sintaks dibawah ini.
pos = scan('D:/Fajar/Belajar Pemrograman/R
Programming/positive-words.txt', what='character')
neg = scan('D:/Fajar/Belajar Pemrograman/R
Programming/negative-words.txt', what='character')
Kita juga dapat menambah berbagai
kata baru pada variabel pos, atau neg yang sudah kita dekklarasikan, dengan menggunakan fungsi
combine c(), misal kita ingin menambahkan kata negatif baru maka kita dapat
mengetikkan sintaks berikut, maka kata akan tergabung dengan variabel neg.
neg =
c(neg,'murahan','gampangan','idiot','najis', 'goblok')
14.
Saat melakukan crawling, beberapa tweet akan
mengandung angka, tanda baca, atau huruf besar , hal-hal demikian harus
dibersihkan, agar data yang diperoleh hanyalah
berupa string yang bersih, maka selanjutnya kita membuat fungsi
sentiment yang terdiri dari beberapa parameter yaitu untuk membersihkan tweets
yang akan diambil nantinya, dan variabel positif dan negatif yang sudah di
deklarasikan sebelumnya.
score.sentiment =
function(tweets, pos.words, neg.words)
{
require(plyr)
require(stringr)
scores = laply(tweets,
function(tweet, pos.words, neg.words) {
merupkan fungsi perhitungan score
yang nantinya akan menjumlahkan tweets positive dan tweets negative, untuk
sebuah kata positive bernilai +1 dan sebuah kata negative bernilai -1,
sedangkan kata yang normal bernilai .
Syntax dibawah ini berguna untuk
mebersihkan tweet dengan fungsi gsub()
tweet =
gsub('https://','',tweet)
Syntax untuk menghapus https://
tweet = gsub('http://','',tweet)
Syntax untuk menghapus http://
tweet=gsub('[^[:graph:]]',
' ',tweet)
Syntax untuk menghapus karakter
grafik
tweet =
gsub('[[:punct:]]', '', tweet)
Syntax untuk menghapus tanda baca
tweet =
gsub('[[:cntrl:]]', '', tweet)
Syntax untuk menghapus karakter
control
tweet = gsub('\\d+', '',
tweet)
Syntax untuk menghapus digit/angka
tweet =
str_replace_all(tweet,"[^[:graph:]]", " ")
tweet = tolower(tweet)
Syntax untuk mengubah huruf besar
menjadi huruf kecil
word.list =
str_split(tweet, '\\s+')
syntax untuk memecah tweet
perkata kedalam sebuah list
words = unlist(word.list)
Syntax untuk mengubah list
kedalam vektor
pos.matches = match(words,
pos.words)
neg.matches = match(words,
neg.words)
Syntax untuk membandingkan
katakata dengan bank kata negative dan positive yang sudah dibuat sebelumnya.
pos.matches =
!is.na(pos.matches)
neg.matches =
!is.na(neg.matches)
Syntax untuk mengubah kata yang
cocok kedalam bentuk TRUE ata FALSE
score = sum(pos.matches) -
sum(neg.matches)
return(score)
}, pos.words, neg.words)
scores.df =
data.frame(score=scores, text=tweets)
return(scores.df)
}
Syntax TRUE/FALSE
akan dianggap sebagai 1/0 sehingga dapat ditambahkan dengan fungsi sum() :
Dan berikut
adalah perintah untuk mencari kata-kata bersifat bullying
ktkasar =
('kampungan||murahan||gampangan||keling||cupu||jereng||pesek')
tweets =
searchTwitter(ktkasar,n=1000, lang="id")
Tweets.text =
laply(tweets,function(t)t$getText())
analysis =
score.sentiment(Tweets.text, pos, neg)
·
ktkasar , merupakan kata kunci yang digunakan
untuk mengambil tweet tweet, sehingga tweet yang mengandung kata kata tersebut
akan diambil.
·
searchTweet, merupakan fungsi untuk mengambil
tweet melalui twitter API, dimana paramaeter yang diberikan disini adalah
variabel ktkasar, dan n adalah jumlah tweet yang akan diambil yaitu sebanyak
1000 tweet.
·
Fungsi laply berfungsi untuk mengambil text
tweet
·
Fungsi score sentiment, merupakan fungsi yang
sudah dibuat sebelumnya untuk melakukan analisis sentiment terhadap tweet yang
sudah diambil.
count(analysis$score)
Fungsi count() untuk menghitung
banyak frekuensi nilai sentimen.
Dapat dilihat pada gambar di atas
bahwa rentang nilai sentimen dari -9 sampai 2 dengan jumlah terbanyak berada di
nilai -5, -4, -2 dan -1 dengan rincian tweet negatif sebanyak 841 tweet, netral
sebanyak 91 tweet dan positif sebanyak 68 tweet. Dari data tersebut terlihat
bahwa 84,1% kata mengandung Bullying di Twitter dengan menggunakan kata
kampungan, murahan, gampangan, keeling, cupu, jereng, pesek.
15.
Untuk menampilkan hasil dalam bentuk histogram
berdasarkan data yang diperoleh, dapat dilakukan dengan memasukan syntax
dibawah ini;
hist(analysis$score)
Untuk memindahkan hasil ke dalam
bentuk excel dengan menggunakan library xlsx dan menyimpannya ke file excel
bernama tweetperundungan.xlsx.
Berikut adalah hasil data yang
terdapat pada Excel