Anda di halaman 1dari 37

JURNAL

Manajemen Proyek Perangkat Lunak

Analisis Sentimen Pada Jasa Online Travel Agent

Tiket.com dan Pegipegi.com Menggunakan Metode Naïve Bayes

Disusun oleh:
Tan Anugrah Ramadhani
18330119

PROGRAM STUDI S-1 TEKNIK INFORMATIKA

FAKULTAS TEKNIK

UNIVERSITAS JANABADRA

Yogyakarta

2020
Jemmy Edwin Bororing1, Tan Anugrah Ramadhani2

Program Studi Teknik Informatika, Fakultas Teknik, Universitas Janabadra

Email: jemmy@janabadra.ac.id, tananugrahr@student.janabadra.ac.id

Abstrak

Bangsa yang maju adalah bangsa yang memiliki sistem transportasi yang
berkualitas. Sistem transportasi yang berkualitas diperlukan untuk menunjang
berkembangnya sektor lain guna mendorong perkembangan daerah tertinggal
(Adisasmita, 2011). Pengguna internet mendorong perkembangan digital yang
berpengaruh terhadap semua bidang kehidupan sehari-hari tak terkecuali pada
bidang jasa dan transportasi di Indonesia Saat ini. Agen Travel adalah jasa yang
menyediakan berbagai pelayanan kepada para konsumen yang berhubungan
dengan tiket dan jasa pelayanan perjalanan. perkembangan zaman mengubah
proses bisnis mereka dari cara konvensional menuju digital yang dimana layanan
informasi jual beli dan pembayaran terjadi melalui online. Di Indonesia saat ini
banyak aplikasi online travel agent yang berkembang salah satunya adalah
tiket.com dan pegipegi.com yang menyediakan jasa tiketing secara online untuk
memudahkan proses transaksi. Analisis Sentimen biasa di sebut juga dengan
opinion mining yaitu sebuah proses yang dimana bertujuan untuk menemukan
pendapat pengguna tentang topik yang disampaikan pengguna apakah pendapat
tersebut positif , netral atau negatif.

Kata kunci: Tiket.com,Pegipegi.com, Analisis Sentimen, Klasifikasi, Naive


Bayes, Bahasa R.

1.
1. Pendahuluan

1.1 Latar Belakang

Naiknya angka pengguna internet mendorong perkembangan


digital yang berpengaruh terhadap semua bidang kehidupan sehari-hari tak
terkecuali pada bidang transportasi di Indonesia. Pengguna internet
mendorong perkembangan digital yang berpengaruh terhadap semua
bidang kehidupan sehari-hari tak terkecuali pada bidang jasa dan
transportasi di Indonesia Saat ini sektor transportasi di Indonesia telah
mulai memanfaatkan internet guna menunjang sistem transportasi yang
lebih berkualitas. Bangsa yang maju adalah bangsa yang memiliki sistem
transportasi yang berkualitas. Sistem transportasi yang berkualitas
diperlukan untuk menunjang berkembangnya sektor lain guna mendorong
perkembangan daerah tertinggal (Adisasmita, 2011).

Agen Travel adalah jasa yang menyediakan berbagai pelayanan


kepada para konsumen termasuk pembelian tiket pesawat, booking, dan
reservasi hotel atau resort, membuat jadwal rencana perjalanan wisata juga
memberikan informasi akurat terkait produk jasa yang akan di beli oleh
konsumen yang sekarang sudah berkembang mengikuti perkembangan
zaman mengubah proses bisnis mereka dari cara konvensional menuju
digital yang dimana layanan informasi jual beli dan pembayaran terjadi
melalui online Di Indonesia saat ini sudah banyak aplikasi online travel
agent yang berkembang salah satunya adalah tiket.com dan pegipegi.com
yang menyediakan jasa tiketing secara online untuk memudahkan
masyarakat.

Analisis Sentimen biasa di sebut juga dengan opinion mining yaitu


sebuah proses yang dimana bertujuan untuk menemukan pendapat
pengguna tentang topik yang disampaikan pengguna apakah pendapat
tersebut positif atau negatif, sehingga nantinya data yang didapat dari
review pengguna dapat memberikan informasi kepada kita yang mana
topik tersebut dikategorikan baik atau buruk.

Berdasarkan latar belakang diatas, maka penelitian yang dilakukan


ini nantinya untuk mencari sentimen pengguna menggunakan metode
naïve bayes untuk mengetahui bagaimana melihat kepuasan pengguna
layanan online travel agent dari tiket.com dan pegipegi.com dalam
memberikan layanan terhadap pengguna aplikasi.

1.2 Rumusan Masalah

Berdasarkan Latar belakang tersebut beberapa permasalahan yang


dirumuskan untuk penelitian ini adalah:

1 Bagaimana melakukan analisis sentiment aplikasi tiket.com dan


pegipegi.com dari komentar pada Google Play Store menggunakan
metode naïve bayes classifier.

2 Bagaimana melihat sentiment pengguna aplikasi tiket.com dan


pegipegi.com dari komentar di Google Play Store menggunakan
metode naïve bayes berdasarkan kategori kelas positif , negative dan
netral.

1.3 Tujuan Penelitian

Tujuan dari penelitian ini yaitu untuk mengetahui sejauh mana


