Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
ANALISIS KINERJA ALGORITMA
NAIVE BAYES DAN K-NEAREST NEIGHBOR
PADA SENTIMEN ANALISIS
DENGAN PENDEKATAN LEXICON
DI MEDIA TWITTER
Skripsi
Oleh :
Azhar
11140910000108
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA
2019 M / 1440 H
ANALISIS KINERJA ALGORITMA
NAIVE BAYES DAN K-NEAREST NEIGHBOR
PADA SENTIMEN ANALISIS
DENGAN PENDEKATAN LEXICON
DI MEDIA TWITTER
Skripsi
Diajukan sebagai salah satu syarat untuk memperoleh gelar
Sarjana Strata -1
Oleh :
Azhar
11140910000108
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA
2019 M / 1440 H
iii
UIN Syarif Hidayatullah Jakarta
PERNYATAAN ORISINALITAS
Dengan ini saya menyatakan bahwa :
1. Skripsi ini merupakan hasil karya asli saya yang diajukan untuk
memenuhi salah satu persyaratan memperoleh gelar strata 1 di UIN
Syarif Hidayatullah Jakarta.
2. Semua sumber yang saya gunakan dalam penulisan ini telah saya
cantumkan sesuai dengan ketentuan yang berlaku di UIN Syarif
Hidayatullah Jakarta.
3. Jika di kemudian hari terbukti bahwa karya ini bukan hasil karya asli
saya atau merupakan hasil jiplakan dari karya orang lain, maka saya
bersedia menerima sanksi yang berlaku di UIN Syarif Hidayatullah
Jakarta.
Jakarta, 04 Juli 2019
Azhar
11140910000108
iv
UIN Syarif Hidayatullah Jakarta
HALAMAN PERSETUJUAN PEMBIMBING
ANALISIS KINERJA ALGORITMA
NAIVE BAYES DAN K-NEAREST NEIGHBOR
PADA SENTIMEN ANALISIS
DENGAN PENDEKATAN LEXICON
DI MEDIA TWITTER
Skripsi
Diajukan sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer (S.Kom)
Oleh:
AZHAR
11140910000108
Menyetujui,
Pembimbing I Pembimbing II
Siti Ummi Masruroh, M.Sc Luh Kesuma Wardhani, MT
NIP. 19820823 201101 2 013 NIP. 19780424 200801 2 022
Mengetahui,
Ketua Program Studi Teknik Informatika
Dr. Imam Marzuki Shofi, M.T.
NIP. 19720205 200801 1 010
v
UIN Syarif Hidayatullah Jakarta
LEMBAR PENGESAHAN
Skripsi yang berjudul “Analisis Kinerja Algoritma Naive Bayes Dan K-
Nearest Neighbor Pada Sentimen Analisis Dengan Pendekatan Lexicon
Di Media Twitter” telah diuji dan dinyatakan lulus dalam sidang
munaqosyah Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif
Hidayatullah Jakarta pada 4 Juli 2019. Skripsi ini telah diterima sebagai salah
satu syarat untuk memperoleh gelar Sarjana Strata Satu (S1) Program Studi
Teknik Informatika.
Jakarta, 04 Juli 2019
Tim Penguji,
Penguji I Penguji II
Nurhayati, Ph.D. Anif Hanifa Setyaningrum, M.Si
NIP. 19690316 199903 2 002 NIDN. 0410116402
Tim Pembimbing,
Pembimbing I Pembimbing II
Siti Ummi Masruroh, M.Sc Luh Kesuma Wardhani, MT NIP. 19820823 201101 2 013 NIP. 19780424 200801 2 022
Mengetahui,
Dekan Ketua Program
Fakultas Sains dan Teknologi Studi Teknik Informatika
Prof. Dr. Lily Surraya Eka Putri, M.Env.Stud Dr. Imam Marzuki Shofi, M.T.
NIP. 19690404 200501 2 005 NIP. 19720205 200801 1 010
vi
UIN Syarif Hidayatullah Jakarta
PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI
Sebagai civitas akademik UIN Syarif Hidayatullah Jakarta, saya yang
bertanda tangan di bawah ini:
Nama : Azhar
NIM : 11140910000108
Program Studi : Teknik Informatika
Fakultas : Sains dan Teknologi
Jenis Karya : Skripsi
Demi pengembangan ilmu pengetahuan, menyetujui untuk
memberikan kepada Universitas Islam Negeri Syarif Hidayatullah Jakarta
Hak Bebas Royalti Non ekslusif (Non-exclusive Royalty Free Right) atas
karya ilmiah saya yang berjudul:
ANALISIS KINERJA ALGORITMA
NAIVE BAYES DAN K-NEAREST NEIGHBOR
PADA SENTIMEN ANALISIS DENGAN PENDEKATAN LEXICON
DI MEDIA TWITTER
Beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas
Royalti Non Ekslusif ini Universitas Islam Negeri Syarif Hidayatullah
Jakarta berhak menyimpan, mengalihmedia/formatkan, mengelola dalam
bentuk pangkalan data (database) merawat, dan mempublikasikan tugas
akhir saya selama tetap mencantumkan nama saya sebagai penulis/pencipta
dan sebagai pemilik Hak Cipta.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di: Jakarta
Pada Tanggal: 4 Juli 2019
Yang menyatakan
(Azhar)
vii
UIN Syarif Hidayatullah Jakarta
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Allah SWT, karena atas nikmat
dan rahmat-Nya sehingga penulis dapat menyelesaikan skripsi ini. Penulisan
skripsi ini dilakukan dalam rangka memenuhi salah satu syarat untuk
mencapai gelar Sarjana Komputer Program Studi Teknik Informatika
Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah
Jakarta. Proses penyelesaian skripsi ini tidak lepas dari berbagai bantuan,
dukungan, saran, dan kritik yang telah penulis dapatkan, oleh karena itu
dalam kesempatan ini penulis ingin mengucapkan terima kasih kepada:
1. Kedua Orang tua dan keluarga penulis yang selalu mendo’akan, dan
mendukung penulis dalam mengerjakan skripsi.
2. Ibu Prof. Dr. Lily Surraya Eka Putri, M.Env.Stud, selaku Dekan Fakultas
Sains dan Teknologi.
3. Bapak Imam Marzuki Shofi, M.T., selaku ketua Program Studi Teknik
Informatika, serta Bapak Andrew Fiade M.Kom., selaku sekretaris
Program Studi Teknik Informatika.
4. Ibu Siti Ummi Masruroh, M.Sc., selaku Dosen Pembimbing I dan Ibu
Luh Kesuma Wardhani, MT, selaku Dosen Pembimbing II yang telah
memberikan bimbingan, motivasi, dan arahan kepada penulis sehingga
skripsi ini bisa selesai dengan baik.
5. Seluruh Dosen, Staf Karyawan Fakultas Sains dan Teknologi, khususnya
Program Studi Teknik Informatika yang telah memberikan bantuan dan
kerjasama dari awal perkuliahan.
6. Kepada teman seperjuangan Teknik Informatika angkatan 2014 dan
khususnya teman - teman TI - A dan TI - B, yang sudah membantu
penulis dalam menyelesaikan skripsi ini, terima kasih atas dukungannya.
Semoga kita bisa lebih baik lagi dan sukses di masa yang akan datang.
7. Sahabat baik, teman berbagi cerita, suka duka, canda tawa bersama
semasa kuliah : Muhammad Taufik, Taufikur, Deni Ramadhani, Ottoh
Hidayatullah, Desta, Wisnu, Hanif.
8. Seluruh pihak yang secara langsung maupun tidak langsung membantu
penulis dalam menyelesaikan skripsi ini.
viii
UIN Syarif Hidayatullah Jakarta
Akhir kata, penulis menyadari bahwa dalam penyajian skripsi ini masih
jauh dari sempurna. Apabila ada kebenaran dari penulisan ini maka kebenaran
tersebut datangnya dari Allah, tetapi apabila ada kesalahan dalam penulisan
ini maka kesalahan ini berasal dari penulis. Semoga skripsi ini membawa
manfaat bagi pengembangan ilmu. Penulis berharap Allah SWT berkenan
membalas segala kebaikan semua pihak yang telah membantu dan meridhai
segala usaha kita.
Jakarta, 27 Juni 2019
Azhar
11140910000108
ix
UIN Syarif Hidayatullah Jakarta
Nama : Azhar
Study Program : Informatics Engineering
Title : Analisis Kinerja Algoritma Naive Bayes Dan
K-Nearest Neighbor Pada Analisis Sentimen
Dengan Pendekatan Lexicon Di Media Twitter
ABSTRAK
Analisis sentimen atau opinion mining merupakan jenis natural
language yaitu pengolahan kata untuk mengetahui opini, sikap atau mood
masyarakat tentang suatu hal tertentu. Pengolahan kata dalam penelitian ini
berkaitan dengan proses klasifikasi dokumen tekstual ke dalam tiga kelas,
yaitu positif, negatif dan netral. Data diperoleh dari media sosial twitter
berkaitan dengan komentar netizen terhadap calon pilpres joko widodo
dengan keyword pilpres 2019 dan jokowi sebanyak 1000 komentar
menggunakan teknik crawling data. Pada penelitian ini, penulis
membandingkan kinerja algoritma naive bayes dan K-NN dengan data latih
pendekatan lexicon dalam klasifikasi data uji. Penelitian ini bertujuan untuk
mengetahui tingkat akurasi, presisi, recall algoritma naive bayes dan K-NN
dengan pendekatan lexicon. Pengujian juga dilakukan terhadap penentuan
nilai k pada algoritma K-NN untuk mencari parameter terbaik. Kesimpulan
dari pengujian kombinasi algoritma K-NN dan pendekatan lexicon dapat
meningkatkan akurasi pada analisis sentimen. Tingkat akurasi terbaik
algoritma K-NN dan pendekatan lexicon yaitu sebesar 77% dengan nilai k
adalah k=5 dan naive bayes memiliki akurasi tertinggi sebesar 81%.
Kata kunci : Analisis Sentimen, Perbandingan, Twitter, klasifikasi,
Naive Bayes, K-NN, Lexicon.
Daftar Pustaka : 24 (Tahun 2003 – 2018)
Jumlah Halaman : VI BAB + xviii Halaman + 147 Halaman + 50 Gambar
+ 63 Tabel
x
UIN Syarif Hidayatullah Jakarta
Name : Azhar
Program Studi : Teknik Informatika
Judul : Performance Analysis of Naive Bayes and K-
Nearest Neighbor Algorithm on Sentiment
Analysis with Lexicon Approach on Twitter
Media
ABSTRACT
Sentiment analysis or opinion mining is a type of natural language, it is
processing words to find out opinions, attitudes or moods about certain things.
Word processing in this study relates to the process of classification of textual
documents into three classes, positive, negative and neutral. Data obtained
from social media twitter related to the comments of netizens against
candidates for presidential election Joko Widodo with the keywords of the
2019 presidential election and jokowi as many as 1000 comments using data
crawling techniques. In this study, the authors compared the performance of
the Naive Bayes and K-NN algorithms with training data on the Lexicon
approach in the classification of test data. This study aims to determine the
level of accuracy, precision, recall algorithm Naive Bayes and K-NN with the
Lexicon approach. The test was also conducted to determine the k value of
the K-NN algorithm to find the best parameters. The conclusion of testing the
combination of the K-NN algorithm and the Lexicon approach can improve
accuracy in sentiment analysis. The best accuracy level of K-NN algorithm
and lexicon approach is 77% with k value is k = 5 and naive bayes has the
highest accuracy of 81%.
Keywords : Sentiment analysis, Comparison, Twitter,
Classification, Naïve Bayes Classifier, Lexicon, K-
Nearest Neighbor.
Bibliography : 24 (2003 – 2018)
Page Number : VI Chapters + xviii Pages + 147 Pages + 50 Pictures +
63 Tables
xi
UIN Syarif Hidayatullah Jakarta
DAFTAR ISI
PERNYATAAN ORISINALITAS........................................................................ iii
HALAMAN PERSETUJUAN PEMBIMBING .................................................. iv
LEMBAR PENGESAHAN .................................................................................... v
PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI ................................ vi
KATA PENGANTAR ........................................................................................... vii
ABSTRAK .............................................................................................................. ix
ABSTRACT ............................................................................................................. x
DAFTAR ISI........................................................................................................... xi
DAFTAR GAMBAR ............................................................................................ xiv
DAFTAR TABEL ................................................................................................ xvi
BAB I PENDAHULUAN ........................................................................................ 1
1.1 Latar Belakang ................................................................................ 1
1.2 Tujuan Penulisan ............................................................................. 4
1.3 Manfaat Penulisan ........................................................................... 4
1.4 Rumusan Masalah ........................................................................... 5
1.5 Batasan Masalah .............................................................................. 5
1.6 Metodologi Penelitian ..................................................................... 6
1.6.1 Pengumpulan Data ................................................................... 6
1.6.1 Metode Simulasi ...................................................................... 6
1.7 Sistematika Penulisan ...................................................................... 6
BAB II LANDASAN TEORI ................................................................................. 8
2.1 Analisis Sentimen ............................................................................ 8
2.2 Twitter ............................................................................................. 8
2.2.1 Twitter API ............................................................................... 9
2.2.2 Analisis Sentimen Pada Twitter ............................................. 10
2.2.3 Struktur Data Twitter ............................................................. 10
2.3 Text Mining .................................................................................... 11
2.4 Web Service .................................................................................. 13
2.5 Pre-proccessing ............................................................................. 15
2.6 Klasifikasi ...................................................................................... 15
2.7 Metode Klasifikasi Analisis Sentimen .......................................... 17
2.6.1 Supervised Learning .............................................................. 17
2.6.2 Unsupervised Learning .......................................................... 18
2.8 Metode Lexicon ............................................................................. 18
xii
UIN Syarif Hidayatullah Jakarta
2.9 Kamus Lexicon .............................................................................. 20
2.10 Pembangunan Index ...................................................................... 21
2.11 Pembobotan Kata .......................................................................... 23
2.12 Algoritma Naive Bayes ................................................................. 25
2.13 Algoritma K-Nearest Neighbor (K-NN) ........................................ 26
2.14 Confusion Matrix .......................................................................... 27
2.15 Metode Simulasi ............................................................................ 28
2.14.1 Problem Formulation ............................................................. 28
2.14.2 Conceptual Model .................................................................. 29
2.14.3 Collection of Input/Output Data ............................................ 29
2.14.4 Modelling Phase ..................................................................... 29
2.14.5 Simulation Phase .................................................................... 30
2.14.6 Verification, Validation and Experimentation ....................... 30
2.14.7 Output Analysis Phase ........................................................... 30
BAB III METODE PENELITIAN ...................................................................... 32
3.1 Metode Pengumpulan Data ........................................................... 32
3.1.1 Studi Pustaka .......................................................................... 32
3.1.2 Observasi ................................................................................ 32
3.1.3 Studi Literatur ........................................................................ 32
3.2 Metode Simulasi ............................................................................ 35
3.2.1 Problem Formulation (Formulasi Masalah) .......................... 35
3.2.2 Conceptual Model (Pemodelan Konsep) ............................... 36
3.2.3 Collection of Input/Output Data (Pengumpulan Masukan atau
Keluaran Data) ..................................................................................... 36
3.2.4 Modeling Phase (Tahap Permodelan) .................................... 36
3.2.5 Simulation Phase (Tahap Simulasi) ....................................... 36
3.2.6 Conclusion (Verification, Validation, and Experimentation) 37
3.2.7 Output Analysis Phase (Fase Analisa Hasil) .......................... 37
3.3 Skenario Pengujian ........................................................................ 37
3.4 Alur Penelitian ............................................................................... 38
BAB IV IMPLEMENTASI .................................................................................. 39
4.1 Problem Formulation ..................................................................... 39
4.2 Conceptual Model ......................................................................... 39
4.2.1 Conceptual Model Crawling Data ......................................... 39
4.2.2 Conceptual Model Pendekatan Lexicon ................................. 42
4.2.3 Conceptual Model Klasifkasi Naive Bayes............................ 46
xiii
UIN Syarif Hidayatullah Jakarta
4.2.4 Conceptual Model Klasifkasi K-Nearest Neighbor ............... 52
4.3 Collection Input / Output Data ...................................................... 59
4.4 Modelling Phase ............................................................................ 62
4.4.1 Konstruksi Pendekatan Lexicon ............................................. 63
4.4.2 Konstruksi Pendekatan Naive Bayes ..................................... 65
4.4.3 Konstruksi Pendekatan K-NN ................................................ 70
4.5 Simulation Phase ........................................................................... 78
4.5.1 Tahap Pengujian Data Uji ...................................................... 79
4.6 Verification, Validation and Experimentation .............................. 85
4.7 Output Analysis Phase ................................................................... 85
BAB V HASIL DAN PEMBAHASAN ................................................................ 86
5.1 Verification, Validation and Experimentation .............................. 86
5.2 Output Analysis Phase ................................................................... 87
5.2.1 Hasil Klasifikasi Sentimen Kombinasi Algoritma Naive Bayes
Dengan Pendekatan Lexicon ................................................................ 87
5.2.2 Hasil Klasifikasi Sentimen Kombinasi Algoritma K-NN dan
Pendekatan Lexicon .............................................................................. 92
5.2.3 Analisa Hasil Tingkat Akurasi Kombinasi Algoritma Naive
Bayes dan K-NN dengan Pendekatan Lexicon ..................................... 96
5.2.4 Analisis Hasil Perbandingan Akurasi Algoritma Naive Bayes
Dengan Algoritma K-NN.................................................................... 103
BAB VI KESIMPULAN DAN SARAN ............................................................ 105
6.1 Kesimpulan .................................................................................. 105
6.2 Saran ............................................................................................ 105
DAFTAR PUSTAKA .......................................................................................... 107
LAMPIRAN......................................................................................................... 110
xiv
UIN Syarif Hidayatullah Jakarta
DAFTAR GAMBAR
Gambar 1. 1 Survei Pengguna Media Sosial .................................................. 2
Gambar 2. 1 Sistem Arsitektur Text Mining ................................................ 12
Gambar 2. 2 Gambaran XML pada web service .......................................... 14
Gambar 3. 1 Alur Penelitian......................................................................... 38
Gambar 4. 1 Setelah registrasi ..................................................................... 40
Gambar 4. 2 Otentikasi access token ........................................................... 40
Gambar 4. 3 Contoh hasil crawling data ...................................................... 41
Gambar 4. 4 Flowchart Conceptual Model Crawling Data ......................... 41
Gambar 4. 5 Alur Klasifikasi Lexicon ......................................................... 42
Gambar 4. 6 Tahap case folding .................................................................. 42
Gambar 4. 7 Tahap filtering ......................................................................... 43
Gambar 4. 8 Flowchart normalisasi ............................................................. 44
Gambar 4. 9 Hasil tahap normalisasi ........................................................... 45
Gambar 4. 10 Conceptual Model Pendekatan Lexicon ................................ 46
Gambar 4. 11 Alur klasifikasi naive bayes .................................................. 47
Gambar 4. 12 Tahap case folding naive bayes ............................................. 47
Gambar 4. 13 Tahap filtering naive bayes ................................................... 48
Gambar 4. 14 Flowchart stopword ............................................................... 49
Gambar 4. 15 Hasil tahap stopword naive bayes ......................................... 49
Gambar 4. 16 Tahap stemming .................................................................... 50
Gambar 4. 17 Flowchart stemming Nazrief Andriani .................................. 51
Gambar 4. 18 Conceptual Model Naive Bayes ............................................ 52
Gambar 4. 19 Tahap case folding K-NN ..................................................... 53
Gambar 4. 20 Tahap filtering K-NN ............................................................ 53
Gambar 4. 21 Flowchart stopword K-NN .................................................... 54
Gambar 4. 22 Hasil tahap stopword K-NN .................................................. 55
Gambar 4. 23 Tahap stemming K-NN ......................................................... 56
Gambar 4. 24 Flowchart stemming Nazrief Andrianivuntuk K-NN ........... 57
Gambar 4. 25 Langkah Algoritma K-NN ..................................................... 58
Gambar 4. 26 Conceptual Model Pendekatan K-NN ................................... 59
xv
UIN Syarif Hidayatullah Jakarta
Gambar 4. 27 Hasil Crawling Tweet ........................................................... 60
Gambar 4. 28 Skenario 1 akurasi naive bayes ............................................. 79
Gambar 4. 29 Skenario 1 Confusion Matrix Naive Bayes ........................... 80
Gambar 4. 30 Skenario 2 akurasi K-NN nilai k = 1 ..................................... 80
Gambar 4. 31 Skenario 2 akurasi K-NN Confusion Matrix ......................... 81
Gambar 4. 32 Skenario 3 Akurasi K-NN dengan nilai k = 3 ........................ 81
Gambar 4. 33 Skenario 3 K-NN Confusion Matrix ...................................... 82
Gambar 4. 34 Skenario 4 Akurasi K-NN dengan nilai k = 5 ........................ 82
Gambar 4. 35 Skenario 4 K-NN Confusion Matrix ...................................... 83
Gambar 4. 36 Skenario 5 Akurasi K-NN dengan nilai k = 9 ........................ 83
Gambar 4. 37 Skenario 5 Confusion Matrix ................................................ 84
Gambar 4. 38 Skenario 5 Akurasi K-NN dengan nilai k = 10 ...................... 84
Gambar 4. 39 Skenario 6 Confusion Matrix ................................................ 85
Gambar 5. 1 Perhitungan tabel K-NN .......................................................... 95
Gambar 5. 2 Hasil Eksperimen Naive Bayes dan K-NN ............................. 99
Gambar 5. 3 Grafik Tingkat Akurasi ......................................................... 100
Gambar 5. 4 Grafik Tingkat Presisi ........................................................... 100
Gambar 5. 5 Grafik Tingkat Recall ............................................................ 101
Gambar 5. 6 Grafik Tingkat F-Measure ..................................................... 101
Gambar 5. 7 Perbandingan Akurasi Naive Bayes Dan K-NN ................... 104
xvi
UIN Syarif Hidayatullah Jakarta
DAFTAR TABEL
Tabel 2. 1 Tabel Klasifikasi ......................................................................... 16
Tabel 2. 2 Confusion Matrix ........................................................................ 27
Tabel 3. 1 Tabel Penelitian Sejenis .............................................................. 33
Tabel 4. 1 score penjumlahan lexicon .......................................................... 45
Tabel 4. 2 Tipe Data Input Kamus Lexicon Positif ..................................... 60
Tabel 4. 3 Tipe Data Input Kamus Lexicon Negatif .................................... 60
Tabel 4. 4 Tipe Data Input Kamus Lexicon Negasi ..................................... 60
Tabel 4. 5 Tipe Data Input Kamus KBBI .................................................... 60
Tabel 4. 6 Tipe Data Input Kata Dasar ........................................................ 60
Tabel 4. 7 Tipe Data Input Kamus Stopwords ............................................. 61
Tabel 4. 8 Tipe Data Input Kata Tidak Baku Singkatan .............................. 61
Tabel 4. 9 Tipe Data Input Data Latih dan Uji ............................................ 61
Tabel 4. 10 Tipe Data Processing ................................................................ 61
Tabel 4. 11 Tipe Data Output Data Uji Naive Bayes ................................... 61
Tabel 4. 12 Tipe Data Output Data Uji K-NN .............................................. 61
Tabel 4. 13 Tipe Data Input Perhitungan K-NN ........................................... 62
Tabel 4. 14 Tipe Data Input TF-IDF ............................................................ 62
Tabel 4. 15 Tipe Data Input Likelihood Naive Bayes ................................. 62
Tabel 4. 16 Tabel Query Tokenisasi ............................................................ 64
Tabel 4. 17 Tabel Query Normalisasi .......................................................... 64
Tabel 4. 18 Hasil identifikasi kata sentimen ................................................ 64
Tabel 4. 19 Hasil identifikasi kata negasi .................................................... 65
Tabel 4. 20 Dokumen Latih ......................................................................... 66
Tabel 4. 21 Pengumpulan Dokumen Latih .................................................. 67
Tabel 4. 22 Case Folding Naive Bayes......................................................... 67
Tabel 4. 23 Filtering Naive Bayes ................................................................ 67
Tabel 4. 24 Tokenizing pada Naive Bayes ................................................... 67
Tabel 4. 25 Normalisasi Naive Bayes .......................................................... 68
Tabel 4. 26 Stopword dan Stemming Naive Bayes ...................................... 68
Tabel 4. 27 Case Folding Query Uji Naive Bayes ....................................... 69
Tabel 4. 28 Filtering Query Uji Naive Bayes .............................................. 69
xvii
UIN Syarif Hidayatullah Jakarta
Tabel 4. 29 Tokenizing Query Uji Naive Bayes ........................................... 69
Tabel 4. 30 Normalisasi Query Uji Naive Bayes ......................................... 69
Tabel 4. 31 Stopword dan Stemming Query Uji Naive Bayes .................... 69
Tabel 4. 32 Conditional Probability ............................................................ 70
Tabel 4. 33 Posterior Probability ................................................................ 70
Tabel 4. 34 Dokumen Latih K-NN ............................................................... 71
Tabel 4. 35 Pengumpulan Dokumen Latih K-NN ........................................ 71
Tabel 4. 36 Case Folding K-NN ................................................................... 72
Tabel 4. 37 Filtering K-NN .......................................................................... 72
Tabel 4. 38 Tokenizing K-NN ...................................................................... 72
Tabel 4. 39 Normalisasi K-NN ..................................................................... 73
Tabel 4. 40 Stopword dan Steming K-NN .................................................... 73
Tabel 4. 41 Hasil proses indexing K-NN ...................................................... 73
Tabel 4. 42 TF dan DF K-NN ....................................................................... 73
Tabel 4. 43 Pembobotan TF-IDF K-NN pada data latih .............................. 74
Tabel 4. 44 Case Folding Query Uji K-NN.................................................. 74
Tabel 4. 45 Filtering Query Uji K-NN ......................................................... 74
Tabel 4. 46 Tokenizing Query Uji K-NN ...................................................... 75
Tabel 4. 47 Normalisasi Query Uji K-NN .................................................... 75
Tabel 4. 48 Stopword dan Stemming Query Uji K-NN ............................... 75
Tabel 4. 49 Pembobotan TF-IDF K-NN menggunakan query uji ................ 76
Tabel 4. 50 Hasil perkalian skalar antara query dan data latih .................... 76
Tabel 4. 51 Hasil panjang vektor setiap dokumen ....................................... 76
Tabel 4. 52 Simulasi Penelitian .................................................................... 78
Tabel 5. 1 Perbandingan Klasifikasi Naive Bayes ....................................... 87
Tabel 5. 2 Hasil klasifikasi sentimen kombinasi algoritma K-NN dan
Lexicon ......................................................................................................... 92
Tabel 5. 3 Hasil Pengujian Naive Bayes ...................................................... 96
Tabel 5. 4 Tabel Hasil Pengujian k = 1 ........................................................ 96
Tabel 5. 5 Tabel Hasil Pengujian k = 3 ........................................................ 97
Tabel 5. 6 Tabel Hasil Pengujian k = 5 ........................................................ 97
Tabel 5. 7 Tabel Hasil Pengujian k = 9 ........................................................ 98
xviii
UIN Syarif Hidayatullah Jakarta
Tabel 5. 8 Tabel Hasil Pengujian k =10 ....................................................... 98
1
UIN Syarif Hidayatullah Jakarta
BAB I
PENDAHULUAN
1.1 Latar Belakang
Aktivitas pemilihan legislatif (Pileg) dan pemilihan presiden (Pilpres)
2019 akan dimulai pada bulan april 2019 meskipun masih cukup lama namun
keramaiannya sudah bisa dirasakan. Dimulai tepatnya tanggal 17 agustus
2017 kemarin KPU sudah melakukan perencanaan dari jadwal sosialisasi
pemilihan hingga diakhiri peresmian calon presiden pada bulan oktober 2019
yang akan datang. Sejak tahapan pemilihan presiden 2019 ditetapkan nama-
nama calonnya mulai banyak diperbincangkan, baik di dunia nyata maupun
dunia maya (infopemilu.kpu.go.id).
Dewasa ini perkembangan pengguna internet indonesia di dunia maya
kian hari bertambah banyak. Terbukti dari data yang disurvei oleh APJII
(Asosiasi Penyelenggara Jasa Internet Indonesia ) pada tahun 2016 tercatat
mencapai 132,7 juta jiwa naik menjadi 143,26 juta jiwa pada tahun
2017(news.detik.com). Hal itu juga dapat dilihat dari survei APJII tentang
pemanfaatan pengunaan internet di setiap bidang, para pengguna internet
cenderung lebih menyukai membaca berita. Salah satunya seperti
pemanfaatan internet di bidang lifestyle hasil tertinggi dicapai pada aktivitas
sosial media sebanyak 87,13 persen, lalu download musik sebesar 71,10
persen, download film sebesar 70 persen, kemudian pada bidang sosial politik
hasil pemanfaatan tertinggi dicapai oleh aktivitas membaca sosial dan
lingkungan sebesar 50,26 persen. Dari survei tersebut dapat diketahui bahwa
pemanfaatan internet di indonesia cukup tinggi terhadap penggunaan media
sosial dan posisi kedua yaitu membaca media massa online yang
menggerakan banyak media massa mulai banyak yang aktif ke dalam media
sosial. (https://apjii.or.id/survei2017)
2
UIN Syarif Hidayatullah Jakarta
Media sosial sendiri mengalami peningkatan pengguna aktif seperti
facebook, twitter, dan youtube, dari data 2015 memaparkan jumlah pengguna
twitter lebih dari 285 juta jiwa. Mayoritas penggunanya dari umur 16 tahun
hingga 65 tahun keatas. Twitter pada waktu belakangan ini kerap kali
digunakan dalam ranah sosial – politik misalnya seperti pergerakan sosial
bersama, melaporkan informasi tentang kemacetan, politik, kondisi cuaca,
bencana alam dan informasi tertentu seperti peringatan terhadap suatu
kejadian. Beberapa jurnal pun meneliti mengenai keutamaan twitter dalam
menganalisis dan melakukan klasifikasi terhadap data contohnya seperti
jurnal dengan judul analysis of tweet related to cyberbullying yang isinya
tentang analisa sentimen terkait cyberbullying (Alim, 2015).
Media sosial twitter juga belakangan ini mengalami perubahan fungsi
yang cukup drastis. Pada awal mula twitter berdiri media ini digunakan
sebagai alat berbalas pesan dan tempat berbagi, namun akibat popularitas
yang cukup tinggi penggunaan fungsinya bertambah banyak, seperti
pencarian trend, promosi produk, dan pemberian rating. Akibatnya fungsi
pada twitter yang awal mula sebagai tempat tanya jawab dan berbagi
informasi menjadi sarana yang digunakan diberbagai aspek salah satunya
sebagai media penelitian berupa text mining, sentimen analisis, dan artificial
intelligence (Hartanto,2017).
Gambar 1. 1 Survei Pengguna Media Sosial
3
UIN Syarif Hidayatullah Jakarta
Analisis sentimen atau opinion mining merupakan proses memahami,
mengekstrak dan mengolah data tekstual secara otomatis untuk mendapatkan
informasi sentimen yang terkandung dalam suatu kalimat. Minimumnya di
dalam analisis sentimen terdapat 2 kategori dalam menentukan sentimen yaitu
kategori sentimen positif dan negatif. Sentimen analisis sendiri merupakan
salah satu model klasifikasi data dengan pendekatan supervised learning di
dalam machine learning. Machine learning mempunyai 2 tipe teknik yaitu
supervised learning dan unsupervised learning. (Brownlee, 2016).
Supervised learning adalah salah satu tipe algoritma machine learning
yang menggunakan data latih yang dikenal (training dataset) untuk membuat
prediksi. Sedangkan unsupervised learning adalah salah satu tipe algoritma
machine learning yang digunakan untuk menarik kesimpulan dari dataset
yang terdiri dari input data labeled response. Metode unsupervised learning
yang paling umum adalah analisa cluster, yang digunakan pada analisa data
untuk mencari pola-pola tersembunyi atau pengelompokan dalam data,
sedangkan pada supervised learning contoh yang paling umum adalah
klasifikasi data. Mayoritas praktis dari machine learning sendiri
menggunakan supervised learning. Karena besarnya pengaruh dan manfaat
dari klasifikasi data menyebabkan penelitian dan aplikasi berbasis klasifikasi
data seperti text ming, analisis sentiment justru berkembang pesat (Ghulam,
2016).
Berbagai metode telah dikembangkan dan diterapkan untuk klasifikasi
teks. Seperti K-Nearest Neighbor (K-NN), Naive Bayes Classifier (NBC),
SVM, Deep Learning. Kemudian beberapa klasifikasi yang bergantung
dengan kamus atau Knowledge Base Approach yakni Lexicon dan Point
Mututal Information.(Zhang,2014)
Contoh penelitian Naive Bayes Classifier (NBC) pada tahun 2016
dibuat oleh Ghulam Asrofi Buntoro dengan judul “Analisa Sentimen Calon
Gurbernur DKI Jakarta 2017 di Twitter“. Dengan menggunakan 2 algoritma
yaitu Naive bayes dan SVM (Support Vector Machine) menggunakan dataset
mengenai calon gurbernur DKI Jakarta tahun 2017 berbentuk hasil acak dari
beberapa keyword dan media online dengan menghasilkan akurasi yang
4
UIN Syarif Hidayatullah Jakarta
tertinggi sebesar 95 persen untuk algoritma naive bayes dan 90 persen untuk
SVM.
Kemudian penelitian yang dilakukan oleh Hailong Zhang 2014,
mengenai perbandingan klasifikasi sentimen dengan menggunakan
pendekatan lexicon dan pendekatan machine learning. Dengan beberapa
algoritma terdiri dari SVM, Naive Bayes, Deep Learning, Lexicon sebagai
algoritma pembanding. Hasilnya penggunaan sentiwordnet yaitu klasifikasi
berdasarkan pendekatan lexicon dapat berbanding akurasi sebesar 64,25
persen lalu diikuti Naive Bayes sebesar 68,75 persen dan terbesar yakni SVM
71 persen. (Zhang,2014)
Berdasarkan uraian diatas, peneliti tertarik untuk melakukan analisis
sentimen menggunakan kombinasi pendekatan lexicon dengan beberapa
machine learning Naive Bayes dan K-NN untuk mengetahui seberapa besar
peningkatan akurasi jika dilakukan penggabungan. Pendekatan menggunakan
dataset dari media twitter dengan kata kunci calon presiden 2019 yang sedang
hangat diperbincangkan. Sehingga penulis mengangkat tema yang berjudul
“Analisis Kinerja Algoritma Naive Bayes dan K-NN Pada Sentimen
Analisis Dengan Pendekatan Lexicon Di Media Twitter”.
1.2 Tujuan Penulisan
Tujuan dari penulisan ini adalah untuk membandingkan akurasi
algoritma naive bayes dan K-NN dengan pendekatan lexicon menggunakan
analisa sentimen pada media twitter.
1.3 Manfaat Penulisan
Dengan melakukan penulisan ini, penulis dapat menguraikan manfaat-
manfaat sebagai berikut:
1. Penulis
a. Penulis dapat memahami materi-materi mengenai pengembangan
sistem berbasis web.
b. Penulis dapat mengimplementasikan pembelajaran bahasa
pemrograman berbasis web dengan membangun web analisa sentimen
menggunakan algoritma naive bayes dan K-NN.
2. Pembaca
5
UIN Syarif Hidayatullah Jakarta
a. Menambah wawasan pembaca tentang klasifikasi data berbentuk
analisis sentimen menggunakan algoritma naive bayes dan K-NN.
b. Pembaca dapat mengetahui secara langsung penggunaan algoritma
naive bayes dan K-NN ketika diimplementasikan berbentuk analisis
sentimen.
3. Universitas
a. Mengetahui kemampuan mahasiswa dalam menguasai materi-materi
pembelajaran yang telah diperoleh di bangku kuliah.
b. Mengetahui kemampuan mahasiswa dalam mengimplementasikan
ilmunya dan sebagai bahan evaluasi.
1.4 Rumusan Masalah
Berdasarkan latar belakang yang dijelaskan, maka pokok permasalahan
yang akan dibahas adalah bagaimana kinerja algoritma naive bayes dan K-
NN dalam meningkatkan akurasi pada analisa sentimen di twitter dengan
menggunakan pendekatan lexicon.
1.5 Batasan Masalah
Dengan luasnya cakupan pembahasan, maka penulis membatasi ruang
lingkup pembahasan agar penulis dapat fokus pada pembahasan yang ada.
Ruang lingkup pembahasan adalah:
1. Nilai k yang digunakan pada algoritma K-NN adalah k=1, k=3, k=5, K=9
dan k=10.
2. Menggunakan fitur seleksi TF-IDF pada algoritma K-NN.
3. Menggunakan stopwords berdasarkan kamus dari Tala sebagai tambahan
Text Preprocessing.
4. Menggunakan Stemming Nazief Andriani sebagai tambahan Text
Preprocessing.
5. Menggunakan data latih hasil crawling twitter dengan tweet yang merujuk
tagar Pilpres 2019 tentang Presiden Jokowi serta jumlah data latih sebesar
900 tweet.
6. Pengambilan data dilakukan pada periode 08 februari 2018 – 24 februari
2018 dan 12 Juni 2018 – 08 Agustus 2018 dengan kata kunci pilpres 2019
dan jokowi.
6
UIN Syarif Hidayatullah Jakarta
7. Bahasa Pemrograman yang digunakan Hypertext Preprocessor atau PHP
7.1.11 dan Database MySql menggunakan XAMPP control panel.
8. Metode yang digunakan adalah metode simulasi.
1.6 Metodologi Penelitian
Dalam penulisan ini menggunakan dua metode dalam merancang
aplikasi dan pengumpulan data serta informasi, yaitu metode Pengumpulan
Data dan Metode Simulasi.
1.6.1 Pengumpulan Data
Metode pengumpulan data dilakukan dengan studi pustaka, yaitu
dengan membaca buku-buku yang bersangkutan sebagai referensi dan bahan
acuan. Dan observasi data dengan cara crawling data pada twitter.
1.6.1 Metode Simulasi
Pada penelitian ini Penulis melakukan simulasi terhadap sistem yang
dibuat. Adapun langkah-langkah yang dilakukan yaitu (Madani, Kazmi, &
Mahlknecht, 2010):
1. Problem Formulation
2. Conceptual Model
3. Input Output Data
4. Modelling
5. Simulation
6. Verification, Validation, Experimentation and Output Analysis
1.7 Sistematika Penulisan
Untuk memudahkan dalam penulisan ini, maka pembahasan terbagi
menjadi 6 bagian atau bab yang diuraikan sebagai berikut:
BAB I PENDAHULUAN
Dalam bab ini berisi pembahasan mengenai Latar Belakang,
Tujuan Penulisan, Manfaat Penulisan, Rumusan Masalah,
Batasan Masalah, Metodologi Penelitian serta Sistematika
Penulisan.
BAB II LANDASAN TEORI
Dalam bab ini dijelaskan mengenai pembahasan teori yang
digunakan sebagai panduan dasar dalam penelitian ini.
7
UIN Syarif Hidayatullah Jakarta
BAB III METODE PENELITIAN
Dalam bab ini membahas metodologi penelitian yang
digunakan yaitu metodologi pengumpulan data dan metode
simulasi.
BAB IV IMPLEMENTASI DAN EKSPERIMEN
Dalam bab ini membahas tentang implementasi aplikasi
sentimen analisis.
BAB V HASIL DAN PEMBAHASAN
Dalam bab ini membahas hasil dan pembahasan berdasarkan
penelitian yang telah dilakukan serta sesuai dengan metodologi
yang digunakan.
BAB VI KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan dan saran
8
UIN Syarif Hidayatullah Jakarta
BAB II
LANDASAN TEORI
2.1 Analisis Sentimen
Analisis Sentimen dikatakan sebagai opinion mining dapat digunakan
dalam berbagai kemungkinan domain/entitas dari produk dan jasa, peristiwa
sosial dan politik serta kegiatan tertentu lainnya. Opinion atau pendapat
adalah pusat dari semua aktifitas manusia karena merupakan pemberi
pengaruh utama perilaku kita. Opinion dan konsep sejenisnya seperti
sentimen, evaluasi, sikap, dan emosi adalah subjek studi tentang analisis
sentimen (Liu, 2015).
Analisis sentimen merupakan topik penelitian yang aktif dibawah
natural language proccessing yang bertujuan untuk membangun sebuah
metode yang dapat diimplementasikan menjadi sebuah tools yang dapat
digunakan untuk mengekstraksi informasi subjektif berupa sentimen atau
opini dalam sebuah data text. Kecenderungan penelitian tentang analisis
sentimen berfokus pada pendapat yang menyatakan suatu sentimen memiliki
nilai positif atau negatif. (Liu, 2015)
Liu mencontohkan permasalahan kalimat sentimen pada kasus
pemilihan berikut : “(1) Saya membeli IPhone 7 enam bulan yang lalu. (2)
Saya menyukai kameranya yang memiliki kualitas gambar menakjubkan. (3)
Ketahanan pemakaian baterai juga sangat bagus. (4) Namun kurang baik
karena tidak memiliki fitur fast charging“.
Dari tulisan tersebut dapat dijelaskan sebagai berikut : tulisan ini
memiliki pendapat tentang suatu entitas/domain yaitu IPhone 7. Pada kalimat
(2) dan kalimat (3) kecenderungan pendapat positif terhadap IPhone 7 tentang
kamera yang menghasilkan kualitas gambar yang bagus dan ketahanan daya
baterai yang bagus. Sedangkan pada kalimat (4) mengekspresikan pendapat
negatif tentang fitur charging yang tidak ada.
2.2 Twitter
Twitter adalah sebuah situs web yang dimiliki dan dioperasikan oleh
Twitter Inc., yang menawarkan jaringan sosial berupa microblog sehingga
9
UIN Syarif Hidayatullah Jakarta
memungkinkan pengguna untuk mengirim dan membaca pesan Tweets
(Twitter, 2013). Mikroblog adalah adalah satu jenis alat komunikasi online
dimana pengguna dapat memperbarui status tentang mereka yang sedang
memikirkan dan melakukan sesuatu, apa pendapat mereka tentang suatu
objek atau fenomena tertentu. Tweets adalah teks tulisan hingga 140 karakter
yang ditampilkan pada halaman profil pengguna. Tweets bisa dilihat secara
publik, namun pengirim dapat membatasi pengiriman pesan ke daftar teman-
teman mereka saja. Pengguna dapat melihat tweets pengguna lain yang
dikenal dengan sebutan pengikut (follower).
2.2.1 Twitter API
Application Programming Interface (API) merupakan fungsi-
fungsi/perintah-perintah untuk menggantikan bahasa yang digunakan dalam
system calls dengan bahasa yang lebih terstruktur dan mudah dimengerti oleh
programmer. Fungsi yang dibuat dengan menggunakan API tersebut
kemudian akan memanggil system calls sesuai dengan sistem operasinya.
Tidak tertutup kemungkinan nama dari system calls sama dengan nama di
API. Twitter menyediakan API yang diperuntukkan untuk developer yang ada
pada website https://developer.twitter.com. Twitter API terdiri dari 3 bagian
yaitu :
a. Search API
Search API dirancang untuk memudahkan user dalam mengelola query
search di konten twitter. User dapat menggunakannya untuk mencari
tweet berdasarkan keyword khusus atau mencari tweet lebih spesifik
berdasarkan username twitter. Search API juga menyediakan akses pada
data trending topic.
b. REST API
REST API memperbolehkan developer untuk mengakses inti dari Twitter
seperti timeline, status update dan informasi user. REST API digunakan
dalam membangun sebuah aplikasi Twitter yang kompleks yang
memerlukan inti dari Twitter
c. Streaming API
10
UIN Syarif Hidayatullah Jakarta
Streaming API digunakan developer untuk kebutuhan yang lebih intensif
seperti melakukan penelitian dan analisis data. Streaming API dapat
menghasilkan aplikasi yang dapat mengetahui statistik status update,
follower dan lain sebagainya
Pada penelitian ini, bagian Twitter API yang digunakan adalah REST
API, dengan menggunakan REST API proses pengumpulan data
komentar pengguna twitter akan lebih mudah didapat.
2.2.2 Analisis Sentimen Pada Twitter
Definisi analisis sentimen twitter pada dasarnya merujuk pada
pendapat komentar yang ada pada media twitter. Pesan twitter lebih mudah
untuk dilakukan analisis karena penulisan yang dibatasi. Kalimat seringkali
memuat pendapat tunggal, meskipun tidak bersifat mutlak bahwa setiap
kalimat berisi pendapat tunggal. Dalam kasus lain terdapat kalimat dengan
pendapat lebih dari satu pada suatu kalimat namun ini hanya sebagian kecil
(Liu, 2015).
Pada dasarnya analisis sentimen merupakan tahapan klasifikasi.
Namun tahapan klasifikasi sentimen pada twitter yang tidak terstruktur
menyebabkan sedikit lebih sulit dibanding dengan klasifikasi dokumen
terstruktur. Langkah pertama adalah untuk mengklasifikasikan apakah
kalimat mengungkapkan pendapat atau tidak. Langkah kedua adalah
mengklasifikasikan kalimat-kalimat pendapat menjadi positif dan kelas
negatif.
2.2.3 Struktur Data Twitter
Untuk mendalami permasalahan analisis sentimen twitter diperlukan
pemahaman terhadap struktur data twitter itu sendiri. Twitter menjadi sumber
yang hampir tak terbatas yang digunakan pada text classification. Menurut
Go (2009), terdapat banyak karakteristik pada tweets twitter. Pesan pada
twitter memiliki banyak attribute yang unik, yang membedakan dari media
sosial lainnya :
1. Twitter memiliki maksimal panjang karakter yaitu 140 karakter.
11
UIN Syarif Hidayatullah Jakarta
2. Twitter menyediakan data yang bisa diakses secara bebas dengan
menggunakan Twitter API, mempermudah saat proses pengumpulan
tweets dalam jumlah yang sangat banyak.
3. Pengguna twitter mem-posting pesan melalui banyak media berbeda
untuk mengungkapkan pendapat tentang suatu topik atau kejadian
tertentu, sehingga merupakan sumber yang bagus dalam menemukan
pendapat orang lain.
4. Terdapat ragam topik didalamnya. Setiap pengguna dapat menuliskan
topik apapun pada pesan twitter.
2.3 Text Mining
Menurut Raymon J. Mooney (2006), text mining memiliki definisi
menambang data yang berupa teks dimana sumber data biasanya didapatkan
dari dokumen, dan tujuannya adalah mencari kata-kata yang dapat mewakili
isi dari dokumen sehingga dapat dilakukan analisa keterhubungan antar
dokumen. Berikut ini merupakan tahapan dari text mining:
1. Tahap Tokenizing
Tahap tokenizing adalah tahap pemotongan string input berdasarkan
tiap kata yang menyusunya. Contoh dari tahap ini adalah sebagai
berikut:
a. Manajemen Pengetahuan (teks input)
b. Manajemen pengetahuan (hasil tokenizing)
2. Tahap Filtering
Tahap filtering adalah tahap mengambil kata-kata penting dari hasil
tokenizing. Bisa menggunakan stoplist (membuang kata yang kurang
penting) dan wordlist (menyimpan kata yang penting. Contoh dari tahap
ini adalah sebagai berikut:
a. manajemen pengetahuan adalah sebuah konsep baru (hasil token).
b. manajemen pengetahuan konsep baru (hasil filtering)
3. Tahap Stemming
Tahap stemming adalah adalah tahap mencari root kata dari teks yang
dimasukan. Contoh dari tahap ini adalah sebagai berikut:
a. Memasukan (teks input)
12
UIN Syarif Hidayatullah Jakarta
b. Masuk (hasil stemming)
4. Tahap Analisis
Tahap analisis adalah tahap penentuan seberapa jauh keterhubungan
antara kata-kata dengan dokumen yang ada.
Berikut gambaran sistem arsitektur text mining yang dicantumkan pada
buku (Feldman, dkk. 2007).
Gambar 2. 1 Sistem Arsitektur Text Mining
Penelitian dibidang text mining menangani masalah yang berkaitan
dengan representasi teks, klasifikasi, clustering, ekstraksi informasi atau
pencarian dan pemodelan pola. Dalam hal ini pemilihan karakteristik, juga
domain penelitan dan prosedur penelitian menjadi peran penting. Oleh karena
itu, adaptasi dari algoritma data mining dari teks yang diketahui sangat
diperlukan. Maka dari itu untuk mencapai hal ini seringkali berdasarkan
penelitian sebelumnya text mining bergantung pada information retrieval,
natural language processing dan information extraction. Selain itu juga
penerapan metode data mining dan statistic juga diterapkan untuk menangani
masalah ini (Hotho, 2005).
Information Retrieval (IR) adalah menemukan bahan (biasanya
dokumen) dari suatu keadaan yang tidak terstruktur (biasanya teks) yang
memenuhi kebutuhan informasi dari dalam kumpulan data yang besar
(biasanya disimpan didalam komputer) (Manning, dkk. 2009). Natural
Language Processing (NLP) bertujuan untuk mencapai hasil yang lebih baik
dalam pemahaman bahasa alami dengan menggunakan komputer. Sedangkan
Ekstraksi Informasi (IE). Bertujuan untuk menemukan informasi tertentu dari
dokumen teks yang kemudian Ini disimpan dalam basis data seperti pola
sehingga dapat digunakan dan dimanfaatkan (Hotho, 2005).
Hotho (2005). juga mengatakan bahwa pada penelitian text mining
diperlukan tahapan text preprocessing pada koleksi dokumen dan menyimpan
13
UIN Syarif Hidayatullah Jakarta
informasi tersebut dalam struktur data. Pendekatan text mining didasarkan
pada pemikiran bahwa dokumen teks dapat diwakili oleh satu set kata-kata,
yaitu dokumen teks digambarkan berdasarkan pada set kata-kata yang
terkandung di dalamnya.
2.4 Web Service
Web Services adalah kumpulan dari fungsi dan method yang terdapat
pada sebuah server yang dapat dipanggil oleh klien dari jarak jauh, kemudian
untuk memanggil method-method tersebut kita bebas menggunakan aplikasi
yang akan dibuat dengan bahasa pemrograman apa saja yang dijalankan pada
platform apa saja. Menurut Kasman (2015) web service digunakan sebagai
suatu fasilitas yang menyediakan layanan (dalam bentuk informasi atau data)
kepada sistem lain, sehingga dapat berinteraksi dengan sistem tersebut
melalui layanan-layanan yang disediakan. Web service menyimpan data
informasi dalam format JSON atau XML, sehingga data ini dapat diakses oleh
sistem lain walaupun berbeda platform, sistem operasi, dan bahasa
pemrograman.(Kasman,2015)
Teknologi web services menawarkan kemudahan dalam memberikan
informasi tanpa mempermasalahkan perbedaan teknologi yang digunakan
masing-masing sumber. Misalkan sebuah situs informasi dibangun dengan
menggunakan database Oracle sedangkan situs lainya menggunakan Mysql
sedangkan anda sendiri menggunakan perangkat lunak Open Source dalam
membangun situs web services akan mengatasi perbedaan ini. Web Services
diperlukan karena pada masa sekarang ini perangkat keras, sistem operasi,
aplikasi hingga bahasa pemrograman semakin beraneka ragam jenisnya.
Keadaan tersebut dapat menimbulkan masalah dalam proses pertukaran data
antar perangkat yang menggunakan aplikasi dan platform yang berbeda.
Berikut merupakan komponen yang ada digunakan didalam web
services, yaitu :
1. Extensible Markup Language (XML) merupakan dasar yang penting atas
terbentuknya web services. Web Services dapat berkomunikasi dengan
aplikasi-aplikasi yang memanggilnya dengan menggunakan XML, karena
XML berbentuk teks sehingga mudah untuk ditransportasikan
14
UIN Syarif Hidayatullah Jakarta
menggunakan protokol HTTP. Selain itu, XML juga bersifat platform
independen sehingga informasi di dalamnya bisa baca oleh aplikasi apapun
pada platform apapun selama aplikasi tersebut menerjemahkan tag-tag
XML. Kesimpulannya adalah apabila Web Services dan aplikasi dianggap
sebagai manusia yang berbeda ras dan bahasa, maka XML adalah sebuah
bahasa universal yang dapat mempersatukan mereka digunakan untuk
saling berkomunikasi dan bertukar informasi. Berikut merupakan contoh
XML pada gambar 2.2 Sebagai berikut :
Gambar 2. 2 Gambaran XML pada web service
2. Simple Object Access Protocol (SOAP) merupakan suatu format standar
dokumen berbentuk XML yang digunakan untuk melakukan proses
request dan response antara web services dengan aplikasi yang
memanggilnya. Dokumen SOAP digunakan untuk melakukan request
disebut dengan SOAP request sedangkan dokumen SOAP yang diperoleh
dari web services disebut dengan SOAP responses.
3. Web Service Definition Language (WSDL) adalah sebuah dokumen dalam
format XML yang isinya menjelaskan informasi detail sebuah Web
Services. Di dalam WSDL dijelaskan method-method apa saja yang
tersedia dalam web services, parameter apa saja yang diperlukan untuk
memanggil sebuah method, dan apa hasil atau tipe data yang dikembalikan
oleh method yang dipanggil tersebut.
15
UIN Syarif Hidayatullah Jakarta
2.5 Pre-proccessing
Pre-processing dalam proses klasifikasi dokumen digunakan untuk
membangun sebuah index dari koleksi dokumen. Index adalah himpunan
term yang menunjukkan isi atau topik yang dikandung oleh dokumen
(Indriani, 2014)
Pembuatan inverted index harus melibatkan konsep linguistic
processing yang bertujuan ekstraksi term-term penting dari dokumen yang
dipresentasikan sebagai bag-of-words. Ekstraksi term biasanya melibatkan
tiga operasi utama, antara lain:
a. Pemisahan rangkaian term (tokenization). Tokenization adalah tugas
memisahkan deretan kata di dalam kalimat, paragraph atau halaman
menjadi token atau potongan kata tunggal atau termedword. Tahapan ini
juga menghilangkan karakter-karakter tertentu seperti tanda baca dan
mengubah semua token ke bentuk huruf kecil (lower case).
b. Penghapusan stopwords. Stop word didefinisikan sebagai term yang
tidak berhubungan (irrelevant) dengan subyek utama dari database
meskipun kata tersebut sering kali hadir di dalam dokumen. Contoh stop
words adalah ada,adalah, adanya, adapun, agak.
c. Stemming. Kata-kata yang muncul di dalam dokumen sering mempunyai
banyak varian. Karena itu, setiap kata yang bukan stopwords direduksi
ke stemmed word (term) yang cocok yaitu kata tersebut distem untuk
mendapatkan bentuk akarnya dengan menghilangkan awalan atau
akhiran. Dengan cara ini, diperoleh kelompok kata yang cocok dimana
kata-kata dalam kelompok tersebut merupakan varian sintaktis dari satu
sama lain dan dapat menghimpun hanya satu kata per kelompok. Sebagai
contoh, kata terdaftar, pendaftaran berbagi-pakai term stemming umum
daftar, dan dapat diperlakukan sebagai bentuk lain dari kata ini (Indriani,
2014).
2.6 Klasifikasi
Klasifikasi merupakan suatu metode untuk mengelompokkan sebuah
objek ke dalam kelompok atau kelas tertentu. Algoritma klasifikasi yang
banyak digunakan secara luas, yaitu Decision atau Classification Trees,
16
UIN Syarif Hidayatullah Jakarta
Bayesian Classifiers atau Naïve Bayes classifiers, Neural Networks, Analisa
Statistik, Algoritma Genetika, Rough Sets, K-Nearest Neighbor, Metode Rule
Based, Memory Based Reasoning, dan Support Vector Machines (SVM).
Proses ini dilakukan agar data atau citra dapat dikategorikan dalam suatu
kelas tertentu yang telah ditentukan(Suyanto, 2017).
Sebuah sistem klasifikasi juga harus diukur kinerjanya guna melihat
tingkat akurasi dan kesalahan dari sistem tersebut. Umumnya, pengukuran
kinerja klasifikasi dilakukan dengan matriks konfusi (confusion matrikx).
Matriks konfusi merupakan tabel pencatat hasil kerja klasifikasi. Tabel 2.1
merupakan contoh matriks konfusi yang melakukan klasifikasi masalah biner
pada dua kelas yaitu kelas 0 dan 1. Setiap set 𝑓𝑖𝑗 dalam matriks menyatakan
jumlah record/data dari kelas i yang hasil prediksinya masuk ke kelas j.
Misalnya, set 𝑓11 adalah jumlah data dalam kelas 1 yang secara benar
dipetakan ke kelas 1, dan 𝑓10 adalah data dalam kelas 1 yang dipetakan secara
salah kelas 0 (Prasetyo, 2012).
Tabel 2. 1 Tabel Klasifikasi
𝑓𝑖𝑗 Kelas hasil prediksi (j)
Kelas = 1 Kelas = 0
Kelas Asli (i) Kelas = 1 𝑓11 (True Positive) 𝑓10(False
Negative)
Kelas = 0 𝑓01(False Positive) 𝑓00 (True Negative)
Berdasarkan isi tabel matriks, dapat diketahui jumlah data dari
masing-masing kelas yang diklasifikasikan secara benar, yaitu (𝑓10+ 𝑓01)
kuantitas matriks konfusi dapat diringkas menjadi dua nilai, yaitu akurasi dan
laju error. Beradasarkan jumlah data yang diklasifikasi secara benar, maka
dapat diketahui akurasi hasil prediksi, dan dengan mengetahui jumlah data
yang diklasifikasikan secara salah, dapat diketahui laju error dari prediksi
yang dilakukan. Dua kuantitas ini digunakan sebagai matrik kinerja
klasifikasi (Prasetyo, 2012).
Untuk menghitung akurasi digunakan formula sebagai berikut:
𝐽𝑢𝑚𝑙𝑎ℎ 𝑑𝑎𝑡𝑎 𝑦𝑎𝑛𝑔 𝑑𝑖𝑝𝑟𝑒𝑑𝑖𝑘𝑠𝑖 𝑠𝑒𝑐𝑎𝑟𝑎 𝑏𝑒𝑛𝑎𝑟
𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑟𝑒𝑑𝑖𝑘𝑠𝑖 𝑦𝑎𝑛𝑔 𝑑𝑖𝑙𝑎𝑘𝑢𝑘𝑎𝑛=
𝑓11 − 𝑓00
𝑓11 + 𝑓10 + 𝑓01 + 𝑓00
17
UIN Syarif Hidayatullah Jakarta
(𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.1)
Untuk menghitung laju error (kesalahan prediksi) digunakan formula
𝐽𝑢𝑚𝑙𝑎ℎ 𝑑𝑎𝑡𝑎 𝑦𝑎𝑛𝑔 𝑑𝑖𝑝𝑟𝑒𝑑𝑖𝑘𝑠𝑖 𝑠𝑒𝑐𝑎𝑟𝑎 𝑠𝑎𝑙𝑎ℎ
𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑟𝑒𝑑𝑖𝑘𝑠𝑖 𝑦𝑎𝑛𝑔 𝑑𝑖𝑙𝑎𝑘𝑢𝑘𝑎𝑛=
𝑓10 − 𝑓01
𝑓11 + 𝑓10 + 𝑓01 + 𝑓00
(𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.2)
2.7 Metode Klasifikasi Analisis Sentimen
Ada dua pendekatan utama dalam menentukan orientasi sentimen
yaitu, pendekatan supervised learning dan unsupervised learning .
2.6.1 Supervised Learning
Supervised learning adalah sebuah pendekatan dimana sudah terdapat
data yang dilatih, dan terdapat variabel yang ditargetkan sehingga tujuan dari
pendekatan ini adalah mengkelompokan (klasifikasi) suatu data ke data yang
sudah ada. Algoritma ini mengamati sekumpulan pasangan masukan-
keluaran dalam jumlah yang cukup besar dan kemudian menghasilkan sebuah
model yang mampu memetakan masukan yang baru menjadi keluaran yang
tepat.
Terdapat empat isu yang harus dipertimbangkan dalam menggunakan
teknik supervised learning (Feldman, dkk. 2007) yaitu perlunya memutuskan
kategori yang akan digunakan untuk mengklasifikasikan kasus. Kedua,
dibutuhkan satu set pelatihan untuk masing-masing kategori. Ketiga, perlu
menentukan fitur dari setiap kategori. Biasanya, lebih baik untuk
menghasilkan fitur sebanyak mungkin karena sebagian besar algoritma akan
dapat fokus hanya pada fitur yang relevan. Terakhir, perlu memutuskan
algoritma yang akan digunakan untuk kategorisasi tersebut.
Beberapa algoritma yang biasa digunakan terhadap pendekatan
supervised learning, diantaranya naïve bayes, dan support vector machines
(SVM). Supervised learning bergantung pada data pelatihan. Model
klasifikasi berdasarkan data latih yang telah diberi label dalam satu domain,
sering berkinerja buruk dengan domain yang berbeda. Meskipun adaptasi
domain telah dipelajari oleh para peneliti, namun teknologi ini masih jauh
dari sempurna (Liu, 2015).
18
UIN Syarif Hidayatullah Jakarta
2.6.2 Unsupervised Learning
Dalam pendekatan unsupervised learning, metode diterapkan tanpa
adanya latihan (training) dan tanpa adanya guru (teacher). Guru yang
dimaksud adalah label dari data. Misalkan ada sekelompok pengamatan atau
data tanpa ada label (output) tertentu, makan dalam unsupervised learning
harus mengelompokkan data tersebut ke dalam beberapa kelas yang kita
kehedaki. Ini terutama dilakukan karena data yang ada tidak memiliki label.
Label menandai kemana data akan dikelompokkan. Untuk melakukan tugas
(task) ini bias kita menerapkan metode unsupervised learning.
Unsupervised (Pang, dkk. 2008) adalah teknik yang terlebih dahulu
menciptakan sebuah sentimen tanpa data latih, dan kemudian menentukan
orientasi sentimen dari unit teks melalui beberapa fungsi berdasarkan positif
dan negatif. Menentukan sentimen dengan pendekatan unsupervised adalah
melalui kata-kata atau frase dengan polaritas sentimen, juga disebut sebagai
orientasi semantik. Masuk kedalam kelompok ini adalah Metode Lexicon.
2.8 Metode Lexicon
Lexicon Based merupakan metode yang sederhana, layak dan praktis
untuk analisis sentimen dari data media sosial. Data yang cocok dengan
metode Lexicon Based yaitu data kuesioner, data twitter, data facebook, atau
media sosial lainnya yang berupa opini pelanggan tentang suatu produk atau
pelayanan jasa (Matulatuwa et al., 2017).
Lexicon Based didasarkan pada asumsi bahwa orientasi sentimen
kontekstual adalah jumlah dari orientasi sentimen setiap kata atau frase.
Metode lexicon dapat digunakan untuk mengekstrak sentimen dari blog
dengan mengkombinasi lexical knowledge dan klasifikasi teks. Metode
lexicon dapat dibuat secara manual atau diperluas secara otomatis dari seed
of words (Matulatuwa et al., 2017).
Kamus adalah komponen penting dalam sistem yang menggunakan
lexicon based. Kamus digunakan dalam proses normalisasi kalimat dan
ekstraksi kata kunci. Berikut adalah contoh kamus dan isinya (Matulatuwa et
al., 2017).
1. Positive keywords: baik, bagus, bisa, ok, cepat, akurat, aman, senang.
19
UIN Syarif Hidayatullah Jakarta
2. Negative keywords: acuh, ambigu, bodoh, gagal, abnormal, susah,
lambat.
3. Negation keywords: seharusnya, bukan, tidak
Hu, dkk. 2004 dikutip Liu, 2012 mengusulkan algoritma berbasis
lexicon untuk aspek menentukan orientasi sentimen. Orientasi sentimen
kalimat itu ditentukan dengan menjumlahkan nilai orientasi semua kata
sentimen di kalimat. Sebuah kata positif diberi nilai sentimen dari +1 dan kata
negative diberi nilai sentimen dari -1. Kata negasi dan kata-kata yang
bertentangan (misalnya, tetapi dan namun) juga dipertimbangkan. Ada empat
langkah dalam menentukan orientasi sentimen berdasarkan pendekatan
lexicon yaitu :
1. Tandai kata yang mengandung sentimen : untuk setiap kalimat yang berisi
satu atau lebih kata sentimen, langkah ini menandai semua kata dan frasa
dalam sentimen kalimat. Setiap kata positif diberikan skor sentimen +1
dan setiap kata negatif diberikan skor sentimen -1. Contoh “Kualitas lampu
penerangan ini tidak baik [ +1 ], tapi daya nya tahan lama [ +1 ]". Dari
contoh tersebut kata baik bernilai +1 dan tahan lama bernilai +1 karna
termasuk kata positif.
2. Terapkan sentimen shifter adalah kata-kata dan frase yang dapat
mengubah orientasi sentimen. Ada beberapa jenis shifter kata negasi
seperti tidak, tidak pernah, dan tidak ada adalah jenis yang paling umum.
Berdasarkan hal tersebut kalimat menjadi “Kualitas lampu penerangan ini
tidak baik [ -1 ], tapi daya nya tahan lama [ +1 ]" karena kata negasi " tidak.
" .
3. Agregat : Pada langkah ini berlaku fungsi agregasi pendapat dengan skor
sentimen yang dihasilkan untuk menentukan orientasi akhir dari sentimen.
𝑠𝑐𝑜𝑟𝑒(𝑓) = ∑𝑤𝑖𝑆𝑂
𝑑𝑖𝑠(𝑤𝑖, 𝑓) (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.3)
Keterangan :
w i SO = Jumlah (socre) fitur ke i setiap sentimen (Positif dan Negatif)
dis (wi,f) = Jumlah fitur yang berhasil ditemukan
20
UIN Syarif Hidayatullah Jakarta
2.9 Kamus Lexicon
Dalam pendekatan analisis sentimen dengan menggunakan Lexicon,
kamus merupakan komponen penting dalam ekstraksi kata sentimen.
Menggunakan pendekatan kamus untuk mengumpulkan kata-kata sentimen
adalah pendekatan yang jelas karena sebagian besar kamus misalnya,
WordNet mengandung sinonim dan antonim untuk setiap kata. Jadi secara
sederhana, teknik atau pendekatan ini adalah dengan menggunakan beberapa
kata sentimen benih untuk dijadikan acuan dan kemudian dicocokan
berdasarkan sinonimnya dan struktur antonim dari kamus.
Secara khusus, metode ini berfungsi sebagai berikut: Satu set kecil kata
sentimen dengan orientasi positif atau negatif yang diketahui kemudian
dikumpulkan secara manual. Algoritma ini kemudian menghitung banyaknya
kata dengan mencari di WordNet atau kamus lain sesuai dengan sinonim dan
antonimnya. Kata-kata yang ditemukan akan dimasukkan ke dalam daftar
positif atau negatif. Proses berakhir ketika tidak ada kata-kata baru yang dapat
ditemukan. Setelah proses selesai, langkah pemeriksaan digunakan untuk
menghitung agregat positif atau negatif. (Bhonde, 2015)
Kamus yang digunakan dalam pendekatan Lexicon diantaranya kamus
lexicon positif, kamus lexicon negatif, kamus lexicon negasi, KBBI, kamus
kata dasar, dan kamus stopwords.
a. Kamus positif
Kamus positif digunakan untuk meyeleksi kata-kata yang termasuk
kedalam sentimen positif dari suatu kalimat atau query yang akan
ditentukan sentimennya. Kamus positif pada penelitian ini sebanyak 1.182
kata. Sumber data didapatkan dari GITHUB,
https://github.com/masdevid/ID-OpinionWords.
b. Kamus negatif
Kamus negatif digunakan untuk meyeleksi kata-kata yang termasuk
kedalam sentimen negatif dari suatu kalimat atau query yang akan
ditentukan sentimennya. Kamus negatif pada penelitian ini sebanyak 2.402
kata. Sumber data didapatkan dari GITHUB,
https://github.com/masdevid/ID-OpinionWords.
21
UIN Syarif Hidayatullah Jakarta
c. Kamus negasi
Kamus negasi digunakan untuk mendeteksi suatu kalimat atau query yang
telah ditentukan sentimennya baik positif maupun negatif, apakah
sentimen tersebut diikuti kata negasi. Sentimen yang diikuti kata negasi
akan memiliki perubahan nilai sentimen dari yang sebelumnya. Kamus
negasi yang digunakan pada penelitian ini sebanyak 9 kata. Sumber data
didapatkan dari GITHUB, https://github.com/jakaprata/Analisis-
Sentimen-Twitter-Dengan-Klasifikasi-Naive-Bayes-menggunakan-
PHP/blob/master/negation.txt
d. Kamus kata dasar dan KBBI
Kamus kata dasar dan KBBI digunakan untuk melakukan proses stemming
dalam tahapan natural language processing. Stemming merupakan
pengubahan kata berimbuhan menjadi kata dasar. Dalam proses ini
dibutuhkan kamus kata dasar dan KBBI sebagai penyeleksian kata yang
sesuai. Kamus kata dasar dan KBBI yang digunakan dalam penelitian ini
sebanyak 29.932 kata dan 61.434 kata. Sumber data didapatkan dari
GITHUB :
https://github.com/nolimitid/nolimit-kamus/blob/master/kata-dasar/kata-
dasar-all.txt
https://github.com/geovedi/indonesian-wordlist/blob/master/00-
indonesian-wordlist.lst
e. Kamus stopwords
Kamus stopwords digunakan untuk penyeleksian kata-kata yang dianggap
tidak penting. Proses ini dilakukan untuk mempercepat proses klasifikasi
data. Kamus stopwords yang digunakan dalam penelitian ini sebanyak 756
kata. Sumber data didapatkan dari GITHUB,
https://github.com/masdevid/IDStopwords/blob/master/id.stopwords.02.0
1.2016.txt
2.10 Pembangunan Index
Untuk mendapatkan kata-kata yang digunakan dalam teks tertentu,
dibutuhkan proses tokenization, yaitu dimana dokumen teks dibagi menjadi
22
UIN Syarif Hidayatullah Jakarta
aliran kata-kata yang terpisah kemudian dengan menghapus semua tanda baca
dan dengan mengganti tab dan karakter non-teks lain dengan spasi tunggal
(Hotho, 2005). Selanjutnya (Hotho, 2005) juga mengatakan untuk dapat
mengurangi ukuran koleksi dokumen dapat dilakukannya proses filtering,
lemmatization dan stemming. Ketiga tahapan tersebut dapat dijelaskan
(Hotho, 2005) sebagaimana berikut:
1. Stopwords yaitu, menghapus kata-kata pada dokumen dimana
penyaringan untuk menghapus kata-kata yang mengganggu informasi
konten, seperti konjungsi, preposisi. Dan juga kata-kata tersebut
cenderung tidak memiliki relevansi statistik tertentu dan dapat dihapus
dari kamus
2. Lemmatization, yaitu mencoba untuk memberikan pola pada kata kerja
dan kata benda tunggal. Namun, untuk mengambarkan hal ini, bentuk
kata harus diketahui, yaitu part of speech (POS) dari setiap kata dalam
dokumen teks harus ditentukan. Karena proses penandaan ini biasanya
cukup memakan waktu dan masih rawan kesalahan, dalam
penggunaanya metode stemming yang diterapkan.
3. Metode stemming mencoba untuk membangun bentuk-bentuk dasar dari
kata kata. Dengan cara ini, diperoleh kelompok kata yang mempunyai
makna serupa tetapi berbeda wujud sintaktis satu dengan lainnya.
Sehingga proses stemming tidak akan merubah makna dari sebuah
dokumen. Namun justru meningkatkan relevansi kemiripan dokumen.
Ada beberapa algoritma yang dapat digunakan untuk stemming dalam
bahasa indonesia, yaitu algoritma Nazief dan Andriani, algoritma Arifin
dan Setiono, algoritma Vega dan algoritma Ahmad, Yussof dan Sembok.
Algoritma Nazief dan Andriani adalah algoritma yang paling efektif
untuk stemming bahasa Indonesia (Agusta, 2009).
Terdapat lima langkah pembangunan inverted index (Bintana, 2012), yaitu:
1. Membangun dokumen yang kemudian akan dihitung index, pada tahapan
berikut hasil dari kumpulan dokumen sering disebut corpus.
23
UIN Syarif Hidayatullah Jakarta
2. Penghapusan format dan markup dari dalam dokumen. Pada dokumen
yang mempunyai banyak tag markup dan format seperti dokumen
(X)HTML semua format Tag Markup dihapus.
3. Pemisahan rangkaian kata (tokenization). Pada tahap ini seluruh kata
(term) pada dokumen dipisahkan menjadi potongan kata tunggal.
Selanjutnya tahapan ini juga akan menghilangkan karakter-karakter
tertentu, yang tidak mewakili atau dapat mengurangi relevansi seperti
tanda baca dan mengubah bentuk huruf menjadi kecil.
4. Melakukan linguistic preprocessing untuk menghasilkan daftar kata
(term) yang ternormalisasi. Dua hal yang dilakukan dalam tahap ini
adalah:
5. Mengindeks dokumen (indexing). indexing dilakukan dengan membuat
inverted index yang terdiri dari dictionary dan postings. Inverted index
merupakan konversi dari dokumen asli yang mengandung sekumpulan
kata ke dalam daftar kata (dictionary) yang memiliki hubungan dengan
dokumen terkait dimana kata-kata tersebut muncul (postings).
Dictionary adalah daftar kata yang diperoleh dari hasil pengindeksan
koleksi dokumen.
2.11 Pembobotan Kata
Setiap term yang telah di-index diberikan bobot sesuai dengan struktur
pembobotan yang dipilih, apakah pembobotan lokal, global atau kombinasi
keduanya. Jika menggunakan pembobotan lokal maka, pembobotan term
diekspresikan sebagai tf (term frequency). Namun, jika pembobotan global
yang digunakan maka, pembobotan term didapatkan melalui nilai idf (inverse
document frequency). Beberapa aplikasi juga ada yang menerapkan
pembobotan kombinasi keduanya yaitu, dengan mengalikan bobot lokal dan
global (tf . idf) (Bintana, 2012).
1. Term Frekuency
Empat cara yang dapat digunakan untuk memperoleh nilai term
frequency (tf), yaitu:
a. Raw term frequency. Nilai tf sebuah term diperoleh berdasarkan jumlah
kemunculan term tersebut dalam dokumen. Contoh kasus dimana term
24
UIN Syarif Hidayatullah Jakarta
muncul sebanyak dua kali dalam suatu dokumen maka, nilai tf term
tersebut adalah 2.
b. Logarithm term frequency. Hal ini untuk menghindari dominasi
dokumen yang mengandung sedikit term dalam query, namun
mempunyai frekuensi yang tinggi. Cara ini menggunakan fungsi
logaritmik matematika untuk memperoleh nilai tf.
tf = 1 + log(tf)
c. Binary term frequency. Hanya memperhatikan apakah suatu term ada
atau tidak dalam dokumen. Jika ada, maka tf diberi nilai 1, jika tidak ada
diberi nilai 0. Pada cara ini jumlah kemunculan term dalam dokumen
tidak berpengaruh.
d. Augmented Term Frequency. Nilai tf adalah jumlah kemunculan suatu
term pada sebuah dokumen, sedangkan nilai max(tf) adalah jumlah
kemunculan terbanyak sebuah term pada dokumen yang sama.
𝑡𝑓 = 0.5 + 0.5 ×𝑡𝑓
𝑚𝑎𝑥(𝑡𝑓) (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.4)
2. Inverse Document Frekuency
Inverse document frequency (idf) digunakan untuk memberikan tekanan
terhadap dominasi term yang sering muncul di berbagai dokumen. Hal
ini diperlukan karena term yang banyak muncul di berbagai dokumen,
dapat dianggap sebagai term umum (common term) sehingga tidak
penting nilainya. Pembobotan akan memperhitungkan faktor kebalikan
frekuensi dokumen yang mengandung suatu term (inverse document
frequency).(Oktinas,2017)
𝑖𝑑𝑓(𝑡) = log (𝑛
𝑑𝑓(𝑡)) (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.5)
Keterangan :
n = jumlah dokumen dalam corpus
df(t) = document frekuency / jumlah dokumen dalam corpus yang
mengandung term t
25
UIN Syarif Hidayatullah Jakarta
2.12 Algoritma Naive Bayes
Metode naïve bayes memanfaatkan probabilitas atau nilai
kemungkinan. Konsep dasar yang digunakan oleh naïve bayes adalah teorema
bayes, yaitu melakukan klasifikasi dengan melakukan perhitungan nilai
probabilitas p(c), yaitu probabilitas kelas jika diketahui dokumen
(Yosyaningsih, 2015).
Naive bayes menganggap sebuah dokumen sebagai kumpulan dari kata-
kata yang menyusun dokumen tersebut, dan tidak memperhatikan urutan
kemunculuan kata pada dokumen perhitungan probabilitasnya dapat
dianggap sebagai hasil perkalian dari probabilitas kemunculan kata-kata pada
dokumen (Yosyaningsih, 2015).
Probabilitas sebuah dokumen berada di kelas c dapat dihitung
menggunakan rumus posterior probability sebagai berikut: (Rossi, 2017)
𝑃(𝑐𝑗|𝑤𝑖) = 𝑃(𝑐𝑗)𝑥𝑃(𝑤1|𝑐𝑗)𝑥 … 𝑥𝑃(𝑤𝑘|𝑐𝑗) (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.6)
Keterangan:
1. P(Cj|Wi) = Posterior Probability adalah peluang kemunculan hasil dari
prior dan likelihood untuk menentukan kategori sebuah kelas (dokumen).
2. P(Cj) = Prior Probability adalah peluang kemunculan tiap kelas
3. P(Wi|Cj) = Conditional Probability (Likelihood) adalah peluang kata-kata
pada kelas (dokumen) tertentu
Persamaan prior probability P(c) adalah sebagai berikut:
𝑃(𝑐) = 𝑁𝑐
𝑁 (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.7)
Keterangan:
1. Nc adalah Jumlah dokumen kelas c dalam training
2. N adalah jumlah keseluruhan dokumen training dari seluruh kelas
Kemudian untuk persamaan conditional probability P(w|c) adalah sebagai
berikut: (Rossi, 2017)
𝑃(𝑤𝑖|𝑐𝑗) = 𝑐𝑜𝑢𝑛𝑡(𝑤𝑖, 𝑐𝑗) + 1
(∑ 𝑐𝑜𝑢𝑛𝑡𝑤∈𝑣 (𝑤, 𝑐𝑗)) + |𝑉| (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.8)
26
UIN Syarif Hidayatullah Jakarta
Keterangan :
1. 𝑐𝑜𝑢𝑛𝑡(𝑤𝑖, 𝑐𝑗) adalah jumlah dokumen latih yang masuk ke dalam
kategori class, angka 1 ditambahkan untuk menghindari nilai nol.
2. ∑ 𝑐𝑜𝑢𝑛𝑡𝑤∈𝑣 (𝑤, 𝑐𝑗) adalah jumlah kemunculan kata pada semua kategori
class.
3. |𝑉| adalah jumlah kata unik pada seluruh kategori
2.13 Algoritma K-Nearest Neighbor (K-NN)
K-NN adalah algoritma untuk mengklasifikasi objek baru berdasarkan
atribut dan training samples (data latih). Dimana hasil dari sampel uji yang
baru diklasifikasikan berdasarkan mayoritas dari kategori pada K-NN.
Algoritma K-NN menggunakan klasifikasi ketetanggaan sebagai nilai
prediksi dari sampel uji yang baru (Krisandi, dkk. 2013). Data latih akan
dibangun dengan memperhatikan keseimbangan dokumen satu sama lain.
Adapun algoritma K-NN dapat dijelaskan (Oktinas, 2017) dengan keterangan
berikut :
a. Hitung jarak antara data sampel (data uji) dengan data latih yang telah
dibangun. Salah satu persamaan dalam menghitung jarak kedekatan
dapat menggunakan persamaan Cosine Similarity.
b. Menentukan parameter nilai k = jumlah tetanggaan terdekat.
c. Mengurutkan jarak terkecil dari data sample
d. Pasangkan kategori sesuai dengan kesesuaian
e. Cari jumlah terbanyak dari tetanggaan terdekat. Kemudian tetapkan
kategori.
Jarak yang digunakan dalam penelitian ini adalah Cosine Similarity.
𝐶𝑜𝑠(𝑖, 𝑘) =∑ 𝑘 (𝑑𝑖. 𝑑𝑘)
√∑ 𝑘 𝑑𝑖𝑘2 √∑ 𝑘 𝑑𝑗𝑘
2
(𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.9)
Keterangan :
∑ 𝑘 (𝑑1 𝑑𝑘) = vektor dot produk dari i dan k
√∑ 𝑘 𝑑𝑖𝑘2 = panjang vektor i
27
UIN Syarif Hidayatullah Jakarta
√∑ 𝑘 𝑑𝑗𝑘2 = panjang vektor k
Algoritma K-NN (Krisandi, dkk. 2013) adalah algoritma yang
menentukan nilai jarak pada pengujian data testing dengan data training
berdasarkan nilai terkecil dari nilai ketetanggaan terdekat didefinisikan
sebagai berikut:
𝐷𝑛𝑛(𝑐1 𝑐2) = 𝑚𝑖𝑛1≤𝑖≤𝑟,1≤𝑗≤𝑠𝑑(𝑦𝑖, 𝑧𝑖) (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.10)
2.14 Confusion Matrix
Dalam mengukur tingkat akurasi sistem orientasi sentimen, maka
digunakan tabel confussion matrix. Confusion matrix adalah sebuah tabel
yang menyatakan jumlah data uji yang benar diklasifikasikan dan jumlah data
uji yang salah diklasifikasikan. Contoh confusion matrix untuk klasifikasi
biner ditunjukkan pada tabel 2.2 berikut:
Tabel 2. 2 Confusion Matrix
Kelas Sebenarya Kelas hasil prediksi
Positif = 1 Negatif = 0
Positif = 1 TP FN
Negatif = 0 FP TN
Keterangan untuk tabel diatas dinyatakan sebagai berikut :
1. True Posstive (TP), yaitu jumlah dokumen dari kelas 1 yang benar dan
diklasifikan sebagai kelas 1.
2. True Negative (TN), yaitu jumlah dokumen dari kelas 0 yang benar
diklasifikasikan sebagai kelas 0.
3. False Positive (FP), yaitu jumlah dokumen dari kelas 0 yang salah
diklasifikasikan sebagai kelas 1.
4. False Negative (FN) yaitu jumlah dokumen dari kelas 1 yang salah
diklasifikasikan sebagai kelas 0.
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 𝑇𝑃 + 𝑇𝑁
𝑇𝑃 + 𝐹𝑁 + 𝐹𝑃 + 𝑇𝑁 (𝑃𝑒𝑟𝑠𝑎𝑚𝑎𝑎𝑛 2.11)
28
UIN Syarif Hidayatullah Jakarta
2.15 Metode Simulasi
Simulasi adalah suatu metodologi untuk melaksanakan percobaan
dengan menggunakan model dari suatu sistem nyata. Menurut Hasan (2002),
simulasi merupakan suatu metode pengambilan keputusan dengan mencontoh
atau mempergunakan gambaran sebenarnya dari suatu sistem kehidupan
dunia nyata tanpa harus mengalaminya pada keadaaan yang sesungguhnya.
Simulasi adalah suatu teknik yang dapat digunakan untuk memecahkan
model-model dari golongan yang luas. Golongan atau kelas ini sangat luasnya
sehingga dapat dikatakan “Jika semua cara yang lain gagal, cobalah simulasi”
(Schroeder, 1997)
Ada berbagai jenis lifecycle menurut Madani (2010) yang dapat
digunakan untuk studi pada pemodelan dan simulasi. Terdapat langkah-
langkah dasar yang harus dipertimbangkan dalam melakukan studi simulasi.
Lifecycle tidak harus diartikan sebagai sebuah sekuensial yang strict, bersifat
iteratif, dan kadang juga bertransisi dalam arah yang berlawanan. Demikian
juga, beberapa langkah terkadang dapat dilewati atau di-skip sesuai dengan
kompleksitas aplikasi. Hal ini sangat dianjurkan untuk menggunakan siklus
spiral dengan pengembangan incremental yaitu pada langkah 2-8, yang dapat
menyebabkan revisi untuk fase sebelumnya. Setiap fase dalam siklus spiral
harus berakhir sebuah prototipe yang sudah dapat bekerja yang sudah lebih
fungsionalitas dari siklus sebelumnya.
Madani et al (2010) meberikan suatu tahapan dalam melakukan studi
simulasi. Adapun tahapan-tahapan tersebut adalah sebagai berikut.
2.14.1 Problem Formulation
Setiap studi seharusnya dimulai dengan statemen terhadap masalah.
Proses simulasi dimulai dengan masalah yang memerlukan pemecahan atau
pemahaman. Sebagai contoh seperti kasus sebuah perusahaan kargo mencoba
untuk mengembangkan strategi baru untuk truk pengiriman atau astronom
mencoba untuk memahami bagaimana nebula terbentuk. Pada tahap ini, harus
dipahami perilaku dari sebuah sistem, organize operasi sistem sebagai obyek
dalam rangka percobaan. Kemudian perlu dianalisis berbagai alternatif solusi
dengan menyelidiki hasil sebelumnya untuk masalah yang sama. Solusi yang
29
UIN Syarif Hidayatullah Jakarta
paling diterima harus dipilih (menghilangkan tahap ini dapat menyebabkan
pemilihan solusi yang salah). Jika masalah melibatkan analisis kinerja, ini
adalah titik di mana bisa didefinisikan metrik kinerja (berdasarkan variabel
output) dan fungsi tujuan (yaitu, kombinasi dari beberapa metrik) (Madani et
al., 2010).
2.14.2 Conceptual Model
Langkah ini terdiri dari pengembangan deskripsi tingkat tinggi dari
struktur dan perilaku atau behavior sebuah sistem dan mengidentifikasi
semua benda dengan atribut dan interface mereka. Pada tahap ini harus
ditentukan apa saja variabel statenya, bagaimana mereka berhubungan, dan
mana yang penting untuk penelitian. Pada langkah ini, aspek-aspek kunci dari
requierements dinyatakan. Selama definisi model konseptual, perlu
diungkapkan fitur yang penting. Kemudian mendokumentasikan informasi-
untuk non-fungsional misalnya, perubahan masa depan, perilaku unintuitive,
dan hubungan sistem dengan lingkungan (Madani et al., 2010).
2.14.3 Collection of Input/Output Data
Pada tahap ini, kita harus mempelajari sistem untuk memperoleh data
input / output. Untuk melakukannya, harus diamati dan mengumpulkan
atribut yang dipilih pada tahap sebelumnya. Isu penting lainnya selama fase
ini adalah pemilihan ukuran sampel yang valid secara statistik dan format data
yang dapat diproses dengan komputer. Akhirnya, kita harus memutuskan
mana atribut yang stokastik dan yang deterministik. Dalam beberapa kasus,
tidak ada sumber data yang bisa dikumpulkan (misalnya, untuk sistem yang
belum ada). Dalam kasus tersebut, kita perlu mencoba untuk mendapatkan set
data dari sistem yang sama (jika tersedia). Pilihan lain adalah dengan
menggunakan pendekatan stokastik untuk menyediakan data yang diperlukan
melalui generasi nomor acak (Madani et al., 2010).
2.14.4 Modelling Phase
Pada tahap pemodelan, kita harus membangun representasi rinci dari
sistem berdasarkan model konseptual dan koleksi data yang dikumpulkan.
Model ini dibangun dengan mendefinisikan objek, atribut, dan metode
menggunakan paradigma yang dipilih. Pada titik ini, spesifikasi model dibuat,
30
UIN Syarif Hidayatullah Jakarta
termasuk set persamaan yang mendefinisikan perilaku dan struktur. Setelah
menyelesaikan definisi ini, kita harus berusaha untuk membangun struktur
awal model (mungkin berkaitan variabel sistem dan metrik kinerja). Harus
berhati-hati dalam menjelaskan setiap asumsi dan penyederhanaan dan juga
dalam mengumpulkan atribut ke EF (Entity Framework) model (Madani et
al., 2010).
2.14.5 Simulation Phase
Selama tahap simulasi, kita harus memilih mekanisme untuk
menerapkan model (dalam banyak kasus menggunakan komputer dan bahasa
pemrograman yang memadai serta tools yang tepat), dan model simulasi yang
dibangun. Selama langkah ini, mungkin diperlukan untuk menentukan
algoritma dan menerjemahkannya ke dalam program komputer. Pada tahap
ini, kita juga harus membangun model EF untuk proses simulasi (Madani et
al., 2010).
2.14.6 Verification, Validation and Experimentation
Pada tahap-tahap sebelumnya, tiga model yang berbeda dibangun:
model konseptual (spesifikasi), model sistem (desain), dan model simulasi
(executable program). Kita perlu untuk memverifikasi dan memvalidasi
model ini. Verifikasi terkait dengan konsistensi internal antara tiga model.
Validasi difokuskan pada korespondensi antara model dan realitas: adalah
hasil simulasi yang konsisten dengan sistem yang dianalisis. Sementara itu
pada fase experimentation, kita harus mengevaluasi hasil dari simulator,
menggunakan korelasi statistik untuk menentukan tingkat presisi untuk
metrik kinerja. Fase ini dimulai dengan desain eksperimen, dengan
menggunakan teknik yang berbeda. Beberapa teknik ini meliputi analisis
sensitivitas, optimasi,dan seleksi (dibandingkan dengan sistem alternatif)
(Madani et al., 2010).
2.14.7 Output Analysis Phase
Pada tahap analisis output, output simulasi dianalisis untuk
memahami perilaku sistem. Output ini digunakan untuk memperoleh
tanggapan tentang perilaku sistem yang asli. Pada tahap ini, alat visualisasi
dapat digunakan untuk membantu proses tersebut. Tujuan dari visualisasi
31
UIN Syarif Hidayatullah Jakarta
adalah untuk memberikan pemahaman yang lebih dalam tentang sistem yang
sedang diselidiki dan membantu dalam mengeksplorasi set besar data
numerik yang dihasilkan oleh simulasi (Madani et al., 2010).
32
UIN Syarif Hidayatullah Jakarta
BAB III
METODE PENELITIAN
3.1 Metode Pengumpulan Data
Pada penelitian ini penulis mengumpulkan data dan informasi yang
dapat menunjang proses dalam penelitian dimana proses pengumpulan data
sebagai berikut
3.1.1 Studi Pustaka
Studi pustaka dilakukan dengan pengumpulan teori-teori yang
berkaitan dengan penulisan skripsi sebagai bahan untuk melengkapi
penelitian ini. Sumber teori berasal dari buku referensi, hasil penelitian
(jurnal dan skripsi) dan artikel-artikel terkait. Selain itu peneliti juga
mengunjungi situs-situs yang terkait aplikasi natural language processing,
text mining, pendekatan lexicon dan algoritma klasifikasi tentang Naive
Bayes dan K-Nearest Neighbor (K-NN).
3.1.2 Observasi
Peneliti melakukan observasi data dari Twitter API tentang komentar
netizen terhadap salah satu calon pilpres 2019 joko widodo pada pemilihan
calon pilpres di tahun 2019. Crawling data dimulai dari tanggal 08 februari
2018 hingga 24 febuari 2018 kemudian crawling kedua dimulai tanggal 12
juni sampai 08 agustus 2018. Pengambilan data memanfaatkan fitur dari
twitter yang diperuntukkan untuk developer yang terdapat pada website
https://developers.twitter.com/. Setelah data didapatkan dari twitter API
dalam bentuk XML, kemudian data tersebut disimpan langsung menuju ke
database MySql.
3.1.3 Studi Literatur
Merupakan sumber data sekunder dalam penelitian. Studi literatur
dilakukan dengan pengumpulan teori-teori yang berkaitan dengan penulisan
riset sebagai bahan untuk melengkapi penelitian. Sumber teori berasal dari
buku referensi, hasil penelitian (jurnal dan skripsi), artikel terkait. Pustaka-
pustaka yang dijadikan acuan dapat dilihat di daftar pustaka. Pustaka-pustaka
yang dijadikan acuan dapat dilihat di daftar pustaka sebanyak 16 studi pustaka
yang terdiri dari 1 buku, 1 e-book, 10 jurnal, 4 sumber literatur elektronik.
33
UIN Syarif Hidayatullah Jakarta
Tabel 3. 1 Tabel Penelitian Sejenis
Judul
Penelitian
Nama Peneliti,
Tahun Tahapan yang
digunakan
Kesimpulan
Analisis
Sentimen Calon
Gubernur DKI
Jakarta 2017
Ghulam Asrofi
Buntoro, 2015
1. PreProcessing
a. Tokenizing,
b. Normalisasi
c. Cleansing
2. POS Tagger
3. Klasfikasi
a Naive bayes
b SVM
Pada tahap pre processing
banyak menggunakan
metode NLP seperti
seleksi komentar,
normalisasi, parsing yang
menyebabkan nilai akurasi
pada kedua algoritma
yaitu SVM dan Naive
bayes memiliki akurasi
paling tinggi 95% dan 90
%. Dataset yang
digunakan opini warga net
tentang pilkada dan
memiliki kekurangan
yaitu membutuhkan waktu
proses yang lebih lama
pada saat pengujian,
besarnya data latih tidak
meningkatkan akurasi
sistem
Analisis
Sentimen Pada
Acara Televisi
Menggunakan
Improved K-
Nearest
Neighbor
Willa Oktinas,
2017
1. PreProcessing
a Cleansing
b Filtering
c Tokenizing,
d Stopword
removal
e Stemming
2. Fitur Seleksi
a TF-IDF
Hasil Akurasi terbesar
yang didapat pada saat
k=10 sebesar 90%
,Menggunakan Cosine
Similarity. Dan memiliki
kekurangan
membutuhkan waktu
proses yang lebih lama
pada saat pengujian
34
UIN Syarif Hidayatullah Jakarta
3. Klasifikasi
a K-NN (Cosine
Similarity)
Machine
Learning and
Lexicon based
Methods for
Sentiment
Classifcation :
A Survey
Hailong Zhang,
Wenyan Gan,
Bo Jiang, 2014
- Membandingkan berbagai
macam algoritma untuk
sentimen klasifikasi baik
dari metode supervised
seperti svm dan naive
bayes hingga
unsupervised seperti
lexicon. Pada proses
perbandingan meskipun
membandingkan proses
supervised dan
unsupervised namun tidak
ada survey mencoba
analisa kombinasi dari
kedua metode tersebut.
Sentiment
Analyst of
Review
Datasets Using
Naive Bayes
and K-NN
Classifier
Lopamudra
Dey, Sanjay
Chakraborty,
Anuraag
Biswas,Sweta
Tiari, 2016
1. Preprocessing
2. Klasifikasi
a Naive Bayes
b K-NN
Hasil Akurasi paling
tinggi yang didapat pada
algoritma Naive Bayes
sebesar 81% dan pada K-
NN sebesar 69% dan
Kurangnya tahapan proses
Text Preprocessing
menyebabkan noise
dataset yang tinggi
berpengaruh pada nilai
akurasi klasifikasi
Sentiment
Analysis : A
Comparative on
Devika M D,
Sunitha C,
- Studi Perbandingan
analisis sentimen dari
berbagai pendekatan baik
35
UIN Syarif Hidayatullah Jakarta
Different
Approaches
Amal Ganesh,
2016
dari unsupervised learning
dan supervised learning
dengan tujuan melihat
seluruh kelebihan dari
berbagai algoritma
klasifikasi salah satunya
naive bayes dengan
kelebihan merupakan
algoritma yang mudah
digunakan dalam
klasifikasi, cocok dengan
jumlah data yang sedikit.
Kemudian K-NN dengan
kelebihan klasifikasi data
dalam jumlah besar.
3.2 Metode Simulasi
Metode yang digunakan pada penelitian ini yakni metode simulasi,
berikut langkah-langkah metode simulasi.
3.2.1 Problem Formulation (Formulasi Masalah)
Pada tahap formulasi masalah penulis melakukan identifikasi masalah
dari hasil penelitian sebelumnya. Pada penelitian (asrofi,2016) masalah
utama yaitu melakukan perbandingan klasifikasi naive bayes dengan svm
menggunakan data berupa sentimen yang diambil dari tweet berhubungan
dengan pemilihan gubernur DKI Jakarta 2017, Kemudian penelitian kedua
(Oktinas,2017) menjelaskan analisis sentimen dengan menggunakan
pembobotan tf-idf serta algoritma K-NN cosine similarity, dan pada penelitian
ketiga (Zhang,2014) yaitu perbandingan algoritma salah satunya lexicon
dalam sentimen analisis serta menguji akurasi algoritma dengan beberapa
penambahan seleksi fitur dan tahap preprocessing. Dan penelitian keempat
(Lopamudra,2016) yaitu membandingkan penggunaan algoritma klasifikasi
k-nearest neighbor dengan naive bayes dengan beberapa dataset.
36
UIN Syarif Hidayatullah Jakarta
3.2.2 Conceptual Model (Pemodelan Konsep)
Dalam penelitian ini pemodelan konsep membahas keseluruhan
penelitian. Pertama dengan identifikasi input dalam penelitian yaitu hasil
observasi data melalui media sosial twitter dengan menggunakan teknik
crawling data dan disimpan ke dalam database. Kedua klasifikasi sentimen
pada data latih menggunakan bantuan metode lexicon untuk memudahkan
pemberian label sentimen pada data latih. Kemudian masuk tahap klasifikasi
yaitu: data uji hasil crawling data setelah masuk tahap Pre-Processing di
proses satu per satu menggunakan algoritma pengujian naive bayes dan K-
NN. Hasil dari pengujian dihitung kemudian dapat dibandingkan tingkat
akurasi, presisi dan recall.
3.2.3 Collection of Input/Output Data (Pengumpulan Masukan atau
Keluaran Data)
Data yang berupa tweet diambil dari Twitter API sebanyak 1000
tweet. Jangka waktu pengambilan tweet berlangsung dari 19 April hingga 30
Juli 2018. Tweet yang diambil dengan crawling dijadikan sebagai input
penelitian. Kemudian data input tersebut di klasifikasi menggunakan
algoritma naive bayes dan K-NN dengan data latih sebanyak 900 kemudian
dibagi sebanyak 300 pada setiap kelas sentimen. Hasil klasifikasi tersebut
menghasilkan output berupa tingkat akurasi dari masing-masing algoritma
dengan melakukan pengujian klasifikasi sebanyak 100 tweet data uji.
3.2.4 Modeling Phase (Tahap Permodelan)
Pada tahap pemodelan, penulis membuat rancangan model sistem
yang akan dibuat. Pemodelan yang dibuat yaitu pemodelan pedekatan lexicon
sebagai metode pemberian label otomatis pada data latih dan pemodelan
dengan algoritma naive bayes dan K-NN untuk klasifikasi data uji.
3.2.5 Simulation Phase (Tahap Simulasi)
Penulis melakukan simulasi dengan membuat web sentimen
kemudian membandingkan algoritma klasifikasi Naive Bayes dan K-NN.
Simulasi fitur-fitur pada web sentimen yaitu memilih data mentah yang
diambil dari database Mysql untuk dianalisa dan diklasifikasi sentimennya.
37
UIN Syarif Hidayatullah Jakarta
Kemudian hasil dari klasifikasi dapat dibandingkan untuk mengetahui tingkat
akurasi setiap algoritma baik naive bayes dan K-NN.
3.2.6 Conclusion (Verification, Validation, and Experimentation)
Untuk membuat kesimpulan terlebih dahulu dilakukan verifikasi,
validasi, dan eksperimen. Validasi dan verifikasi tujuannya untuk
meyakinkan hasil dari perbandingan klasifikasi naive bayes dan K-NN sesuai
dengan yang konsep sebelumnya. Sedangkan eksperimen bertujuan untuk
mengevaluasi hasil simulasi.
3.2.7 Output Analysis Phase (Fase Analisa Hasil)
Penulis melakukan analisa terhadap hasil output berdasarkan skenario
yang dilakukan yaitu melakukan perbandingan dengan hasil klasifikasi
algoritma naive bayes dan K-NN dengan model data latih seimbang 300
sentimen positif, 300 negatif, dan 300 netral, serta menghitung hasil akurasi
dari kedua algoritma tersebut.
3.3 Skenario Pengujian
Setelah aplikasi sudah menjadi suatu perangkat lunak yang siap untuk
dipakai, maka perlu dilakukan pengujian terhadap aplikasi tersebut. Skenario
pengujian yang dilakukan adalah sebagai berikut.
1. Pengujian kombinasi algoritma Naive Bayes dan K-NN dengan labelling
pendekatan Lexicon. Pengujian ini dilakukan untuk mengklasifikasikan
data uji ke dalam kelas sentimen positif, negatif atau netral menggunakan
algoritma Naive Bayes dan K-NN menggunakan data latih hasil labelling
pendekatan Lexicon. Pengujian dilakukan berdasarkan penentuan nilai k
pada algoritma K-NN yaitu k=1, k=3, k=5, k=9, k=10. Perhitungan
tingkat akurasi, presisi, recall, dan f-measure akan ditentukan dengan
menggunakan model confusion matrix dari kombinasi algoritma tersebut
2. Pengujian peningkatan algoritma Naive Bayes dan K-NN dengan
pendekatan Lexion dibandingkan dengan algoritma Naive Bayes dan K-
NN. Pengujian ini dilakukan untuk mengetahui sejauh mana tingkat
akurasi penggunaan pendekatan Lexicon pada data latih klasfikasi Naive
Bayes dan K-NN dalam menentukan orientasi sentimen dibandingkan
dengan algoritma Naive Bayes dan K-NN tanpa pendekatan Lexicon.
38
UIN Syarif Hidayatullah Jakarta
3.4 Alur Penelitian
Alur Penelitian merupakan suatu alur diagram yang menjelaskan proses
berjalannya sebuah penelitian. Dalam penelitian ini, penulis mengacu pada
kerangka penelitian gambar 3.1 sebagai berikut:
Gambar 3. 1 Alur Penelitian
39
UIN Syarif Hidayatullah Jakarta
BAB IV
IMPLEMENTASI
4.1 Problem Formulation
Berdasarkan ketiga penelitian sebelumnya (sub bab 3.2.1), didapatkan
kesimpulan bahwa sentimen analisis dilakukan dengan membandingkan
algoritma Naive Bayes dan K-NN sebagai klasifikasi. Kemudian pada data
latih klasifikasi sentimen dibantu dengan metode lexicon untuk
mempermudah pemberian label secara otomatis dengan jumlah data latih
sebasar 900 dan data uji sebesar 100. Dilanjutkan pada tahap klasifikasi naive
bayes dan K-NN menggunakan seluruh jumlah data latih sebesar 900 dengan
100 data uji.
4.2 Conceptual Model
Berdasarkan Conceptual Model pada Subbab 3.2.2, berikut ini
merupakan alur dari penelitian ini.
4.2.1 Conceptual Model Crawling Data
Crawling data merupakan tahap awal berupa pengumpulan data untuk
diproses menuju tahap text mining. Dalam proses crawling data penggunaan
twitter API sebagai sarana dan pintu untuk mengambil data berupa tweet dari
media sosial twitter. Berikut adalah langkah-langkah dari setiap tahap
crawling data :
1. Koneksi API merupakan tahap awal untuk melakukan crawling data.
Koneksi API digunakan oleh aplikasi dengan cara menghubungkan
database dengan twitter API. Kemudian bahasa pemrograman yang
digunakan adalah PHP.
2. Registrasi adalah tahap kedua dari conceptual model crawling data.
Registrasi yang dimaksud setelah tahap koneksi API berupa registrasi
akun sebagai developer twitter untuk memperoleh akses penggunaan
twitter API. Website untuk registrasi adalah developer.twitter.com.
3. Otentikasi adalah tahap ketiga dari conceptual model crawling data.
Setelah berhasil melakukan registrasi sebagai developer twitter pada
website developer.twitter,com , pengguna dapat membuat access kepada
twitter API dengan menggunakan 4 kode yang diberikan untuk 1 aplikasi
40
UIN Syarif Hidayatullah Jakarta
API key, API secret key, Access token , Access token secret. Dengan
menggunakan akses web service yang diberikan pengguna dapat
mengambil sumber data baik tweet, tanggal, bahkan nama akun dengan
bahasa pemrograman dan aplikasi apapun dengan catatan menggunakan
ketentuan yang ada dalam website developer.twitter.com. Berikut
gambar 4.1 dan gambar 4.2 merupakan contoh otentikasi setelah
registrasi berhasil, yaitu :
Gambar 4. 1 Setelah registrasi
Gambar 4. 2 Otentikasi access token
4. Mengambil data tweet, setelah otentikasi berhasil data tweet dapat
diakses lewat twitter API namun memiliki kekurangan hanya maksimal
100 data tweet untuk sekali pengunaan bagi pengguna non premium.
41
UIN Syarif Hidayatullah Jakarta
Gambar 4. 3 Contoh hasil crawling data
Gambar 4. 4 Flowchart Conceptual Model Crawling Data
42
UIN Syarif Hidayatullah Jakarta
4.2.2 Conceptual Model Pendekatan Lexicon
Dalam analisis sentimen tahap penggunaan pendekatan lexicon
sebagai cara mempermudah pemberian label data latih secara otomatis setelah
proses crawling berhasil. Berikut adalah langkah-langkah dari setiap tahap
penggunaan pendekatan lexicon beserta dengan rich picture pada gambar 4.5
Sebagai berikut :
Gambar 4. 5 Alur Klasifikasi Lexicon
1. Case Folding merupakan tahap awal setelah teks (komentar pada twitter)
berupa hasil crawling didapatkan. Teks diproses oleh aplikasi dengan
merubah seluruh karakter huruf menjadi huruf kecil. Berikut merupakan
gambaran hasil setelah tahap case folding, yaitu :
Gambar 4. 6 Tahap case folding
43
UIN Syarif Hidayatullah Jakarta
2. Filtering merupakan tahap penghapusan URL, @hastag, karakter pada
dokumen setelah tahap case folding menggunakan jenis karakter UTF-8.
Berikut merupakan gambaran hasil setelah tahap filtering, yaitu:
Gambar 4. 7 Tahap filtering
3. Tokenizing merupakan proses dimana dalam satu dokumen dipecah
menjadi token-token dengan batas spasi. Contoh dari gambar 4.6 satu
dokumen isi kalimat : enak banget nyebut org gitu niru siapa pak setelah
melewati tahap tokenizing dokumen berubah menjadi penggalan kata
sebanyak 8 kata terdiri dari enak, banget, nyebut, org, gitu, niru, siapa,
pak.
4. Normalisasi kata. normalisasi dilakukan dua kali. Pertama normalisasi
kata yang memiliki kata berlebih dan tidak sesuai dengan standar ejaan
KBBI. Kedua normalisasi kata tidak baku yang diubah menjadi kata baku
sesuai dengan ejaan KBBI. Berikut merupakan langkah-langkah tahap
normalisasi, yaitu :
a. Cari kata yang akan dinormalisasi dalam kamus. Jika ditemukan maka
diasumsikan bahwa kata tersebut adalah kata dasar, maka algoritma
berhenti.
b. Jika tidak ditemukan hapus huruf berlebih dimulai untuk setiap huruf
pada kata. Periksa huruf pertama pada kata tersebut, kemudian lakukan
penyimpanan, lalu periksa huruf selanjutnya jika huruf sama dengan
huruf sebelumnya maka hapus huruf tersebut, jika tidak simpan huruf dan
lakukan hal yang sama pada huruf selanjutnya.
c. Jika telah diperiksa untuk setiap huruf, periksa kembali kata hasil proses
sebelumnya pada kamus.
44
UIN Syarif Hidayatullah Jakarta
d. Jika ditemukan maka algoritma berhenti, jika tidak ditemukan algoritma
akan mengembalikan kata yang asli sebelum dilakukan penghapusan
huruf berlebih.
Proses normalisasi dapat digambarkan dengan flowchart gambar 4.8
dan hasil dari tahap normalisasi pada gambar 4.9 sebagai berikut.
Gambar 4. 8 Flowchart normalisasi
45
UIN Syarif Hidayatullah Jakarta
Gambar 4. 9 Hasil tahap normalisasi
5. Ekstrasi Keyword. Tahap selanjutnya adalah mengekstrasi kata-kata
yang memiliki sentimen positif dan negatif dengan membandingkanya
dengan kamus lexicon positif, negatif dan negasi.
6. Menentukan Sentimen. Setelah keyword berhasil diekstrak, selanjutnya
masing-masing kelas sentimen yaitu sentimen positif dan negatif
dihitung kemunculannya. Jumlah kelas sentimen terbanyak, maka akan
diambil sentimennya. Contohnya pada tabel 4.2 score penjumlahan
lexicon nilai diberikan pada setiap kata yang sesuai dengan kamus
lexicon jika kata sesuai dengan kamus positif maka akan diberikan score
+1 ,kemudian jika sesuai dengan kamus negatif diberikan score -1 dan
ketika ada kata yang tidak sesuai dengan kamus positif dan negatif
diberikan score 0. Pada contoh gambar 4.2 kemunculan kata positif lebih
banyak dibandingkan negatif di dalam tweet tersebut dengan jumlah
seluruh score +1 maka dokumen tersebut memiliki sentimen positif,
begitupun sebaliknya pada sentimen negatif.
Tabel 4. 1 score penjumlahan lexicon
Kata Score
enak 1
Sekali 0
nyebut 0
org 0
46
UIN Syarif Hidayatullah Jakarta
gitu 0
niru 0
siapa 0
pak 0
jumlah 1
Gambar 4. 10 Conceptual Model Pendekatan Lexicon
4.2.3 Conceptual Model Klasifkasi Naive Bayes
Dalam analisa sentimen tahap klasifikasi naive bayes digunakan untuk
klasifikasi dokumen data uji setelah tahap sebelumnya berupa klasifikasi data
latih dengan pendekatan lexicon dilakukan. Berikut adalah langkah-langkah
dari setiap tahap penggunaan pendekatan klasifikasi naive bayes beserta rich
picture pada gambar 4.11 sebagai berikut:
47
UIN Syarif Hidayatullah Jakarta
Gambar 4. 11 Alur klasifikasi naive bayes
1. Ambil data uji hasil dari crawling data uji .
2. Tahap Case Folding merupakan tahap awal setelah teks (komentar pada
twitter) berupa hasil crawling didapatkan. Teks diproses oleh aplikasi
dengan merubah seluruh karakter huruf menjadi huruf kecil. Berikut
merupakan gambaran hasil setelah tahap case folding, yaitu :
Gambar 4. 12 Tahap case folding naive bayes
3. Filtering merupakan tahap penghapusan URL, @hastag, karakter pada
dokumen setelah tahap case folding menggunakan jenis karakter UTF-8.
Berikut merupakan gambaran hasil setelah tahap filtering, yaitu:
48
UIN Syarif Hidayatullah Jakarta
Gambar 4. 13 Tahap filtering naive bayes
4. Tokenizing merupakan proses dimana dalam satu dokumen dipecah
menjadi token-token dengan batas spasi. Contoh dari gambar 4.6 satu
dokumen isi kalimat : enak banget nyebut org gitu niru siapa pak setelah
melewati tahap tokenizing dokumen berubah menjadi penggalan kata
sebanyak 8 kata terdiri dari enak, banget, nyebut, org, gitu, niru, siapa,
pak.
5. Normalisasi kata. normalisasi dilakukan dua kali. Pertama normalisasi
kata yang memiliki kata berlebih dan tidak sesuai dengan standar ejaan
KBBI. Kedua normalisasi kata tidak baku yang diubah menjadi kata baku
sesuai dengan ejaan KBBI. Untuk langkah-langkah normalisasi kata
sesuai dengan sub bab 4.2.3 berjudul conceptual model pendekatan
lexicon.
6. Stopword removal merupakan proses penghapusan kata yang tidak
penting dalam text. Hal tersebut dilakukan untuk meningkatkan akurasi
dari pembobotan term dan memperkecil jumlah kata disetiap dokumen.
stopword yang berjumlah 758 kata untuk meningkatkan akurasi. Pada
tahap ini kata yang ada dalam kamus stopwords akan dibuang hal ini
dikarenakan stopwords dianggap sebagai kata tidak penting atau tidak
berguna dan tahapan ini juga dapat menekan penggunaan waktu dalam
proses pembobotan kata. (Tala,2003)
Proses stopword dapat digambarkan dengan flowchart pada gambar
4.14 dengan hasil pada gambar 4.15 sebagai berikut :
49
UIN Syarif Hidayatullah Jakarta
Gambar 4. 14 Flowchart stopword
Gambar 4. 15 Hasil tahap stopword naive bayes
7. Stemming merupakan proses recoding (penyusunan ulang) dimana kata
disusun kembali mengikuti kamus KBBI untuk menghilangkan imbuhan
dan awalan agar diubah menjadi kata dasar dengan menggunakan
algoritma nazief dan adriani. Selanjutnya untuk mengetahui tahapan
algoritma stemming (Nazief & Andriani) dijelaskan sebagai berikut:
a. Pertama, cek kata yang akan dicari akar katanya dalam kamus kata dasar.
Jika ditemukan maka diasumsikan kata tersebut adalah sebagai kata
50
UIN Syarif Hidayatullah Jakarta
dasar. Maka algoritma berhenti. Jika tidak ditemukan lakukan langkah
kedua
b. Hilangkan inflectional suffixes bila ada. Dimulai dari inflectional
particle (“-lah”, “-kah”, “-tah” dan“-pun”), kemudian possessive
pronoun (“-ku”, “-mu” dan “-nya”). Cari kata pada kamus
jika ditemukan algoritma berhenti, jika kata tidak ditemukan dalam
kamus lakukan langkah 3.
c. Hilangkan derivational suffixes (“-an”, “-i” dan “-kan”). Jika akhiran “-
an” dihapus dan ditemukan akhiran “-k”, maka akhiran “-k” dihapus.
Cari kata pada kamus jika ditemukan maka algoritma berhenti, jika kata
tidak ditemukan maka lakukan langkah 4.
d. Hilangkan derivation semua prefixes (“-di”, “ke-, “se-”, “te-”, “be-”,
“me-”, atau “pe-”). Cari kata pada kamus jika ditemukan maka
algoritma berhenti, jika kata tidak ditemukan maka lakukan langkah 5
e. Melakukan recoding.
f. Jika semua langkah telah dilakukan tetapi kata dasar tersebut tidak
ditemukan pada kamus, maka algoritma ini mengembalikan kata yang
asli sebelum dilakukan stemming.
Proses hasil stemming dapat digambarkan dengan pada gambar 4.16
dengan flowchart pada gambar 4.17 sebagai berikut :
Gambar 4. 16 Tahap stemming
51
UIN Syarif Hidayatullah Jakarta
Gambar 4. 17 Flowchart stemming Nazrief Andriani
8. Hitung nilai Prior Probability setiap kategori sentimen dengan rumus
prior probability pada sub bab 2.12 tentang Algoritma Naive Bayes dan
praktiknya terdapat pada sub bab 4.4.2 tentang Konstruksi Pendekatan
Naive Bayes.
9. Hitung nilai Condtional Probability dari setiap kata pada kategori
sentiment dengan rumus conditional Probability pada sub bab 2.12
tentang Algoritma Naive Bayes dan praktiknya terdapat pada sub bab
4.4.2 tentang Konstruksi Penedekatan Naive Bayes.
10. Hitung nilai Posterior Probability dengan rumus conditional Probability
pada sub bab 2.12 tentang Algoritma Naive Bayes dan praktiknya
terdapat pada sub bab 4.4.2 tentang Konstruksi Penedekatan Naive
Bayes.
52
UIN Syarif Hidayatullah Jakarta
11. Klasifikasi hasil dari nilai Posterior Probability untuk mengetahui
sentimen sebuah dokumen dengan cara melihat nilai tertinggi dari 3 tabel
kelas sentimen positif, negatif atau netral.
Gambar 4. 18 Conceptual Model Naive Bayes
4.2.4 Conceptual Model Klasifkasi K-Nearest Neighbor
Dalam analisa sentimen tahap penggunaan pendekatan klasifikasi K-
NN untuk klasfikasi data uji hasil analisa sentimen. Berikut adalah langkah-
langkah dari setiap tahap penggunaan pendekatan klasifikasi K-NN:
1. Ambil data uji dari hasil crawling data.
2. Tahap Case Folding merupakan tahap awal setelah teks (komentar pada
twitter) berupa hasil crawling didapatkan. Teks diproses oleh aplikasi
53
UIN Syarif Hidayatullah Jakarta
dengan merubah seluruh karakter huruf menjadi huruf kecil. Berikut
merupakan gambaran hasil setelah tahap case folding, yaitu :
Gambar 4. 19 Tahap case folding K-NN
3. Filtering merupakan tahap penghapusan URL, @hastag, karakter pada
dokumen setelah tahap case folding menggunakan jenis karakter UTF-8.
Berikut merupakan gambaran hasil setelah tahap filtering, yaitu:
Gambar 4. 20 Tahap filtering K-NN
4. Tokenizing merupakan proses dimana dalam satu dokumen dipecah
menjadi token-token dengan batas spasi. Contoh dari gambar 4.6 satu
dokumen isi kalimat : enak banget nyebut org gitu niru siapa pak setelah
melewati tahap tokenizing dokumen berubah menjadi penggalan kata
sebanyak 8 kata terdiri dari enak, banget, nyebut, org, gitu, niru, siapa,
pak.
5. Normalisasi kata. normalisasi dilakukan dua kali. Pertama normalisasi
kata yang memiliki kata berlebih dan tidak sesuai dengan standar ejaan
KBBI. Kedua normalisasi kata tidak baku yang diubah menjadi kata baku
sesuai dengan ejaan KBBI. Untuk langkah-langkah normalisasi kata
54
UIN Syarif Hidayatullah Jakarta
sesuai dengan sub bab 4.2.3 berjudul conceptual model pendekatan
lexicon.
6. Stopword removal merupakan proses penghapusan kata yang tidak
penting dalam text. Hal tersebut dilakukan untuk meningkatkan akurasi
dari pembobotan term dan memperkecil jumlah kata disetiap dokumen.
stopword yang berjumlah 758 kata untuk meningkatkan akurasi. Pada
tahap ini kata yang ada dalam kamus stopwords akan dibuang hal ini
dikarenakan stopwords dianggap sebagai kata tidak penting atau tidak
berguna dan tahapan ini juga dapat menekan penggunaan waktu dalam
proses pembobotan kata. (Tala,2003)
Proses stopword dapat digambarkan dengan flowchart pada gambar
4.21 dengan hasil pada gambar 4.22 sebagai berikut :
Gambar 4. 21 Flowchart stopword K-NN
55
UIN Syarif Hidayatullah Jakarta
Gambar 4. 22 Hasil tahap stopword K-NN
7. Stemming Nazief Andriani merupakan proses recoding (penyusunan
ulang) dimana kata disusun kembali mengikuti kamus KBBI untuk
menghilangkan kata imbuhan berupa awalan dan akhiran agar diubah
menjadi kata dasar dengan menggunakan algoritma nazief dan adriani.
Selanjutnya untuk mengetahui tahapan algoritma stemming (Nazief &
Andriani) dijelaskan sebagai berikut:
a. Pertama, cek kata yang akan dicari akar katanya dalam kamus kata dasar.
Jika ditemukan maka diasumsikan kata tersebut adalah sebagai kata
dasar. Maka algoritma berhenti. Jika tidak ditemukan lakukan langkah
kedua
b. Hilangkan inflectional (penambahan kata) suffixes (akhiran) maksudnya
menghapus akhiran kata untuk mencari akar kata sesuai dengan
ketentuan. Dimulai dari (“-lah”, “-kah”, “-tah” dan“-pun”), kemudian (“-
ku”, “-mu” dan “-nya”). Cari kata pada kamus
jika ditemukan algoritma berhenti, jika kata tidak ditemukan dalam
kamus lakukan langkah 3.
c. Hilangkan derivational suffixes atau akhiran kata seperti (“-an”, “-i” dan
“-kan”) untuk menemukan akar kata. Jika akhiran “-an” dihapus dan
ditemukan akhiran “-k”, maka akhiran “-k” dihapus. Cari kata pada
kamus jika ditemukan maka algoritma berhenti, jika kata
tidak ditemukan maka lakukan langkah 4.
d. Hilangkan derivation (proses pembentukan kata) berupa prefixes
(awalan) maksudnya menghapus seluruh awalan suku kata yang ada di
56
UIN Syarif Hidayatullah Jakarta
dalam ketentuan huruf awalan seperti (“-di”, “ke-, “se-”, “te-”, “be-”,
“me-”, atau “pe-”) untuk menemukan akar kata. Cari kata pada kamus
jika ditemukan maka algoritma berhenti, jika kata tidak ditemukan maka
lakukan langkah 5
e. Melakukan recoding.
f. Jika semua langkah telah dilakukan tetapi kata dasar tersebut tidak
ditemukan pada kamus, maka algoritma ini mengembalikan kata yang
asli sebelum dilakukan stemming.
Proses hasil stemming dapat digambarkan dengan pada gambar 4.23
dengan flowchart pada gambar 4.24 sebagai berikut :
Gambar 4. 23 Tahap stemming K-NN
57
UIN Syarif Hidayatullah Jakarta
Gambar 4. 24 Flowchart stemming Nazrief Andriani untuk K-NN
8. Membangun pembobotan kata menggunakan teknik TF-IDF dengan
mencari nilai tf,df beserta idf sesuai dengan rumus sub bab 2.11 tentang
Pembobotan Kata dan sub bab 4.4.3 untuk praktik tentang membangun
pembobotan kata tentang TF-IDF pada pendekatan K-NN.
9. Klasifikasi query uji sementara (sentimen sementara) dengan algoritma
K-NN menggunakan cosine similarity sesuai rumus sub bab 2.13 tenta
ng Cosine Similarity dan praktiknya pada sub bab 4.4.3 tentang
konstruksi pendekatan K-NN.
Tahapan klasifikasi data uji sementara dengan algortima K-NN dapat
dilihat pada gambar 4.25 beserta dengan flowchart konsep K-NN sebagai
berikut.
58
UIN Syarif Hidayatullah Jakarta
Gambar 4. 25 Langkah Algoritma K-NN
59
UIN Syarif Hidayatullah Jakarta
Gambar 4. 26 Conceptual Model Pendekatan K-NN
4.3 Collection Input / Output Data
Pada penelitian ini data-data yang digunakan hasil crawling data dari
media sosial twitter berupa komentar netizen terhadap sentimen calon pilpres
dengan kata kunci jokowi dan pilpres 2019. Hasil crawling data dimulai dari
tanggal 08 februari 2018 hingga 24 febuari 2018 kemudian crawling kedua
dimulai tanggal 12 juni sampai 08 agustus 2018 dengan memanfaatkan twitter
API. Proses pengambilan data ini dinamakan dengan crawling. Selain itu
pengumpulan data berkaitan dengan kamus-kamus yang akan digunakan,
yang terdiri dari kamus lexicon positif, kamus lexicon negatif, kamus lexicon
negasi, kamus KBBI, kamus kata dasar, dan kamus stopwords. Berikut adalah
hasil input dan tipe data yang terdapat pada gambar 4.11 sebagai berikut :
60
UIN Syarif Hidayatullah Jakarta
Gambar 4. 27 Hasil Crawling Tweet
Data-data yang telah diperoleh dan dikumpukan akan dijadikan input
dan output data. Berikut adalah tabel tipe data dari masing-masing input dan
output.
Tabel 4. 2 Tipe Data Input Kamus Lexicon Positif
Nama Field Type dan Length Primary key Null
Id Bigint Yes No
kata_positif Varchar(100) - No
Tabel 4. 3 Tipe Data Input Kamus Lexicon Negatif
Nama Field Type dan Length Primary key Null
id Bigint Yes No
kata_negatif Varchar(100) - No
Tabel 4. 4 Tipe Data Input Kamus Lexicon Negasi
Tabel 4. 5 Tipe Data Input Kamus KBBI
Nama Field Type dan Length Primary key Null
id Bigint Yes No
kata_kamus_kbbi Varchar(100) - No
Tabel 4. 6 Tipe Data Input Kata Dasar
Nama Field Type dan Length Primary key Null
id Bigint Yes No
Nama Field
Type dan Length Primary key Null
id Bigint Yes No
kata_negasi Varchar(100) - No
61
UIN Syarif Hidayatullah Jakarta
kata_katadasar Varchar(100) - No
Tabel 4. 7 Tipe Data Input Kamus Stopwords
Nama Field Type dan Length Primary key Null
id Bigint Yes No
kata_stopwords Varchar(100) - No
Tabel 4. 8 Tipe Data Input Kata Tidak Baku Singkatan
Nama Field Type dan Length Primary key Null
id Bigint Yes No
kata_tidak_baku_singkatan Varchar(100) - No
Kata_baku_singkatan Varchar(100) - No
Tabel 4. 9 Tipe Data Input Data Latih dan Uji
Nama Field Type dan Length Primary key Null
no Bigint Yes No
id_tweet Varchar(100) - No
tweet_by Varchar(100) - No
tweet Varchar(100) - No
sentimen_tweet Varchar(100) - No
Kategori_tweet Varchar(100) - No
Tabel 4. 10 Tipe Data Processing
Nama Field Type dan Length Primary key Null
id_processing_query Bigint Yes No
id_tweet Varchar(100) - No
Casefolding Varchar(100) - No
Filtering Varchar(100) - No
Tokenizing Varchar(100) - No
Normalization Varchar(100) - No
Stopword Varchar(100) - No
Stemming Varchar(100) - No
Tabel 4. 11 Tipe Data Output Data Uji Naive Bayes
Nama Field Type dan Length Primary key Null
Id_datauji Bigint Yes No
id_tweet Varchar(100) - No
pos_post_prob Double - No
neg_post_prob Double - No
net_post_prob Double - No
Sentimen_datauji Varchar(100) - No
Tabel 4. 12 Tipe Data Output Data Uji K-NN
Nama Field Type dan Length Primary key Null
62
UIN Syarif Hidayatullah Jakarta
Id_hasil Bigint Yes No
id_tweet_uji Varchar(100) - No
Hasil_analisis_sentimen Double - No
Tabel 4. 13 Tipe Data Input Perhitungan K-NN
Nama Field Type dan Length Primary key Null
Id_proses_hitung Bigint Yes No
id_tweet_uji Varchar(100) - No
Query Varchar(100) - No
Frekuensi_kemunculan Bigint - No
bobot_vektor Float - No
Panjang_vektor_query Float - No
Id_tweet_latih Varchar(100) - No
Perkalian_skalar Float - No
Cosine_similarity Float - No
Tabel 4. 14 Tipe Data Input TF-IDF
Nama Field Type dan Length Primary key Null
Id_term Bigint Yes No
term Varchar(100) - No
Asal_dokumen Varchar(100) - No
Frekuensi_kemunculan Double - No
Inverse_dokumen_frekuensi Float - No
Bobot float - No
Panjang_vektor float - No
Tabel 4. 15 Tipe Data Input Likelihood Naive Bayes
Nama Field Type dan Length Primary key Null
id_term Bigint Yes No
Term Varchar(100) - No
pos_occ Double - No
neg_occ Double - No
net_occ Double - No
pos_likelihood Double - No
neg_likelihood Double - No
net_likelihood Double - No
4.4 Modelling Phase
Dalam modelling phase atau fase pemodelan pada penelitian ini,
dilakukan pemodelan konstruksi analisis sentimen dengan pendekatan
Lexicon, klasifikasi Naive Bayes dan pendekatan K-NN. Berikut ini dapat
dilihat pemodelan-pemodelan tersebut secara lengkap.
63
UIN Syarif Hidayatullah Jakarta
4.4.1 Konstruksi Pendekatan Lexicon
Proses ini akan menentukan sentimen twitter menggunakan
pendekatan lexicon. Penggunaan pendekatan lexicon bertujuan menciptakan
data latih dan kemudian menentukan orientasi sentimen dari unit teks melalui
beberapa fungsi berdasarkan kamus positif dan negatif. Proses ini sangat
memperhatikan dan bergantung pada kamus sentimen dan negasi yang
dibangun guna mendapatkan akurasi sentimen yang baik. Secara keseluruhan
konstruksi analisis orientasi sentimen dengan pendekatan lexicon dapat
dijelaskan sebagai berikut.
1. Membangun kamus sentimen yang terbagi menjadi sentimen positif
dan negatif.
Dalam penelitian ini dibangun kamus positif dan negatif secara sistem.
Kamus sentimen positif dalam penelitian ini berjumlah 1185 kata dan
kamus negatif berjumlah 2402 kata.
2. Membangun kamus negasi
Kamus negasi yang digunakan dalam penelitian ini sebanyak 10 kata.
3. Pre-proccessing query
Tahapan pre-proccessing query yang dilakukan pada pendekatan lexicon
secara keseluruhan dijelaskan dibawah ini :
Query : @LawanPoLitikJKW @permadiaktivis Saya tidak ahli
dalam urusan hutang negara biarlah ahli2 ekonomi dan keuangan yan…
https://t.co/Bxr3VWjFTF
a. Case folding.
“@lawanpolitikjkw @permadiaktivis saya tidak ahli dalam urusan
hutang negara biarlah ahli2 ekonomi dan keuangan yan…
https://t.co/bxr3vwjftf”.
b. Filtering
saya tidak ahli dalam urusan hutang negara biarlah ahli ekonomi dan
keuangan yan”.
c. Tokenisasi (menghapus semua tanda baca dan memecah kata)
64
UIN Syarif Hidayatullah Jakarta
Tabel 4. 16 Tabel Query Tokenisasi
Query
Saya Tidak Ahli dalam
Urusan Hutang Negara biarlah
Ahli Ekonomi Dan keuangan
Yan
d. Normalisasi
Karena tidak ada term atau kata yang abnormal maka tabel tokenizing
sama dengan tabel normalisasi.
Tabel 4. 17 Tabel Query Normalisasi
Query
Saya Tidak Ahli dalam
Urusan Hutang Negara biarlah
Ahli Ekonomi Dan keuangan
Yan
Setelah melalui 4 tahapan pre-proccessing query diatas, maka sistem
akan menyimpan query tersebut untuk diproses ketahap selanjutnya.
4. Identifikasi setiap kata sentimen pada query.
Pada proses ini query akan identifikasi kata sentimen berdasarkan
kamus sentimen yang telah dibangun. Setiap kata yang berhasil diidentifikasi
dikelompokkan berdasarkan sentimennya baik positif maupun negatif. Jika
tidak ditemukan kata sentimen maka query diklasifikasikan sebagai kalimat
netral
Tabel 4. 18 Hasil identifikasi kata sentimen
Positif Negatif
Ahli -
- hutang
65
UIN Syarif Hidayatullah Jakarta
Ahli -
2 kata 1 kata
Diidentifikasi terdapat 2 kata bernilai sentimen positif dan 1 kata
bernilai sentimen negatif.
5. Identifikasi kalimat negasi
Pada tahapan ini, query yang telah ditentukan kata sentimennya akan
dilihat apakah terdapat kata negasi pada setiap kata sentimen tersebut. Query
yang akan diidentifikasi kata negasi didalamnya ditandai dengan adanya kata
negasi dengan batas 4 frasa sebelum kata sentimen dan 1 frasa sesudah kata
sentimen.
Tabel 4. 19 Hasil identifikasi kata negasi
Positif Negatif
- ahli
- hutang
Ahli -
1 kata 2 kata
Diidentifikasi terdapat 1 kata yang memiliki negasi, sehingga kata
sebelumnya yang bernilai sentimen positif berubah menjadi sentimen negatif.
6. Menentukan orientasi sentimen pada query.
Dari tabel 4.19 hasil tabel indentifikasi negasi terdapat 3 kata yang
dihitung, pertama untuk sentimen positif hanya terdapat kata ahli, dan negatif
terdapat kata ahli dan hutang. Sesuai dengan rumus bab 2.9 perhitungan score
lexicon dilakukan dengan menjumlahkan total sentimen positif dengan
sentimen negatif, sehingga dapat disimpulkan bahwa dokumen memiliki
sentimen negatif karena hasil penjumlahan score lexicon untuk kata positif -
1 dan kata negatif + 1.
4.4.2 Konstruksi Pendekatan Naive Bayes
Proses ini akan menentukan sentimen twitter menggunakan algoritma
klasifikasi Naive Bayes. Algoritma Naive Bayes pada pendekatan ini sebagai
klasifikasi data uji setelah data latih sudah berhasil di berikan label sentimen.
Setelah pemeberian label pada data latih , kemudian klasifkasi naive bayes
dilakukan dengan menghitung nilai prior probability yaitu menghitung
peluang kemunculan dokumen tiap kelas, setelah itu menghitung nilai
66
UIN Syarif Hidayatullah Jakarta
conditional probaility (likelihood) atau peluang kemunculan kata pada setiap
kelas setelah itu tahap klafikasi akhir menghitung nilai posterior probability
menggunakan rumus MAP (maximum at posterior) atau mengambil nilai
maksimum probabilitas setiap dokumennya.
Berikut penjelasan diatas yaitu penggunaan algoritma naive bayes
sebagai algoritma untuk klasifikasi dapat dijelaskan sebgai berikut :
1. Membangun kamus positif dan negatif didalam sistem sebagai sarana
untuk melakukan tahap preprocessing data latih. Kamus sentimen positif
dalam penelitian ini berjumlah 1182 kata dan kamus negatif berjumlah
2399 kata. (Tala, 2003)
2. Mengumpulkan data latih menggunakan crawling data berupa tweet.
Sebagai contoh digunakan 6 dokumen sebagai data latih sebagai berikut.
Tabel 4. 20 Dokumen Latih
Dokumen(n) Isi Tweet Sentimen
Tweet
1 @Jokowi @dionnka Bagus kinerja pakde
#Presiden2019 #JokowiUntukPresiden2019
#GantiPresiden2019
Positif
2 Salut sama Kinerja pak Jokowi
#Jokowi2019SekaliLagi
Positif
3 Hancur Negatif
4 Kalah Negatif
5 @zoelfick @Jokowi Sudah ... Netral
6 #Jokowi2019SekaliLagi
https://t.co/NlnnCu3LQi
Netral
3. Pelatihan data latih menggunakan pre-processing, inverted index dan
pembobotan kata pada tweet. Untuk lebih jelas nya, berikut adalah contoh
pembuatan inverted index dan pembobotan kata pada data latih secara
keseluruhan.
a Pengumpulan data latih menggunakan crawling data berupa tweet.
Sebagai contoh digunakan 6 dokumen sebagai data latih sebagai
berikut.
67
UIN Syarif Hidayatullah Jakarta
Tabel 4. 21 Pengumpulan Dokumen Latih
Dokumen(n) Isi Tweet Sentimen
Tweet
1 @Jokowi @dionnka Bagus kinerja pakde
#Presiden2019 #JokowiUntukPresiden2019
#GantiPresiden2019
Positif
2 Salut sama Kinerja pak Jokowi
#Jokowi2019SekaliLagi
Positif
3 Hancur dah #GantiPresiden2019 Negatif
4 Kalah Negatif
5 @zoelfick @Jokowi Sudah ... Netral
6 #Jokowi2019SekaliLagi
https://t.co/NlnnCu3LQi
Netral
b Case folding
Tabel 4. 22 Case Folding Naive Bayes
Dokumen(n) Isi Tweet Sentimen
Tweet
1 @jokowi @dionnka bagus kinerja pakde
#presiden2019 #jokowiuntukpresiden2019
#gantipresiden2019
Positif
2 salut sama kinerja pak jokowi
#jokowi2019sekalilagi
Positif
3 hancur dah #gantipresiden2019 Negatif
4 kalah... Negatif
5 @zoelfick @Jokowi sudah ... Netral
6 #jokowi2019sekalilagi
https://t.co/nlnncu3lqi
Netrall
c Filtering
Tabel 4. 23 Filtering Naive Bayes
Dokumen(n) Isi Tweet Sentimen
Tweet
1 bagus kinerja pakde Positif
2 salut sama kinerja pak jokowi Positif
3 hancur dah Negatif
4 Kalah Negatif
5 sudah Netral
6 Netral
d Tokenizing
Tabel 4. 24 Tokenizing pada Naive Bayes
Dok(1) Dok(2) Dok(3) Dok(4) Dok(5) Dok(6)
68
UIN Syarif Hidayatullah Jakarta
Bagus salut Hancur kalah sudah
Kinerja sama Dah
Pakde kinerja
pak
jokowi
e Normalisasi
Tabel 4. 25 Normalisasi Naive Bayes
Dok(1) Dok(2) Dok(3) Dok(4) Dok(5) Dok(6)
Bagus salut Hancur kalah sudah
Kinerja sama Dah
Pakde kinerja
pak
jokowi
f Stopword dan Stemming
Tabel 4. 26 Stopword dan Stemming Naive Bayes
Dok(1) Dok(2) Dok(3) Dok(4) Dok(5) Dok(6)
Bagus salut Hancur kalah sudah
Kinerja kinerja
jokowi
4. Mencari nilai persamaan untuk menghitung peluang kemunculan
dokumen pada kategori tertentu (prior probability) berdasarkan rumus bab
2.11. Misal pada contoh diatas terdapat 6 dokumen latih dengan setiap
kelas sentimen terdiri dari 2 anggota, maka prior probability setiap kelas
adalah 0,33 yaitu hasil dari pembagian 2 dengan 6.
5. Mencari nilai condtional probability atau nilai peluang kemunculan setiap
kata berdasarkan kategori sentimen berdasarkan rumus bab 2.11.
6. Klasifikasi hasil dari nilai posterior probability untuk menentukan hasil
sentimen. Menghitung nilai posterior probability dapat dihitung
berdasarkan rumus pada sub bab 2.11. Untuk lebih jelasnya berikut
tahapan yang dilakukan untuk menghitung nilai posterior probability.
a. Pre-proccessing query uji
Pada tahapan ini dilakukan seleksi kalimat netral dengan menggunakan
kamus sentimen yang ada.
69
UIN Syarif Hidayatullah Jakarta
1. Case folding
Tabel 4. 27 Case Folding Query Uji Naive Bayes
Dokumen (n)
kinerja bagus pak
2. Filtering
Tabel 4. 28 Filtering Query Uji Naive Bayes
Dokumen (n)
kinerja bagus pak
3. Tokenizing
Tabel 4. 29 Tokenizing Query Uji Naive Bayes
Dokumen (n)
Kinerja bagus pak
4. Normalisasi
Tabel 4. 30 Normalisasi Query Uji Naive Bayes
Dokumen (n)
Kinerja bagus pak
5. Stopwords dan stemming
Tabel 4. 31 Stopword dan Stemming Query Uji Naive Bayes
Dokumen (n)
Kinerja bagus
Hasil dari pre-proccessing adalah “kinerja bagus”.
Data Uji : Kinerja Bagus Pak :D
70
UIN Syarif Hidayatullah Jakarta
b. Hitung nilai Prior Probability
Pada tahapan ini dilakukan perhitungan nilai prior probability dengan
hasil sentimen positif 0,33, sentimen negatif 0,33 dan sentimen netral
0,33.
c. Hitung nilai Condtional Probaility
Pada tahapan ini dilakukan perhitungan nilai condtional probability
menggunakan data uji diatas yaitu kinerja dan bagus.
Tabel 4. 32 Conditional Probability
Kata dan
sentimen
Positif
Likelihood
Negatif
Likelihood
Netral
Likelihood
Kinerja 0,272727273 0,125 0,142857
Bagus 0,181818182 0,125 0,142857
d. Hitung nilai Posterior Probaility
Pada tahapan ini dilakukan perhitungan nilai posterior probability
menggunakan data uji diatas yaitu kinerja bagus.
Tabel 4. 33 Posterior Probability
Kata dan
sentimen
Positive
Posterior
Probability
Negative
Posterior
Probability
Neutral
Posterior
Probability
Kinerja Bagus 0,016527
0,005208
0,006802
Dari klasifikasi tersebut nilai paling tinggi mengarah pada kolom
positive posterior probability dengan nilai 0,016257 dibanding nilai negative
dan neutral maka data uji tersebut dapat disimpulkan memiliki sentimen
positif.
4.4.3 Konstruksi Pendekatan K-NN
Proses ini akan menentukan sentimen twitter menggunakan algoritma
klasifikasi K-NN. Algoritma K-NN pada pendekatan ini sebagai klasifikasi
data uji setelah data latih sudah berhasil di berikan label sentimen. Setelah
pemberian label pada data latih , kemudian klasifkasi K-NN dilakukan dengan
71
UIN Syarif Hidayatullah Jakarta
menghitung nilai tf-idf kemudian dilanjutkan pembobotan kata dan
penggunaan cosine similarity. Tidak jauh berbeda dari naive bayes K-NN
merupakan algoritma klasifikasi dengan metode supervised learning yaitu
membutuhkan data latih sebagai pembelajaran. Berikut penjelasan
penggunaan algoritma K-NN beserta langkah-langkah untuk konstruksi
algoritma klasifikasi K-NN sebagai berikut :
1. Membangun kamus positif dan negatif didalam sistem sebagai sarana
unutk melakukan tahap preprocessing data latih. Kamus sentimen positif
dalam penelitian ini berjumlah 1182 kata dan kamus negatif berjumlah
2403 kata. (Tala,2003)
2. Mengumpulkan data latih menggunakan crawling data berupa tweet.
Sebagai contoh digunakan 6 dokumen sebagai data latih sebagai berikut.
Tabel 4. 34 Dokumen Latih K-NN
Dokumen(n) Isi Tweet Sentimen
Tweet
1 @Jokowi @dionnka Bagus kinerja pakde
#Presiden2019 #JokowiUntukPresiden2019
#GantiPresiden2019
Positif
2 Salut sama Kinerja pak Jokowi
#Jokowi2019SekaliLagi
Positif
3 Hancur dah Negatif
4 Kalah Negatif
5 @zoelfick @Jokowi Sudah ... Netral
6 #Jokowi2019SekaliLagi
https://t.co/NlnnCu3LQi
Netral
3. Pelatihan data latih menggunakan pre-processing, inverted index dan
pembobotan kata pada tweet. Untuk lebih jelas nya, berikut adalah contoh
pembuatan inverted index dan pembobotan kata pada data latih secara
keseluruhan.
a Pengumpulan data latih menggunakan crawling data berupa tweet.
Sebagai contoh digunakan 6 dokumen sebagai data latih sebagai
berikut.
Tabel 4. 35 Pengumpulan Dokumen Latih K-NN
Dokumen(n) Isi Tweet Sentimen
Tweet
72
UIN Syarif Hidayatullah Jakarta
1 @Jokowi @dionnka Bagus kinerja pakde
#Presiden2019 #JokowiUntukPresiden2019
#GantiPresiden2019
Positif
2 Salut sama Kinerja pak Jokowi
#Jokowi2019SekaliLagi
Positif
3 Hancur dah #GantiPresiden2019 Negatif
4 Kalah Negatif
5 @zoelfick @Jokowi Sudah ... Netral
6 #Jokowi2019SekaliLagi
https://t.co/NlnnCu3LQi
Netral
b Case folding
Tabel 4. 36 Case Folding K-NN
Dokumen(n) Isi Tweet Sentimen
Tweet
1 @jokowi @dionnka bagus kinerja pakde
#presiden2019 #jokowiuntukpresiden2019
#gantipresiden2019
Positif
2 salut sama kinerja pak jokowi
#jokowi2019sekalilagi
Positif
3 hancur dah #gantipresiden2019 Negatif
4 kalah... Negatif
5 @zoelfick @Jokowi sudah ... Netral
6 #jokowi2019sekalilagi
https://t.co/nlnncu3lqi
Netral
c Filtering
Tabel 4. 37 Filtering K-NN
Dokumen(n) Isi Tweet Sentimen
Tweet
1 bagus kinerja pakde Positif
2 salut sama kinerja pak jokowi Positif
3 hancur dah Negatif
4 Kalah Negatif
5 sudah Netral
6 Netral
d Tokenizing
Tabel 4. 38 Tokenizing K-NN
Dok(1) Dok(2) Dok(3) Dok(4) Dok(5) Dok(6)
Bagus Salut Hancur kalah sudah
Kinerja Sama Dah
Pakde Kinerja
Pak
Jokowi
e Normalisasi
73
UIN Syarif Hidayatullah Jakarta
Tabel 4. 39 Normalisasi K-NN
Dok(1) Dok(2) Dok(3) Dok(4) Dok(5) Dok(6)
Bagus Salut Hancur kalah Sudah
kinerja Sama Dah
Pakde Kinerja
Pak
Jokowi
f Stopword dan Stemming
Tabel 4. 40 Stopword dan Steming K-NN
Dok(1) Dok(2) Dok(3) Dok(4) Dok(5) Dok(6)
Bagus Salut Hancur kalah
Kinerja Kinerja
Jokowi
g Indexing (pembuatan inverted index). Berikut ini hasil dari indexing
pada data latih.
Tabel 4. 41 Hasil proses indexing K-NN
Kosa Kata (Dokumen : Frekuensi)
Bagus 1:1
Salut 2:1
Hancur 3:1
Kalah 4:1
Kinerja 2 : 1
Jokowi 2:1
Keterangan :
Kosa kata : kata tunggal yang terdapat dalam dokumen.
Dokumen frekuensi : Frekuensi kata dalam dokumen.
h Pembobotan kata. Berikut ini hasil dari pembobotan kata terhadap kata
hasil indexing
Tabel 4. 42 TF dan DF K-NN
Kosa
Kata
Tf(D1) Tf(D2) Tf(D3) Tf(D4) Tf(D5) Tf(D6) Df
Bagus 1 0 0 0 0 0 1
Salut 0 1 0 0 0 0 1
Hancur 0 0 1 0 0 0 1
Kalah 0 0 0 1 0 0 1
Kinerja 1 1 0 0 0 0 2
Jokowi 0 1 0 0 0 0 1
74
UIN Syarif Hidayatullah Jakarta
Tabel 4. 43 Pembobotan TF-IDF K-NN pada data latih
Keterangan :
Kosa Kata : kata tunggal yang telah terpisah dari dokumen query
df : document frequency atau jumlah dokumen dalam koleksi
dokumen yang mengandung kosa kata
idf : inverse dokumen frequency
tf(n) : term frequency (frekuensi kata) pada dokumen ke-n
4. Klasifikasi data uji menggunakan algoritma K-NN penjelasannya akan
dimuat sebagai berikut :
a. Pre-proccessing query uji
Pada tahapan ini dilakukan seleksi kalimat netral dengan
menggunakan kamus sentimen yang ada.
1. Case folding
Tabel 4. 44 Case Folding Query Uji K-NN
Dokumen (n)
kinerja bagus pak
2. Filtering
Tabel 4. 45 Filtering Query Uji K-NN
Dokumen (n)
Kosa Kata df Idf w(D1) w(D2) w(D3) w(D4) w(D5) w(D6)
Bagus 1 0,7781 0,7781 0 0 0 0 0
Salut 1 0,7781 0 0,7781 0 0 0 0
Hancur 1 0,7781 0 0 0,7781 0 0 0
Kalah 1 0,7781 0 0 0 0,7781 0 0
Kinerja 2 0,4771 0,4771 0,4771 0 0 0 0
Jokowi 1 0,7781 0 0,7781 0 0 0 0
Data Uji : Kinerja Bagus Pak :D
75
UIN Syarif Hidayatullah Jakarta
kinerja bagus pak
3. Tokenizing
Tabel 4. 46 Tokenizing Query Uji K-NN
Dokumen (n)
Kinerja Bagus Pak
4. Normalisasi
Tabel 4. 47 Normalisasi Query Uji K-NN
Dokumen (n)
Kinerja Bagus Pak
5. Stopwords dan stemming
Tabel 4. 48 Stopword dan Stemming Query Uji K-NN
Dokumen (n)
Kinerja Bagus
6. Pembobotan kata
Hasil pembobotan kata setelah pre-processing diatas adalah kata kinerja
dan bagus berjumlah satu.
b. Menghitung kedekatan kemiripan query uji dengan data latih
menggunakan rumus consine similarity.
Untuk lebih jelasnya, tahapan ini akan dijelaskan sebagai lanjutan
contoh dari proses pre-proccessing query diatas. Sebagai contoh query yang
sudah dilakukan pre-proccessing sebagai berikut.
Sebelum menghitung consine similarity terlebih dahulu dilakukan
tahapan-tahapan berikut :
1. Menghitung bobot setiap kata dalam dokumen query uji terhadap bobot
data latih. Hasil dari pembobotan ini dapat dilihat pada tabel 4.25
Data Uji : kinerja bagus
76
UIN Syarif Hidayatullah Jakarta
Tabel 4. 49 Pembobotan TF-IDF K-NN menggunakan query uji
2. Selanjutnya berdasarkan perhitungan bobot tersebut, hitung panjang
vektor setiap dokumen. Tahapan yang dilakukan adalah sebagai berikut
:
1. Hitung hasil perkalian skalar antara query uji dan 6 dokumen lainnya
(data latih). Hasilnya perkalian dari setiap dokumen dengan query
dijumlahkan. Hasil dari proses ini dapat dilihat pada tabel 4.50.
Tabel 4. 50 Hasil perkalian skalar antara query dan data latih
2. Hitung panjang vektor setiap dokumen, termasuk query uji. Caranya
dengan mengkuadratkan bobot setiap kata dalam setiap dokumen,
jumlahkan nilai kuadrat dan terakhir akarkan. Hasil dari proses ini
dapat dilihat pada tabel 4.51.
Tabel 4. 51 Hasil panjang vektor setiap dokumen
Kosa
Kata
Df Idf W(Q) w(D1) w(D2) w(D3) w(D4) w(D5) w(D6)
Bagus 1 0,7781 0,7781 0,7781 0 0 0 0 0
Salut 1 0,7781 0 0 0,7781 0 0 0 0
Hancur 1 0,7781 0 0 0 0,7781 0 0 0
Kalah 1 0,7781 0 0 0 0 0,7781 0 0
Kinerja 2 0,4771 0,4771 0,4771 0,4771 0 0 0 0
Jokowi 1 0,7781 0 0 0,7781 0 0 0 0
Asal_dokumen_perkalian_skalar (WD*Wdi)
w(D1) w(D2) w(D3) w(D4) w(D5) w(D6)
0,60543961 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0,22762441 0,22762441 0 0 0 0
0 0 0 0 0 0
0,83306402 0,22762441 0 0 0 0
Asal_dokumen_panjang_vektor (Panjang Vektor)
W(Q) w(D1) w(D2) w(D3) w(D4) w(D5) w(D6)
0,60543961 0,60543961 0 0 0 0 0
0 0 0,60543961 0 0 0 0
77
UIN Syarif Hidayatullah Jakarta
3. Menerapkan rumus cosine similarity. Hitung kemiripan query
dengan 6 dokumen data latih.
1. Cos(Q,D1) = 0,83306402 / (0,9127 * 0,9127) =
1,0000512952075930736416112486153
2. Cos(Q,D2) = 0,22762441 / (0,9127 * 1,1993) =
0,20795192688960456106243122665936
3. Cos(Q,D3) = 0 / (0,9127 * 0,7781) = 0
4. Cos(Q,D4) = 0 / (0,9127 * 0,7781) = 0
5. Cos(Q,D5) = 0 / (0,9127 * 0) = 0
6. Cos(Q,D6) = 0 / (0,9127 * 0) = 0
Hasil perhitungan dalam tabel
c. Menentukan besar nilai k pada algoritma K-NN.
Menentukan nilai k pada algoritma K-NN. Nilai k merupakan parameter
yang akan membatasi ketetanggaan terdekat yang akan diproses pada tahap
selanjutnya. Ditentukan nilai k pada algoritma K-NN adalah 1. Sehingga
berdasarkan nilai tersebut ketetanggaan terdekat dengan query adalah sebagai
berikut :
Setelah diurutkan (dari yang memiliki nilai terbesar)
d. Menyimpulkan hasil sentimen dengan persamaan
0 0 0 0,60543961 0 0 0
0 0 0 0 0,60543961 0 0
0,22762441 0,22762441 0,22762441 0 0 0 0
0 0 0,60543961 0 0 0 0
0,83306402 0,83306402 1,43850363 0,60543961 0,60543961 0 0
0,9127 0,9127 1,1993 0,7781 0,7781 0 0
(D1) (D2) (D3) (D4) (D5) (D6)
1,00005 0,20795 0 0 0 0
1 2 3 4 5 6
D1 D2 D3 D4 D5 D6
78
UIN Syarif Hidayatullah Jakarta
D1 = 1,00005
D1 = POSITIF (Dokumen pertama memiliki sentimen positif)
Dnn(c1,c2) = POSITIF
Dapat disimpulkan bahwa query uji memiliki sentimen positif
4.5 Simulation Phase
Pada tahapan simulasi ini akan dilakukan dengan beberapa percobaan
simulasi aplikasi yang berkaitan dengan pengujian tingkat akurasi algoritma
Naive Bayes dan K-NN. Adapun faktor-faktor dalam proses simulasi dapat
dilihat pada tabel 4.52 berikut.
Tabel 4. 52 Simulasi Penelitian
Variabel/Parameter
Simulasi
Tahap Simulasi
Faktor 1 Tahap klasifikasi sentimen data latih dengan
pendekatan Lexicon
Faktor 2 Tahap pelatihan data pada data latih
Faktor 3 Tahap pengujian data uji dengan algoritma
Naive Bayes dan algoritma K-NN berdasarkan
nilai k pada algoritma K-NN adalah 1,3,5,9 dan
10
Faktor 4 Tahap pengujian akurasi menggunakan model
confusion matrix
Variabel atau parameter simulasi yang digunakan dalam melakukan
skenario-skenario pengujian yaitu dengan menggunakan pendekatan Lexicon,
algoritma Naive Bayes dan pendekatan K-NN. Pendekatan Lexicon digunakan
untuk memudahkan peneliti dalam melakukan labelling data pada data latih
sebanyak 900 data. Sementara algoritma Naive Bayes dan pendekatan K-NN
digunakan untuk klasifikasi data uji sebanyak 100 data dan untuk melihat
tingkat akurasi dari membandingkan dua algoritma pengujian tersebut.
Dalam sub-bab berikut akan dibahas simulasi aplikasi analisis orientasi
sentimen berdasarkan skenario simulasi pada tabel 4.38.
79
UIN Syarif Hidayatullah Jakarta
4.5.1 Tahap Pengujian Data Uji
Pengujian yang dilakukan adalah untuk mengklasifikasikan data uji
kedalam kelas positif, negatif atau netral dengan algoritma Naive Bayes dan
K-NN. Proses klasifikasi data uji akan dilakukan kedalam 6 skenario yaitu
pertama pengujian menggunakan algoritma naive bayes, kemudian untuk
skenario kedua hingga keenam berdasarkan penentuan nilai k pada algoritma
K-NN dengan nilai k=1, k=3, k=5, k=9 dan k=10.
Pada tahapan ini terdapat informasi sejauh mana tingkat keberhasilan
kombinasi algoritma tersebut dalam mengklasifikasikan data uji kedalam
kelasnya yang dihitung berdasarkan tingkat akurasi, error rate, presisi, recall
dan f-measure.
1. Skenario I nilai akurasi pada algoritma Naive Bayes
Pada gambar skenario 1 menggambarkan tampilan hasil setelah
melakukan proses klasifikasi data uji menggunakan algoritma Naive
Bayes. Tingkat akurasi yang dihasilkan pada skenario pertama sebesar
81%, error rate sebesar 19%, recall sebesar 0,86%, presisi sebesar 0,81
dan f-measure sebesar 0,83.
Gambar 4. 28 Skenario 1 akurasi naive bayes
80
UIN Syarif Hidayatullah Jakarta
Gambar 4. 29 Skenario 1 Confusion Matrix Naive Bayes
2. Skenario 2 pada algoritma K-NN dengan nilai k = 1
Pada gambar skenario 2 menggambarkan tampilan hasil setelah
melakukan proses klasifikasi data uji menggunakan algoritma K-NN
dengan nilai ketetanggaan atau nilai k = 1. Tingkat akurasi yang
dihasilkan pada skenario pertama sebesar 61%, error rate sebesar 39%,
recall sebesar 55%, presisi sebesar 0,66 dan f-measure sebesar 0,60.
Gambar 4. 30 Skenario 2 akurasi K-NN nilai k = 1
81
UIN Syarif Hidayatullah Jakarta
Gambar 4. 31 Skenario 2 akurasi K-NN Confusion Matrix
3. Skenario 3 pada algoritma K-NN dengan nilai k = 3
Pada gambar skenario 3 menggambarkan tampilan hasil setelah
melakukan proses klasifikasi data uji menggunakan algoritma K-NN
dengan nilai ketetanggaan atau nilai k = 3. Tingkat akurasi yang
dihasilkan pada skenario pertama sebesar 65%, error rate sebesar 35%,
recall sebesar 0,61%, presisi sebesar 0,73 dan f-measure sebesar 0,66.
Gambar 4. 32 Skenario 3 Akurasi K-NN dengan nilai k = 3
82
UIN Syarif Hidayatullah Jakarta
Gambar 4. 33 Skenario 3 K-NN Confusion Matrix
4. Skenario 4 pada algoritma K-NN dengan nilai k = 5
Pada gambar skenario 4 menggambarkan tampilan hasil setelah
melakukan proses klasifikasi data uji menggunakan algoritma K-NN
dengan nilai ketetanggaan atau nilai k = 5 Tingkat akurasi yang
dihasilkan pada skenario pertama sebesar 77%, error rate sebesar 23%,
recall sebesar 88%, presisi sebesar 0,80 dan f-measure sebesar 0,84.
Gambar 4. 34 Skenario 4 Akurasi K-NN dengan nilai k = 5
83
UIN Syarif Hidayatullah Jakarta
Gambar 4. 35 Skenario 4 K-NN Confusion Matrix
5. Skenario 5 pada algoritma K-NN dengan nilai k = 9
Pada gambar skenario 5 menggambarkan tampilan hasil setelah
melakukan proses klasifikasi data uji menggunakan algoritma K-NN
dengan nilai ketetanggaan atau nilai k = 9. Tingkat akurasi yang
dihasilkan pada skenario pertama sebesar 72%, error rate sebesar 28%,
recall sebesar 80%, presisi sebesar 0,70 dan f-measure sebesar 0,75.
Gambar 4. 36 Skenario 5 Akurasi K-NN dengan nilai k = 9
84
UIN Syarif Hidayatullah Jakarta
:
Gambar 4. 37 Skenario 5 Confusion Matrix
6. Skenario 6 pada algoritma K-NN dengan nilai k = 10
Pada gambar skenario 6 menggambarkan tampilan hasil setelah
melakukan proses klasifikasi data uji menggunakan algoritma K-NN
dengan nilai ketetanggaan atau nilai k = 10. Tingkat akurasi yang
dihasilkan pada skenario pertama sebesar 76%, error rate sebesar 24%,
recall sebesar 91%, presisi sebesar 0,71 dan f-measure sebesar 0,80.
Gambar 4. 38 Skenario 5 Akurasi K-NN dengan nilai k = 10
85
UIN Syarif Hidayatullah Jakarta
Gambar 4. 39 Skenario 6 Confusion Matrix
4.6 Verification, Validation and Experimentation
Pembahasan pada sub-bab ini akan dibahas pada BAB 5.
4.7 Output Analysis Phase
Pembahasan pada sub-bab ini akan dibahas pada BAB 5.
86
UIN Syarif Hidayatullah Jakarta
BAB V
HASIL DAN PEMBAHASAN
5.1 Verification, Validation and Experimentation
Verifikasi dilakukan untuk memastikan bahwa setiap tahapan pada bab-
bab sebelumnya saling memiliki hubungan, dalam hal ini setiap tahapan pada
bab 4 diulas kembali untuk memastikan tiap tahap tersebut saling terkait.
Verifikasi juga memastikan bahwa input dan output sesuai dengan yang
diharapkan dimulai dari tahap problem formulation (formulasi masalah)
hingga simulation phase (simulasi).
Dari tahapan problem formulation (formulasi masalah) dilakukan
pembahasan mengenai cara identifikasi masalah untuk dirumuskan dalam
penulisan skripsi, sehingga dari permasalahan tersebut dapat dikembangkan
menjadi pemodelan konsep sebagai solusi. Selanjutnya pada tahapan
conceptual model (pemodelan konsep), dilakukan pembahasan konsep secara
keseluruhan pada Aplikasi analisis orientasi sentimen meliputi input, proses,
eksperimen dan output yang diharapkan. Pada tahapan collection input/output
data, membahasa input dan output data dengan menyebutkan atribut-atribut
data yang akan disimpan kedalam database Mysql. Berlanjut ke tahapan
Modelling phase (pemodelan) yaitu berkaitan dengan mengolah data input
dan output yang telah dibuat pada tahapan sebelumnya. Pada tahapan ini
dilakukan perhitungan sampel dan konstruksi klasifikasi sentimen data latih
menggunakan pendekatan lexicon, perhitungan sampel dan konstruksi
klasifikasi data uji menggunakan kombinasi algoritma K-NN dan pendekatan
lexicon yang dilakukan secara manual untuk dapat dijadikan acuan dalam
pembuatan aplikasi pada skripsi ini. Berikutnya pada tahapan terkahir adalah
simulation (simulasi), yaitu dengan melakukan simulasi pada aplikasi analisis
orientasi sentimen yang fungsinya mengimplementasikan pemodelan-
pemodelan manual sebelumnya. Oleh karena itu, setiap tahapan dapat
dipastikan memiliki keterkaitan, karena setiap tahapan yang dibuat akan
berpengaruh untuk membuat tahapan selanjutnya. Sehingga dari seluruh
87
UIN Syarif Hidayatullah Jakarta
tahapan-tahapan yang dibahas pada sub-bab sebelumnya dapat diverifikasi
sesuai dengan ketentuan verifikasi yang ada.
Dalam proses validasi dilakukan pengujian kebenaran sistem yaitu
dengan melakukan perbandingan hasil kombinasi algoritma naive bayes dan
K-NN dengan pendekatan lexicon yang dihitung secara manual dengan hasil
pada aplikasi analisis orientasi sentimen sehingga menghasilkan keakuratan
sistem. Kemudian dilakukan eksperimen dengan membandingkan hasil
skenario yaitu hasil klasifikasi sentimen data uji menggunakan kombinasi
algoritma naive bayes dan K-NN yang ditentukan berdasarkan ke 5 parameter
nilai k yaitu k=1, k=3, k=5, k=9, k=10 pada algoritma K-NN dan 1 parameter
sebagai hasil uji dari algoritma Naive Bayes. Dari eksperimen tersebut
dilakukan analisis outputnya yang akan dibahas pada tahapan Output Analysis
Phase.
5.2 Output Analysis Phase
Dalam melakukan analisis output, dilakukan analisis terhadap hasil
klasifikasi sentimen publik terhadap data opini publik presiden Jokowi pada
media twitter menggunakan kombinasi algoritma naive bayes dan pendekatan
K-NN dengan hasil tingkat akurasi dari algoritma tersebut. Output penelitian
berupa aplikasi berbasis web menggunakan bahasa pemrograman PHP dan
database MySql yang dibangun sendiri oleh penulis.
5.2.1 Hasil Klasifikasi Sentimen Kombinasi Algoritma Naive Bayes
Dengan Pendekatan Lexicon
Sub-bab ini menjelaskan hasil dari klasifikasi sentimen 100 data uji
yang bersumber dari twitter berkaitan dengan komentar netizen terhadap
salah satu calon pilpres 2019 terhadap sentimen yang diberikan. Klasifikasi
dilakukan menggunakan pendekatan lexicon sebagai data latih dengan
algoritma naive bayes untuk menentukan besarnya pengaruh akurasi. Berikut
hasil klasifikasi sentimen 100 data uji.
Tabel 5. 1 Perbandingan Klasifikasi Naive Bayes
No
Hasil
Klasifikasi
Kelas
Sebenarnya
Positive
Posterior
Probability
Negative
Posterior
Probability
Neutral
Posterior
Probability
88
UIN Syarif Hidayatullah Jakarta
Naive
Bayes
1 NEGATIF NEGATIF 0.00008398 0.0004379 0.00009704
2 POSITIF NEGATIF 1,50E-34 7,97E-37 2,45E-35
3 NETRAL NEGATIF 1,04E-26 4,39E-26 7,45E-26
4 POSITIF NEGATIF 5,86E-28 4,91E-28 1,45E-28
5 NETRAL NETRAL 2,03E-05 1,25E-04 9,54E-04
6 NEGATIF NEGATIF 1,03E-11 1,04E-11 1,18E-12
7 NEGATIF NEGATIF 1,66E-37 7,17E-36 4,90E-36
8 NETRAL NETRAL 1,71E-09 2,19E-09 3,58E-08
9
NETRAL NETRAL
0.00000000
000000268
6
0.00000000
000000158
8
0.00000000
000001755
10 POSITIF POSITIF 2,05E-08 3,29E-09 4,48E-09
11 NETRAL NEGATIF 2,78E-06 4,21E-07 1,38E-05
12 NEGATIF NEGATIF 2,37E-05 3,51E-04 1,70E-05
13 NEGATIF NEGATIF 1,37E-23 2,09E-23 6,42E-24
14 POSITIF NETRAL 3,64E-14 2,27E-15 1,01E-15
15 POSITIF POSITIF 3,09E-11 3,46E-13 6,51E-12
16 NETRAL NEGATIF 3,30E-22 1,05E-22 1,28E-21
17 NETRAL NETRAL 5,84E-22 1,11E-21 2,09E-20
18 POSITIF POSITIF 0.0003359
0.00017516
2 0.0001940
19 NEGATIF NEGATIF 1,61E-11 2,42E-10 7,68E-11
20 NEGATIF NEGATIF 8,53E-10 6,58E-09 2,43E-09
21
POSITIF POSITIF
0.00000000
000000671
6
0.00000000
000000476
5
0.00000000
000000176
0
22 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
23 NETRAL POSITIF 1,53E-08 3,51E-07 8,70E-06
24 NEGATIF NEGATIF 4,30E-13 6,22E-11 4,27E-12
25 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
26 POSITIF POSITIF
0.00000006
348
0.00000002
301
0.00000005
650
89
UIN Syarif Hidayatullah Jakarta
27 NETRAL NETRAL 0.00008398 0.00008758 0.0001940
28 NEGATIF NEGATIF 2,50E-24 1,00E-23 3,98E-24
29 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
30 POSITIF NEGATIF 3,71E-16 2,71E-17 5,31E-19
31 NETRAL NETRAL 2,03E-05 4,17E-05 5,09E-05
32 POSITIF POSITIF 1,89E-14 9,08E-17 5,71E-15
33 POSITIF NEGATIF 2,75E-22 3,14E-23 3,49E-23
34 POSITIF POSITIF 7,36E-18 2,86E-18 1,40E-18
35 NEGATIF NEGATIF 6,93E-27 6,59E-25 2,11E-25
36 NEGATIF NEGATIF 1,62E-16 2,21E-13 2,02E-15
37 NETRAL NETRAL 1,62E-16 4,54E-16 8,24E-16
38 POSITIF POSITIF
0.00000000
0005561
0.00000000
00004606
0.00000000
00003878
39 POSITIF POSITIF
0.00000000
0005561
0.00000000
00004606
0.00000000
00003878
40 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
41
POSITIF POSITIF 0.00000000
000001611
0.00000000
000000635
4
0.00000000
000000780
0
42 NETRAL POSITIF 4,30E-13 2,88E-13 2,82E-11
43 NETRAL POSITIF 4,30E-13 2,88E-13 2,82E-11
44 NETRAL POSITIF 4,30E-13 2,88E-13 2,82E-11
45 POSITIF POSITIF
0.00000000
08263
0.00000000
005441
0.00000000
03117
46 POSITIF POSITIF
0.00000000
08263
0.00000000
005441
0.00000000
03117
47 POSITIF POSITIF
0.00000000
08263
0.00000000
005441
0.00000000
03117
48 NETRAL NETRAL
0.00000002
116
0.00000002
301
0.00000002
301
49 POSITIF POSITIF 2,35E-24 6,93E-28 1,13E-27
50 NETRAL NETRAL 4,30E-13 5,76E-13 7,05E-12
51 POSITIF POSITIF 2,35E-24 6,93E-28 1,13E-27
52 NEGATIF NETRAL 1,03E-23 3,66E-23 5,79E-24
90
UIN Syarif Hidayatullah Jakarta
53 POSITIF POSITIF 5,41E-05 2,50E-05 2,52E-05
54 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
55 POSITIF POSITIF 2,58E-12 1,94E-13 1,01E-12
56 NETRAL NETRAL 4,26E-09 3,29E-09 5,39E-09
57 POSITIF POSITIF 4,05E-27 1,16E-29 8,49E-29
58 NEGATIF NEGATIF 1,02E-07 4,42E-07 5,97E-07
59 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
60 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
61 POSITIF POSITIF 9,20E-20 1,69E-21 1,66E-20
62 NETRAL NETRAL
0.00000000
001066
0.00000000
0006046
0.00000000
001339
63 NEGATIF NEGATIF 2,49E-26 2,08E-24 8,13E-26
64 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
65 POSITIF NEGATIF 4,97E-06 2,96E-08 2,03E-09
66 NEGATIF NEGATIF 7,78E-05 7,87E-03 2,04E-04
67 NETRAL NETRAL 0.00008398 0.00008758 0.0004852
68 NEGATIF NEGATIF
0.00000000
0005331
0.00000000
002418
0.00000000
0006699
69
NETRAL NETRAL
0.00000000
000000134
3
0.00000000
000000158
8
0.00000000
000000158
8
70 NEGATIF NEGATIF 0.00008398
0.00026274
3 0.00009704
71 POSITIF POSITIF 1,78E-20 1,25E-22 1,16E-22
72 POSITIF NETRAL 3,69E-34 2,39E-35 1,16E-34
73 NETRAL NETRAL
0.00000002
116
0.00000002
301
0.00000002
301
74 NETRAL NETRAL
0.00000002
116
0.00000002
301
0.00000002
301
75 NETRAL NETRAL
0.00000002
116
0.00000002
301
0.00000002
301
76 NEGATIF NEGATIF 1,09E-30 1,30E-29 5,44E-31
77 POSITIF POSITIF 1,93E-26 3,94E-28 1,63E-27
78 POSITIF POSITIF 1,93E-26 3,94E-28 1,63E-27
91
UIN Syarif Hidayatullah Jakarta
79 POSITIF POSITIF 1,93E-26 3,94E-28 1,63E-27
80 POSITIF POSITIF 1,93E-26 3,94E-28 1,63E-27
81 POSITIF POSITIF 1,93E-26 3,94E-28 1,63E-27
82 POSITIF POSITIF
0.00000000
000008059
0.00000000
000007625
0.00000000
000002730
83 NEGATIF NEGATIF
0.00000001
410
0.00000003
559
0.00000000
7993
84 NETRAL NETRAL 2,53E-31 8,19E-32 1,85E-30
85 POSITIF POSITIF 2,30E-08 9,87E-09 2,98E-09
86 NETRAL NETRAL 6,77E-08 8,35E-07 3,07E-05
87 POSITIF POSITIF 5,01E-07 2,74E-08 5,13E-08
88 POSITIF POSITIF
0.00000503
6
0.00000018
40
0.00000059
32
89
POSITIF POSITIF 0.00000000
000004298
0.00000000
000000794
2
0.00000000
000000864
3
90 POSITIF POSITIF 4,36E-25 4,12E-26 2,36E-25
91 NEGATIF NETRAL 2,02E-31 8,65E-31 4,10E-31
92 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
93 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
94 NEGATIF POSITIF 8,83E-14 1,21E-13 2,69E-14
95 NETRAL NETRAL
0.00000002
116
0.00000002
301
0.00000002
301
96 NETRAL NETRAL 0.00008398 0.00008758 0.00008758
97 NEGATIF NETRAL 2,03E-05 6,26E-05 2,52E-05
98 NEGATIF NETRAL 2,03E-05 1,00E-04 5,11E-05
99 NETRAL NETRAL
0.00000002
116
0.00000002
301
0.00000002
301
100 NETRAL NETRAL
0.00000006
348
0.00000002
301
0.00000012
74
92
UIN Syarif Hidayatullah Jakarta
5.2.2 Hasil Klasifikasi Sentimen Kombinasi Algoritma K-NN dan
Pendekatan Lexicon
Sub-bab ini menjelaskan hasil dari klasifikasi sentimen 100 data uji
yang bersumber dari Twitter berkaitan dengan komentar netizen terhadap
calon pilpres 2019 bernama Joko Widodo. Klasifikasi dilakukan
menggunakan kombinasi algoritma K-NN sebagai hasil klasifikasi dan
pendekatan lexicon untuk data latih yang ditentukan berdasarkan ke 5
parameter nilai k pada algoritma K-NN. Berikut hasil klasifikasi sentimen 100
data uji beserta gambar 5.1 tentang gambaran tabel perhitungan K-NN .
Tabel 5. 2 Hasil klasifikasi sentimen kombinasi algoritma K-NN dan Lexicon
Data
ke-n
Klasifikasi algoritma K-NN dengan 5 parameter Kelas
Sebenarnya k=1 k=3 k=5 k=9 k=10
1 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
2 NEGATIF POSITIF POSITIF POSITIF POSITIF NEGATIF
3 NETRAL NEGATIF NEGATIF NETRAL NETRAL NEGATIF
4 NETRAL NETRAL NETRAL NETRAL POSITIF NEGATIF
5 NETRAL NETRAL POSITIF NETRAL NEGATIF NETRAL
6 NEGATIF NEGATIF NEGATIF POSITIF POSITIF NEGATIF
7 NETRAL NETRAL NETRAL NETRAL NETRAL NEGATIF
8 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
9 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
10 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
11 NETRAL NETRAL NETRAL NETRAL NETRAL NEGATIF
12 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
13 POSITIF POSITIF POSITIF POSITIF POSITIF NEGATIF
14 POSITIF NETRAL NEGATIF NEGATIF NETRAL NETRAL
15 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
16 POSITIF NETRAL NETRAL POSITIF POSITIF NEGATIF
17 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
18 POSITIF NETRAL POSITIF POSITIF POSITIF POSITIF
19 NETRAL NETRAL NETRAL NEGATIF NEGATIF NEGATIF
20 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
93
UIN Syarif Hidayatullah Jakarta
21 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
22 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
23 NETRAL NETRAL NEGATIF NETRAL NETRAL POSITIF
24 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
25 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
26 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
27 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
28 NETRAL NETRAL NEGATIF NEGATIF NEGATIF NEGATIF
29 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
30 POSITIF POSITIF POSITIF POSITIF POSITIF NEGATIF
31 POSITIF POSITIF NETRAL NETRAL NETRAL NETRAL
32 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
33 NEGATIF NEGATIF NETRAL POSITIF POSITIF NEGATIF
34 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
35 POSITIF POSITIF NETRAL NETRAL NETRAL NEGATIF
36 NETRAL NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
37 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
38 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
39 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
40 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
41 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
42 NETRAL POSITIF POSITIF NETRAL POSITIF POSITIF
43 NETRAL POSITIF POSITIF NETRAL POSITIF POSITIF
44 NETRAL POSITIF POSITIF NETRAL POSITIF POSITIF
45 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
46 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
47 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
48 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
49 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
50 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
51 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
94
UIN Syarif Hidayatullah Jakarta
52 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NETRAL
53 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
54 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
55 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
56 NEGATIF NEGATIF NETRAL POSITIF POSITIF NETRAL
57 POSITIF POSITIF NEGATIF NETRAL POSITIF POSITIF
58 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
59 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
60 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
61 NETRAL NETRAL NETRAL POSITIF POSITIF POSITIF
62 NETRAL POSITIF POSITIF POSITIF POSITIF NETRAL
63 NEGATIF NETRAL NEGATIF POSITIF POSITIF NEGATIF
64 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
65 POSITIF POSITIF POSITIF POSITIF POSITIF NEGATIF
66 NETRAL NETRAL NEGATIF NEGATIF NEGATIF NEGATIF
67 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
68 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
69 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
70 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
71 POSITIF NETRAL POSITIF POSITIF POSITIF POSITIF
72 POSITIF NETRAL NETRAL NETRAL NETRAL NETRAL
73 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
74 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
75 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
76 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF
77 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
78 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
79 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
80 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
81 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
82 NEGATIF POSITIF POSITIF NEGATIF NEGATIF POSITIF
95
UIN Syarif Hidayatullah Jakarta
83 POSITIF NEGATIF POSITIF POSITIF POSITIF NEGATIF
84 NEGATIF NEGATIF NEGATIF NETRAL NETRAL NETRAL
85 NETRAL NETRAL POSITIF POSITIF POSITIF POSITIF
86 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
87 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
88 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
89 NETRAL NETRAL NEGATIF POSITIF POSITIF POSITIF
90 POSITIF POSITIF POSITIF POSITIF POSITIF POSITIF
91 NEGATIF NEGATIF NETRAL POSITIF POSITIF NETRAL
92 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
93 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
94 NETRAL NETRAL POSITIF NEGATIF NEGATIF POSITIF
95 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
96 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
97 NEGATIF NEGATIF NEGATIF NEGATIF NEGATIF NETRAL
98 POSITIF POSITIF POSITIF NEGATIF NEGATIF NETRAL
99 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
100 NETRAL NETRAL NETRAL NETRAL NETRAL NETRAL
Gambar 5. 1 Perhitungan tabel K-NN
96
UIN Syarif Hidayatullah Jakarta
5.2.3 Analisa Hasil Tingkat Akurasi Kombinasi Algoritma Naive Bayes
dan K-NN dengan Pendekatan Lexicon
Sub-bab ini akan menjelaskan mengenai analisa hasil tingkat akurasi
algoritma naive bayes dan algoritma K-NN dengan pendekatan lexicon
menggunakan tabel confusion matrix. Pada algoritma naive bayes pengujian
dilakukan sekali untuk menghitung nilai akurasi dan algoritma K-NN
pengujian dilakukan terhadap nilai k dalam 5 nilai yaitu k=1, k=3, k=5 K=9
dan k=10. Data latih yang digunakan adalah berjumlah 900 dokumen. Dan
100 dokumen data uji baru.
a. Hasil tingkat akurasi algoritma naive bayes dengan pendekatan lexicon.
Tabel 5. 3 Hasil Pengujian Naive Bayes
Sentimen Kelas hasil prediksi
Positif Negatif Netral
Kelas
Sebenarnya
Positif a=31 b=1 c=4
Negatif d= 5 e=18 f =3
Netral g=2 h=4 i=32
Berdasarkan hasil pengujian dari tabel diatas dapat diambil nilai
akurasi sebagai berikut :
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 31 + 18 + 32
31 + 1 + 4 + 5 + 18 + 3 + 2 + 4 + 32× 100
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 81
100× 100 = 81%
b. Hasil Tingkat Akurasi Kombinasi Algoritma K-NN dan Lexicon dengan
nilai k pada algoritma K-NN sama dengan 1.
Tabel 5. 4 Tabel Hasil Pengujian k = 1
Sentimen Kelas hasil prediksi
Positif Negatif Netral
Kelas
Sebenarnya
Positif a=20 b=1 c=15
Negatif d= 6 e=12 f =8
Netral g=4 h=5 i=29
97
UIN Syarif Hidayatullah Jakarta
Berdasarkan hasil pengujian dari tabel diatas dapat diambil nilai
akurasi sebagai berikut :
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 20 + 12 + 29
20 + 1 + 15 + 6 + 12 + 8 + 4 + 5 + 29× 100
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 61
100× 100 = 61%
c. Hasil Tingkat Akurasi Kombinasi Algoritma K-NN dan Lexicon dengan
nilai k pada algoritma K-NN sama dengan 3.
Tabel 5. 5 Tabel Hasil Pengujian k = 3
Sentimen Kelas hasil prediksi
Positif Negatif Netral
Kelas
Sebenarnya
Positif a=22 b=0 c=14
Negatif d=5 e=13 f=8
Netral g=3 h=5 i=30
Berdasarkan hasil pengujian dari tabel diatas dapat diambil nilai
akurasi sebagai berikut :
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 22 + 13 + 30
22 + 0 + 14 + 5 + 13 + 8 + 3 + 5 + 30× 100
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 65
100× 100 = 65%
d. Hasil Tingkat Akurasi Kombinasi Algoritma K-NN dan Lexicon dengan
nilai k pada algoritma K-NN sama dengan 5.
Tabel 5. 6 Tabel Hasil Pengujian k = 5
Sentimen Kelas hasil prediksi
Positif Negatif Netral
Kelas
Sebenarnya
Positif a=32 b=3 c=1
Negatif d=5 e=14 f=7
Netral g=3 h=4 i=31
Berdasarkan hasil pengujian dari tabel diatas dapat diambil nilai
akurasi sebagai berikut :
98
UIN Syarif Hidayatullah Jakarta
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 32 + 14 + 31
32 + 3 + 1 + 5 + 14 + 7 + 3 + 4 + 31× 100
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 77
100× 100 = 77%
e. Hasil Tingkat Akurasi Kombinasi Algoritma K-NN dan Lexicon dengan
nilai k pada algoritma K-NN sama dengan 9.
Tabel 5. 7 Tabel Hasil Pengujian k = 9
Sentimen Kelas hasil prediksi
Positif Negatif Netral
Kelas
Sebenarnya
Positif a=29 b=2 c=5
Negatif d=9 e=12 f=5
Netral g=3 h=4 i=31
Berdasarkan hasil pengujian dari tabel diatas dapat diambil nilai
akurasi sebagai berikut :
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 29 + 12 + 31
29 + 2 + 5 + 9 + 12 + 5 + 3 + 4 + 31× 100
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 72
100× 100 = 72%
f. Hasil Tingkat Akurasi Kombinasi Algoritma K-NN dan Lexicon dengan
nilai k pada algoritma K-NN sama dengan 10
Tabel 5. 8 Tabel Hasil Pengujian k =10
Sentimen Kelas hasil prediksi
Positif Negatif Netral
Kelas
Sebenarnya
Positif a=33 b=2 c=1
Negatif d=10 e=12 f=4
Netral g=3 h=4 i=31
Berdasarkan hasil pengujian dari tabel diatas dapat diambil nilai
akurasi sebagai berikut :
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 33 + 12 + 31
33 + 2 + 1 + 10 + 12 + 4 + 3 + 4 + 31× 100
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = 76
100× 100 = 76%
99
UIN Syarif Hidayatullah Jakarta
Keterangan :
a = jumlah record positif yang diklasifikasikan sebagai positif
b = jumlah record positif yang diklasifikasikan sebagai negatif
c = jumlah record positif yang diklasifikasikan sebagai netral
d = jumlah record negatif yang diklasifikasikan sebagai positif
e = jumlah record negatif yang diklasifikasikan sebagai negatif
f = jumlah record negatif yang diklasifikasikan sebagai netral
g = jumlah record netral yang diklasifikasikan sebagai positif
h = jumlah record netral yang diklasifikasikan sebagai negatif
i = jumlah record netral yang diklasifikasikan sebagai netral
Secara keseluruhan hasil eksperimen ke 6 skenario pada penelitian ini
dirangkum berdasarkan gambar 5.1 sebagai berikut.
Gambar 5. 2 Hasil Eksperimen Naive Bayes dan K-NN
81
6165
7772
7681
66
73
80
70 71
83
6066
84
7580
86
5561
88
80
90
0
10
20
30
40
50
60
70
80
90
100
Naive Bayes K-NN (k=1) K-NN (k=3) K-NN (k=5) K-NN (k=9) K-NN (k=10)
Hasil Eksperimen Naive Bayes dan K-NN
Akurasi Presisi f-measure recall
100
UIN Syarif Hidayatullah Jakarta
Gambar 5. 3 Grafik Tingkat Akurasi
Gambar 5. 4 Grafik Tingkat Presisi
81
6165
7772
76
0
10
20
30
40
50
60
70
80
90
Naive Bayes K-NN (k=1) K-NN (k=3) K-NN (k=5) K-NN (k=9) K-NN (k=10)
Analisis Kinerja Akurasi Naive Bayes dan K-NN
81
66
73
80
70 71
0
10
20
30
40
50
60
70
80
90
Naive Bayes K-NN (k=1) K-NN (k=3) K-NN (k=5) K-NN (k=9) K-NN (k=10)
Analisis Tingkat Presisi Naive Bayes dan K-NN
101
UIN Syarif Hidayatullah Jakarta
Gambar 5. 5 Grafik Tingkat Recall
Gambar 5. 6 Grafik Tingkat F-Measure
Berdasarkan grafik pada gambar 5.1 maka didapatkan hasil analisis
sebagai berikut :
1. Perbandingan algoritma naive bayes dan K-NN memiliki tingkat akurasi,
error rate, presisi dan recall yang berbeda disetiap ekperimen yang
dilakukan.
86
5561
88
80
90
0
10
20
30
40
50
60
70
80
90
100
Naive Bayes K-NN (k=1) K-NN (k=3) K-NN (k=5) K-NN (k=9) K-NN (k=10)
Analisis Tingkat Recall Naive Bayes dan K-NN
83
6066
84
7580
0
10
20
30
40
50
60
70
80
90
Naive Bayes K-NN (k=1) K-NN (k=3) K-NN (k=5) K-NN (k=9) K-NN (k=10)
Tingkat F-Measure Naive Bayes dan K-NN
102
UIN Syarif Hidayatullah Jakarta
2. Pada eksperimen pertama, naive bayes menghasilkan tingkat akurasi
sebesar 81% dengan error rate sebesar 19%, f-measure sebesar 0,83,
presisi sebesar 0,81 dan recall sebesar 86%.
3. Pada eksperimen kedua, K-NN dengan parameter k=1 menghasilkan
tingkat akurasi sebesar 61% dengan error rate sebesar 39%, f-measure
sebesar 0,60, presisi sebesar 0,66 dan recall sebesar 55%. Perbedaan
eksperimen pertama ke eksperimen kedua mengalami selisih akurasi
sebesar 20%.
4. Pada eksperimen ke tiga, K-NN dengan parameter k=3 menghasilkan
tingkat akurasi sebesar 66% dengan error rate sebesar 35%, f-measure
sebesar 0,66, presisi sebesar 0,73 dan recall sebesar 61%. Pada
eksperimen ketiga tingkat akurasi mengalami peningkatan 4% pada
paramater k=3.
5. Pada eksperimen keempat, K-NN dengan parameter k=5 menghasilkan
tingkat akurasi sebesar 77% dengan error rate sebesar 23%, f-measure
sebesar 0,84, presisi sebesar 0,80 dan recall sebesar 88%. Eksperimen
keempat mengalami peningkatan akurasi tertinggi dibandingkan
sebelumnya.
6. Pada eksperimen kelima, K-NN dengan parameter k=9 menghasilkan
tingkat akurasi sebesar 72% dengan error rate sebesar 28%, f-measure
sebesar 0,75, presisi sebesar 0,70 dan recall sebesar 80%. Eksperimen
kelima akurasi turun 5 % dari eksperimen keempat.
7. Pada eksperimen keenam, K-NN dengan parameter k=10 menghasilkan
tingkat akurasi sebesar 76% dengan error rate sebesar 24%, f-measure
sebesar 0,80, presisi sebesar 0,71 dan recall sebesar 91%. Eksperimen
keenam merupakan eksperimen tertinggi kedua dalam algoritma K-NN.
8. Dari keenam eksperimen/skenario yang dilakukan peneliti, tingkat
tertinggi akurasi ada pada eksperimen pertama algoritma naive bayes
dengan tingkat akurasi sebesar 81% dan tingkat akurasi pada algoritma
K-NN tingkat akurasi tertinggi pada parameter k = 5 sebesar 77%.
Sementara tingkat terendah akurasi jatuh pada eksperimen kedua
algoritma K-NN dengan parameter k = 1.
103
UIN Syarif Hidayatullah Jakarta
9. Perhitungan recall tertinggi jatuh pada eksperimen keenam sebesar 91%.
Semakin tinggi nilai recall yang dihasilkan maka sistem dapat
memprediksi kelas yang diidentifikasi dengan benar.
10. Perhitungan f-measure terhadap keenam eksperimen yang tertinggi ada
pada eksperimen kelima, serta kedua diikuti dengan tingkat akurasi yang
paling tinggi. Sementara nilai f-measure terkecil ada pada eksperimen
pertama diikuti dengan tingkat akurasi yang paling rendah. Artinya nilai
f-measure menunjukan semakin tinggi nilai f-measure (mendekati nilai
1) yang dihasilkan semakin bagus kerja klasifikasi dalam memprediksi.
11. Dimulai dari eksperimen kedua dan eksperimen ketiga, tingkat
akurasinya berada dalam tingkat yang rendah dibawah 70 persen, ini
disebabkan karena penentuan nilai k pada algoritma K-NN yang kecil.
Namun pada eksperimen selanjutnya 4 sampai 6 tingkat akurasi naik
turun diatas 70 persen. Penelitian (Oktinas, 2017) menguji nilai k dari
k=5, k=10, k=15, k=20, k=25, k=30,k=35,k=40,k=45,k=50,k=55, dan
k=60, dan nilai k dengan akurasi tertinggi jatuh pada k=10, setelah dari
k =10 akurasi mengalami penurunan sedikit hingga k=60. Pada penelitian
yang dilakukan oleh penulis juga mengalami hal demikian yaitu nilai
akurasi pada K-NN mengalami pola naik sebelum mencapai nilai k
terbaik lalu turun setelah mencapai nilai k terbaik.
5.2.4 Analisis Hasil Perbandingan Akurasi Algoritma Naive Bayes
Dengan Algoritma K-NN
Pada sub-bab ini akan dibahas tingkat perbandingan akurasi antara
kombinasi algortima Naive Bayes dan pendekatan lexicon dibandingkan
dengan algortima K-NN. Pengujian ini dilakukan untuk mengetahui adanya
peningkatan akurasi dalam menentukan orientasi sentimen twitter. Berikut
merupakan hasil uji coba yang dilakukan oleh penulis.
104
UIN Syarif Hidayatullah Jakarta
Gambar 5. 7 Perbandingan Akurasi Naive Bayes Dan K-NN
Berdasarkan gambar grafik 5.6 maka didapatkan hasil analisis yaitu
algoritma naive bayes memiliki tingkat akurasi yang lebih tinggi
dibandingkan dengan algoritma K-NN. Uji coba yang dilakukan pada naive
bayes menghasilkan akurasi sebesar 81% sedangkan algoritma K-NN pada
nilai tertinggi menggunakan parameter k adalah 5 tingkat akurasi yang
dihasilkan sebesar 77%. Tingkat akurasi algoritma K-NN sedikit lebih rendah
disebabkan oleh banyaknya data yang diklasifikasi tidak sesuai. Apabila
pembobotan query uji terhadap data latih bernilai 0 (tidak ada fitur yang
ditemukan sesuai dengan data latih) maka perhitungan cosine similarity untuk
penentuan ketetanggan data uji terhadap data latih sulit diketahui dan akan
bernilai 0 sehingga pengklasifikasian sulit ditentukan dan berimbas
pengklasifikasian bernilai netral. Pada pengujian ini banyak data sentimen
negatif yang diklasifikasikan sebagai positif.
81
77
75
76
77
78
79
80
81
82
Naive Bayes K-NN (terbaik)
Akurasi
105
UIN Syarif Hidayatullah Jakarta
BAB VI
KESIMPULAN DAN SARAN
6.1 Kesimpulan
Berdasarkan rumusan masalah dan penejelasan yang telah peneliti
deskripsikan pada bab sebelumnya, maka peneliti dapat menarik kesimpulan
sebagai berikut:
1. Kombinasi algoritma klasifikasi supervised learning dengan pendekatan
lexicon dapat diterapkan pada analisis sentimen kata.
2. Nilai k optimal dalam melakukan proses klasifikasi algoritma K-NN
mencapai tingkat akurasi pada k=5 dengan tingkat akurasi mencapai 77%
menggunakan dataset hasil crawling data twitter dengan kata kunci
pilpres 2019 dan Jokowi.
3. Pada perbandingan algoritma Naive Bayes dengan K-NN selisih tingkat
akurasi mencapai 4%. Berdasarkan pengujian yang telah dilakukan oleh
peneliti, kombinasi algoritma naive bayes dan K-NN dengan pendekatan
lexicon telah terbukti meningkatkan akurasi dalam mengklasifikasi
sentimen.
4. Akurasi pada nilai k dalam algoritma K-NN mengalami pola naik
sebelum mencapai nilai k terbaik lalu mengalami penurunan tingkat
akurasi setelah nilai k terbaik.
5. Dengan penggunaan jumlah data latih yang sedikit, naive bayes memiliki
sedikit kelebihan dibandingkan K-NN yang mungkin menyebabkan
akurasi naive bayes sedikit diatas K-NN.
6.2 Saran
Penulis menyadari bahwa aplikasi orientasi sentimen ini masih
memiliki beberapa kekurangan dan keterbatasan. Oleh karena itu, ada
beberapa hal yang perlu dipertimbangkan untuk mengembangkan aplikasi ini
agar lebih baik, yaitu:
1. Sistem hanya dapat mengklasifikasi data teks dan berbahasa Indonesia,
diharapkan dapat dikembangkan dalam berbagai bahasa.
106
UIN Syarif Hidayatullah Jakarta
2. Adanya peningkatan koleksi kamus sentimen sehingga dapat
meningkatkan akurasi.
3. Metode orientasi sentimen diharapkan dapat dikembangkan dengan
penggunaan teknis bigram dan POST tagging.
4. Diharapkan pengembangan selanjutnya menggunakan bahasa
pemrograman python untuk mempercepat processing data, dan
mendukung untuk semua platform.
107
UIN Syarif Hidayatullah Jakarta
DAFTAR PUSTAKA
Anonim. 2018. https://infopemilu.kpu.go.id/ Diakses pada 04 April 2018.
Asosiasi Penyelenggara Jasa Internet Indonesia (APJII). 2018.
apjii.or.id/survei2017 Diakses 04 April 2018.
Bagir Muhammad, Indah Ayu Yuliani. 2012. Database Introduction. Depok:
CCIT-FTUI.
Bhonde, Rhesma et al.(2015). Sentiment Analysis Based on Dictionary
Approach.
Bintana, Rizqa Raiqa .(2012). Penerapan Model Okapi Bm25 Pada Sistem
Temu Kembali Informasi Tugas Akhir Teknik Informatika UIN Suska
Riau.
Devid Haryalesmana. 2018.https://github.com/masdevid/ID-
OpinionWords/blob/master/positive.txt Diakses pada 28 Februari
2018.
Brownlee, Jason 2016. Supervised Learning and Unsupervised Learning.
https://machinelearningmastery.com/supervised-and-unsupervised-
machine-learning-algorithms/. Diakses pada 10 April 2018.
Feldman, R., & Sanger, J. (2007). Advanced Approaches in Analyzing
Unstructured Data, The Text Mining Handbook. New York: Cambirdge
UP.
Hotho A. (2005). A Brief Survey of Text Mining. University of Kassel.
Indriani, A. (2014). Klasifikasi Data Forum dengan menggunakan Metode
Naïve Bayes Classifier. Seminar Nasional Aplikasi Teknologi Informasi
(SNATI), 5–10.
Kadir, A. (2012). Algoritma dan Pemrograman Menggunakan C & C++. (B.
R. W, Ed.) (1st ed.). Yogyakarta: Andi
Kasman, Akhmad Dharma. 2015. Trik Kolaborasi ANDROID dengan PHP
dan MySQL. Yogyakarta. Lokomedia.
108
UIN Syarif Hidayatullah Jakarta
Krisandi, Nobertus.,dkk (2013). Algoritma k-Nearest Neighbor Dalam
Klasifikasi Data Hasil Produksi Kelapa Sawit Pada PT.Minamas
Kecamatan Parindu. Buletin Ilmiah Math.Stat. dan Terapannya
(Bimaster) Volume 02, No.01 2013: hal. 33-38
Liu, B. (2012). Sentiment Analysis and Opinion Mining. (H. Graeme, Ed.)
(1st ed.). Chicago : Morgan & Claypool Publisher. Retrieved from
https://www.cs.uic.edu/~liub/FBS/SentimentAnalysis-and-
OpinionMining.pdf
Liu, B. (2015). Sentiment Analysis: Opinion Mining, Sentiment, and
Emotions. (H. Graeme, Ed.) (1st ed.). Chicago : Morgan & Claypool
Publisher. Retrieved from https://www.cs.uic.edu/~liub/FBS/chapter-
1-and-chapter-2.pdf
Madani et al. (2010). Wireless Sensor Network : Modelling and Simulation
.COMSATS Institute Information of Technology Abbotabad .
Matulatuwa, F. M., Studi, P., Sistem, M., Informasi, F. T., Kristen, U., &
Wacana, S. (2017). Text Mining dengan Metode Lexicon Based untuk
Sentiment Analysis Pelayanan PT. POS Indonesia Melalui Media
Sosial Twitter Jurnal, (September).
Oktinas, Willa (2017). Analisis Sentimen Pada Acara Televisi Menggunakan
Improved K-Neasrest Neighbor Tugas Akhir Teknik Informatika.
Medan: Universitas Sumatra Utara
Pang, B., & Lee, L. (2008). Opinion Mining and Sentiment Analysis.
Foundations and Trends in Information Retrieval , 1-2.
Prasetyo, E. (2012). Data Mining Konsep dan Aplikasi Menggunakan Matlab
(1st ed.).
Lestari, Agnes Rossi Trisna, dkk (2017). Analisis Sentimen Tentang Opini
Pilkada DKI 2017 Pada Dokumen Twitter Berbahasa Indonesia
Menggunakan Naive Bayes dan Pembobotan Emoji Volume 01,No 12
Desember 2017 : hal. 1718 – 1724
Tala, Fadillah Z (2003). A Study Of Stemming Effects on Information
Retrieval in Bahasa Indonesia. Retrieved from
109
UIN Syarif Hidayatullah Jakarta
https://pdfs.semanticscholar.org/8ed9/c7d54fd3f0b1ce3815b2eca8214
7b771ca8f.pdf
Suyanto. 2017. Data Mining Untuk Klasifikasi dan Klasterisasi Data.
Bandung: Informatika
Yosnaningsih, Y Violya. 2015. Klasifikasi Dokumen Bahasa Jawa
Menggunakan Metode Naïve Bayesian
110
UIN Syarif Hidayatullah Jakarta
LAMPIRAN
KODE PROGRAM
Models – m_doc_classifier.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class M_doc_classifier extends CI_Model{
function __construct(){
parent::__construct();
//error_reporting(0);
}
//----------------------TRAINING NAIVE BAYES----------------------\\
//ambil array semua term dari data latih positif
public function count_total(){
$this->load->database();
$sql = "SELECT * from twitlog_latih";
$query = $this->db->query($sql);
$hasil = $query->num_rows();
$row = $query->result();
return $hasil;
}
//hitung total review di data latih
public function count_total_traindata(){
$this->db->select('id_tweet');
$this->db->from('twitlog_latih');
$this->db->where('kategori_tweet','DATA LATIH');
111
UIN Syarif Hidayatullah Jakarta
$total_traindata = $this->db->count_all_results();
return $total_traindata;
}
//hitung total review positif di data latih
public function count_pos_traindata(){
$this->db->select('id_tweet');
$this->db->from('twitlog_latih');
$this->db->where('sentimen_tweet','POSITIF');
$this->db->where('kategori_tweet','DATA LATIH');
$total_pos_traindata = $this->db->count_all_results();
return $total_pos_traindata;
}
//hitung total review negatif di data latih
public function count_neg_traindata(){
$this->db->select('id_tweet');
$this->db->from('twitlog_latih');
$this->db->where('sentimen_tweet','NEGATIF');
$this->db->where('kategori_tweet','DATA LATIH');
$total_neg_traindata = $this->db->count_all_results();
return $total_neg_traindata;
}
//hitung total review netral di data latih
public function count_net_traindata(){
$this->db->select('id_tweet');
$this->db->from('twitlog_latih');
$this->db->where('sentimen_tweet','NETRAL');
$this->db->where('kategori_tweet','DATA LATIH');
$total_neg_traindata = $this->db->count_all_results();
return $total_neg_traindata;
112
UIN Syarif Hidayatullah Jakarta
}
//PRIOR PROBABILITY
//prior probability kelas positif
public function pos_prior_prob(){
$total_traindata = $this->count_total_traindata();
$pos_traindata = $this->count_pos_traindata();
//prior prob positif = jumlah data latih positif/jumlah semua
data latih
$pos_prior = $pos_traindata/$total_traindata;
return $pos_prior;
}
//prior probability kelas negatif
public function neg_prior_prob(){
$total_traindata = $this->count_total_traindata();
$neg_traindata = $this->count_neg_traindata();
//prior prob negatif = jumlah data latih negatif/jumlah semua
data latih
$neg_prior = $neg_traindata/$total_traindata;
return $neg_prior;
}
public function net_prior_prob(){
$total_traindata = $this->count_total_traindata();
$net_traindata = $this->count_net_traindata();
//prior prob negatif = jumlah data latih negatif/jumlah semua
data latih
113
UIN Syarif Hidayatullah Jakarta
$net_prior = $net_traindata/$total_traindata;
return $net_prior;
}
//ambil array semua term dari data latih positif
public function array_pos_terms(){
//fungsi awal 100-105
$this->db->select('stemming');
$this->db->from('processing_query');
$this->db->join('twitlog_latih', 'twitlog_latih.id_tweet =
processing_query.id_tweet');
$this->db->where('twitlog_latih.sentimen_tweet','POSITIF');
$this->db->where('twitlog_latih.kategori_tweet','DATA
LATIH');
$array_pos_terms = $this->db->get()->result_array();
$array_pos_terms=
array_column($array_pos_terms,'stemming');
$all_pos_terms = implode(" ",$array_pos_terms);
$all_pos_terms = preg_replace('/\s+/', ' ', $all_pos_terms);
$all_pos_terms = trim($all_pos_terms);
$array_pos_terms = explode(" ",$all_pos_terms);
return $array_pos_terms;
}
//ambil array semua term dari data latih negatif
public function array_neg_terms(){
$this->db->select('stemming');
$this->db->from('processing_query');
114
UIN Syarif Hidayatullah Jakarta
$this->db->join('twitlog_latih', 'twitlog_latih.id_tweet =
processing_query.id_tweet');
$this->db-
>where('twitlog_latih.sentimen_tweet','NEGATIF');
$this->db->where('twitlog_latih.kategori_tweet','DATA
LATIH');
$array_neg_terms = $this->db->get()->result_array();
$array_neg_terms=
array_column($array_neg_terms,'stemming');
$all_neg_terms = implode(" ",$array_neg_terms);
$all_neg_terms = preg_replace('/\s+/', ' ', $all_neg_terms);
$all_neg_terms = trim($all_neg_terms);
$array_neg_terms = explode(" ",$all_neg_terms);
return $array_neg_terms;
}
//ambil array semua term dari data latih netral
public function array_net_terms(){
$this->db->select('stemming');
$this->db->from('processing_query');
$this->db->join('twitlog_latih', 'twitlog_latih.id_tweet =
processing_query.id_tweet');
$this->db->where('twitlog_latih.sentimen_tweet','NETRAL');
$this->db->where('twitlog_latih.kategori_tweet','DATA
LATIH');
$array_net_terms = $this->db->get()->result_array();
$array_net_terms=
array_column($array_net_terms,'stemming');
$all_net_terms = implode(" ",$array_net_terms);
$all_net_terms = preg_replace('/\s+/', ' ', $all_net_terms);
$all_net_terms = trim($all_net_terms);
115
UIN Syarif Hidayatullah Jakarta
$array_net_terms = explode(" ",$all_net_terms);
return $array_net_terms;
}
//ambil array semua term dari data uji positif
public function array_pos_terms2(){
$this->db->select('stemming');
$this->db->from('processing_query');
$this->db->join('twitlog_latih', 'twitlog_latih.id_tweet =
processing_query.id_tweet');
$this->db->where('twitlog_latih.sentimen_tweet','POSITIF');
$this->db->where('twitlog_latih.kategori_tweet','DATA
UJI');
$array_pos_terms = $this->db->get()->result_array();
$array_pos_terms=
array_column($array_pos_terms,'stemming');
$all_pos_terms = implode(" ",$array_pos_terms);
$all_pos_terms = preg_replace('/\s+/', ' ', $all_pos_terms);
$all_pos_terms = trim($all_pos_terms);
$array_pos_terms = explode(" ",$all_pos_terms);
return $array_pos_terms;
}
//ambil array semua term dari data uji negatif
public function array_neg_terms2(){
$this->db->select('stemming');
$this->db->from('processing_query');
$this->db->join('twitlog_latih', 'twitlog_latih.id_tweet =
processing_query.id_tweet');
116
UIN Syarif Hidayatullah Jakarta
$this->db-
>where('twitlog_latih.sentimen_tweet','NEGATIF');
$this->db->where('twitlog_latih.kategori_tweet','DATA
UJI');
$array_neg_terms = $this->db->get()->result_array();
$array_neg_terms=
array_column($array_neg_terms,'stemming');
$all_neg_terms = implode(" ",$array_neg_terms);
$all_neg_terms = preg_replace('/\s+/', ' ', $all_neg_terms);
$all_neg_terms = trim($all_neg_terms);
$array_neg_terms = explode(" ",$all_neg_terms);
return $array_neg_terms;
}
//ambil array semua term dari data uji netral
public function array_net_terms2(){
$this->db->select('stemming');
$this->db->from('processing_query');
$this->db->join('twitlog_latih', 'twitlog_latih.id_tweet =
processing_query.id_tweet');
$this->db->where('twitlog_latih.sentimen_tweet','NETRAL');
$this->db->where('twitlog_latih.kategori_tweet','DATA
UJI');
$array_net_terms = $this->db->get()->result_array();
$array_net_terms=
array_column($array_net_terms,'stemming');
$all_net_terms = implode(" ",$array_net_terms);
$all_net_terms = preg_replace('/\s+/', ' ', $all_net_terms);
$all_net_terms = trim($all_net_terms);
$array_net_terms = explode(" ",$all_net_terms);
return $array_net_terms;
117
UIN Syarif Hidayatullah Jakarta
}
//ambil array semua term yang unik dari semua data latih (vocabulary)
public function vocabulary(){
$array_terms = $this->all_terms_traindata();
$vocabulary = array_unique($array_terms);
$array_vocabulary = array();
foreach ($vocabulary as $unique_term) {
array_push($array_vocabulary,$unique_term);
}
return $array_vocabulary;
}
//ambil semua term dari semua data latih
public function all_terms_traindata(){
$this->db->select('stemming');
$this->db->from('processing_query');
$this->db->join('twitlog_latih', 'twitlog_latih.id_tweet =
processing_query.id_tweet');
$this->db->where('twitlog_latih.kategori_tweet','DATA
LATIH');
$array_terms = $this->db->get()->result_array();
$array_terms= array_column($array_terms,'stemming');
$all_terms = implode(" ",$array_terms);
$all_terms = preg_replace('/\s+/', ' ', $all_terms);
$all_terms = trim($all_terms);
$array_terms = explode(" ",$all_terms);
return $array_terms;
}
118
UIN Syarif Hidayatullah Jakarta
//hitung kemunculan (occurences) term t di data latih positif lalu
masukkan nilainya ke dalam array
public function get_pos_occurences(){
$array_pos_occs = array();
$vocab = $this->vocabulary();
$array_pos_terms = $this->array_pos_terms();
$array_pos_values = array_count_values($array_pos_terms);
foreach ($vocab as $term) {
if(isset($array_pos_values[$term])){
$array_pos_occs[] =
$array_pos_values[$term];
}
else{
$array_pos_occs[] = 0;
}
}
return $array_pos_occs;
}
//hitung kemunculan (occurences) term t di data latih negatif lalu
masukkan nilainya ke dalam array
public function get_neg_occurences(){
$array_neg_occs = array();
$vocab = $this->vocabulary();
$array_neg_terms = $this->array_neg_terms();
$array_neg_values = array_count_values($array_neg_terms);
foreach ($vocab as $term) {
if(isset($array_neg_values[$term])){
$array_neg_occs[] =
$array_neg_values[$term];
119
UIN Syarif Hidayatullah Jakarta
}
else{
$array_neg_occs[] = 0;
}
}
return $array_neg_occs;
}
//hitung kemunculan (occurences) term t di data latih netral lalu
masukkan nilainya ke dalam array
public function get_net_occurences(){
$array_net_occs = array();
$vocab = $this->vocabulary();
$array_net_terms = $this->array_net_terms();
$array_net_values = array_count_values($array_net_terms);
foreach ($vocab as $term) {
if(isset($array_net_values[$term])){
$array_net_occs[] =
$array_net_values[$term];
}
else{
$array_net_occs[] = 0;
}
}
return $array_net_occs;
}
//LIKELIHOOD
//fungsi untuk menghitung likelihood
public function
likelihood($term_occ,$total_term_in_cat,$vocabulary_count){
120
UIN Syarif Hidayatullah Jakarta
$likelihood =
($term_occ+1)/($total_term_in_cat+$vocabulary_count);//total term in cat =
jumlah folder stemming karena merujuk dari processing query
//$likelihood = log($likelihood); //agar tidak terjadi underflow
return $likelihood;
}
// proses training naive bayes berlangsung
function training()
{
$array_training_terms=array();
//ini menghitung total term di data latih sesuai tabel
sa_vocabulary
$vocab = $this->vocabulary();
//$vocab = $this->all_vocabs2();
//echo $vocab;
$pos_terms_count = count($this->array_pos_terms());
//jumlah semua term di data latih positif
//echo $pos_term_count;
$neg_terms_count = count($this->array_neg_terms());
//jumlah semua term di data latih negatif
//echo $neg_term_count;
$net_terms_count = count($this->array_net_terms());
//jumlah semua term di data latih negatif
//echo $net_term_count;
$array_pos_occ = $this->get_pos_occurences();
$array_neg_occ = $this->get_neg_occurences();
$array_net_occ = $this->get_net_occurences();
$vocab_count = count($vocab); //hitung jumlah semua term di
vocabulary
121
UIN Syarif Hidayatullah Jakarta
//echo $vocab_count;
//$vocab_count = $vocab;
for($i=0; $i<$vocab_count; $i++){
//hitung likelihood kelas positif dan negatif untuk
setiap term di vocabulary
$pos_likelihood = $this-
>likelihood($array_pos_occ[$i],$pos_terms_count,$vocab_count);
$neg_likelihood = $this-
>likelihood($array_neg_occ[$i],$neg_terms_count,$vocab_count);
$net_likelihood = $this-
>likelihood($array_net_occ[$i],$net_terms_count,$vocab_count);
$array_training_terms[] =
array("term"=>$vocab[$i],"pos_occ"=>$array_pos_occ[$i],"neg_occ"=>$ar
ray_neg_occ[$i],"net_occ"=>$array_net_occ[$i],
"pos_likelihood"=>$pos_likelihood,"neg_likelihood"=>$neg_likelih
ood,"net_likelihood"=>$net_likelihood);
//$array_training_terms[] =
array("term"=>$vocab[$i],"pos_occ"=>$array_pos_occ[$i],"neg_occ"=>$ar
ray_neg_occ[$i],"net_occ"=>$array_net_occ[$i],
//
"pos_likelihood"=>$pos_likelihood,"neg_likelihood"=>$neg_likelih
ood,"net_likelihood"=>$net_likelihood);
}
return $array_training_terms;
}
122
UIN Syarif Hidayatullah Jakarta
//insert hasil proses training ke database
public function insert_train(){
$this->db->truncate('sa_vocabulary');
$data = $this->training();
$this->db->insert_batch('sa_vocabulary',$data);
}
/*---------------------------PROSES TESTING---------------------------*/
//hitung total review di data uji
public function count_total_testdata(){
$this->db->select('no');
$this->db->from('twitlog_latih');
$this->db->where('kategori_tweet','DATA UJI');
$total_testdata = $this->db->count_all_results();
return $total_testdata;
}
//ambil semua review data uji
public function all_test_docs(){
$this->db->select('twitlog_latih.id_tweet,
processing_query.stemming');
$this->db->from('twitlog_latih');
$this->db->where('twitlog_latih.kategori_tweet','DATA
UJI');
$this->db->join('processing_query',
'processing_query.id_tweet = twitlog_latih.id_tweet');
$array_test_docs = $this->db->get()->result_array();
return $array_test_docs;
}
123
UIN Syarif Hidayatullah Jakarta
//ambil semua isi tabel vocabulary (frekuensi kemunculan term dan
likelihood)
public function all_vocabs(){
$this->db->select('*');
$this->db->from('sa_vocabulary');
$array_all_vocabs = $this->db->get()->result_array();
return $array_all_vocabs;
}
//ambil semua isi tabel vocabulary (frekuensi kemunculan term dan
likelihood)
public function all_vocabs2(){
$this->load->database();
$query = $this->db->query("SELECT id_term, SUM(pos_occ
+ neg_occ + net_occ) FROM sa_vocabulary GROUP BY id_term") ;
$i = 0;
$summ = 0;
foreach ($query->result_array() as $row) {
$summ += $row['SUM(pos_occ + neg_occ +
net_occ)'];
$i++;
}
return $summ;
}
//normalisasi log posterior probability tapi tidak dipakai
public function normalize_log($pos,$neg,$net){
$max_val = max($pos,$neg,$net);//cari nilai log terbesar
$pos = $max_val/$pos;
$neg = $max_val/$neg;
124
UIN Syarif Hidayatullah Jakarta
$net = $max_val/$net;
$exp_pos = exp($pos);
$exp_neg = exp($neg);
$exp_net = exp($net);
$pos_prob = $exp_pos/($exp_pos+$exp_neg+$exp_net);
$neg_prob = $exp_neg/($exp_pos+$exp_neg+$exp_net);
$net_prob = $exp_net/($exp_pos+$exp_net+$exp_neg);
$array_results = array("pos_prob"=>$pos_prob,
"neg_prob"=>$neg_prob, "net_prob"=>$net_prob);
return $array_results;
}
//fungsi dummy tanpa log tapi dipakai
public function normalize_log2($pos,$neg,$net){
//$max_val = max($pos,$neg,$net);//cari nilai log terbesar
//$pos = $max_val/$pos;
//$neg = $max_val/$neg;
//$net = $max_val/$net;
$exp_pos = $pos;
$exp_neg = $neg;
$exp_net = $net;
$pos_prob = $exp_pos;
$neg_prob = $exp_neg;
$net_prob = $exp_net;
125
UIN Syarif Hidayatullah Jakarta
$array_results = array("pos_prob"=>$pos_prob,
"neg_prob"=>$neg_prob, "net_prob"=>$net_prob);
return $array_results;
}
//tentukan kelas sentimen terbaik
public function best_class($positive,$negative,$netral){
if(($positive == $negative) && ($negative ==
$netral))
{
//simpan netral
$best_class = "NETRAL";
}
else if(($positive > $negative) && ($positive >
$netral))
{
//simpan positif
$best_class = "POSITIF";
}
else if(($positive > $negative) && ($positive
== $netral))
{
//simpan positif
$best_class = "POSITIF";
}
else if(($positive < $negative) && ($negative
> $netral))
{
//simpan negatif
$best_class = "NEGATIF";
}
126
UIN Syarif Hidayatullah Jakarta
else if(($positive < $negative) && ($negative
== $netral))
{
//simpan negatif
$best_class = "NETRAL";
}
else if(($positive > $negative) && ($positive <
$netral))
{
//simpan netral
$best_class = "NETRAL";
}
else if(($positive < $negative) && ($negative
< $netral))
{
//simpan netral
$best_class = "NETRAL";
}
else
{
//simpan netral
$best_class = "NETRAL";
}
return $best_class;
}
//fungsi naive bayes classifier untuk mengklasifikasikan data uji
public function naive_bayes(){
$array_results=array();
127
UIN Syarif Hidayatullah Jakarta
$vocab = $this->all_vocabs();
$pos_terms_count = count($this->array_pos_terms());
//jumlah semua term di data uji positif
$neg_terms_count = count($this->array_neg_terms());
//jumlah semua term di data uji negatif
$net_terms_count = count($this->array_net_terms());
//jumlah semua term di data uji netral
$vocab_count = count($vocab); //jumlah semua term di
vocabulary
$array_test_docs = $this->all_test_docs(); //ambil semua
review data uji
//print_r($array_test_docs) ;
//fungsi prior dengan log
//$pos_prior_prob = log($this->pos_prior_prob()); //log dari
prior probability kelas positif
//$neg_prior_prob = log($this->neg_prior_prob()); //log dari
prior probability kelas negatif
//$net_prior_prob = log($this->net_prior_prob()); //log dari
prior probability kelas netral
//fungsi prior tanpa log
$pos_prior_prob = $this->pos_prior_prob(); //log dari prior
probability kelas positif tanpa log
$neg_prior_prob = $this->neg_prior_prob(); //log dari prior
probability kelas negatif tanpa log
$net_prior_prob = $this->net_prior_prob(); //log dari prior
probability kelas netral tanpa log
foreach($array_test_docs as $test_doc){ //loop untuk semua
review data uji
$id = $test_doc["id_tweet"];
128
UIN Syarif Hidayatullah Jakarta
$terms_in_doc = explode(" ", $test_doc["stemming"]);
$total_pos_likelihood = 1;
$total_neg_likelihood = 1;
$total_net_likelihood = 1;
foreach($terms_in_doc as $term){
$pos_likelihood = 1;
$neg_likelihood = 1;
$net_likelihood = 1;
$found = false;
for($i=0; $i < $vocab_count;$i++){
if($vocab[$i]["term"] == $term){
$pos_likelihood =
$vocab[$i]["pos_likelihood"];
$neg_likelihood =
$vocab[$i]["neg_likelihood"];
$net_likelihood =
$vocab[$i]["net_likelihood"];
$found= true;
break;
}
}
if(!$found){
$pos_likelihood = $this-
>likelihood(0,$pos_terms_count,$vocab_count);
$neg_likelihood = $this-
>likelihood(0,$neg_terms_count,$vocab_count);
$net_likelihood = $this-
>likelihood(0,$neg_terms_count,$vocab_count);
}
129
UIN Syarif Hidayatullah Jakarta
//nilai likelihood didalam 1 dokumen
ditambahkan 1 per satu sesuai class
$total_pos_likelihood *= $pos_likelihood;
$total_neg_likelihood *= $neg_likelihood;
$total_net_likelihood *= $net_likelihood;
}
//echo $total_pos_likelihood;
//posterior probability kelas positif dokumen C = prior
probability x total likelihood
$pos_post_prob = $pos_prior_prob *
$total_pos_likelihood;
//posterior probability kelas negatif dokumen C = prior
probability x total likelihood
$neg_post_prob = $neg_prior_prob *
$total_neg_likelihood;
//echo $neg_post_prob;
//posterior probability kelas netral dokumen C = prior
probability x total likelihood
$net_post_prob = $net_prior_prob *
$total_net_likelihood;
//echo $net_post_prob;
//posterior probability kelas positif dokumen C =
log(prior probability) + total likelihood
//$pos_post_prob = $pos_prior_prob +
$total_pos_likelihood;
//posterior probability kelas negatif dokumen C =
log(prior probability) + total likelihood
130
UIN Syarif Hidayatullah Jakarta
//$neg_post_prob = $neg_prior_prob +
$total_neg_likelihood;
//posterior probability kelas netral dokumen C =
log(prior probability) + total likelihood
//$net_post_prob = $net_prior_prob +
$total_net_likelihood;
//normalisasi log posterior probability
//$array_prob = $this-
>normalize_log($pos_post_prob,$neg_post_prob,$net_post_prob);
//tes hapus normalisasi log dengan gunakan fungsi
normalizelog2
$array_prob = $this-
>normalize_log2($pos_post_prob,$neg_post_prob,$net_post_prob);
$pos_post_prob = $array_prob["pos_prob"];
$neg_post_prob = $array_prob["neg_prob"];
$net_post_prob = $array_prob["net_prob"];
//ambil kelas terbaik (kelas dengan posterior
probability tertinggi)
$best_class= $this-
>best_class($pos_post_prob,$neg_post_prob,$net_post_prob);
//masukkan ke array results
$array_results[] =
array("id_tweet"=>$id,"pos_post_prob"=>$pos_post_prob,
131
UIN Syarif Hidayatullah Jakarta
"neg_post_prob"=>$neg_post_prob,"net_post_prob"=>$net_post_pr
ob,"sentimen_datauji"=>$best_class);
}
return $array_results;
}
public function insert_datauji(){
$this->db->truncate('sa_datauji');
$data = $this->naive_bayes();
$this->db->insert_batch('sa_datauji',$data);
}
//isi badge di tabel vakurasi
public function accuracy_badge($predicted,$result){
$badge="<span class='badge bg-gray'>BLM
DIKETAHUI</span>";
if(isset($result)){
if($predicted==$result){
$badge="<span class='badge bg-
green'>AKURAT</span>";
}else{
$badge="<span class='badge bg-red'>TDK
AKURAT</span>";
}
}
return $badge;
}
//isi badge di tabel vakurasi3
public function accuracy_badge_kombinasi($predicted,$result){
132
UIN Syarif Hidayatullah Jakarta
$badge="<span class='badge bg-gray'>BLM
DIKETAHUI</span>";
if(isset($result)){
if($predicted==$result){
$badge="<span class='badge bg-
green'>AKURAT</span>";
}else{
$badge="<span class='badge bg-red'>TDK
AKURAT</span>";
}
}
return $badge;
}
//ambil sentimen asli dan sentimen hasil analisis
//fungsi join ini kalau id kedua tabel sama doang yg bisa
public function get_sentiments()
{
$this->db->select('twitlog_latih.sentimen_tweet,
sa_datauji.sentimen_datauji');
$this->db->from('twitlog_latih');
$this->db->where('kategori_tweet','DATA UJI');
$this->db->join('sa_datauji', 'sa_datauji.id_tweet =
twitlog_latih.id_tweet');
$array_all_sentiments = $this->db->get()->result_array();
return $array_all_sentiments;
}
public function matrix_akurasi(){
$array_sentiments = $this->get_sentiments();
$total_datauji = count($array_sentiments);
133
UIN Syarif Hidayatullah Jakarta
$popo = 0;
$pone = 0;
$pont = 0;
$nepo = 0;
$nene = 0;
$nent = 0;
$ntpo = 0;
$ntne = 0;
$ntnt = 0;
foreach($array_sentiments as $sentiment){
if($sentiment["sentimen_tweet"]=="POSITIF" &&
$sentiment["sentimen_datauji"]=="POSITIF"){
$popo = $popo+1;
}
else if($sentiment["sentimen_tweet"]=="POSITIF"
&& $sentiment["sentimen_datauji"]=="NEGATIF"){
$nepo = $nepo+1;
}
else if($sentiment["sentimen_tweet"]=="POSITIF"
&& $sentiment["sentimen_datauji"]=="NETRAL"){
$ntpo = $ntpo+1;
}
else if($sentiment["sentimen_tweet"]=="NEGATIF"
&& $sentiment["sentimen_datauji"]=="POSITIF"){
$pone = $pone+1;
}
else if($sentiment["sentimen_tweet"]=="NEGATIF"
&& $sentiment["sentimen_datauji"]=="NEGATIF"){
$nene = $nene+1;
}
134
UIN Syarif Hidayatullah Jakarta
else if($sentiment["sentimen_tweet"]=="NEGATIF"
&& $sentiment["sentimen_datauji"]=="NETRAL"){
$ntne = $ntne+1;
}
else if($sentiment["sentimen_tweet"]=="NETRAL"
&& $sentiment["sentimen_datauji"]=="POSITIF"){
$pont = $pont+1;
}
else if($sentiment["sentimen_tweet"]=="NETRAL"
&& $sentiment["sentimen_datauji"]=="NEGATIF"){
$nent = $nent+1;
}
else if($sentiment["sentimen_tweet"]=="NETRAL"
&& $sentiment["sentimen_datauji"]=="NETRAL"){
$ntnt = $ntnt+1;
}
}
$akurasi = ($popo + $nene + $ntnt)/($popo + $nepo + $ntpo +
$pone + $nene + $ntne + $pont + $nent + $ntnt); //AKURASI :(true
positives+true negatives+true netral)/total data uji
$error_rate = 1- $akurasi; //ERROR-RATE : 1 - akurasi
(tingkat kesalahan sistem)
$ppv = $popo/($popo+$pone+$pont); //POSITIVE
PREDICTION VALUE /PRESISI
$nepv = $nene/($nepo+$nene+$nent); //NEGATIVE
PREDICTION VALUE
$ntpv = $ntnt/($ntpo+$ntne+$ntnt); //NETRAL
PREDICTION VALUE
$sensitivity = $popo/($popo+$nepo+$ntpo); //SENSITIVITY
/RECALL : true positives/(true positives+false negatives)
135
UIN Syarif Hidayatullah Jakarta
//$specificity =
$true_negatives/($true_negatives+$false_positives); //SPECIFICITY : true
negatives/(true negatives+false positives)
$ppvxsensitivity = $ppv*$sensitivity; //presisi x recall untuk
f-measure
$ppvtsensitivity = $ppv+$sensitivity; //presisi + recall untuk
f-measure
$dua= 2; // untuk nilai dua
$fmeasure = $dua*($ppvxsensitivity/$ppvtsensitivity); //f-
measure = 2.((presisixrecall)/(presisi+recall))
$semua = $popo + $nepo + $ntpo + $pone + $nene + $ntne +
$pont + $nent + $ntnt;
return array('data1'=>$popo, 'data2'=>$nepo, 'data3'=>$ntpo,
'data4'=>$pone, 'data5'=>$nene, 'data6'=>$ntne, 'data7'=>$pont,
'data8'=>$nent, 'data9'=>$ntnt, 'data10'=>$error_rate, 'data11'=>$ppv,
'data12'=>$nepv, 'data13'=>$sensitivity, 'data14'=>$akurasi,
'data15'=>$ntpv, 'data16'=>$fmeasure, 'data17'=>$semua);
}
//---------------PENDEKATAN LEXICON---------------\\
function tahap_satu($data)
{
$i_pos = 0;
$i_neg = 0;
$arraySemuaKataSentimen = array();
$pecahKata = array();
$pecahKata = explode(" ",$data);
$banyakKata = count($pecahKata);
foreach($pecahKata as $kata)
{
136
UIN Syarif Hidayatullah Jakarta
$cektermPos = $this->cekKataPos($kata);
if($cektermPos==true)
{
$i_pos++;
array_push($arraySemuaKataSentimen,
$kata);
}
else
{
$cektermNeg = $this->cekKataNeg($kata);
if($cektermNeg==true)
{
$i_neg++;
array_push($arraySemuaKataSentimen, $kata);
}
}
}
$semuasentimen = implode(" ",$arraySemuaKataSentimen);
return array('semuasentimen'=>$semuasentimen,
'banyakkata'=>$banyakKata, 'i_pos'=>$i_pos, 'i_neg'=>$i_neg);
}
function lexicon($data)
{
$tahapsatu = $this->tahap_satu($data);
if($tahapsatu['i_pos'] == 0 && $tahapsatu['i_neg'] == 0)
{
return "NETRAL";
}
else
137
UIN Syarif Hidayatullah Jakarta
{
//lakukan pengecekan setiap kata sentimen yang
ditemukan apakah terdapat negasi pada kata sentimen tersebut
//pengecekan dilakukan dengan memeriksa 4 frasa
sebelum kata sentimen dan 1 frasa setelah kata sentimen
$periksa_negasi = $this->tahap_dua($data,
$tahapsatu['banyakkata'], $tahapsatu['semuasentimen']);
$senpos = $tahapsatu['i_pos'];
$senneg = $tahapsatu['i_neg'];
$fitur = $senpos + $senneg;
$negasi_pos = $periksa_negasi['i_pos_neg'];
$negasi_neg = $periksa_negasi['i_neg_neg'];
$senpos_ak = $senpos;
$senneg_ak = $senneg;
if($negasi_pos > 0)
{
$senpos_ak = $senpos - $negasi_pos;
$senneg_ak = $senneg + $negasi_pos;
}
if($negasi_neg > 0)
{
$senneg_ak = $senneg_ak - $negasi_neg;
$senpos_ak = $senpos_ak + $negasi_neg;
}
//hitung score
$score = ($senpos_ak/$fitur) + (- $senneg_ak/$fitur);
138
UIN Syarif Hidayatullah Jakarta
//return $score;
//return "ditemukan fitur sebanyak $fitur dengan sen
pos sebanyak $senpos dan sen negatif sebanyak $senneg negasi positif
sebanyak $negasi_pos dan negasi negatif sebanyak $negasi_neg dengan
demikian nilai akhir sen pos sebanyak $senpos_ak dan sen neg sebanyak
$senneg_ak";
if($score >= 1)
{
return "POSITIF";
}
else if($score == 0)
{
return "NETRAL";
}
else
{
return "NEGATIF";
}
}
}
function tahap_dua($data0, $data1, $data2)
{
$i_pos_neg = 0;
$i_neg_neg =0;
$fix = false;
$hasil = array();
$pecahKata = array();
$pecahKata = explode(" ",$data0);
$arraySentKata = array();
139
UIN Syarif Hidayatullah Jakarta
$arraySentKata = explode(" ",$data2);
foreach($arraySentKata as $ask)
{
for($j=0; $j<=$data1-1; $j++)
{
if($pecahKata[$j] == $ask)
{
//memeriksa 4 frasa sebelum
kata sentimen apakah terdapat negasi
if($j>=4)
{
$m = 0;
for($k=$j-1; $m<4; $k--
)
{
$fix = false;
$cekNegasi =
$this->cekKataNegasi($pecahKata[$k]);
if($cekNegasi==true)
{
$fix =
true;
//memeriksa jenis sentimen
$cekjnssenpos = $this->cekKataPos($pecahKata[$j]);
$cekjnssenneg = $this->cekKataNeg($pecahKata[$j]);
140
UIN Syarif Hidayatullah Jakarta
if($cekjnssenpos==true)
{
$i_pos_neg++;
}
if($cekjnssenneg==true)
{
$i_neg_neg++;
}
//array_push($hasil, "terdapat negasi yang mempengaruhi kata posisi
sebanyak $i_pos_neg dan kata negatif sebanyak $i_neg_neg");
break;
}
$m++;
}
if($fix != true)
{
//jika kata negasi
tidak ditemukan pada 4 frasa sebelum kata sentimen, maka memeriksa 1 frasa
setelah kata sentimen
$l = $j+1;
$cekNegasi =
$this->cekKataNegasi($pecahKata[$l]);
if($cekNegasi==true)
141
UIN Syarif Hidayatullah Jakarta
{
//memeriksa jenis sentimen
$cekjnssenpos = $this->cekKataPos($pecahKata[$j]);
$cekjnssenneg = $this->cekKataNeg($pecahKata[$j]);
if($cekjnssenpos==true)
{
$i_pos_neg++;
}
if($cekjnssenneg==true)
{
$i_neg_neg++;
}
//array_push($hasil, "terdapat negasi yang mempengaruhi kata posisi
sebanyak $i_pos_neg dan kata negatif sebanyak $i_neg_neg");
}
}
}
//memeriksa kurang dari 4 frasa
sebelum kata sentimen
else
{
142
UIN Syarif Hidayatullah Jakarta
$m = 0;
for($k=$j-1; $m<$j; $k-
-)
{
$fix = false;
$cekNegasi =
$this->cekKataNegasi($pecahKata[$k]);
if($cekNegasi==true)
{
$fix =
true;
//memeriksa jenis sentimen
$cekjnssenpos = $this->cekKataPos($pecahKata[$j]);
$cekjnssenneg = $this->cekKataNeg($pecahKata[$j]);
if($cekjnssenpos==true)
{
$i_pos_neg++;
}
if($cekjnssenneg==true)
{
$i_neg_neg++;
}
143
UIN Syarif Hidayatullah Jakarta
//array_push($hasil, "terdapat negasi yang mempengaruhi kata posisi
sebanyak $i_pos_neg dan kata negatif sebanyak $i_neg_neg");
break;
}
$m++;
}
if($fix != true)
{
//jika kata negasi
tidak ditemukan pada 4 frasa sebelum kata sentimen, maka memeriksa 1 frasa
setelah kata sentimen
$l = $j+1;
$cekNegasi =
$this->cekKataNegasi($pecahKata[$l]);
if($cekNegasi==true)
{
//memeriksa jenis sentimen
$cekjnssenpos = $this->cekKataPos($pecahKata[$j]);
$cekjnssenneg = $this->cekKataNeg($pecahKata[$j]);
if($cekjnssenpos==true)
{
$i_pos_neg++;
144
UIN Syarif Hidayatullah Jakarta
}
if($cekjnssenneg==true)
{
$i_neg_neg++;
}
//array_push($hasil, "terdapat negasi yang mempengaruhi kata posisi
sebanyak $i_pos_neg dan kata negatif sebanyak $i_neg_neg");
}
}
}
continue;
}
}
}
return array('i_pos_neg'=>$i_pos_neg,
'i_neg_neg'=>$i_neg_neg);
}
function cekKataPos($data)
{
$this->load->database();
$arraykataPositif = array();
//ambil semua kata positif didalam kamus positif dan diubah
ke array
$this->db->select('kata_positif');
$this->db->from('positif');
145
UIN Syarif Hidayatullah Jakarta
$arrayPos = $this->db->get()->result_array();
//ubah ke associative array
$arraykataPositif = array_column($arrayPos,'kata_positif');
//lakukan pengecekan apakah kata ada didalam kamus positif
if(in_array($data,$arraykataPositif))
{
return true;
}
else
{
return false;
}
}
function cekKataNeg($data)
{
$this->load->database();
$arraykataNegatif = array();
//ambil semua kata negatif didalam kamus negatif dan diubah
ke array
$this->db->select('kata_negatif');
$this->db->from('negatif');
$arrayNeg = $this->db->get()->result_array();
//ubah ke associative array
$arraykataNegatif = array_column($arrayNeg,'kata_negatif');
//lakukan pengecekan apakah kata ada didalam kamus negatif
if(in_array($data,$arraykataNegatif))
146
UIN Syarif Hidayatullah Jakarta
{
return true;
}
else
{
return false;
}
}
function cekKataNegasi($data)
{
$this->load->database();
$arraykataNegasi = array();
//ambil semua kata negatif didalam kamus negatif dan diubah
ke array
$this->db->select('kata_negasi');
$this->db->from('negasi');
$arrayNegasi = $this->db->get()->result_array();
//ubah ke associative array
$arraykataNegasi =
array_column($arrayNegasi,'kata_negasi');
//lakukan pengecekan apakah kata ada didalam kamus negatif
if(in_array($data,$arraykataNegasi))
{
return true;
}
else
{
return false;
147
UIN Syarif Hidayatullah Jakarta
}
}
//-------------------------------- Pembatas ------------------------------------
--------//
//==================================UNTUK
KNN===========================================//
}
?>