TUGAS
DEEP LEARNING
ANGGOTA KELOMPOK
-
EGA DWI PRASETYA
-
MUHAMMAD SUKRI 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
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
Tidak ada komentar:
Posting Komentar