Anda di halaman 1dari 13

BAB II

TINJAUAN PUSTAKA

2.1 Analisis Sentimen

Analisis sentimen merupakan studi tentang analisis pendapat manusia, sentimen,


evaluasi, sikap, dan emosi yang dituangkan dalam kalimat. Sentimen analisis banyak
digunakan untuk kebutuhan bisnis dan kehidupan sosial. Pertumbuhan mengenai
analisis sentimen sejalan dengan bertumbuhnya review, diskusi forum, blog, twitter,
dan sosial media lainnya. Analisis sentiment termasuk dalam bidang natural language
processing (NLP) namun baru banyak dikembangkan diatas tahun 2000. Analisis
sentiment berdampak besar tidak hanya pada bidang NLP namun juga terhadap bidang
Ekonomi, Ilmu Manajemen, Ilmu Politik, dan Ilmu Sosial [4].

2.2 Analisis Sentimen berbasis aspek

Analisis sentimen berbasis aspek merupakan perkembangan dari analisis


sentiment yang hanya mengacu pada sebuah kalimat. Analisis sentimen berbasis aspek
dari opini berbasis teks mengacu pada entitas yang spesifik dan aspek yang dibahasnya.
Analisis yang dilakukan dengan mengacu pada spesifik entitas dan aspek dapat
membantu pelanggan memutuskan untuk membeli sesuatu atau perusahaan dalam
mengembangkan bisnisnya, perusahaan pun dapat mengontrol perkembangan
perusahaanya dan mengetahui dengan pasti apa yang dibutuhkannya. Pada kasus
penelitian yang sedang dilakukan, kategori yang dibahas mengenai review yang
diterima oleh restoran dengan memperhitungkan aspek – aspek seperti : makanan,
harga, tempat dan pelayanan. Data yang didapat dari review yang dilakukan oleh
pelanggan dapat dijadikan masukan dan evaluasi untuk perusahaan dalam
mengembangkan usahanya.
2.3 Klasifikasi

Klasifikasi adalah proses pengelompokkan objek yang memiliki karakteristik atau


ciri yang sama kedalam beberapa kelas. Pada umumnya klasifikasi untuk dokumen
dilakukan untuk menentukan ciri-ciri atau fitur-fitur yang diwakili oleh kalimat-
kalimat penting [5]. Untuk klasifikasi sentiment analisis berbasis aspek, klasifikasi
yang dilakukan pertama untuk menentukan kategori aspek yang diinginkan. Analisis
sentiment berbasis aspek tentang review restoran mengklasifikasi aspek seperti
makanan, tempat, pelayanan dan harga dan diakhiri dengan mengklasifikasikan
polaritas sentimennya.

2.3 Text Mining

Menurut R. Feldman dan J. Sanger, text mining adalah suatu proses untuk
menggali informasi dimana seorang pengguna atau user berinteraksi dengan dokumen
menggunakan tool analisis. Sedangkan menurut O. Maimon dan L. Rokach, text
mining adalah suatu proses ekstrasi pola tertentu dari database dokumen teks yang
besar dan bertujuan untuk menemukan pengetahuan [6].

Pada kasus teks mining, konsep dan teknik yang digunakan adalah untuk mencari
informasi yang bermanfaat dengan melakukan analisa dari teks tersebut. Jika data yang
digunakan pada teks mining sudah memiliki pola yang terstruktur tugas dari teks
mining hanya tinggal mengklasifikasi teks tersebut atau melakukan pengelompokan
pada teks. Jika data yang digunakan masih memiliki ketidak strukturan pada
susunannya maka dilakukan proses preprocessing untuk membuat data menjadi
terstruktur.

2.4 Zomato

Zomato merupakan aplikasi perangkat lunak untuk mencari dan menemukan


tempat makanan terbaik. Aplikasi Zomato dapat diakses melalui web dan juga melalui
android ataupun ios. Aplikasi zomato memudahkan masyarakat dalam mecari sebuah
restoran dengan berbagai ulasan terkait mengenai restoran yang ingin mereka kunjungi.
Ulasan yang terdapat di aplikasi zomato merupakan review pengalaman yang dirasakan
pengunjung sebelumnya. Zomato ingin memberikan kesan dan mempermudah
pelanggan baru yang belum pernah mencoba restoran tertentu untuk dating kesana
berdasarkan pengalaman orang lain yang sudah pernah mengunjungi restoran tersebut.

2.4 Preprocessing

Preprocessing merupakan tahapan awal sebelum memasuki tahapan utama.


