ANGGOTA KELOMPOK
-
EGA DWI PRASETYA
-
MUHAMMAD SURI ADIYANT0
-
MUHAMMAD JANUARDI SANTOSO
-
NUUR MADANI ABUL HAKIM
Pada postingan kali ini akan dibahas
mengenai SENTIMENT ANALYSIS dan cara implementasi nya.
APA ITU SENTIMENT ANALYSIS ?
Opinion
Mining / Sentiment Analysis (sebagian besar researcher menganggap dua istilah
ini sama/interchangeable) merupakan sebuah cabang penelitian di domain Text
Mining yang mulai booming pada awal tahun 2002-an. Riset-nya mulai marak
semenjak paper dari B.Pang dan L.Lee [1] keluar. Secara umum, Sentiment
analysis ini dibagi menjadi 2 kategori besar :
1
Coarse-grained sentiment analysis
2
Fined-grained sentiment analysis
Coarse-grained
sentiment analysis - kita mencoba melakukan proses analysis pada level Dokumen.
Singkatnya adalah kita mencoba mengklasifikasikan orientasi sebuah dokumen secara
keseluruhan. Orientasi ini ada 3 jenih : Positif, Netral, Negatif. Akan
tetapi, ada juga yang menjadikan nilai orientasi ini bersifat kontinu / tidak
diskrit.
Fined-grained sentiment analysis - kategori kedua
ini yang sedang Naik Daunsekarang. Maksudnya adalah para researcher
sebagian besar fokus pada jenis ini. Obyek yang ingin diklasifikasi bukan
berada pada level dokumen melainkan sebuah kalimat pada suatu dokumen.
contoh
:
•
Saya tidak suka programming. (negatif)
•
Hotel yang baru saja dikunjungi sangat indah
sekali. (positif)
BAHASA R
Bahasa R (disingkat dengan R saja) adalah suatu fasilitas
perangkat lunak terpadu untuk manipulasi data, simulasi, kalkulasi dan peragaan
graphik. R memiliki kemampuan menganalisis data dengan sangat efektif dan
dilengkapi dengan operator pengolahan array dan matriks. Tidak kalah menariknya
R memiliki kemampuan penampilan grafik yang sangat sophisticated demikian pula
peragaan untuk datanya.
Bahasa R merupakan versi sumber terbuka (open-source)
dari bahasa pemrograman S (Azola dan Harrel, 2006). Versi komersial yang
berbasis bahasa S adalah S plus. Bahasa R memiliki kemampuan yang tidak kalah
dangan paket-paket program pengolahan data komersial bahkan dalam beberapa hal
kemampuannya lebih baik. Perbandingan R khususnya terhadap SAS dibahas secara
rinci oleh Azola dan Harrel (2006). Bahasa R mendapat sambutan yang baik dari
kalangan statistikawan di seluruh dunia, sayangnya di Indonesia belum banyak
dikenal. Tulisan ini dibuat untuk mengenalkan bahasa R khsusunya kalangan
akademisi di Indonesia, dan untuk mendukung gerakan IGOS (Indonesia Go Open
Source).
CONTOH PROGRAM SENTIMENT ANALYSIS DENGAN MENGGUNAKAN BAHASA R
Disini
akan dibuat sebuah program sentiment analysis yang akan membaca tweets yang ada
di twitter dimana kita bisa menganalisa isi dari tweets yang di fetch dari
linimasa twitter.
Hal
- hal yang kita persiapkan adalah sebagai berikut :
1.
R studio
2.
apps untuk api twitter dengan program kita
3.
sebuah akun twitter
4.
koneksi internet
LANGKAH
PERTAMA ADALAH PASTIKAN ANDA MEMILIKI KONEKSI INTERNET YANG BAIK karna kita
membutuhkan koneksi yang stabil guna mengambil tweets dari internet
LANGKAH
KEDUA
Buat
akun twitter jika belum memiliki akun twitter, jika sudah bisa lanjut ke
langkah selanjutnya
LANGKAH
KETIGA
Buat
sebuah apps twitter dengan cara masuk ke https://apps.twitter.com
dan login dengan akun twitter anda dan buat sebuah app, pertama login dengan
akun twitter anda
buat aplikasi baru
Jika
sudah dibuat masuk ke settings di akun twitter anda dan berikan akses untuk
aplikasi anda
Jika
sudah buka bagian settings pada halaman apps https://apps.twitter.com
Ingat
settingan diatas atau jangan tutup halaman tersebut karna token - token yang
ada diatas akan kita butuhkan untuk melakukan sentimen analisis.
Oke
buka R STUDIO
R
studio merupakan salah satu aplikasi yang bisa kita gunakan untuk meng-compile
dan meng-run program R
Tuliskan
(copas) program dibawah
#********************************************************************************#
#UNTUK
MENGDOWNLOAD PACKAGES YANG DIBUTUHKAN
#CUKUP
RUN SEKALI
#********************************************************************************#
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")
require(devtools)
install.packages("e1071")
install_github("sentiment140","okugami79")
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")
#********************************************************************************#
#Dibawah
digunakan untuk memanggil library yang sudah didownload diatas
#********************************************************************************#
library(e1071)
library(twitteR)
library(ROAuth)
library(tm)
library(ggplot2)
library(wordcloud)
library(sentimentr)
library(plyr)
library(RTextTools)
library(sentiment)
library(Rstem)
#********************************************************************************#
setup_twitter_oauth("SVFEMAegGNipPya1JoTAPCa5D","mzegtlNSW8wcSCmUDE0hUXethYa5MAono4Ev2fwdqlPM9QQH4F","973513486792720385-6itI9TdbWfMp0XND3aQsnHitWxwMVpP","4E5vaX3Ymf5m3tneSG9ent5sqKUL3QEHCT88uRGafaHis")
#
disini akan di kumpulkan 100 tweets yang mengandung kata "islam"
dengan menentukan bahasa #inggris
some_tweets
= searchTwitter("islam", n=100, lang="en")
#
disini diambil hanya text nya saja sisanya dibuang seperti gambar, video, dll
some_txt
= sapply(some_tweets, function(x) x$getText())
#
akan dibuang kata - kata retweet
some_txt
= gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "", some_txt)
#
dibuang mention - mention
some_txt
= gsub("@\\w+", "", some_txt)
#
dibuang tanda baca
some_txt
= gsub("[[:punct:]]", "", some_txt)
#
dibuang angka
some_txt
= gsub("[[:digit:]]", "", some_txt)
#
dibuang link - link
some_txt
= gsub("http\\w+", "", some_txt)
#
dibuang spasi yang tidak berguna
some_txt
= gsub("[ \t]{2,}", "", some_txt)
some_txt
= gsub("^\\s+|\\s+$", "", some_txt)
#
fungsi error
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")
######
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)
OUTPUT
Adapun
hasil dari program diatas adalah
Grafik
- grafik diatas merupakan contoh dari hasil mining tweets yang berisi kata
ISLAM.