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

  © Watch and Learn Center

Design by Binar Novicha