Langsung ke konten utama

Sentiment Analysis with Twitter API in Bullying Cases Using R Programming


      Pada artikel kali ini, akan dibahas mengenai cara menganalisa sentimen masyarakat melalui media sosial Twitter  terhadap bullying menggunakan aplikasi R. Sebelumnya, bila anda belum terlalu mengerti mengenai Sentiment Analysis dan cara kerjanya, anda dapat mengunjugi postingan saya disini, yang akan menjelaskan sentiment analysis secara umum.

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. Twitter Apps dapat dibuka disini.
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]
C:\Users\USER\Desktop\New folder\DL 5.PNG
C:\Users\USER\Desktop\New folder\DL 7.PNG

# 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:
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 <- " kcvzlbxxxxxxxxxxxxxxxxxxxx"
consumerSecret <- " VLcNdxxxxxxxxxxxxxxxxxxxxxxxx"
accessToken <- " 1329527xxxxxxxxxxxxxxxxxxxxxxxxxx"
accessTokenSecret <- " i0qfY9Ek95xxxxxxxxxxxxxxxxxxxxxxx"

setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessTokenSecret)


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)
16. Untuk memindahkan hasil ke dalam bentuk excel dengan menggunakan library xlsx dan menyimpannya ke file excel bernama tweetperundungan.xlsx. 
write.xlsx(analysis, "tweetperundungan.xlsx")

Berikut adalah hasil data yang terdapat pada Excel

Komentar

Postingan populer dari blog ini

Membuat Game 'Flappy Bird' dengan Unity

Pada Mata Kuliah Pengenalan Teknologi dan New Media ini saya beserta kelompok saya membuat sebuah game dengan aplikasi Unity.Mungkin para pembaca masih belum tahu aplikasi seperti apakah unity itu.Nah kira-kira seperti inilah gambaran dari tampilan unity,unity adalah aplikasi game development tool high-end yang mendukung GUI.Tidak ada konflik pada alur kerja, adanya fitur top-of-the-line untuk grafik yang diperluas, efek partikel yang menakjubkan, scripting yang dioptimalkan, dukungan Ageia physX Engine, karakter animasi dan ragdolls, dan kelebihan untuk membuat standalone game untuk Mac dan Windows Nah pada kesempatan ini saya dan tim mebuat game yang sempat populer,mungkin pembaca disini pernah memainkannya atau bahkan kecanduan dengan game ini,game tersebut adalah 'Flappy Bird'.Namun karena saya yang tidak terlalu mahir dalam bermain game ini dan selalu kalah,sulit sekali untuk mengumpulkan score,maka game inipun saya beri nama dengan game 'Impossible Bird'haha

Zenius, Situs Belajar Online Favorite Pelajar

Zenius merupakan start up dibidang pendidikan yang menyediakan platfrom e-learning. Zenius menghadirkan suatu trobosan baru bagi pelajar Indonesia dengan pembelajaran secara konsep dan menyenangkan berbasis multimedia. Situs belajar online ini namanya sudah tidak asing lagi ditelinga para pelajar Indonesia. Keanggotaan zenius dapat diperoleh dari pendaftaran pada situs zenius.net, terbagi menjadi dua yaitu anggota reguler dan anggota premium, dimana anggota premium dapat secara leluasa mengeksplor video-video yang ada di situs tersebut. 1. Sejarah Terbentuknya PT Zenius Education Zenius mulai berdiri pada tahun 2004 yang didirikan oleh Sabda dan Medy Suharta. Sabda dan Medy pernah mengenyam pendidikan di Insitut Teknologi Bandung dengan Sabda pada jurusan Teknik Informatika dan Medy Suharta jurusan Teknik Elektro. Meski impian awal dari pendirian Zenius adalah menyediakan dokumentasi materi  dalam format digital yang akan disebarkan melalui website zenius.net, tetapi imp

Belajar Membuat Web dengan Freecodecamp (Pengenalan)

Hallo teman-teman jadi gini langsung aja ya gausah basa basi deh kita jujur-jujuran aja ya disini gausah ada yang ditutpin lagi ku sudah lelah.    Halah Ok jadi saya sekarang akan mulai menulis tentang topik yang lumayan bermanfaat nih dibandingkan topik-topik gajelas saya sebelumnya.saya akan membahas cara membuat web yang saya pelajarin dari freecodecamp. Tujuan Jadi tujuan dari penulisan ini adalah supaya saya gak lupa tentang materi-materi yang ada di freecodecamp ini,selain itu mungkin penulisan ini nantinya bisa berguna buat temen-temen yang mau belajar bikin web juga hehe :D Apa itu Freecodecamp? Nah...jadi kalo ada yang belum tahu frecodecamp yang dari tadi saya bilang itu apa,langsung aja cek webnya disini! Freecodecamp sendiri adalah sebuah web yang akan membantu kita kalo kita mau belajar membuat web,sejauh yang saya pelajarin web ini bagus dan mudah dimengerti terutama untuk orang awam yang belum terlalu familiar dengan coding . Metode Belajar Untuk metode

Apa Itu Research Gate?

Belum lama ini saya mendapatkan tugas dari dosen saya,tugasnya adalah meninjau lebih jauh tentang sebuah web,nama webnya adalah research gate,kalo yang mau lihat blognya bisa klik link ini  Research Gate . Setelah itu saya browsing lebih jauh mengenai research gate,apasih research gate itu? Dari beberapa sumber,saya menemukan bahwa research gate ini keren banget,karena di website ini peneliti dari penjuru dunia dapat mempublikasikan seputar penelitiannya dengan cara meng-uploadnya pada web ini.jadi di web ini kita bisa dapet jurnal-jurnal dan ilmu pengetahuan lainnya secara gratis. Research Gate ini juga menyediakan statistik mengenai jumlah paper kita yang didownload,web ini juga memfasilitasi usernya untuk terhubung dan berkolaborasi dengan user lain di bidang yang sama. Saya jadi penasaran tentang web ini,maka saya mencoba untuk join,berhubung join ke web ini  juga free.Jadi langkah pertama adalah kita bisa mendaftarkan diri dengan memasukan nama,alamat email dari kampus/