Preprocessing yang digunakan dalam teks mining data review sebuah restoran adalah
Casefolding, Formalisasi Kata, Stemming, dan Stopword. Preprocessing dilakukan
agar data memiliki keseragaman dan membersihkan data dari noise yang dimiliki oleh
data tersebut.

2.4.1 Casefolding

Casefolding merupakan tahapan awal pada preprocessing. Casefolding


merupakan proses mengubah kalimat dari review restoran menjadi huruf kecil
keseluruhan. Kalimat yang masih memiliki huruf kapital didalamnya akan dikonversi
secara menyeluruh agar menjadi seragam huruf kecil (lowercase).

2.4.2 Tokenization

Proses pemotongan string masukan berdasarkan kata penyusunnya. Memisahkan


kata yang menyusun suatu dokumen. Proses tokenization memisahkan kata
berdasarkan spasi yang terdapat didalam didalam dokumen tersebut.

2.4.3 Stemming

Stemming merupakan proses untuk mendapatkan kata dasar dari kata yang
memiliki imbuhan, baik imbuhan awalan (prefix) maupun imbuhan akhiran (suffix).
Algoritma stemming untuk bahasa yang satu berbeda dengan bahasa lainnya. Untuk
bahasa Indonesia Algoritma Nazief dan Adriani memiliki tingkat akurasi yang baik
dikarenakan berdasar pada aturan morfologi bahasa Indonesia yang luas [7].

2.4.4 Stopword Removal

Stop word adalah kata umum (common word) yang biasanya muncul dalam jumlah
besar dan dianggap tidak memiliki makna. Untuk analisis sentimen berbasis aspek
stopword removal digunakan untuk mengurangi jumlah kata yang harus diproses.

2.5 Word Embedding

Beberapa penelitian representasi matematis dari kata telah dilakukan semenjak


awal tahun 2000 dengan keberadaan latent semantic analysis dan bengio’s embedding
model. Tetapi Turian memperkenalkan istilah “representasi kata” dalam penelitiannya
untuk menggambarkan perbedaan matematika kata dari representasi lain seperti one
hot vector atau bag of words. Penelitian menunjukkan bahwa hubungan antara kata
didalam kalimat dapat dimodelkan dalam bentuk representasi matematis dan operasi
menggunakan operator matematika seperti penjumlahan dan pengurangan. Word
embedding menjadi salah satu representasi kata yang popular. Bengio dkk pertama kali
memperkenalkan word embedding untuk model hubungan antara kata dengan prediksi
kata berikutnya. Saat ini, Collobert dkk memperkenalkan C & W sebagai sebuah kata
dalam pembelajaran berbasis word embedding untuk mengatasi masalah NLP seperti
POS-tag, NER dan semantic role labeling. Mikolov dkk memperkenalkan Word2Vec
sebagai salah satu word embedding populer untuk alternatif algoritma C & W. Word
embedding sudah digunakan dalam penelitian analisis sentimen. Salah satu penelitian
yang dilakukan oleh Shirani-Mehr menunjukkan bahwa klasifikasi menggunakan CNN
untuk dataset yang dibangun menggunakan Word2Vec melampaui kinerja dari
pemodelan naïve baiyes yang menggunakan fitur bag of words, dengan akurasi
mencapai 46,4% menggunakan tes dari evaluasi yang telah ditetapkan. Czerny
menggukan Word2Vec model sebagai fitur untuk mengklasifikasi 400.000 tweets.
Hasil akurasi sebesar 73% lebih baik dari fitur-fitur dasar yang dimiliki TF-IDF yang
hanya menghasilkan akurasi sebesar 69-70% [8].

2.6 Bahasa Pemograman

Bahasa Pemograman (programming language) adalah sebuah instruksi standar


untuk memerintah komputer menjalankan fungsi tertentu. Bahasa pemograman
merupakan suatu himpunan dari aturan sintaks dan semantik untuk mendifinisikan
program. Bahasa ini memungkinan programmer dapat menentukan data yang akan
diolah oleh komputer.

2.6.1 Python

Python adalah bahasa yang mudah dipelajari serta berfokus pada kode. Python
dianggap memiliki kode-kode pemograman yang sangat jelas, lengkap, dan mudah
untuk dipahami. Python secara umum berbentuk pemograman berbasis objek. Python
dapat digunakan untuk pembangunan perangkat lunak yang dapat berjalan di berbagai
platform sistem informasi [9].

2.7 CNN