tingkat kepuasan pengguna dari layanan Aplikasi Tiket.com dan
pegipegi.com melaui komentar dari Google Play Store menggunakan
metode Naïve Bayes.
2. Tinjauan Pustaka

2.1 Penelitian Terkait

Beberapa penelitian berkaitan dengan topik analisis sentimen


sudah banyak dilakukan, diantaranya Penelitian yang pernah dilakukan
oleh Muljono (2018) Analisa Sentimen Untuk Penilaian Pelayanan Situs
Belanja Online Menggunakan Algoritma Naive Bayes, Mempresentasikan
analisis sentimen terhadap data opini di twitter di beberapa situs online
marketplace di Indonesia. Metode untuk melakukan analisis sentimen
menggunakan algoritma pengklasifikasi Naive Bayes, yang terdiri dari dua
tahap yang dilakukan, yaitu tahap training dan tahap testing. Untuk
menentukan kinerja dari mesin pengklasifikasi Naive Bayes dalam proses
klasifikasi dilakukan eksperimen menggunakan 10 kali validasi silang (10-
fold cross validation). Dari hasil eksperimen tersebut didapatkan rata-rata
akurasi sebesar 93.33%.

Penelitian yang dilakukan oleh Didik (2017) dengan judul Analisis


Sentimen Pada Jasa Ojek Online Menggunakan Metode Naive Bayes,
Penelitian ini menghasilkan sebuah sistem analisis sentimen pada jasa ojek
online menggunakan metode Naïve Bayes. Proses penelitian ini
menggunakan masukkan berupa tweet mention jasa ojek online di Twitter.
Hasil dari pengujian, sistem mampu mengklasifikasi sentimen
menggunakan Naïve Bayes dengan akurasi yang dihasilkan sebesar 80%
berdasarkan 800 data tweet yang terdiri atas 300 data latih dan 500 data
uji. Terdapat kesalahan pada data uji fitur yang muncul tidak sesuai
dengan klasifikasinya. Akurasi klasifikasi dapat ditingkatkan dengan
menambah jumlah data latih.

Penelitian yang dilakukan oleh Sunardi(2018) dengan judul


Analisis Sentimen Menggunakan Metode Naive Bayes Classifier Pada
Angket Mahasiswa dapat disimpulkan bahwa dengan menggunakan
metode naive bayes classifier, kita dapat melakukan klasifikasi data secara
otomatis dari angket mahasiswa menjadi kelas positif, negatif dan netral
dengan tingkat akurasi yang tinggi yaitu precision 75%, recall 75% dan
accuracy 80%. Pengembangan lebih lanjut, dapat dilakukan penambahan
proses pencarian data angket mahasiswa secara otomatis dengan
menggunakan query, hal ini dilakukan agar tidak semua data angket
mahasiswa dilakukan klasifikasi, tetapi hanya yang dibutuhkan oleh user
saja.

Pada penelitian ini bertujuan mengetahui gambaran umum persepsi


pengguna aplikasi pegipegi.com dan Tiket.com akan kepuasan sistem yang
diberikan oleh aplikasi tersebut dengan menggunakan Algoritma Naive
Bayes.

2.2 Landasan Teori

2.2.1 Analisis Sentimen

Analisis sentimen merupakan salah satu cabang ilmu dari text


mining, natural language program, dan artificial intelegence. Proses
yang dilakukan oleh analisis sentimen untuk memahami,
mengekstrak, dan mengolah data teks secara otomatis sehingga
menjadi suatu informasi yang bermanfaat. Selain itu analisis
sentimen merupakan bidang ilmu yang menganalisis pendapat, sikap,
evaluasi, dan penilaian terhadap suatu peristiwa, topik, organisasi,
maupun perseorangan (Luqyana, Cholissodin, & Perdana, 2018).

2.2.2 Web Scraping

Web Scraping (Turland, 2010) adalah proses pengambilan


sebuah dokumen semi-terstruktur dari internet, umumnya berupa
halaman- halaman web dalam bahasa markup seperti HTML atau
XHTML, dan menganalisis dokumen tersebut untuk digunakan bagi
kepentingan lain. Menurut Josi (2014), web scraping memiliki
sejumlah langkah yaitu sebagai berikut :

1 Create Scraping Template : Pembuat program mempelajari


dokumen HTML dari website yang akan diambil informasinya
untuk tag HTML yang mengapit informasi yang diinginkan.

2 Explore Site Navigation : Pembuat program mempelajari teknik


navigasi pada website yang akan diambil informasinya untuk
ditirukan pada aplikasi web scraper yang akan dibuat.

3 Automate Navigation and Extraction : Berdasarkan informasi


yang didapat pada langkah 1 dan 2 di atas, aplikasi web scraper
dibuat untuk mengotomatisasi pengambilan informasi dari
website yang ditentukan.

4 Extracted Data and Package History : Informasi yang didapat


dari langkah 3 disimpan dalam tabel atau tabel-tabel database

2.2.3 Google Play Store

Google Play adalah layanan konten digital milik Google yang


melingkupi toko Online untuk produk-produk seperti musik/lagu,
buku, aplikasi, permainan, ataupun pemutar media berbasis Cloud.

2.2.4 Data Miner

Data Miner adalah ekstensi Google Chrome yang membantu


untuk mengekstrak data dari halaman web dan menjadi file CSV
atau spreadsheet Excel.

2.2.5 Naïve Bayes Classifier


