• Tidak ada hasil yang ditemukan

Makalah Analisis Sentiment Tweet Indonesia

N/A
N/A
Protected

Academic year: 2018

Membagikan "Makalah Analisis Sentiment Tweet Indonesia"

Copied!
21
0
0

Teks penuh

(1)

MAKALAH

ANALISIS SENTIMEN TWEET

Oleh :

Agung Sulistyo (14.01.53.0037) Tidy Yuniardy S (14.01.53.0003)

Indra Dwi H (14.01.53.0049)

FAKULTAS TEKNOLOGI INFORMASI UNIVERSITAS STIKUBANK (UNISBANK)

(2)

BAB I PENDAHULUAN

1.1 LATAR BELAKANG

Twitter adalah layanan jejaring sosial dan mikroblog yang memungkinkan penggunanya untuk mengirim dan membaca pesan atau informasi berbasis teks hingga 140 karakter, yang dikenal dengan sebutan kicauan (tweet).Sebuah tweet dapat mengekspresikan sebuah perasaan atau keadaan dari pengguna Twiter.Informasi yang beredar juga sangat banyak mulai dari berita, opini, komentar, kritik dan semuanya ada yang bersifat positif, negatif dan netral. Pada Twitter terdapat istilah bernama tweet yang merupakan sebuah pesan atau status yang dibuat oleh penggunanya.

Analisis sentimen merupakan bagian dari Natural Language Processing (NLP) dan Machine Learning. Cara kerjanya adalah dengan melakukan klasifikasi terhadap opini positif maupun negatif. Analisis sentimen menganalisa pendapat orang, evaluasi,sikap, penilaian, sentimen, dan emosi terhadap entitas sepertimasalah, produk, jasa, organisasi, individu, peristiwa atau suatu topik.Sentimen analisis ini memiliki tujuan untuk menentukan sentimen publik terhadap suatu objek tertentu yang disampaikan melalui twitter dengan menggunakan bahasa indonesia agar dapat membantu usaha untuk melihat opini publik terkait dengan objek tersebut sebagai bahan

(3)

BAB II

TINJAUAN PUSTAKA

2.1 KAJIAN DEDUKTIF 2.1.1 Analisis Sentimen

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

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.

2.1.2 Analisis Opini atau Sentimen

(4)