CNN untuk mengklasifikasikan kata pertama kali diperkenalkan oleh Kim (2014),
dengan mengambil kalimat dari panjang variasinya sebagai input dan menghasilkan
vektor dengan panjang tetap sebagai output. Sebelum dilatih, untuk setiap kata
dilakukan word embedding untuk setiap kata di glosarium dari semua kalimat input
yang dihasilkan. Semua kata yang sudah dilakukan word embedding ditumpuk didalam
matriks M. Pada lapisan input kata yang sudah di embedding terdiri dari kalimat latih
yang diambil dari M. Panjang maksimum kalimat yang dapat ditangani oleh jaringan
telah diatur. Kalimat yang kepanjangan akan dipotong dan kalimat yang kurang akan
disisipi oleh vektor bernilai 0. Kemudian dropout regularization digunakan untuk
mengontrol over-fitting. Di lapisan konvolusi beberapa filter dengan jendela berbeda
berpindah ukuran pada word embedding untuk melakukan satu dimensi lilitan. Saat
filter bergerak banyak urutan yang menangkap fitur sintaksis dan semantik dalam n-
gram yang difilter dihasilkan. Banyak urutan fitur digabungkan kedalam feature map.
Didalam lapisan pooling, operasi pooling max overtime (Collobert dll., 2011)
diterapkan untuk menangkap fitur lokal yang paling berguna dari feature map. Fungsi
aktivasi ditambahkan untuk menggabungkan element-wise non-linearity. Output dari
beberapa filter digabung kedalam lapisan gabungan. Setelah dropout process lainnya,
lapisan softmax yang terhubung sepenuhnya menghasilkan distribusi probabilitas
melalui label dari beberapa kelas. CNN adalah salah satu model koneksi yang paling
umum digunakan untuk klasifikasi. Connectionism Model fokus pada pembelajaran
dari rangsangan lingkungan dan menyimpan informasi ini dalam bentuk koneksi antar
neuron. Bobot dalam jaringan saraf disesuaikan menurut data pelatihan dengan
beberapa algoritma pembelajaran. Semakin besar perbedaan dalam data pelatihan,
maka lebih sulit untuk algoritma pembelajaran mengadaptasi data pelatihan dan hasil
klasifikasi yang lebih buruk. Kalimat dibagi menjadi beberapa jenis sesuai dengan
jumlah target yang diungkapkan didalamnya dapat mengurangi perbedaan data di
setiap kelompok, maka dari itu tingkatan akurasi klasifikasi secara keseluruhan [10].

Gambar 2 Model Arsitektur 2 channel


Arsitektur model yang ditunjukkan pada gambar 2 adalah sedikit varian dari arsitektur CNN
oleh Collobert dkk (2011). Biarkan xi ∈ R k menjadi k-dimensional vektor kata yang sesuai
dengan kata ke-i di kalimat. Sebuah kalimat dengan panjang n (sisipkan ketika dibutuhkan).
Direpresentasikan sebagai berikut :

x1: n = x1 ⊕ x2 ⊕. . . ⊕ xn, (2)

di mana ⊕ adalah operator gabungan. Secara umum, misalkan xi: i + j merujuk pada
gabungan kata-kata xi, xi + 1,. . . , xi + j. Operasi konvolusi melibatkan filter w ∈ Rhk, yang
diterapkan pada a jendela kata h untuk menghasilkan fitur baru. Untuk misalnya, fitur ci
dihasilkan dari jendela kata xi: i + h − 1 oleh :

ci = f (w · xi: i + h − 1 + b). (2.1)

Di sini b ∈ R adalah istilah bias dan f adalah non-linear fungsi seperti tangen hiperbolik.
Filter ini diterapkan ke setiap jendela kata yang memungkinkan di kalimat {x1: j, x2: j + 1,. . . ,
xn − h + 1: n} untuk diproduksi peta fitur :

c = [c1, c2,. . . , cn − h + 1], (2.2)

Dengan c ∈ Rn − h + 1. Kami kemudian menerapkan operasi pooling maksimum (Collobert


et al., 2011) melalui feature maps dan ambil nilai maksimum cˆ = maks {c} sebagai fitur yang
sesuai dengan filter tertentu. Idenya adalah untuk menangkap fitur yang paling penting yang
memiliki nilai tertinggi untuk setiap feature maps. Skema penyatuan ini secara alami berkaitan
dengan panjang kalimat variabel. Kami telah menggambarkan proses yang dengannya Fitur
diekstraksi dari satu filter. Model menggunakan beberapa filter (dengan berbagai ukuran jendela)
untuk mendapatkan banyak fitur. Bentuk-bentuk fitur ini lapisan kedua dari belakang dan
diteruskan ke lapisan softmax yang sepenuhnya terhubung yang hasilnya adalah distribusi
probabilitas di atas label. Dalam salah satu varian model, kami bereksperimen dengan memiliki
dua 'saluran' vektor kata [11].
2.8 Bi-LSTM