Bayes Classifier merupakan sebuah metoda klasifikasi yang
berakar pada teorema Bayes. Metode pengklasifikasian dengan
menggunakan metode probabilitas dan statistik yang dikemukakan
oleh ilmuwan Inggris Thomas Bayes , yaitu memprediksi peluang di
masa depan berdasarkan pengalaman di masa sebelumnya sehingga
dikenal sebagai Teorema Bayes . Ciri utama dari Naïve Bayes
Classifier ini adalah asumsi yang sangat kuat (naïf) akan
independensi dari masing- masing kondisi / kejadian.

Naïve Bayes Classifier bekerja sangat baik dibanding dengan model


classifier lainnya. Hal ini dibuktikan oleh Xhemali , Hinde Stone
dalam jurnalnya “Naïve Bayes vs. Decision Trees vs. Neural
Networks in the Classification of Training Web Pages” mengatakan
bahwa “Naïve Bayes Classifier memiliki tingkat akurasi yang lebih
baik dibanding model classifier lainnya”. Berikut rumus yang
digunakan :

Gambar 2.2.1 Rumus Naïve Bayes


Keterangan :
X :Data dengan class yang belum diketahui
y : Hipotesis data X merupakan suatu class spesifik
P(y|X): Probabilitas Hipotesis berdasarkan kondisi X (posteriori
probability )
P(y) : Probabilitas Hipotesis (posteriori probability)
P(X|y): probabilitas X berdasar kondisi pada hipotesis y

2.2.6 Program R
R (juga dikenal sebagai GNU S) adalah bahasa pemrograman
dan perangkat lunak untuk analisis statistika dan grafik. R dibuat
oleh Ross Ihaka dan Robert Gentleman di Universitas Auckland,
Selandia Baru, dan kini dikembangkan oleh R Development Core
Team, di mana Chambers merupakan anggotanya. R dinamakan
sebagian setelah nama dua pembuatnya (Robert Gentleman dan Ross
Ihaka), dan sebagian sebagian dari permainan nama dari S.

R adalah suatu sistem untuk analisis data yang termasuk kelompok


software statistik open source yang tidak memerlukan lisensi atau
gratis, yang dikenal dengan freeware

2.2.7 R Studio

R studio adalah sebuah perangkat lunak yang biasa digunakan


untuk analisis statistic baik itu kualitatif ataupun kuantitatif. R studio
pada pengoperasiannya berbasis script dengan formula atau kode
tertentu yang dapat menghasilkan hasil analisis dalam bentuk teks,
tabel juga gambar (berbagaimacam diagram, peta, dsb).

Kelebihan lain dari R studio adalah merupakan perangkat lunak


yang gratis (open source) sehingga hasil analisis baik teks, tabel
ataupun gambar dapat digunakan pada publikasi ilmiah. Selain itu R
studio ini sudah compatible dengan data yang pengambilannya atau
entri datanya menggunakan ENKETO smart paper atau ODK (Open
Data Kit).
Gambar 2.2.2 Tampilan R Studio
3. Metodologi Penelitian

3.1 Metode Penelitian

Untuk menghasilkan sistem yang dimaksud terdapat 4 proses besar


yang harus dilakukan dalam penelitian ini. Tahapan yang dilakukan dalam
penelitian dapat dilihat pada gambar 1

Gambar 3.1 Tahapan Metode Penelitian

3.1.1 Pengumpulan Data

Data masukan yang akan digunakan bersumber dari komentar


dari situs Google Playstore aplikasi tiket.com dan pegipegi.com.
Dari data tersebut, sebagian menjadi data latih dan sebagian menjadi
data uji. Kedua data tersebut dilakukan pre- processing terlebih
dahulu untuk membuat teks menjadi bersih.

3.1.2 Pra Pengolahan (Pre-Processing) Data

Data komentar dari pengguna aplikasi di halaman tiket.com dan


pegipegi.com yang telah diambil dari Google Playstore masih berupa
data mentah maka dari itu dilakukan tahap pre-processing untuk
mendapatkan data bersih agar dapat diproses ke tahap selanjutnya.
Tahapan yang dilakukan adalah :

1 Case Folding
Dalam penulisan komentar, pasti terdapat perbedaan bentuk
huruf, tahapan ini merupakan proses merubah bentuk huruf
menjadi huruf kecil (lower case) atau dapat disebut juga
penyeragaman bentuk huruf.
2 Cleansing
Cleansing adalah tahap dimana karakter selain huruf (abjad a-z)
dihilangkan dan dianggap delimite
3 Stemming
Stemming adalah tahapan untuk membuat kata berimbuhan
menjadi kata dasar sesuai dengan aturan Bahasa Indonesia yang
benar
4 Filtering
Filtering adalah tahap mengambil kata-kata penting dari hasil
token. Bisa menggunakan algoritma stoplist (membuang kata
yang kurang penting) atau wordlist (menyimpan kata penting).
Stoplist/stopword adalah kata-kata yang tidak deskriptif yang
dapat dibuang. Contoh stopwords adalah “yang”, “dan”, “di”,
“dari”, “dengan” dan seterusnya (Triawati, 2009).

3.1.3 Klasifikasi Menggunakan Algoritma Naive Bayes

Klasifikasi adalah proses menemukan model dari sebuah data.


