MAKALAH
ANALISIS SENTIMENT PADA TWITTER MENGGUNAKAN BAHASA PEMROGRAMAN R
Disusun Oleh :
Listyani Praptining Putri (15.01.53.0013)
Dhika Bagas Whisnu Aji (15.01.53.0044)
Miftachul Anwar (15.01.53.0075)
UNIVERSITAS STIKUBANK SEMARANG (UNISBANK)
FALKUTAS TEKNOLOGI INFORMASI
SISTEM INFORMASI
2017
BAB I
PENDAHULUAN
1. Deskripsi Permasalahan
Analisis sentimen dalam penelitian ini merupakan proses
klasifikasi dokumen tekstual ke dalam dua kelas, yaitu kelas sentimen
positif dan negatif. Data opini diperoleh dari jejaring sosial
Twitter berdasarkan query dalam Bahasa Indonesia. Penelitian ini
bertujuan untuk menentukan sentimen publik terhadap objek tertentu
yang disampaikan di Twitter dalam bahasa Indonesia, sehingga membantu
usaha untuk melakukan riset pasar atas opini publik.
Data yang sudah terkumpul dilakukan proses preprocessing dan POS
tagger untuk menghasilkan model klasifikasi melalui proses pelatihan.
Teknik pengumpulan kata yang memiliki sentimen dilakukan dengan
pendekatan berdasarkan kamus, yang dihasilkan dalam penelitian ini
berjumlah 18.069 kata. Algoritma Maximum Entropy digunakan untuk POS
tagger dan algoritma yang digunakan untuk membangun model klasifikasi
atas data pelatihan dalam penelitian ini adalah Support Vector
Machine. Fitur yang digunakan adalah unigram dengan fitur pembobotan
TFIDF. Implementasi klasifikasi diperoleh akurasi 86,81 % pada
pengujian 7 fold cross validation untuk tipe kernel Sigmoid. Pelabelan
kelas secara manual dengan POS tagger menghasilkan akurasi 81,67%.
Twitter adalah layanan jejaring
sosial dan mikroblog daring yang memungkinkan penggunanya untuk
mengirim dan membaca pesan berbasis teks hingga 140 karakter, yang
dikenal dengan sebutan kicauan (tweet). Twitter didirikan pada bulan
Maret 2006 oleh Jack Dorsey, dan situs jejaring sosialnya diluncurkan
pada bulan Juli. Sejak diluncurkan, Twitter telah menjadi salah satu
dari sepuluh situs yang paling sering dikunjungi di Internet, dan
dijuluki dengan "pesan singkat dari Internet." Di Twitter, pengguna
tak terdaftar hanya bisa membaca kicauan, sedangkan pengguna terdaftar
bisa menulis kicauan melalui antarmuka situs web, pesan singkat (SMS),
atau melalui berbagai aplikasi untuk perangkat seluler.
Twitter mengalami pertumbuhan yang pesat dan dengan cepat meraih
popularitas di seluruh dunia. Hingga bulan Januari 2013, terdapat
lebih dari 500 juta pengguna terdaftar di Twitter, 200 juta di
antaranya adalah pengguna aktif. Lonjakan penggunaan Twitter umumnya
berlangsung saat terjadinya peristiwa-peristiwa populer. Pada awal
2013, pengguna Twitter mengirimkan lebih dari 340 juta kicauan per
hari, dan Twitter menangani lebih dari 1,6 miliar permintaan
pencarian per hari. Hal ini menyebabkan posisi Twitter naik ke
peringkat kedua sebagai situs jejaring sosial yang paling sering
dikunjungi di dunia, dari yang sebelumnya menempati peringkat dua
puluh dua.
Tingginya popularitas Twitter menyebabkan layanan ini telah
dimanfaatkan untuk berbagai keperluan dalam berbagai aspek, misalnya
sebagai sarana protes, kampanye politik, sarana pembelajaran, dan
sebagai media komunikasi darurat. Twitter juga dihadapkan pada
berbagai masalah dan kontroversi seperti masalah keamanan dan privasi
pengguna, gugatan hukum, dan penyensoran. Twitter dimiliki dan
dioperasikan oleh Twitter, Inc., yang berbasis di San Francisco,
dengan kantor dan peladen tambahan terdapat di New York City, Boston,
dan San Antonio. Hingga Mei 2015, Twitter telah memiliki lebih dari
500 juta pengguna, 302 juta di antaranya adalah pengguna aktif.
2. Rumusan Masalah
Berdasarkan latar belakang diatas, rumusan masalah yang akan
peneliti ambil adalah Bagaimana mengambil kajian teoritis analisa
sentimen menggunakan bahasa R.
3. Tujuan Penulisan
Adapun tujuan dari penulisan ini adalah membahas kajian teoritis
tentang analisa sentimen menggunakan bahasa pemrograman R.
BAB II
TINJAUAN PUSTAKA
1. Kajian Deduktif
Analisa sentimen atau biasa disebut opinion mining merupakan salah
satu cabang penelitian Text Mining. Opinion mining adalah riset
komputasional dari opini, sentimen dan emosi yang diekspresikan secara
tekstual. Jika diberikan suatu set dokumen teks yang berisi opini
mengenai suatu objek, maka opinion mining bertujuan untuk mengekstrak
atribut dan komponen dari objek yang telah dikomentasi pada setiap
dokumen dan untuk menentukan apakah komentar tersebut bermakna positif
atau negatif.
Sentiment Analysis dapat dibedakan berdasarkan sumber datanya,
beberapa level yang sering digunakan dalam penelitian Sentiment Analysis
adalah Sentiment Analysis pada level dokumen dan Sentiment Analysis pada
level kalimat. Berdasarkan level sumber datanya Sentiment Analysis
terbagi menjadi 2 kelompok besar yaitu :
a. Coarse-grained Sentiment Analysis
b. Fined-grained Sentiment Analysis
A. Coarse-grained Sentiment Analysis
Pada Sentiment Analysis jenis ini, Sentiment Analysis yang
dilakukan adalah pada level dokumen. Secara garis besar fokus utama
dari Sentiment Analysisjenis ini adalah menganggap seluruh isi dokumen
sebagai sebuah sentiment positif atau sentiment negatif.
B. Fined-grained Sentiment Analysis
Fined-grained Sentiment Analysis adalah Sentiment Analysis pada
level kalimat. Fokus utama fined-greined Sentiment Analysis adalah
menentukan sentimen pada setiap kalimat.
Sentiment analysis terdiri dari 3 subproses besar. Masing-masing
subproses ini bisa kita jadikan bahan/topik riset secara terpisah
karena masing-masing subproses ini membutuhkan teknik yang tidak mudah
:
Subjectivity Classification
menentukan kalimat yang merupakan opini
Orientation Detection
setelah berhasil diklasifikasi untuk kategori Opini,
sekarang kita tentukan apakah dia positif, negatif, netral
?
Opinion Holder and Target Detection
menentukan bagian yang merupakan Opinion Holder dan bagian
yang merupakan Target.
BAB III
METODE PENELITIAN
Penelitian ini dilakukan dalam beberapa tahap. Pada tahap pengumpulan
data, data berupa kalimat-kalimat yang diperoleh dari tweets berbahasa
Indonesia mengenai hasil persepsi masyarakat. Setelah data terkumpul
kemudian dilakukan preprocessing agar data dapat diolah menggunakan
sentiment analysis. Proses translasi ke Bahasa Inggris dilakukan pada
kalimat yang sudah melewati tahap preprocessing. Selanjutnya
mengklasifikasi kalimat dengan analisis sentiment sehingga output berupa
nilai sentiment. Berikut penjelasan tahap-tahap dari diagram.
BAB IV
HASIL DAN PEMBAHASAN
Contoh scriptnya :
#https://sites.google.com/site/miningtwitter/questions/sentiment/sentiment
#harus install RTools https://cran.r-
project.org/bin/windows/Rtools/Rtools34.exe
#harus install RTools https://cran.r-
project.org/bin/windows/Rtools/Rtools34.exe
install.packages("twitteR")
install.packages("ROAuth")
install.packages("tm")
install.packages("ggplot2")
install.packages("wordcloud")
install.packages("sentimentr")
install.packages("plyr")
install.packages("RTextTools")
install.packages("devtools")
install.packages("e1071")
install.packages("RColorBrewer")
install.packages("Rstem")
require(devtools)
install_github("okugami79/sentiment140")
install_url("https://cran.r-project.org/src/contrib/Archive/Rstem/Rstem_0.4-
1.tar.gz")
install_url("http://cran.r-
project.org/src/contrib/Archive/sentiment/sentiment_0.2.tar.gz")
install_url("http://cran.r-project.org/src/contrib/Archive/sentiment/");
library(twitteR)
library(ROAuth)
library(tm)
library(ggplot2)
library(wordcloud)
library(sentimentr)
library(plyr)
library(RTextTools)
library(e1071)
library(Rstem)
library(RColorBrewer)
setup_twitter_oauth("JsZqhclFgxd0U1VG1jmeKzLfB","40l9QX8fZOscjgG1UvFmhFOozie
dKnw8HJWYO7c5sO7T7fXBcn","861413684467220480-
gGYKh6cU87FrKem09cYUvP08iBUvbTv","agaOa07UN9S5xhZUZ7B41tfGdO2qtXl8LHhSTTGpH8
ZSn")
# harvest some tweets
some_tweets = searchTwitter("starbucks", n=500, lang="en")
# get the text
some_txt = sapply(some_tweets, function(x) x$getText())
# remove retweet entities
some_txt = gsub("(RT"via)((?:\\b\\W*@\\w+)+)", "", some_txt)
# remove at people
some_txt = gsub("@\\w+", "", some_txt)
# remove punctuation
some_txt = gsub("[[:punct:]]", "", some_txt)
# remove numbers
some_txt = gsub("[[:digit:]]", "", some_txt)
# remove html links
some_txt = gsub("http\\w+", "", some_txt)
# remove unnecessary spaces
some_txt = gsub("[ \t]{2,}", "", some_txt)
some_txt = gsub("^\\s+"\\s+$", "", some_txt)
# define "tolower error handling" function
try.error = function(x)
{
# create missing value
y = NA
# tryCatch error
try_error = tryCatch(tolower(x), error=function(e) e)
# if not an error
if (!inherits(try_error, "error"))
y = tolower(x)
# result
return(y)
}
# lower case using try.error with sapply
some_txt = sapply(some_txt, try.error)
# remove NAs in some_txt
some_txt = some_txt[!is.na(some_txt)] names(some_txt) = NULL
# classify emotion
library(sentiment)
class_emo = classify_emotion(some_txt, algorithm="bayes", prior=1.0)
# get emotion best fit
emotion = class_emo[,7]
# substitute NA's by "unknown"
emotion[is.na(emotion)] = "unknown"
# classify polarity
class_pol = classify_polarity(some_txt, algorithm="bayes")
# get polarity best fit
polarity = class_pol[,4]
# data frame with results
sent_df = data.frame(text=some_txt, emotion=emotion, polarity=polarity,
stringsAsFactors=FALSE)
# sort data frame
sent_df = within(sent_df, emotion <- factor(emotion,
levels=names(sort(table(emotion), decreasing=TRUE))))
# plot distribution of emotions
ggplot(sent_df, aes(x=emotion)) +geom_bar(aes(y=..count.., fill=emotion))
+scale_fill_brewer(palette="Dark2") +labs(x="emotion categories", y="number
of tweets")
ggplot(sent_df, aes(x=polarity)) + geom_bar(aes(y=..count..,
fill=polarity)) + scale_fill_brewer(palette="RdGy") + labs(x="polarity
categories", y="number of tweets")
# separating text by emotion
emos = levels(factor(sent_df$emotion))
nemo = length(emos)
emo.docs = rep("", nemo)
for (i in 1:nemo)
{ tmp = some_txt[emotion == emos[i]] emo.docs[i] = paste(tmp, collapse=" ")
}
# remove stopwords
emo.docs = removeWords(emo.docs, stopwords("english"))
# create corpus
corpus = Corpus(VectorSource(emo.docs))
tdm = TermDocumentMatrix(corpus)
tdm = as.matrix(tdm)
colnames(tdm) = emos
# comparison word cloud
comparison.cloud(tdm, colors = brewer.pal(nemo, "Dark2"), scale = c(3,.5),
random.order = FALSE, title.size = 1.5)
Gambar isi dari proses run script diatas :
Gambar hasil perhitungan (Plots) :
BAB V
KESIMPULAN DAN REKOMENDASI
Klustering adalah mengelompokkan variabel ke dalam kelompok berdasarkan
kesamaan tertentu. Sedangkan R adalah suatu perangkat lunak yang digunakan
untuk manipulasi data, perhitungan, simulasi, penayangan grafik, dan
sekaligus sebagai bahasa pemograman yang bersifat interpreter R. Dari hasil
pembahasan diatas mengenai aplikasi teks mining untuk penanganan data besar
hasil pencarian topik-topik terkait pada search engine twitter dengan studi
kasus topik banjir maka dapat ditarik kesimpulan yang menghasilkan sebuah
informasi atau pemberitaan yang sedang hangat dibicarakan dan diberitakan
oleh media mengenai banjir bahwa terdapat topik utama yang digunakan
pada tweet-tweet ketika pengguna twitter mencari informasi seputar topik
banjir pada search engine dapat diketahui kata (topik) yang sering muncul
dalam word cloud bersamaan dengan kata banjir adalah kata yang menjadi
topik utama dan sering muncul saat pengguna twitter mencari informasi
terkait banjir pada search engine twitter.
DAFTAR PUSTAKA
eprints.ums.ac.id/49476/3/NASKAH%20PUBLIKASI.pdf
j-ptiik.ub.ac.id/index.php/j-ptiik/article/download/631/250/