Bi-LSTM menggunakan dua LSTM untuk mempelajari setiap token dari urutan
berdasarkan pada konteks masa lalu dan masa depan token. Sebagaimana yang telah
ditunjukkan pada Gambar 2, satu LSTM memproses urutan dari kiri ke kanan, yang
lain dari kanan ke kiri. Pada setiap langkah waktu t, disembunyikan lapisan kedepan
dengan fungsi unit tersembunyi - → h dihitung berdasarkan keadaan tersembunyi
sebelumnya - → h t − 1 dan input pada langkah saat ini xt dan lapisan belakang
tersembunyi dengan fungsi unit tersembunyi ← - h dihitung berdasarkan keadaan
tersembunyi di masa depan ← - h t + 1 dan input di langkah saat ini xt. Representasi
konteks maju dan mundur, dihasilkan oleh - → ht dan ← - masing-masing, disatukan
menjadi panjang vektor. Gabungan hasil adalah prediksi teacher-given target signal.
Sebagai model urutan yang banyak digunakan, conditional random field (CRF) adalah
jenis probabilistik grafis model tidak diskriminatif, yang mewakili distribusi log-linear
tunggal menghasilkan output lebih terstruktur sebagai fungsi dari pengamatan tertentu
urutan input.

Diberikan pengamatan variabel X yang nilainya diamati, variabel acak Y yang


nilai tugasnya memerlukan model untuk memprediksi, dan grafik G tidak berarah di
mana Y terhubung dengan tepi tidak berarah yang menunjukkan ketergantungan. CRF
mendefinisikan persyaratan probabilitas satu set nilai output y ∈ Y diberikan satu set
nilai input x ∈ X agar proporsional dengan produk fungsi potensial pada klik grafik
(McCallum, 2003),

(2,3)
Gambar 3 Bi-LSTM CRF target ekspresi dan klasifikasi kata

Zx adalah faktor normalisasi nilai output keseluruhan S (y, x) adalah himpunan klik G, s (ys,
xs) adalah potensi klik pada klik s. Setelah itu, dalam model BiLSTM-CRF, sebuah softmax atas
semua urutan tag yang mungkin menghasilkan probabilitas untuk urutan y. Prediksi urutan output
dihitung sebagai berikut:

(2.4)

di mana σ (X, y) adalah fungsi skor didefinisikan sebagai berikut:

(2.5)

A adalah matriks skor transisi, Ayi, yi + 1 mewakili skor transisi dari tag yi ke yi +1. n adalah
panjang a kalimat, P adalah matriks skor keluaran oleh jaringan BiLSTM, Pi, yi adalah skor ke-y
Saya menandai kata ke-i dalam sebuah kalimat. Seperti yang ditunjukkan pada Gambar. 2, teknik
putus digunakan setelah input lapisan BiLSTM-CRF untuk mengurangi overfitting pada data
pelatihan. Teknik ini pertama kali diperkenalkan oleh Hinton, Srivastava, Krizhevsky, Sutskever,
dan Salakhutdinov (2012) untuk mencegah kerjasama yang kompleks pada data pelatihan. Ini
telah memberikan perbaikan besar pada banyak tugas. Setelah ekstraksi target oleh BiLSTM-CRF,
semua kalimat diucapkan diklasifikasikan ke dalam kalimat tidak-sasaran, satu-sasaran, dan
kalimat multi-target, sesuai dengan jumlah target yang diekstraksi dari mereka [10].

2.9 OOP

OOP (Object Oriented Programming) adalah suatu metode pemrograman yang


berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk mempermudah
pengembangan program dengan cara mengikuti model yang telah ada di kehidupan
sehari-hari. Jadi setiap bagian dari suatu permasalahan adalah objek, nah objek itu
sendiri merupakan gabungan dari beberapa objek yang lebih kecil lagi. Saya ambil
contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri terbentuk dari
beberapa objek yang lebih kecil lagi seperti mesin, roda, baling-baling, kursi, dll.
Pesawat sebagai objek yang terbentuk dari objek-objek yang lebih kecil saling
berhubungan, berinteraksi, berkomunikasi dan saling mengirim pesan kepada objek-
objek yang lainnya. Begitu juga dengan program, sebuah objek yang besar dibentuk
dari beberapa objek yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling
berkirim pesan kepada objek yang lain. Konsep dari OOP adalah :