Tujuan dari klasifikasi adalah untuk mengambil suatu keputusan
dengan memprediksi suatu kasus berdasarkan hasil klasifikasi yang
diperoleh. Naïve Bayes adalah algoritma klasifikasi yang mudah,
sederhana dan sering digunakan untuk klasikasi dokumen. Dalam
proses membangun sistem pengklasifikasi menggunakan NB
terdapat 2 tahapan yang dilakukan. Tahap pertama adalah proses
pelatihan (training) dan tahap yang kedua adalah proses pengujian
(testing).
4. Hasil dan Pembahasan

4.1 Pengumpulan Data

Data yang dikumpulkan yaitu melalui komentar di Google Playstore


dari pengguna aplikasi tiket.com dan pegipegi.com yang dimana isi
komentar tersebut adalah ulasan dari penggunaan layanan oleh konsumen
terhadap aplikasi tersebut. Proses pengambilan data dari web Google
Playstore menggunakan software Data Miner. Data yang diambil adalah
nama akun, komentar dan tanggal komentar tersebut. Kemudaian data
disimpan dalam format xlsx. Berikut merupakan contoh hasil crawling
data menggunakan aplikasi data miner yang diambil pada tanggal 11
Oktober 2020 pada aplikasi tiket.com dan pegipegi.com di Google Play
Store beserta komentar dari user terhadap aplikasi tersebut:

Pada Gambar 4.1 data yang telah di scraping dari web google Play
store akan masuk pada data collection pada akun milik kita. Data yang
telah kita scraping menggunakan aplikasi data miner dapat di download
dengan eksistensi CSV ataupun XLS.

Gambar 4.1 Pengambilan data Tiket.com


Pada Gambar 4.2 contoh pengambilan data pegipegi.com yang telah
disimpan

pada data collection pada akun data miner yang siap untuk diunduh.

Gambar 4.2 Pengambilan data Pegipegi.com

Data Tiket.com dan Pegipegi.com yang dikumpulkan diambil dari


Google Play Store Terdapat pada table 4.1 berikut :

Tabel 4.1 Data Tiket

Data Ke- Nama Komentar Tanggal


24 Leo L. D. Aplikasi yg sangat bagus utk October 4,
Saragih booking flight, hotel, dll. Selalu 2020
menjadi pilihan pertama bagi saya
utk hal-hal tersebut diatas
60 Kharisma Aplikasi sering eror, "SESIMU September
P. Sukanto SUDAH HABIS, KAMI HARUS 25, 2020
MEMBAWAMU KE HOMEPAGE,
MAAF YA", padahal gak ngecek
apa2
242 Angga Bisa nyicil pakai kartu kredit, bunga August 14,
Raditya 0% 😁 2020

Tabel 4.2 Data Pegipegi

Data Ke- Nama Komentar Tanggal


110 Anugrah Tidak jelas proses refund, August 7,
Hajrianto meskipun ada wabah COVID-19 tp 2020
tetap tidak bisa ditolerir, hampir 4
bulan tidak ada kejelasan,, tidak
ada transparansi,, CS tidak
membantu,, parah sih ini,,
sekarang saya hubungi tidak bisa,
mungkin nomor saya di block,,, 🤧
142 Hindami Katanya cs 24 jam (by WhatsApp), July 10,
Zein ternyata jam 8 malem udah pada 2020
bobok zzz, cukup pertama dan
terakhir booking hotel pakai app ini
👍🏻
230 Tirza PEGIPEGI SUCKS! Ga bisa March 30,
Lenny kompromi keadaan dunia yg lagi 2020
covid19, cuma mikirin untung! Gw
bakal ketawa paling kenceng nanti
waktu liat ni apps bangkrut!
Bangke!
4.2 Pre-processing Data

Setelah data dikumpulkan, data yang diambil berjumlah 1000 data


komentar yang kemudian dilakukan persiapan pengolahan data sebelum
masuk ke dalam proses klasifikasi. Tahapan persiapan pengolahan data
yaitu sebagai berikut:

1 Casefolding
Casefolding yaitu dengan memproses data dan mengubah seluruh data
mentah menjadi huruf-huruf kecil.

Berikut merupakan syntax casefolding :

#mengubah variabel ke dalam bentuk corpus_

docs <- Corpus(VectorSource(tiket_ind$komentar))

#case folding

docs <- tm_map(docs, content_transformer(tolower))

inspect(docs[1:11])

inspect(docs[23])

Tabel 4.3 Hasil Tahapan Casefolding Tiket.com

Hasil Casefolding :

Data Awal Hasil Casefolding


Aplikasi yg sangat bagus utk aplikasi yg sangat bagus utk
booking flight, hotel, dll. Selalu booking penerbangan, hotel,
menjadi pilihan pertama bagi saya dll. selalu menjadi pilihan
utk hal-hal tersebut diatas pertama bagi saya utk hal-hal
tersebut diatas
Aplikasi sering eror, "SESIMU aplikasi sering eror, "sesimu
SUDAH HABIS, KAMI HARUS sudah habis, kami harus
MEMBAWAMU KE HOMEPAGE, membawamu ke homepage,
MAAF YA", padahal gak ngecek maaf ya", padahal gak ngecek
apa2 apa2
Bisa nyicil pakai kartu kredit, bunga bisa nyicil pakai kartu kredit,
0% 😁 bunga 0% \U0001f601

Tabel 4.4 Hasil Tahapan Casefolding Pegipegi.com

Data Awal Hasil Casefolding