paling terbantu, yaitu dalam dunia web-online (mengenai pelayan, maupun bagaimana kita dalam melihat suatu peristiwa dan mengambil keputusan atau opini pribadi mengenai suatu kejadian. Dalam sosial media data yang ditampung mengenai opini berkembang sangat pesat, karena opini lebih cepat disalurkan dan mudah melakukan akses ke opini orang lain oleh karena itu analisis sentiment sangat diperlakukan. Analisis sentiment merupakan tipologi area dari ilmu Natural Language Processing yang bergerak secara kontinum mulai dari level/tahap klasifikasi teks, sampai mereview polaritasnya. Riset yang paling sering dilakukan terhadap analisis Twitter adalah pada tahap klasifikasi.

2.2 KAJIAN INDUKTIF

(5)

Setelah klasifikasi, dibuat web framework pembuatan visualisasi berupa wordcloud dan grafik streamgraph yang ditampilkan secara interaktif dengan aplikasi berbasis web yaitu R Shiny.

(6)

BAB III

METODE PENELITIAN

3.1 OBJEK PENELITIAN

Objek dari analisis sentimen tweet adalah Starbucks

3.2 METODE PENGUMPULAN DATA

Berikut adalah metode pengumpulan data dalam penelitian ini 3.2.1 Studi Literatur

Pengumpulan data dilakukan dengan cara mempelajari, meneliti dan menelaah berbagai literatur yang bersumber dari buku, situs internet, jurnal ilmiah, dan sumber – sumber lainnya yang berkaitan dengan penelitian yang dilakukan.

3.2.2 Pengumpulan Data Twitter

Pengumpulan data twitter dilakukan dengan menggunakan sumber data primer yang diambil menggunakan Twitter Search API dengan memasukan keyword yang berhubungan dengan objek

3.2.3 Observasi

Observasi yang dilakukan ialah mengamati data tweet yang akan di analisis yang bersinggungan dengan objek penelitian.

3.3 JENIS DATA

Jenis data yang digunakan dalam penelitian ini adalah data primer yaitu tweet yang berhubungan dengan objek penelitian (Starbucks) dari sosial media Twiitter. Pengumpulan data menggunakan Twitter Search API dengan memasukan keyword – keyword yang berhubungan dengan objek yang dikombinasikan dengan kata – kata sentimen.

3.4 ALUR PENELITIAN

(7)

Gambar 3.1 Alur Analisis Sentimen

Berikut penjelasan dari alur analisis sentimen diatas : 1. Identifikasi Tweet

Identifikasi tweet merupakan tahapan awal yang dilakukan pada penelitian ini. Pada tahap ini yang dilakukan adalah melakukan pengidentifikasian tweet yang akan di analisis yaitu tweet yang bersinggungan dengan Starbucks

2. Penerapan Metode Algoritma Information Retrieval

Pada tahap ini tweet yang sudah diidentidikasi kemudian diterapkan algoritma information retrieval untuk mengetahui tweet mana yang mengandung sentimen dengan yang tidak, yang nantinya akan digunakan untuk perhitungan pada penerapan metode algoritma extraxtion

3. Penerapan Metode Algoritma Extraction

Pada tahap ini tweet yang sudah di-retreve kemudian diekstrak menggunakan algoritma extrction berupa klasifikasi yang sudah ditentukan

4. Pengujian Tingkat Akurasi

Pada tahap ini tweet yang sudah memiliki kelas masing – masing diuji

(8)

BAB IV

HASIL DAN PEMBAHASAN

4.1 IMPLEMENTASI

Dalam menjalankan program kita perlu melakukan Installasi package – package yang dibutuhkan sesuai kebutuhan pada penelitian ini.

install.packages("twitteR")

(9)

Gambar 1 (R Console)

Proses installasi package dari local filesGambar 1 (R Console), file dapat di download melalui mirror atau dari repositori yang tersedia. Setelah terinstall panggil library yang dibutuhkan.

Untuk dapat mengakses data dari twitter kita perlu memasukan(“consumer key”, “consumer secret key”, “access token”,”access token key”) dari aplikasi yang dibuat di apps.twitter.com

setup_twitter_oauth("uJ5u5Y4k69KCnSXIE1heiN6KP",

"Jt7oqVEd5Bd0owEFJguiY4gtMv3P8E8P6SHLMfphI3s4IHT3cN",

"514460550-BTjSyvVg01i9l7ADeWRRry1udTBWXa6ec2dcbx6q","OyGA7Q8uG bb8y2hay1Y71bwt1zprGZXTBT8NqVfyD1UQH")

Setelah memasukan Twitter Aouth, jalankan program satu persatu

# 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)

(10)

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

# 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

(11)

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))))

(12)

Untuk menampilkan Grafik Emotion CategoriesScript Programnya sebagai berikut: # 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")

Gambar 6 (R Graphics)

(13)

Gambar 7 (R Graphics)

# 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))

(14)

tdm = as.matrix(tdm) colnames(tdm) = emos

Untuk menampilkan World Cloud Script Programnya sebagai berikut: # comparison word cloud

comparison.cloud(tdm, colors = brewer.pal(nemo, "Dark2"),

scale = c(3,.5), random.order = FALSE, title.size = 1.5)

(15)

BAB V

KESIMPULAN DAN REKOMENDASI

