MAKALAH ANALISA SENTIMEN MENGGUNAKAN TIDY DATA PADA BAHASA PEMROGRAMAN R
MAKALAH
ANALISA SENTIMEN MENGGUNAKAN TIDY DATA PADA BAHASA
PEMROGRAMAN R
Disusun Oleh :
Rr. Binar
Novicha P 16.01.63.0002
Fakultas Teknologi Informasi
Jurusan Teknik Informatika
2018
BAB I
PENDAHULUAN
1.1
Latar Belakang
Seperti
yang telah kita ketahui, teknologi berpengaruh secara massive dalam
perkembangan di segala aspek kehidupan saat ini. Tidak hanya dimanfaatkan untuk
memajukan salah satu bidang secara spesifik, namun saat ini teknologi secara
lumrah digunakan dalam kehidupan sehari – hari. Pemanfaatan kemajuan teknologi
dapat dilihat dari mudahnya semua golongan untuk mencari informasi yang
tersebar secara bebas di dunia maya. Hanya dengan memasukan keyword dari
informasi yang akan diinginkan, sederet informasi mengenai hal tersebut akan
muncul dengan sangat cepat dan mudah.
Banjirnya
informasi yang tersebar secara cuma – cuma pada media informasi elektronik
terutama pada laman seperti web, blog, dan platform dari jejaring social
membuat kebanyakan masyarakat lebih memilih untuk mencari suatu informasi
dengan memanfaatkan smartphone atau gadget mereka dibandingkan dengan membaca
melalui di media cetak seperti koran atau majalah. Tidak hanya penelusuran
informasi tertentu mengenai suatu kejadian atau hal, penilaian terhadap
berbagai bidang pun saat ini lebih didominasi dengan memberikan komentar pada
plot media website yang dapat dilakukan dengan bebas dan mudah.
Informasi
yang ditulis oleh masyarakat pada platform terkadang tidak hanya dalam bentuk
opini, namun tidak jarang mengungkapkan fakta tentang sesuatu atau juga hanya
mengekspresikan emosi mereka semata. Jika dalam kumpulan dokumen yang dituliskan
oleh masyarakat tentang suatu hal merupakan opini tentang penilaian suatu
produk, pada umumnya ingin diketahui opini – opini yang dirasakan merupakan
kepuasan atau justru mengungkapkan kekecewaan penikmat dari suatu produk yang
sedang diteliti. Namun, akan sulit jika mengumpulkan satu persatu dokumen dari
media yang diinginkan kemudian menentukan opini tersebut tergolong ke dalam
opini positif atau opini negatif. Salah satu metode yang sedang dikembangkan
saat ini untuk masalah di atas adalah klasifikasi sentimen. Metode ini
merupakan perkembangan dari text mining yang sedang popular dan masih terus
berkembang. Dapat dilihat dari nama metode di atas, metode ini bertujuan untuk
memisahkan suatu opini dalam jumlah yang sangat besar ke dalam dua kelas, dalam
hal ini kelas positif dan negatif.
Salah
satu media jejaring sosial yang dapat dimanfaatkan dalam penganalisaan ini
adalah Twitter. Hal tersebut dikarenakan Twitter merupakan salah satu media
jejaring sosial dengan pengguna terbanyak diantara beberapa situs jejaring
sosial yang ada.
1.2 Rumusan Masalah
Berdasarkan latar belakang di
atas maka rumusan masalahnya adalah bagaimana mengolah data menggunakan sentiment analysis dengan tidy data beserta implementasinya
menggunakan bahasa “R”.
1.3 Tujuan Penulisan
Tujuan penulisan makalah ini adalah untuk
mengetahui analisa sentimen dengan tidy data beserta implementasinya.
BAB II
TINJAUAN
PUSTAKA
Pembahasan tentang klasifikasi sentimen juga telah
dibahas sebelumnya oleh beberapa peneliti seperti Jalel (2013), Hiroshi (2014),
Imam dkk. (2012) dan Ahmad (2014).
Jalel (2013) membahas perbandingan penerapan
pengklasifikasi supervised learning Naïve Bayes Classifier dengan Support
Vector Machine dari sumber dokumen status pada beranda Facebook di Tunisia.
Pembobotan tiap kata yang dilakukan peneliti pada kasus di atas adalah dengan
pembobotan Boolean atau pembobotan biner, yaitu hanya memperhitungkan
keberadaan kata pada suatu dokumen, tidak memperhitungkan frekuensi kata hadir
pada sebuah dokumen. Pada penelitian ini, peneliti mengekstrak suatu dokumen ke
dalam 7 bentuk n-gram yaitu unigram, bigram, trigram, kombinasi bentuk unigram
dan bigram, kombinasi unigram dan trigram, kombinasi bigram dan trigram, serta
kombinasi unigram, bigram, dan trigram. Hasil penelitian di atas menyatakan
bahwa tingkat akurasi yang paling tinggi dihasilkan oleh bentuk bigram atau
bentuk yang dibangun oleh dua kata.
Hiroshi (2014) membahas tentang model dokumen serta
penggunaan dua pendekatan yang secara umum digunakan dalam klasifikasi
sentimen, yaitu model dokumen Multinomial dan model dokumen Bernoulli dimana
kedua model tersebut tidak digunakan untuk menyelesaikan kasus pada database
melainkan pada model dokumen. Pada penelitian ini dijelaskan tentang perbedaan
penggunaan kedua model tersebut. Dimana model dokumen multinomial digunakan
dengan memperhitungkan banyaknya suatu kata keluar dalam satu dokumen,
sedangkan untuk Bernoulli hanya memperhitungkan ada atau tidaknya suatu kata
dalam satu dokumen dengan pembobotan biner.
Imam dkk.(2012) membahas tentang Implementasi opinion
mining untuk ekstraksi opini publik mengenai penilaian perguruan tinggi. Pada
penelitian ini dikembangkan sistem opinion mining untuk menganalisis opini
publik pada perguruan tinggi. Pada subproses document subjectivity dan target
detection digunakan Part-of-Speech (POS) Tagging menggunakan Hidden Makov Model
(HMM). Pada hasil proses POS Tagging kemudian diterapkan rule untuk mengetahui
apakah suatu dokumen termasuk opini atau bukan, serta untuk mengetahui bagian
kalimat mana yang merupakan objek yang menjadi target opini. Dokumen yang
dikenali sebagai opini selanjutnya diklasifikasikan ke dalam opini negatif dan
positif (subproses opinion orientation) menggunakan Naïve Bayes Classifier
(NBC). NBC dapat berfungsi dengan baik pada subproses opinion orientation.
Ahmad (2014) membahas tentang klasifikasi sentimen
berbahasa Indonesia dengan menggunakan metode Naïve Bayes Classifier dan
Support Vector Machine dengan menggunakan pembobotan TF-IDF(Term Frequency -
Inverse Document Frequency) yakni dengan memperhitungkan probabilitas sebuah
kata berada dalam suatu korpus dibandingkan dengan jumlah kata tersebut dalam
keseluruhan dokumen training.
BAB III
METODE PENELITIAN
Penelitian ini menggunakan data-data teks pada dataset
di dalam tidy data yang berkaitan dengan leksikon. Ada berbagai
metode dan kamus yang ada untuk mengevaluasi pendapat atau emosi dalam teks.
Paket tidytext berisi beberapa leksikon sentimen dalam kumpulan data sentimen. Tujuan
akhir penelitian ini adalah dapat menjalankan ke tiga leksikon. Tiga tujuan
umum lexicons tersebut adalah :
1.
afinn dari Finn
Arup Nielsen.
2.
bing dari Bing
Liu and collaborators.
3.
nrc dari Saif
Mohammad and Peter Turney.
Ketiganya leksikal didasarkan pada unigrams,
yaitu kata tunggal. Leksikon ini mengandung banyak kata dalam bahasa Inggris
dan kata-kata tersebut diberi nilai untuk sentimen positif / negatif, dan juga
mungkin emosi seperti sukacita, kemarahan, kesedihan, dan sebagainya. Leksikon
nrc mengkategorikan kata-kata dengan cara biner ("ya" /
"tidak") ke dalam kategori positif, negatif, marah, antisipasi,
jijik, ketakutan, sukacita, kesedihan, kejutan, dan kepercayaan. The bing
lexicon mengkategorikan kata-kata dalam bentuk biner menjadi kategori positif
dan negatif. Leksikon AFINN memberikan kata-kata dengan skor yang berkisar
antara -5 dan 5, dengan skor negatif menunjukkan sentimen negatif dan skor
positif yang menunjukkan sentimen positif. Semua informasi ini ditabulasikan
dalam dataset sentimen, dan tidytext menyediakan fungsi get_sentiments () untuk
mendapatkan leksikon sentimen spesifik tanpa kolom yang tidak digunakan dalam
leksikon tersebut.
BAB IV
HASIL DAN PEMBAHASAN
4.1 Pengumpulan
Data
4.1.1. Membaca Data
Sebelum melakukan pengolahan
data, terlebih dahulu kita baca data yang akan kita olah nantinya dari ke tiga
leksikon tersebut. Dimulai dari melihat data “afinn” seperti yang ditampilkan
pada Gambar 4.1
Gambar 4.1. Data “afinn”
Leksikon AFINN memberikan
kata-kata dengan skor yang berkisar antara -5 dan 5, dengan skor negatif
menunjukkan sentimen negatif dan skor positif yang menunjukkan sentimen
positif. Kemudian dilanjutkan dengan melihat
data “bing” seperti yang ditampilkan pada Gambar 4.2.
Leksikon bing mengkategorikan kata-kata dalam
bentuk biner menjadi kategori positif dan negatif. Kemudian dilanjutkan dengan melihat data “nrc” seperti yang
ditampilkan pada Gambar 4.3.
Gambar 4.3. Data “nrc”
Leksikon nrc mengkategorikan kata-kata dengan
cara biner ("ya" / "tidak") ke dalam kategori positif,
negatif, marah, antisipasi, jijik, ketakutan, sukacita, kesedihan, kejutan, dan
kepercayaan.
Semua informasi ini
ditabulasikan dalam dataset sentimen, dan tidytext menyediakan fungsi
get_sentiments () untuk mendapatkan leksikon sentimen spesifik tanpa kolom yang
tidak digunakan dalam leksikon tersebut. Bagaimana leksikon sentimen ini
disatukan dan divalidasi? Mereka dibangun melalui crowdsourcing (menggunakan,
misalnya, Amazon Mechanical Turk) atau oleh tenaga kerja dari salah satu
penulis, dan divalidasi menggunakan beberapa kombinasi crowdsourcing lagi,
ulasan restoran atau film, atau data Twitter. Dengan informasi ini, kita
mungkin ragu untuk menerapkan leksikon sentimen ini ke gaya teks yang secara
dramatis berbeda dari apa yang telah mereka divalidasi, seperti fiksi narasi
dari 200 tahun yang lalu. Meskipun benar bahwa menggunakan leksikon sentimen
ini dengan, misalnya, novel Jane Austen mungkin memberi kita hasil yang kurang
akurat daripada dengan tweet yang dikirim oleh penulis kontemporer, kita masih
dapat mengukur konten sentimen untuk kata-kata yang dibagi di seluruh teks
leksikon dan teks.
4.2. Pengolahan Data
4.2.1. Sentiment
Analysis with Inner Join
Lihat kata-kata dengan skor sukacita dari
kamus NRC. Apa kata-kata sukacita yang paling umum di Emma? Pertama, kita perlu
mengambil teks dari novel dan mengubah teks menjadi format rapi menggunakan
unnest_tokens. Mari kita juga membuat beberapa kolom lain untuk melacak garis
dan bagian dari buku yang masing-masing berasal dari kata, kami menggunakan
group_by dan bermutasi untuk membangun kolom tersebut dengan kode program
sebagai berikut :
library(tidytext)
get_sentiments("afinn")
get_sentiments("bing")
library(janeaustenr)
library(dplyr)
library(stringr)
tidy_books <- austen_books() %>%
group_by(book) %>%
mutate(linenumber = row_number(),
chapter = cumsum(str_detect(text,
regex("^chapter [\\divxlc]", ignore_case = TRUE)))) %>%
ungroup() %>%
unnest_tokens(word, text)
nrcjoy <- get_sentiments("nrc")
%>%
filter(sentiment == "joy")
tidy_books %>%
filter(book == "Emma") %>%
inner_join(nrcjoy) %>%
count(word, sort = TRUE)
Gambar 4.4. Hasil dari Join by Word
library(tidyr)
janeaustensentiment <- tidy_books %>%
inner_join(get_sentiments("bing"))
%>%
count(book, index = linenumber %/% 80, sentiment)
%>%
spread(sentiment, n, fill = 0) %>%
mutate(sentiment = positive - negative)
library(ggplot2)
ggplot(janeaustensentiment, aes(index, sentiment,
fill = book)) +
geom_col(show.legend = FALSE) +
facet_wrap(~book, ncol = 2, scales =
"free_x")
Gambar 4.5. Sentiment berdasarkan narasi
dari Jane Austen’s novels
Kita dapat melihat pada
Gambar 4.5 bagaimana plot setiap novel berubah menjadi sentimen positif atau
negatif lebih jauh dari lintasan cerita.
4.2.2. Membandingkan Tiga
Sentimen
Dengan beberapa pilihan untuk leksikon
sentimen, Anda mungkin menginginkan beberapa informasi lebih lanjut tentang
mana yang sesuai untuk tujuan Anda. Mari kita gunakan ketiga leksikon sentimen
tersebut dan periksa bagaimana sentimen berubah melintasi busur naratif Pride
and Prejudice. Pertama, ayo gunakan filter () untuk memilih hanya kata-kata
dari satu novel yang kami minati.
pride_prejudice <- tidy_books %>%
filter(book == "Pride & Prejudice")
pride_prejudice
Gambar 4.6. Hasil filter buku dengan nama Pride
& Prejudice
afinn
<- pride_prejudice %>%
inner_join(get_sentiments("afinn"))
%>%
group_by(index
= linenumber %/% 80) %>%
summarise(sentiment
= sum(score)) %>%
mutate(method
= "AFINN")
bing_and_nrc
<- bind_rows(pride_prejudice %>%
inner_join(get_sentiments("bing"))
%>%
mutate(method
= "Bing et al."),
pride_prejudice
%>%
inner_join(get_sentiments("nrc")
%>%
filter(sentiment %in% c("positive",
"negative"))) %>%
mutate(method
= "NRC")) %>%
count(method,
index = linenumber %/% 80, sentiment) %>%
spread(sentiment,
n, fill = 0) %>%
mutate(sentiment
= positive - negative)
bind_rows(afinn,
bing_and_nrc)
%>%
ggplot(aes(index,
sentiment, fill = method)) +
geom_col(show.legend
= FALSE) +
facet_wrap(~method,
ncol = 1, scales = "free_y")
Gambar 4.7. Membandingkan
3 sentimen lexicons menggunakan Pride and Prejudice
Tiga leksikon yang berbeda
untuk menghitung sentimen memberikan hasil yang berbeda dalam arti absolut namun
memiliki lintasan relatif serupa melalui novel ini. Kita melihat penurunan dan
puncak yang sama dalam sentimen di tempat yang sama dalam novel, namun nilai
absolutnya berbeda secara signifikan. Leksikon AFINN memberikan nilai absolut
terbesar, dengan nilai positif tinggi. Leksikon dari Bing et al. memiliki nilai
absolut yang lebih rendah dan tampaknya memberi label blok yang lebih besar
dari teks positif atau negatif bersebelahan. Hasil NRC bergeser lebih tinggi
dibandingkan dengan dua lainnya, memberi label teks lebih positif, namun
mendeteksi perubahan relatif serupa dalam teks. Kami menemukan perbedaan yang
sama antara metode saat melihat novel lainnya; Sentimen NRC tinggi, sentimen
AFINN memiliki varian yang lebih banyak, Bing et al. Sentimen tampaknya
menemukan peregangan panjang dari teks serupa, namun ketiganya sepakat secara
kasar mengenai keseluruhan tren dalam sentimen melalui busur naratif.
4.2.3. Kata Positif dan Negatif yang Sering Muncul
Salah satu keuntungan memiliki bingkai data dengan
sentimen dan kata adalah bahwa kita dapat menganalisis jumlah kata yang
berkontribusi pada setiap sentimen. Dengan menerapkan hitungan () di sini
dengan argumen dari kedua kata dan sentimen, kita mengetahui berapa banyak
setiap kata berkontribusi pada setiap sentimen, dengan menggunakan kode program
berikut :
bing_word_counts
<- tidy_books %>%
inner_join(get_sentiments("bing"))
%>%
count(word,
sentiment, sort = TRUE) %>%
ungroup()
bing_word_counts
Gambar 4.8. Hasil dari Join by Word
bing_word_counts
%>%
group_by(sentiment)
%>%
top_n(10)
%>%
ungroup()
%>%
mutate(word
= reorder(word, n)) %>%
ggplot(aes(word,
n, fill = sentiment)) +
geom_col(show.legend
= FALSE) +
facet_wrap(~sentiment,
scales = "free_y") +
labs(y
= "Contribution to sentiment", x = NULL) + coord_flip()
Gambar 4.8. Grafik kontribusi Sentimen
Gambar 4.8 memungkinkan kita melihat anomali dalam
analisis sentimen; kata "miss" dikodekan sebagai negatif tapi
digunakan sebagai judul untuk wanita muda yang belum menikah dalam karya Jane Austen.
Jika sesuai untuk tujuan kita, kita dapat dengan mudah menambahkan
"rindu" ke daftar kata kunci stop-kata dengan menggunakan bind_rows
(). Kita bisa menerapkannya dengan strategi seperti ini.
custom_stop_words
<- bind_rows(data_frame(word = c("miss"), lexicon =
c("custom")), stop_words)
custom_stop_words
Gambar 4.9. Bind_rows ()
4.2.4. Wordclouds
Kami telah melihat bahwa
pendekatan penambangan teks yang rapi ini bekerja dengan baik dengan ggplot2,
namun data kami dalam format yang rapi juga berguna untuk plot lainnya. Misalnya,
perhatikan paket wordcloud, yang menggunakan grafis dasar R. Mari kita lihat
kata-kata yang paling umum dalam karya Jane Austen secara keseluruhan lagi,
tapi kali ini sebagai kata dalam Gambar 4.10.
Gambar 4.11. Kata positif dan negatif yang sering
muncul di novel Jane Austen
Ukuran teks kata pada Gambar 4.11, sebanding dengan
frekuensinya dalam sentimennya. Kita dapat menggunakan visualisasi ini untuk
melihat kata-kata positif dan negatif yang paling penting, namun ukuran
kata-katanya tidak sebanding dengan sentimen.
BAB V
KESIMPULAN
Analisa sentimen memberikan
cara untuk memahami sikap dan pendapat yang diungkapkan dalam teks. Ketika data
teks dalam struktur data rapi, analisis sentimen dapat diimplementasikan
sebagai inner join. Kita dapat menggunakan analisis sentimen untuk memahami
bagaimana perubahan narasi arc sepanjang jalurnya atau kata-kata apa dengan emosional
dan konten opini yang penting untuk teks tertentu. Analisa sentimen juga menghasilkan
beberapa class attribute, yaitu positif dan negatif yang menginformasikan data
dengan jelas.
0 komentar:
Posting Komentar