1. Abstract Class
a. Kelas merupakan deskripsi abstrak informasi dan tingkah laku dari
sekumpulan data.
b. Kelas dapat diilustrasikan sebagai suatu cetak biru(blueprint) atau
prototipe yang digunakan untuk menciptakan objek.
c. Kelas merupakan tipe data bagi objek yang mengenkapsulasi data dan
operasi pada data dalam suatu unit tunggal.
d. Kelas mendefinisikan suatu struktur yang terdiri atas data kelas (data
field), prosedur atau fungsi (method), dan sifat kelas (property).
2. Encapsulation
a. Istilah enkapsulasi sebenarnya adalah kombinasi data dan fungsionalitas
dalam sebuah unit tunggal sebagai bentuk untuk menyembunyikan detail
informasi.
b. Proses enkapsulasi memudahkan kita untuk menggunakan sebuah objek
dari suatu kelas karena kita tidak perlu mengetahui segala hal secara rinci.
c. Enkapsulasi menekankan pada antarmuka suatu kelas, atau dengan kata
lain bagaimana menggunakan objek kelas tertentu.
d. Contoh: kelas mobil menyediakan antarmuka fungsi untuk menjalankan
mobil tersebut, tanpa kita perlu tahu komposisi bahan bakar, udara dan
kalor yang diperlukan untuk proses tersebut.
3. Inheritance
a. Kita dapat mendefinisikan suatu kelas baru dengan mewarisi sifat dari
kelas lain yang sudah ada.
b. Penurunan sifat ini bisa dilakukan secara bertingka-ttingkat, sehingga
semakin ke bawah kelas tersebut menjadi semakin spesifik.
c. Sub kelas memungkinkan kita untuk melakukan spesifikasi detail dan
perilaku khusus dari kelas supernya.
d. Dengan konsep pewarisan, seorang programmer dapat menggunakan kode
yang telah ditulisnya pada kelas super berulang kali pada kelas-kelas
turunannya tanpa harus menulis ulang semua kode-kode itu.
4. Polymorphism
a. Polimorfisme merupakan kemampuan objek-objek yang berbeda kelas
namun terkait dalam pewarisan untuk merespon secara berbeda terhadap
suatu pesan yang sama.
b. Polimorfisme juga dapat dikatakan kemampuan sebuah objek untuk
memutuskan method mana yang akan diterapkan padanya, tergantung
letak objek tersebut pada jenjang pewarisan.
c. Method overriding.
d. Method name overloading.

2.9.1 UML

Sebuah teknik pengembangan sistem yang menggunakan bahasa grafis untuk


dokumentasi dan spesifikasi pada sistem. UML pertama kali diperkenalkan pada tahun
1994 oleh Grady Booch dan James Rumbaugh dengan menggabungkan 2 metodologi
Booch dan OMT. Kemudian penemu Object Oriented Software Engineering (OOSE)
Ivar Jacobson tertarik dan ikut bergabung dengan Booch dan Rumbaugh. Standar UML
dikelola oleh Object Management Group (OMG) [10].

1. Use Case Diagram


Menggambarkan sejumlah external actors dan hubungannya ke use case yang
diberikan oleh sistem. Use case adalah deskripsi fungsi yang disediakan oleh
sistem dalam bentuk teks sebagai dokumentasi dari use case symbol, namun
dapat juga dilakukan di dalam activity diagrams. Use case digambarkan hanya
yang dilihat dari luar oleh actor (keadaan lingkungan sistem yang dilihat user)
dan bukan bagaimana fungsi yang ada di dalam sistem.
2. Activity Diagram
Menggambarkan rangkaian aliran dari aktivitas, digunakan untuk
mendeskripsikan aktifitas yang dibentuk dalam suatu operasi sehingga dapat
juga digunakan untuk aktifitas lainnya seperti use case atau interaksi.
3. Sequence Diagram
Menggambarkan kolaborasi dinamis antara sejumlah objek. Kegunaanya
untuk menunjukkan rangkaian pesan yang dikirim antara objek juga interaksi
antara objek, sesuatu yang terjadi pada titik tertentu dalam eksekusi sistem.
4. Class Diagram
Menggambarkan struktur statis class di dalam sistem. Class
merepresentasikan sesuatu yang ditangani oleh sistem. Class dapat
berhubungan dengan yang lain melalui berbagai cara: associated (terhubung
satu sama lain), dependent (satu class tergantung/menggunakan class yang
lain), specialed (satu class merupakan spesialisasi dari class lainnya), atau
package (grup bersama sebagai satu unit). Sebuah sistem biasanya mempunyai
beberapa class diagram.

Anda mungkin juga menyukai