5.1 KESIMPULAN

 Penelitianmenggunakanmetode clustering inicukupefektifuntukmengetahui topic – topic apasaja yang sedangramai di perbincangkan

 Dari penelitian / pembahasaninitentangmenganalisis dan mengklasifikasi sentimen melalui tweet di twitter dengan objek Indonesia, bahwa opinipositifnegatifatau sentiment masyarakatsangatbermacam – macam , darisegiemoticon yang ada sepertiyang terlihatpadaGrafik Emotion (Gambar 6), Grafik Polarity (Gambar 7), dantampilan GrafikWordCloud (Gambar 8).

5.2 REKOMENDASI

 Untukperusahaan / instansi / komunitas yang sedangmencari data – data atauinformasimengenaitempat – tempat yang akandikunjungi , bisamenggunakanmetodeAnalisisSentimen Tweet melalui media Twitter, karenacukupefektifuntukmencari data - data yang di inginkan.

 UntukpenelitianlanjutandanpembahasanlanjutandenganmetodeAnalisisSentime n Tweetinidiharapkanuntukterusmelakukanpembaruansistemdanpembaruan data – data yangakan di kerjakandalammetodeAnalisisSentimen Tweet ini,

karenaopiniatau sentiment

(16)

DAFTAR PUSTAKA

Eka Retnawijayati, F. E. (2016). Analisis Sentimen Pada Data Twitter dengan Menggunakan Text Mining terhadap Suatu Produk. Palembang: Universitas Bina Darma.

Nuke Y A Faradhillah, R. P. (2016). Eksperimen Sistem Klasifikasi Analisa Sentimen Twitter Pada Akun Resmi Pemerintah Kota Surabaya Berbasis Pembelajaran Mesin. Surabaya: Institut Teknologi Sepulih November.

Wibawa, B. (2018, Januari 8). Tugas Mata Kuliah Sistem Temu Kembali Informasi. Diambil kembali dari bachtiarwibawa.blogspot.co.id: http://bachtiarwibawa.blogspot.co.id/2016/12/tugas-mata-kuliah-sistem-temu-kembali.html

Kungfumas Wordpress. 2017. Analisa sentiment menggunakan R. (online)

(17)

LAMPIRAN

Source Code Analisa Sentiment Tweet

install.packages("twitteR")

(18)

some_tweets = searchTwitter("indonesia", 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

(19)

# 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

(20)

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"))

(21)

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"),

Gambar

Gambar 3.1 Alur Analisis Sentimen
Gambar 1 (R Console)
Gambar 3 (R Console)
Gambar 6 (R Graphics)
+3

Referensi

Dokumen terkait

Teknik analisis data menggunakan teknik kuantitatif untuk melihat seberapa besar perhitungan pengendalian persediaan bahan baku dengan EOQ, dan dengan kualitatif

Menurut Griffin (2015) dalam bukunya berpendapat bahwa manajemen adalah proses perencanaan, proses organisasi, proses koordinasi dan proses kontrol terhadap sumber daya untuk

1) Gaya-gaya dalam yang timbul pada kabel semakin besar dengan urutan formasi kabel tipe fan-semiharf-harf. Panjang kabel semakin membesar pada formasi kabel tipe harf-

6 Taman Pendidikan Al-Quran (TPQ) merupakan lembaga non formal yang memiliki peranan besar dalam membangun kemampuan spiritual masyarakat sejak dini, dengan

Dari hasil pengamatan dan observasi yang dilakukan peneliti kepada petugas rekam medis di ruang rekam medis dikatakan untuk SOP resume medis yang ada pada rumah

Berdasarkan hasil pengamatan yang penulis dapatkan ketika melaksanakan praktek pengalaman lapangan (PPL) di GPIB Jemaat Tamansari Salatiga, yang menjadi

Metode kegiatan yang akan dilakukan yaitu dengan metode ceramah, tanya jawab, demonstrasi, dan praktek.Dari hasil kegiatan penyuluhan mengenai “Pendidikan Kesehatan Pada Anak” di SD

Namun demi- kian, belum ada fakta yang teruji untuk membuktikan bahwa akrila- mida dalam makanan berpotensi menyebabkan kanker pada manusia, karena pemberian makanan yang