Pada tahap ini akan dilakukan konstruksi terhadap aplikasi yang akan dibuat, penulis akan mengkonstruksi proses preprocessing, klasifikasi pendekatan lexicon dan algoritma K-NN. Berikut penjelasan lebih lengkap mengenai konstruksi tersebut.
4.4.1 Konstruksi Preprocessing query
Tahapan preprocessing yang dilakukan secara keseluruhan dijelaskan dibawah ini: a. Casefolding
Tahapan untuk mengubah karakter huruf kapital menjadi huruf kecil untuk menyeragamkan dan memudahkan dalam proses selanjutnya.
Tabel 4.11 Contoh proses casefolding
Sebelum Proses Case Folding
Sesudah Proses Case Folding
@mandiricare ini ATMnya rsk ya, gagal utk ambil uang
@mandiricare ini atmnya rsk ya, gagal utk ambil uang
b. Cleansing
Proses penghilangan karakter karakter selain karakter UTF-8, seperti koma (,), titik (.), hashtag (#) dan lain lain selain itu kata yang bersifat untuk me-mention dan link url juga dihilangkan.
Tabel 4.12 Contoh proses cleansing
Sebelum Proses UTF-8 character filtering
Sesudah Proses UTF-8 character filtering
@mandiricare ini ATMnya rsk ya, gagal utk ambil uang
ini atmnya rsk ya gagal utk ambil uang
Normalisasi kata –kata singkatan maupun kata yang tidak standar bahasa indonesia menjadi kata yang sesuai dengan Kamu Besar Bahasa Indonesia
Tabel 4.13 Contoh proses normalisasi
Sebelum Proses normalisasi filtering
Sesudah Proses normalisasi filtering
ini atmnya rsk ya gagal utk ambil uang
ini atmnya rusak ya gagal untuk ambil uang
d. Stemming
Tahapan stemming mengubah kata menjadi kata dasar sesuai dengan Kamus Besar Bahasa Indonesia (KBBI) yang tersedia.
Tabel 4.14 Contoh proses stemming
Sebelum
Stemming
Sesudah
Stemming
rusak gagal ambil uang
rusak gagal ambil uang
e. Stopword removal
Tahap ini menghilangkan kata-kata yang tidak berpengaruh dalam proses klasifikasi, sehingga proses pemberian bobot kata dapat lebih efisien.
Tabel 4.15 Contoh proses stopword removal
Sebelum Proses Case Folding Sesudah Proses Case Folding ini ATMnya rusak ya gagal untuk ambil uang
rusak gagal ambil uang
f. Tokenizing
Tokenization memisahkan satu kalimat menjadi potongan kata. Tabel 4.16 Contoh proses tokenizing
Sebelum
Tokenization
Sesudah
Tokenization
rusak gagal ambil uang
rusak gagal ambil uang
4.4.2 Konstruksi Klasifikasi data latih dengan pendekatan lexicon
Hasil setelah proses prepocessing adalah potongan kata kata hasil dari tahap tokenization yang selanjutnya melakukan pemberian label terhadap token, ada 4 aturan yang berlaku dalam proses labeling ini.
1. Cari kata yang mengandung sentimen 2. Cari kalimat yang mengandung negasi 3. Cari kata dengan klausa “tapi”
4. Menghitung score
Sebagai contoh berikut adalah query dari hasil tokenisasi sebelumnya.
Query = “rusak gagal ambil uang”
1. Cari kata yang mengandung sentimen.
Query akan di indentifikasi setiap katanya dengan membandingkan dengan kamus lexicon positif atau negatif untuk menentukan orientasi kata tersebut jika tidak ditemukan kata sentimen maka query diklasifikasi sebagai kalimat netral. Dari query tersebut didapat dua kata yang mengandung sentimen.
Tabel 4.17 Perhitungan kata mengandung sentimen Sentimen Positif Negatif - rusak - gagal Total 0 2
2. Cari kata yang bersifat negasi.
Dari pencarian, didalam query tersebut tidak ditemukan adanya negasi maka hasil nya sebagai berikut.
Tabel 4.18 Perhitungan kata bersifat negasi
Sentimen
Positif Negatif
- Rusak - gagal
total 0 2
3. Cari kata yang dengan klausa “tapi”.
Hasil dari indetifikasi kata tapi, tidak ditemukan maka hasil sama seperti sebelumnya.
Tabel 4.19 Perhitungan kata dengan klausa "tapi"
Sentimen Positif Negatif - rusak - gagal Total 0 2 4. Menghitung score.
Setelah melalui tahap identifikasi sebelumnya, selanjutnya akan dihitung score (lihat BAB II, hal 8) yang diperoleh dari hasil akhir tersebut.
Gambar 4. 9 Perhitungan score klasifikasi lexicon
Berdasarkan hasil penghitungan score diperoleh nilai -1, yang menunjukkan bahwa sentimen untuk dokumen tersebut adalah negatif. Hasil akhir dari proses tersebut akan disimpan sebagai data latih, data uji, dan sentimen sementara. Dalam penelitian ini, diperoleh sebanyak 1068 data, dengan alokasi sebanyak 1018 data disimpan sebagai data latih, dan 50 data sebagai data uji.
4.4.3 Konstruksi Klasifikasi Algoritma K-NN
Klasifikasi yang akan dilakukan sangat bergantung pada keberadaan data latih. Terdapat 2 tahapan yang perlu dilakukan dalam proses klasifikasi, diantaranya:
1. Indexing dan pembobotan data latih
Setelah melalui proses preprocessing, maka hasil dokumen perlu diberi bobot atau nilai. Pembobotan dilakukan dengan menggunakan metode TF-IDF, yakni dengan menghitung peluang muncul kata. Contoh proses pembobotan dan indexing yang dilakukan pada data latih sebagai berikut :
Tabel 4.20 Contoh data latih setelah klasifikasi lexicon
Dokumen Tweet Sentimen
1 atm bank mandiri masalah negatif
2 tampil atm bagus keren positif
3 atm mandiri daerah selamat positif
5 mandiri online repot banding
dulu negatif
6 mantap mudah mandiri online
maju positif
Data latih yang diambil dari database kemudian dilakukan tokenization untuk memecah kalimat menjadi kata-kata.
Tabel 4.21 Tokenisasi data latih
Doc 1 Doc 2 Doc 3 Doc 4 Doc 5 Doc 6
atm tampil atm kata Mandiri mantap
bank atm mandiri mandiri Online mudah
mandiri bagus daerah online Repot mandiri
masalah keren selamat mudah Banding online
sulit Dulu maju
Pada tabel 4.21 terlihat hasil dari tokenisasi dari data latih yang berupa kata - kata yang sudah dipisah dari satu kalimat sebagai contoh, hasil tokenisasi pada doc 1 menjadi atm, bank, mandiri dan masalah
Tabel 4.22 Proses indexing data latih
Term TF DF
Doc 1 Doc 2 Doc 3 Doc 4 Doc 5 Doc 6
atm 1 1 1 0 0 0 3 bank 1 0 0 0 0 0 1 mandiri 1 0 1 1 1 1 5 masalah 1 0 0 0 0 0 1 tampil 0 1 0 0 0 0 1 bagus 0 1 0 0 0 0 1
keren 0 1 0 0 0 0 1 daerah 0 0 1 0 0 0 1 selamat 0 0 1 0 0 0 1 kata 0 0 0 1 0 0 1 online 0 0 0 1 1 1 3 mudah 0 0 0 1 0 1 2 sulit 0 0 0 1 0 0 1 repot 0 0 0 0 1 0 1 banding 0 0 0 0 1 0 1 dulu 0 0 0 0 1 0 1 mantap 0 0 0 0 0 1 1 maju 0 0 0 0 0 1 1 Keterangan :
Term : Kata dari data yang sudah melalui tokenization.
Tf : Term frequency, banyaknya kata yang muncul pada dokumen ke – n.
Df : Document Frequency, jumlah dokumen yang mengandung kata tersebut.
Dari tabel tersebut, setelah menghitung df, maka dilakukan dengan menghitung idf (inverse document frequency). Dalam menghitung nilai menggunakan rumus berikut:
Gambar 4. 10 Rumus perhitungan IDF
Tabel 4.23 Hasil nilai idf
2. Indexing dan pembobotan data uji.
Dari data uji yang dialokasikan di awal, diambil sejumlah 100 data untuk proses klasifikasi. Proses pengambilan data uji, sama seperti mengambil data latih. Data uji yang diambil selanjutnya melalaui proses seleksi dokumen, yaitu seleksi duplikasi dan seleksi retweet yang kemudian melewati tahap text preprocesing. Alur kerja pada proses text processing data uji digambarkan sebagai berikut:
Gambar 4.11 Text preprocessing data uji
Term TF DF IDF
Doc 1 Doc 2 Doc 3 Doc 4 Doc 5 Doc 6
atm 1 1 1 0 0 0 3 0.301 bank 1 0 0 0 0 0 1 0.778 mandiri 1 0 1 1 1 1 5 0.079 masalah 1 0 0 0 0 0 1 0.778 tampil 0 1 0 0 0 0 1 0.778 bagus 0 1 0 0 0 0 1 0.778 keren 0 1 0 0 0 0 1 0.778 daerah 0 0 1 0 0 0 1 0.778 selamat 0 0 1 0 0 0 1 0.778 kata 0 0 0 1 0 0 1 0.778 online 0 0 0 1 1 1 3 0.301 mudah 0 0 0 1 0 1 2 0.477 sulit 0 0 0 1 0 0 1 0.778 repot 0 0 0 0 1 0 1 0.778 banding 0 0 0 0 1 0 1 0.778 dulu 0 0 0 0 1 0 1 0.778 mantap 0 0 0 0 0 1 1 0.778 maju 0 0 0 0 0 1 1 0.778
Penjelasan lebih detil dapat dilihat pada contoh berikut contoh query data uji berikut:
Query : “selamat ya untuk @mandiricare, semoga tambah maju dan tambah keren!!”.
Query akan melalui text processing dengan tahapan sebagai berikut: 1. Case Folding.
Query = “selamat ya untuk @mandiricare, semoga tambah maju dan tambah keren !!”.
2. Cleansing.
Query = “selamat ya untuk semoga tambah maju dan tambah keren”. 3. Tokenization.
Tabel 4.24 Tokenizing data uji
Query Tokenization
selamat ya untuk semoga tambah maju dan tambah keren
selamat ya untuk semoga tambah maju dan tambah keren 4. Seleksi slangword.
Tabel 4.25 Seleksi slangword data uji
Query Token
selamat ya untuk semoga tambah maju dan tambah keren
selamat ya untuk semoga tambah maju
tambah Keren
5. Stopword removal
Tabel 4.26 Seleksi stopword data uji
Query Token
selamat ya untuk semoga tambah maju dan tambah keren
Selamat Semoga Tambah Maju Tambah Keren 6. Stemming.
Tabel 4.27 Proses stemming data uji
Query Token
selamat ya untuk semoga tambah maju dan tambah keren
Selamat Semoga Tambah Maju Tambah Keren
Setelah melalui tahap preprocessing, selanjutnya query data uji melalui tahap pembobotan menggunakan data latih yang sudah di index sebelumnya. Maka tahap ini melakukan perhitungan bobot dari kata-kata data uji yang berbentuk token terhadap bobot data latih dengan perhitungan bobot sebagai berikut:
Gambar 4. 12 Rumus Pembobotan Keterangan.
W : bobot.
TF : Term frequency
Idf : Inverse document frequency
Tabel 4.28 Hasil pembobotan token data uji
Term TF DF IDF W
Doc 1 Doc 2 Doc 3 Doc 4 Doc 5 Doc 6
Atm 0.301 0.301 1 0 0 0 3 0.301 bank 0.778 0 0 0 0 0 1 0.778 mandiri 0.079 0 0.079 0.079 0.079 0.079 5 0.079 masalah 0.778 0 0 0 0 0 1 0.778 tampil 0 0.778 0 0 0 0 1 0.778 bagus 0 0.778 0 0 0 0 1 0.778 keren 0 0.778 0 0 0 0 1 0.778 0.778 daerah 0 0 0.778 0 0 0 1 0.778 selamat 0 0 0.778 0 0 0 1 0.778 0.778 kata 0 0 0 0.778 0 0 1 0.778 online 0 0 0 0.301 0.301 0.301 3 0.301 mudah 0 0 0 0.477 0 0.477 2 0.477 sulit 0 0 0 0.778 0 0 1 0.778 repot 0 0 0 0 0.778 0 1 0.778 banding 0 0 0 0 0.778 0 1 0.778 dulu 0 0 0 0 0.778 0 1 0.778 mantap 0 0 0 0 0 0.778 1 0.778 maju 0 0 0 0 0 0.778 1 0.778 0.778
Dalam penentuan klasifikasi, terdapat beberapa tahap yang perlu diperhatikan, diantaranya:
1. Perhitungan cosine similarity
Menghitung kemiripan hasil bobot data uji dengan kemiripan terhadap dokumen data latih dapat dilakukan menggunakan metode cosine similarity. Berikut perhitungan cosine similarity:
Kemiripan terhadap dokumen ke-1 : R(Q, 1) = (0.778×0)+(0.778×0)+(0.778×0)
√1.307×√1.815
Kemiripan terhadap dokumen ke-4 : R(Q, 4) = (0.778×0)+(0.778×0)+(0.778×0)
R(Q, 1) = 0 1.540 R(Q, 1) = 0.000. R(Q, 4) = 0 1.668 R(Q, 4) = 0.000. Kemiripan terhadap dokumen ke-2 :
R(Q,2)= (0.778×0.778)+(0.778×0)+(0.778×0) √1.906×√1.815
R(Q, 2) = 0.605 1.859 R(Q, 2) = 0.325.
Kemiripan terhadap dokumen ke-5 : R(Q,5) = (0.778×0.778)+(0.778×0)+(0.778×0)
√1.906×√1.815 R(Q, 5) = 1.8590
R(Q, 5) = 0.000. Kemiripan terhadap dokumen ke-3 :
R(Q,3)= (0.778×0.778)+(0.778×0.778)+(0.778×0) √1.307×√1.815
R(Q, 3) = 0.605 1.540 R(Q, 3) = 0.392.
Kemiripan terhadap dokumen ke-6 : R(Q,6)= (0.778×0.778)+(0.778×0)+(0.778×0.778)
√1.534×√1.815 R(Q, 6) = 0.6051.668
R(Q, 6) = 0.362.
2. Mengurutkan nilai bobot tertinggi.
Hasil dari perhitungan query data uji terhadap data latih didapatkan hasil sebagai berikut : R(Q, 1) = 0.000. R(Q, 2) = 0.325. R(Q, 3) = 0.392. R(Q, 4) = 0.000. R(Q, 5) = 0.000. R(Q, 6) = 0.362.
Kemudian hasil tersebut diurutkan berdasarkan nilai yang tertinggi, maka didapat nilai sebagai berikut.
Tabel 4. 29 Proses pengurutan hasil pembobotan
Sebelum Diurutkan Sesudah Diurutkan
R(Q, 1) = 0.000. R(Q, 3) = 0.392. R(Q, 2) = 0.325. R(Q, 6) = 0.362. R(Q, 3) = 0.392. R(Q, 2) = 0.325. R(Q, 4) = 0.000. R(Q, 1) = 0.000.
R(Q, 5) = 0.000. R(Q, 4) = 0.000. R(Q, 6) = 0.362. R(Q, 5) = 0.000.
3. Menentukan sentimen.
Setelah diurutkan maka label data uji di berikan sesuai label sementara data latih, hanya dokumen yang memiliki nilai yang dapat diberikan label sentimen.
Tabel 4.30 Pemberian label hasil klasifikasi
Sesudah Diurutkan Label R(Q, 3) = 0.392. Positif R(Q, 6) = 0.362. Positif R(Q, 2) = 0.325. Positif R(Q, 1) = 0.000. - R(Q, 4) = 0.000. - R(Q, 5) = 0.000. -
Pada percobaan ini, digunakan nilai k = 3, maka akan diambil 3 ketetanggaan terdekat sebagai penentu sentimen.
Tabel 4. 31 Proses pembatasan nilai k
Sesudah
Diurutkan Label
R(Q, 3) = 0.392. Positif R(Q, 6) = 0.362. Positif R(Q, 2) = 0.325. Positif
Dengan mayoritas suara menyatakan positif, maka sentimen untuk query data uji tersebut adalah positif.