Tidak jelas proses pengembalian tidak jelas proses
dana, meskipun ada wabah COVID- pengembalian dana, meskipun
19 tp tetap tidak bisa ditolerir, ada wabah covid-19 tp tetap
hampir 4 bulan tidak ada tidak bisa ditolerir, hampir 4
kejelasan ,, tidakada bulan tidak ada kejelasan ,,
tidak ada transparansi ,, cs
transparansi ,, CS tidak
tidak membantu ,, parah sih
membantu ,, parah sih ini ,,
ini ,, sekarang saya hubungi
sekarang saya hubungi tidak bisa,
tidak bisa, mungkin nomor
mungkin nomor saya di blok ,,, 🤧
saya di blok ,,, \U0001f927
Katanya cs 24 jam (by WhatsApp), katanya cs 24 jam (by
ternyata jam 8 malem udah pada whatsapp), ternyata jam 8
bobok zzz, cukup pertama dan malem udah pada bobok zzz,
terakhir booking hotel pakai app ini cukup pertama dan terakhir
🏻👍🏻
👍👍 booking hotel pakai app ini
\U0001f44d\U0001f3fb
PEGIPEGI SUCKS! Ga bisa pegipegi sucks! ga bisa
kompromi keadaan dunia yg lagi kompromi keadaan dunia yg
covid19, cuma mikirin untung! Gw lagi covid19, cuma mikirin
bakal ketawa paling kenceng nanti untung! gw bakal ketawa
waktu liat aplikasi ni paling kenceng nanti waktu liat
bangkrut! Bangke! aplikasi ni bangkrut! bangke!

2 Cleansing

Cleansing berfungsi untuk menghilangkan seluruh tanda baca.


Berikut merupakan syntax cleansing :

#cleansing
docs <- Corpus(VectorSource(temp))
#1. menghilangkan url
inspect(docs[1:11])
docs <-
read.csv("~/Desktop/Tiket/casefoldingtiket_ind.csv")
inspect(docs[23])

docs <- Corpus(VectorSource(docs$text))


inspect(docs[59])

removeURL <- function(x) gsub ("http[^[[:space:]]*","",x)


inspect(docs[241])

docs <- tm_map(docs, content_transformer(removeURL))

inspect(docs[1:11])

#2. menghilangkan mention @ dan hashtag #

temp <- as.matrix(docs$content)

for (row in 1:nrow(temp)) {

temp[row] <- replace_tag(temp[row], pattern = "@([a-z0-


9_?]+)", replacement = "")

temp[row] <- replace_hash(temp[row], pattern = "#([a-


z0-9_?]+)", replacement = "")

docs <- Corpus(VectorSource(temp))

#3. menghilangkan tanda / dan |

toSpace <- content_transformer(function (x , pattern )


gsub(pattern, " ", x))

docs <- tm_map(docs, toSpace, "/")


Hasil Cleansing :

Tabel 4.5 Hasil Tahapan Cleansing Tiket.com

Data Casefolding Hasil Cleansing


aplikasi yg sangat bagus utk aplikasi yg sangat bagus utk
booking penerbangan, hotel, dll. booking penerbangan hotel dll
selalu menjadi pilihan pertama bagi selalu menjadi pilihan pertama
saya utk hal-hal tersebut diatas bagi saya utk hal hal tersebut
diatas
aplikasi sering eror, "sesimu sudah aplikasi sering eror sesimu
habis, kami harus membawamu ke sudah habis kami harus
homepage, maaf ya", padahal gak membawamu ke homepage
ngecek apa2 maaf ya padahal gak ngecek
apa
bisa nyicil pakai kartu kredit, bunga bisa nyicil pakai kartu kredit
0% \U0001f601 bunga

Tabel 4.6 Hasil Tahapan Cleansing Pegipegi.com

Data Casefolding Hasil Cleansing


tidak jelas proses pengembalian tidak jelas proses
dana, meskipun ada wabah covid- pengembalian dana meskipun
19 tp tetap tidak bisa ditolerir, ada wabah covid tp tetap tidak
hampir 4 bulan tidak ada kejelasan bisa ditolerir hampir bulan
,, tidak ada transparansi ,, cs tidak tidak ada kejelasan tidak ada
membantu ,, parah sih ini ,, transparansi cs tidak membantu
sekarang saya hubungi tidak bisa, parah sih ini sekarang saya
mungkin nomor saya di blok ,,, hubungi tidak bisa mungkin
\U0001f927 nomor saya di blok
katanya cs 24 jam (by whatsapp), katanya cs jam by whatsapp
ternyata jam 8 malem udah pada ternyata jam malem udah pada
bobok zzz, cukup pertama dan bobok zzz cukup pertama dan
terakhir booking hotel pakai app ini terakhir booking hotel pakai
\U0001f44d\U0001f3fb app ini
pegipegi sucks! ga bisa kompromi pegipegi sucks ga bisa
keadaan dunia yg lagi covid19, kompromi keadaan dunia yg
cuma mikirin untung! gw bakal lagi covid cuma mikirin untung
ketawa paling kenceng nanti waktu gw bakal ketawa paling
liat aplikasi ni bangkrut! bangke! kenceng nanti waktu liat
aplikasi ni bangkrut bangke

3 Stemming

Stemming adalah tahapan untuk membuat kata berimbuhan


menjadi kata dasar, Pada tahap ini menggunakan library katadasaR
yang dibuat oleh Nurandi. Berikut tabel yang menunjukkan kata yang
diolah menggunakan library katadasaR:

Berikut syntax untuk melakukan tokenizing dan Stemming :

#(Stemming)

#perulangan untuk memecah data review menjadi per


kata kemudian memanggil fungsi

#katadasaR untuk mengubah semua kata menjadi bentuk


kata dasarnya, setelah itu

#dirangkai kembali menjadi kalimat

docs <-
read.csv("~/Desktop/Tiket/cleansingTiket_ind.csv")

temp <- as.matrix(cleansingTiket_ind$text)

dump <- temp

for (row in 1:nrow(temp)) {

dump[row] = str_c(sapply(strsplit(temp[row], split =


Hasil Stemming :

Tabel 4.7 Stemming Tiket.com

Data Cleansing Hasil Stemming


aplikasi yg sangat bagus utk booking aplikasi yg sangat bagus
penerbangan hotel dll selalu menjadi utk booking terbang hotel
pilihan pertama bagi saya utk hal hal dll selalu jadi pilih pertama
tersebut diatas bagi saya utk hal hal sebut
atas
aplikasi sering eror sesimu sudah aplikasi sering eror sesi
habis kami harus membawamu ke sudah habis kami harus
homepage maaf ya padahal gak bawa ke homepage maaf
ngecek apa ya padahal gak ngecek apa
bisa nyicil pakai kartu kredit bunga bisa nyicil pakai kartu
kredit bunga

Tabel 4.8 Stemming Pegipegi.com

Data Cleansing Hasil Stemming


tidak jelas proses pengembalian dana tidak jelas proses kembali
meskipun ada wabah covid tp tetap dana meski ada wabah
tidak bisa ditolerir hampir bulan tidak covid tp tetap tidak bisa
ada kejelasan tidak ada transparansi cs ditolerir hampir bulan
tidak membantu parah sih ini sekarang tidak ada jelas tidak ada
saya hubungi tidak bisa mungkin transparansi cs tidak bantu
nomor saya di blok parah sih ini sekarang saya
hubung tidak bisa mungkin
nomor saya di blok
katanya cs jam by whatsapp ternyata kata cs jam by whatsapp
jam malem udah pada bobok zzz nyata jam malem udah
cukup pertama dan terakhir booking pada bobok zzz cukup
hotel pakai app ini pertama dan akhir booking
hotel pakai app ini
pegipegi sucks ga bisa kompromi pegipegi sucks ga bisa
keadaan dunia yg lagi covid cuma kompromi ada dunia yg
mikirin untung gw bakal ketawa lagi covid cuma mikirin
paling kenceng nanti waktu liat untung gw bakal tawa
aplikasi ni bangkrut bangke paling kenceng nanti
waktu liat aplikasi ni
bangkrut bangke

4 Stopword/Stoplist removal

Stopword/stoplist removal digunakan untuk membuang kata-kata


yang tidak mengandung nilai sentimen seperti “yang”, “di”, “dari”,
“saya”, “kau”, “aku”, dan sebagainya

5 Berikut syntax untuk melakukan Stopword/Stoplist removal:

#load file stopword list

id_stopwords<-read.csv("~/Desktop/Tiket/sword.csv",
header = FALSE, sep = ";")

id_stopwords=data.frame(text=unlist(sapply(id_stopw
ords, '[')), stringsAsFactors = F )

#menghapus kata yang terdaftar pada stopword list

docs <- read.csv("~/Desktop/Tiket/stemming.csv")

docs <- Corpus(VectorSource(stemming$text))

docs <- tm_map(docs,removeWords,c(id_stopwords$V1,


'ok','c','sekedar','saran','tambahin','fitur','pobu

Berikut hasil dari Stopword/Stoplist removal:

Tabel 4.9 Stopword Tiket


Data Stemming Hasil Stopword
aplikasi yg sangat bagus utk booking bagus booking
terbang hotel dll selalu jadi pilih
pertama bagi saya utk hal hal sebut
atas
aplikasi sering eror sesi sudah habis eror sesi habis bawa
kami harus bawa ke homepage maaf homepage maaf ngecek
ya padahal gak ngecek apa
bisa nyicil pakai kartu kredit bunga nyicil pakai kartu kredit
bunga

Tabel 4.10 Stopword Pegipegi.com

Data Stemming Hasil Stopword


tidak jelas proses kembali dana meski wabah covid ditolerir
ada wabah covid tp tetap tidak bisa transparansi parah hubung
ditolerir hampir bulan tidak ada jelas nomor blok
tidak ada transparansi cs tidak bantu
parah sih ini sekarang saya hubung
tidak bisa mungkin nomor saya di
blok
kata cs jam by whatsapp nyata jam whatsapp malem bobok
malem udah pada bobok zzz cukup zzz pakai
pertama dan akhir booking hotel pakai
app ini
pegipegi sucks ga bisa kompromi ada pegipegi sucks kompromi
dunia yg lagi covid cuma mikirin dunia covid mikirin untung
untung gw bakal tawa paling kenceng gw tawa kenceng liat
nanti waktu liat aplikasi ni bangkrut bangke
bangke

6 WordCloud
Word cloud (atau disebut juga tag cloud) adalah representasi visual
dari data teks, biasanya digunakan untuk menggambarkan metadata

#pembentukan wordcloud berdasarkan frekuensi kata


terbanyak

wordcloud(words = d$word, freq = d$freq, min.freq =


1,max.words=100, random.order=FALSE, rot.per=0.35,
colors=brewer.pal(8, "Dark2"))
keywords (tags) pada sebuah website, untuk memvisualisasikan suatu
bentuk teks secara bebas. Berikut syntax dari wordcloud :

Hasil WordCloud :
Berikut adalah representasi visual dari data teks tiket.com dan
Pegipegi.com

Gambar 4.3 Hasil WordCloud Tiket

Gambar 4.4 Hasil WordCloud Pegipegi


7. Menerjemahkan data dari bahasa Indonesia ke bahasa inggris
menggunakan google translate dokumen, berikut contoh pada data ke
26, 60, dan 246 pada data Tiket.com dan data ke 110, 142 dan 230
pada data pegipegi.com

Tabel 4.10 penerjemahan data Tiket

Data awal Hasil translate


26,"aplikasinya berat nyari jadwal the application is hard
lamaa gagal alesannya sinyal nyari looking for a long schedule
cepet alesan sinyal" it fails the reason is that
the signal is looking for a
fast signal route
60,"baik" good
246,"transportasi bandara airport transportation sucks
menyebalkan mahal taksi terminal expensive taxi terminal
konter jual" selling counter

Tabel 4.11 penerjemahan data Pegipegi

Data awal Hasil translate


110,"kecewa covid batal saldo kartu disappointed that Covid
kredit kembal upa telpon hubung cancels credit card balance
telpon bilang reviewkecewa penuh again call call call say
covid batal saldo kartu kredit kembal review full
upa telpon hubung telpon bilang disappointment covid
ajuk saldo kartu kredit hubung cancel credit card balance
sampa " call back call phone say
ask for credit card balance
contact until
142,"bagus segi tampil tarik warna nice in terms of appearing
colok segi lengkap mudah" pull the color plug in
complete easy
230,"murah" cheap

8. Menghapus data yang tidak perlu pada data yang telah diterjemahkan
menggunakan stopword. Berikut syntax untuk menghapus kata yang
tidak perlu kemudian menghilangkan spasi di awal dan akhir kalimat

library(tm)
stopwords("en")
stopwords("smart")
docs <- read.csv("~/Desktop/Tiket/dump0_en.csv")
docs<-Corpus(VectorSource(dump0_en$text))
id_stopwords<-
read.csv("~/Desktop/Tiket/stopwords_en.csv", header
= FALSE, sep = ";")
id_stopwords=data.frame(text=unlist(sapply(id_stopwo
rds, '[')), stringsAsFactors = F )
#menghapus kata yang terdaftar pada stopword list
inggris
#docs <- iconv(tiket_eng$text,"utf-8-mac", "AScii",
sub = "")
docs <- tm_map(docs,removeWords,c(id_stopwords$V1))
inspect(docs[1:1000])

temp <- as.matrix(docs$content)


temp <- temp[!apply(is.na(temp == " " )|temp == "", 1,
all),]
temp <- trimws(temp, which = "both")
temp <- as.matrix(temp)
dump <- Corpus(VectorSource(temp))
inspect(dump[1:100])
dump=data.frame(text=unlist(sapply(dump, '[')),
stringsAsFactors = F )
write.csv(dump,file = "~/Desktop/Tiket/dump1_en.csv")

9. konversi data pada variabel dump menjadi setiap kata kemudian


menghitung frekuensi kemunculan kata tersebut, lalu ditampilkan 20
kata dengan frekuensi tertinggi berikut syntax nya
docs <- read.csv("~/Desktop/Tiket/dump1_en.csv")
dump<-Corpus(VectorSource(dump1_en$text))
tdm <- TermDocumentMatrix(dump)
m <- as.matrix(tdm)
v <- sort(rowSums(m), decreasing = TRUE)
d <- data.frame(word = names(v), freq=v)
head(d, 20)
set.seed(1234)

Berikut adalah hasil dari menampilkan data 20 tertinggi

Gambar 4.5 kata dengan frekuensi tertinggi data Tiket


Gambar 4.6 kata dengan frekuensi tertinggi data Pegipegi

10. Pembentukan wordcloud berdasarkan frekuensi kata terbanyak


berikut syntax yang digunakan
wordcloud(words = d$word, freq = d$freq, min.freq = 1,
max.words=100, random.order=FALSE,
rot.per=0.35,
colors=brewer.pal(8, "Dark2"))

Berikut adalah hasil dari wordcloud data Tiket.com dan Pegipegi.com


yang berbahasa inggris:
Gambar 4.7 Hasil WordCloud Tiket

Gambar 4.8 Hasil WordCloud Pegipegi


4.3 Pengujian Naïve Bayes dan Hasil Pengujian
Sebelum ke hasil polarity analysis, data harus di uji terlebih dahulu.
Berikut ini adalah syntax untuk melakukan pengujian data dengan
menggunakan metode naïve bayes :

Gambar 4.9 Hasil Pengujian Naïve Bayes Tiket.com

Gambar 4.10 Hasil Pengujian Naïve Bayes Pegipegi.com

4.3.1 Sentiment Analysis


Berikut adalah sitax untuk mencari sentiment analisys:
#MEMBUAT EMOTION
plotSentiments1 <- function(Sentimen_DataFrame, title)
{
ggplot(Sentimen_DataFrame, aes(x= factor(emotion)),
fill=factor(emotion)) +
geom_bar(aes(y=..count.., fill=emotion)) +
geom_text(aes(label=..count..),stat = "count",
vjust=-.5)+
scale_fill_brewer(palette="Dark2") +
ggtitle(title) +
theme(legend.position="right") +
ylab("Number of Comment") +
xlab("Emotion Categories")
}
plotSentiments1(SentimenDataFrame, "Sentiment Analysis
")

Pada grafik data Tiket.com, hasil sentiment analisis memiliki data


unknown sebanyak 2213 data. unknown merupakan data yang tidak
terbaca dan tidak dapat diklasifikasikan pada emotion karena tidak
termasuk dalam daftar library kategori emosi. Joy 2078 ,Sadness 105,
Surprise 24, anger 28, fear 15 dan Disgust 5.

Gambar 4.11 Sentiment Analysist Tiket


Pada grafik data Pegipegi.com, hasil sentiment analisis memiliki data
unknown sebanyak 2223 data. unknown merupakan data yang tidak
terbaca dan tidak dapat diklasifikasikan pada emotion karena tidak
termasuk dalam daftar library kategori emosi. Joy 2165 ,Sadness 73,
Surprise 30, anger 16, fear 12 dan Disgust 10.
5

Gambar 4.12 Kata yang sering muncul Pegipegi

4.3.2 Polarity Analysis


Berikut syntax untuk melakukan polarity analysis :
#MEMBUAT POLARITY / MENAMPILKAN SENTIMEN
plotSentiments2 <- function(sentiment_dataframe,
title)
{
ggplot(sentiment_dataframe, aes(x=
factor(polarity)), fill=factor(polarity)) +
geom_bar(aes(y=..count.., fill=polarity)) +
geom_text(aes(label=..count..),stat =
"count",position = position_dodge(0.9), vjust=-
0.2)+
scale_fill_brewer(palette="RdGy") +
ggtitle(title) +
theme(legend.position="right") +
ylab("Number of Comment") +
xlab("Polarity Categories")
}
plotSentiments2(SentimenDataFrame, "Polarity
Analysis ")
head(SentimenDataFrame, 100)

Berikut hasil dari tampilan dari polarity analysis yang didapatkan dari
data tiket.com yaitu data yang bernilai positif berjumlah 3830 data
netral 128 data dan negatif 510 data

Gambar 4.13 Polarity Analysist Tiket


Berikut hasil dari tampilan dari polarity analysis yang didapatkan dari
data pegipegi.com yaitu data yang bernilai positif berjumlah 3692 data
,netral 176 data dan negatif 661 data pada grafiknya dapat dilihat pada
gambar di bawah ini:

Gambar 4.14 Polarity Analysist Pegipegi

4.3.3 Data yang sering muncul

data <- head(d,8)


plotSentimentX3 <- function (data, title){
ggplot(data, aes(x=word, y=freq,
fill=factor(word))) +
geom_bar(stat="identity") +
scale_fill_brewer(palette="Dark2") +
ggtitle(title) +
theme(legend.position = "right") +
geom_text(aes(label=freq, y=freq+90),
stat="identity", position=position_dodge(0),
angle=270) +
ylab("Frekuensi") +
xlab("Kata") +
coord_flip()
}
#plot 5 most frequent words
plotSentimentX3(data, "Kata yang sering muncul")
Gambar 4.15 Kata yang sering muncul Tiket

Gambar 4.16 Kata yang sering muncul Pegipegi


5. Daftar Pustaka

Josi, A. L.A. Abdillah, Suryayusra, (2014), Penerapan Teknik Web Scraping Pada Mesin
Pencari Artikel Ilmiah.

Liu, B. (2012). Sentiment Analysis and Opinion Mining Morgan & Claypool Publishers.
Language Arts & Disciplines, (May), 167.

Muljono, dkk (2018) “Analisa Sentimen Untuk Penilaian Pelayanan Situs Belanja Online
Menggunakan Algoritma Naive Bayes “Fakultas Ilmu Komputer, Universitas Dian
Nuswantoro

Didik Garbian Nugroho dkk (2017) “Analisis Sentimen Pada Jasa Ojek Online
Menggunakan Metode Naive Bayes “Jurusan Informatika, Fakultas Matematika dan
Ilmu Pengetahuan Alam Universitas Jenderal Achmad Y ani,2017

Sunardi 1), Abdul Fadlil 2), Suprianto 2,3) “Analisis Sentimen Menggunakan Metode
Naive Bayes Classifier Pada Angket Mahasiswa ”1) Program Studi Teknik Elektro,
Universitas Ahmad Dahlan 2) Magister Teknik Informatika, Universitas Ahmad
Dahlan 3) Program Studi Sistem Informasi, STMIK PPKIA Tarakanita
Rahmawati,2018

Nur Shafiya Nabilah Salam1, Ahmad Afif Supianto2, Andi Reza Perdanakusuma3
“Analisis Sentimen Opini Mahasiswa Terhadap Saran Kuesioner Penilaian Kinerja
Dosen dengan Menggunakan TF-IDF dan K-Nearest Neighbor” Program Studi
Sistem Informasi,Fakultas Ilmu Komputer, Universitas Brawijaya, 2019

Anda mungkin juga menyukai