PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN JUDUL
ANALISIS SENTIMEN PADA LIRIK LAGU MENGGUNAKAN METODE MULTINOMIAL NAÏVE BAYES Skripsi Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Oleh Elsa Rika Octaviana 115314079
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN JUDUL
ANALYSIS SENTIMENT FOR SONG LYRICS BY USING MULTINOMIAL NAÏVE BAYES METHOD
A Final Project Presented as Partial Fulfillment of The Requirements To Obtain Sarjana Komputer Degree In Informatics Engineering Study Program
By Elsa Rika Octaviana 115314079
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSETUJUAN
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PENGESAHAN
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSEMBAHAN
Tugas akhir ini saya persembahkan kepada: Tuhan Yesus yang telah memberikan berkat, rahmat, perlindungan serta arahan yang terbaik dalam hidupku. Ayahanda dan Ibunda tercinta Saudara dan saudari yang terkasih.
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PERNYATAAN KEASLIAN KARYA
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR
Puji dan syukur penulis panjatkan atas kehadirat Tuhan Yang Maha Esa atas berkat, rahmat serta kasih-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul “Analisis Sentimen pada Lirik Lagu Menggunakan Metode Multinomial Naive Bayes”. Penulisan skripsi ini bertujuan untuk memenuhi sebagian syarat memperoleh gelar sarjana komputer program studi S1 jurusan Teknik Informatika Universitas Sanata Dharma. Penulis menyadari bahwa skripsi ini masih jauh dari sempurna oleh sebab itu penulis mengharapkan kritik dan saran yang bersifat membangun dari semua pihak demi kesempurnaan skripsi ini. Selesainya skripsi ini tidak lepas dari peran penting berbagai pihak, sehingga pada kesempatan ini penulis dengan segala kerendahan hati serta rasa hormat mengucapkan terima kasih yang sebesar – besarnya kepada semua pihak yang telah memberikan dukungan baik secara langsung maupun tidak langsung
kepada
penulis dalam penyusunan skripsi ini hingga selesai, terutama kepada yang saya hormati: 1.
Ibu Sri Hartati Wijono, S.Si., M.Kom. selaku pembimbing yang sabar memberikan pengarahan serta solusi dalam pengerjaan skripsi ini hingga selesai.
2.
Yang tersayang orang tua penulis yaitu Marlan Rikeh, S.Pd., M.Pd. dan Frederica Ujiana, S.Pd yang selalu rela berkorban, mendoakan serta memberikan motivasi baik dari segi moril maupun material kepada penulis sehingga dapat terselesaikan skripsi ini dengan baik.
3.
Yang terkasih saudara dan saudari yaitu Frederikus Rinaldo dan Cyintia Septiana Rini yang telah mendoakan.
4.
Yang terkasih Gersom Jalaq yang telah meluangkan waktu serta membantu dalam penyelesaian skripsi ini dengan baik.
5.
Seluruh keluarga besar yang yang telah memberikan dukungan serta motivasi baik dari segi moril dan material sehingga penyelesaian skripsi penulis berjalan dengan lancar.
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK
Lirik merupakan salah satu media komunikasi yang sering digunakan untuk menyampaikan perasaan dari seseorang. Salah satunya yaitu melalui lirik lagu yang dapat dijumpai oleh seluruh masyarakat melalui media online, buku dan lainnya. Lirik lagu ini digunakan sebagai data yang diperoleh melalui beberapa situs website, lirik lagu yang telah disalin akan disimpan dengan format ekstensi *.txt agar mampu diolah oleh sistem. Agar mempermudah dalam pemerolehan informasi data lirik lagu yang dicari, maka dilakukan pengklasifikasian data teks. Penelitian ini bertujuan untuk memudahkan pemilihan lagu yang baik dan tidak baik terhadap anak. Fungsi klasifikasi pada penelitian ini dibagi dalam dua klasifikasi yaitu baik dan tidak baik. Proses yang akan dilalui oleh data diantaranya membaca data, tokenizing, normalization, stop word, stemming, sorting dan grouping. Sistem ini akan menggunakan vektor ciri berupa TF (Term Frequency) yang merupakan jumlah kemunculan suatu kata dalam sebuah dokumen. Proses klasifikasi teks lirik lagu menggunakan algoritma Multinomial Naïve Bayes. Harapannya adalah berdasarkan pengelompokan yang terbentuk melalui proses klasifikasi ini, dapat diketahui lagu yang baik dan lagu yang tidak baik untuk anak. Dengan adanya pengelompokan ini dapat membantu dalam menentukkan lagu yang baik dan tidak baik untuk anak.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT
A song is one of the media that is often used to express feelings for a person. Song texts amongst other can be found by all people online, in books and in other media. The songs used in this research were obtained from various online media and were transcribed and saved with *.txt extension so that it can be processed through the system. To facilitate the collection of information on songs that were searched, the text was classified. The purpose of this research is to facilitate the selection of songs that are appropriate and inappropriate for children. The classification function in this research was divided into two groups; appropriate and inappropriate songs for children. The data processing includes reading of the data, tokenizing, normalization, stop word, stemming, calculation of data frekuensi, sorting and grouping. This system uses vector feature Term Frequency, meaning the number of times a certain word appears in certain data. The classification process of song texts used a Multinominal Naïve Bayes algorithm. The expectation is that the grouping based on this classification will specify which song is appropriate and which song is inappropriate for children. The grouping will assist in deciding which songs are appropriate and inappropriate for children.
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI
HALAMAN JUDUL .......................................................................................................... i HALAMAN JUDUL ......................................................................................................... ii HALAMAN PERSETUJUAN ........................................................................................ iii HALAMAN PENGESAHAN ...........................................................................................iv HALAMAN PERSEMBAHAN .......................................................................................iv PERNYATAAN KEASLIAN KARYA ...........................................................................vi LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI ........................................vii KATA PENGANTAR ..................................................................................................... viii ABSTRAK ......................................................................................................................... x ABSTRACT .......................................................................................................................xi DAFTAR ISI..................................................................................................................... xii DAFTAR TABEL ........................................................................................................... xiv DAFTAR GAMBAR ........................................................................................................ xv BAB I PENDAHULUAN .................................................................................................. 1 1.1
Latar Belakang .................................................................................................. 1
1.2
Rumusan Masalah ............................................................................................ 2
1.3
Batasan Masalah ............................................................................................... 3
1.4
Tujuan Penelitian .............................................................................................. 3
1.5
Metodologi Penelitian ....................................................................................... 3
BAB II LANDASAN TEORI ........................................................................................... 5 2.1
Analisis Sentimen .............................................................................................. 5
2.2
Pemerolehan Informasi .................................................................................... 5
2.3
Indexing ............................................................................................................. 7
2.4
Porter Stemmer ................................................................................................. 9
2.4.1
Tentang Porter Stemmer .......................................................................... 9
2.4.2
Porter Stemmer Bahasa Indonesia .......................................................... 9
2.5
Klasifikasi Teks ............................................................................................... 13
2.6
Naive Bayes ...................................................................................................... 14
2.7
Multinomial Naive Bayes................................................................................ 14
2.8
Penerapan Multinomial Naive Bayes Pada Klasifikasi Teks ...................... 16
2.9.1
Data Training .......................................................................................... 16
2.9.2
Data Testing ............................................................................................. 25
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III PERANCANGAN SISTEM ............................................................................ 36 3.1
Gambaran Umum Sistem ............................................................................... 36
3.2
Teknik Analisis Data....................................................................................... 37
3.2.1
Metode Pengumpulan Data .................................................................... 37
3.2.1
Pengolahan Data ..................................................................................... 38
3.2.2
Preprocessing Data ................................................................................. 39
3.2.3
Klasifikasi Data ....................................................................................... 40
3.3
Akurasi Data.................................................................................................... 41
BAB IV IMPLEMENTASI ............................................................................................ 43 4.1
Antarmuka Menu............................................................................................ 43
4.2
Antarmuka Training ...................................................................................... 43
4.3
Antarmuka Testing ......................................................................................... 44
BAB V PENGUJIAN ...................................................................................................... 48 5.1
Pengujian Data ................................................................................................ 48
5.1.1 5.2
Pengujian Akurasi................................................................................... 51
Analisis Pengujian ........................................................................................... 52
BAB VI KESIMPULAN DAN SARAN ........................................................................ 60 6.1
Kesimpulan ...................................................................................................... 60
6.2
Saran ................................................................................................................ 60
DAFTAR PUSTAKA ...................................................................................................... 62 LAMPIRAN..................................................................................................................... 63
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL
Tabel 2.1 Aturan 1 Inflection Particle. .......................................................................... 10 Tabel 2.2 Aturan 2 Inflection Possessive Pronouns. .................................................... 11 Tabel 2.3 Aturan 3 Fisrt Order of Derivational Prefixs. ............................................. 11 Tabel 2.4 Aturan 4 Second Order of Derivational Prefixs. ........................................ 12 Tabel 2.5 Aturan 5 Derivational Suffixes...................................................................... 12 Tabel 2.6 Aturan 6 Suku Kata dalam Bahasa Indonesia ............................................ 13 Tabel 2.7 Tokenizing Training....................................................................................... 17 Tabel 2.8 Normalization Training ................................................................................ 18 Tabel 2.9 Stop Word Training ...................................................................................... 19 Tabel 2.10 Stemming Training ...................................................................................... 20 Tabel 2.11 Daftar Kata beserta Frekuensi Kata Training .......................................... 21 Tabel 2.12 Hasil Sorting secara Ascending Training................................................... 22 Tabel 2.13 Hasil Grouping dengan Kata yang Sama Training ................................... 23 Tabel 2.14 Prior Probabilitas Training ......................................................................... 24 Tabel 2.15 Conditional Probabilitas Training .............................................................. 24 Tabel 2.16 Tokenizing Testing ....................................................................................... 26 Tabel 2.17 Normalization Testing.................................................................................. 27 Tabel 2.18 Stop Word Testing ....................................................................................... 28 Tabel 2.19 Stemming Testing ......................................................................................... 29 Tabel 2.20 Daftar Kata beserta Frekuensi Kata Testing............................................. 30 Tabel 2.21 Hasil Sorting secara Ascending Testing ..................................................... 31 Tabel 2.22 Hasil Grouping dengan Kata yang Sama Testing ..................................... 32 Tabel 2.23 Prior Probabilitas Testing ........................................................................... 33 Tabel 2.24 Hasil Proses Matching antara Model dengan Data Testing ..................... 33 Tabel 2.25 Hasil Matching beserta dengan Nilai Conditional Probabilitas Testing . 34 Tabel 2.26 Hasil Perkalian Nilai Conditional Probabilitas dengan Frekuensi Kata Testing .............................................................................................................................. 35 Tabel 2.27 Hitung Probabilitas Testing ........................................................................ 35 Tabel 3.1 Tabel Data Training dan Testing .................................................................. 38 Tabel 3.2 Tabel Confusion Matrix ................................................................................. 41 Tabel 5.1 Sebelum Diolah Sistem................................................................................... 48 Tabel 5.2 Setelah Diolah Sistem ..................................................................................... 49 Tabel 5.3 Tabel Confusion Matrix ................................................................................. 51 Tabel 5.4 Perbandingan Data Testing Terhadap Model ............................................ 54 Tabel 5.5 Batasan Frekuensi Kata................................................................................. 55 Tabel 5.6 Kata Unik Pada Tiap Kelas ........................................................................... 56
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR
Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar
2.1 Model Pemerolehan Informasi (Bates, 1989). .......................................... 5 2.2 Proses Porter Stemmer untuk Bahasa Indonesia (Tala, 2003). ............ 10 3.1 Diagram Block Proses Klasifikasi ........................................................... 36 4.1 Menu .......................................................................................................... 43 4.2 Input Data ................................................................................................. 43 4.3 Hasil Stemming ......................................................................................... 44 4.4 Ambil File .................................................................................................. 44 4.5 Hasil Klasifikasi ........................................................................................ 45 4.6 Penentu Kategori Lagu ............................................................................ 45 4.7 Akurasi Sistem .......................................................................................... 45 4.8 Nomor Lagu .............................................................................................. 46 4.9 Progres Sistem dan Reset ......................................................................... 46 4.10 Isi Teks Lagu ........................................................................................... 47 5.1 Jumlah Kata .............................................................................................. 52 5.2 Pengujian Data Testing ............................................................................ 53
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1. BAB I PENDAHULUAN
1.1
Latar Belakang Perkembangan teknologi yang semakin pesat membuat manusia melakukan
berbagai macam karya cipta yang baru dan inovatif. Pada dunia industri musik, terutama pada lirik lagu yang dapat mempengaruhi terhadap perkembangan anak. Pengawasan yang kurang dari orang tua membuat anak bebas melakukan banyak hal baik itu bersifat hal positif maupun negatif. Tanpa disadari musik telah mempengaruhi kehidupan sosial masyarakat khususnya untuk anak. Musik dapat dikatakan sebagai sebuah media dalam menyampaikan pesan oleh penulis. Dalam penelitian ini penggunaan lirik lagu sebagai acuan untuk mengklasifikasikan lagu dalam dua kelas yaitu lagu yang baik atau tidak baik untuk anak. Pemilihan lirik lagu sebagai acuan klasifikasi dikarenakan pada lirik lagu terdapat kata yang mengandung suatu ungkapan perasaan atau makna tertentu yang disampaikan oleh pembicara atau penulis untuk pendengar. Sehingga lirik lagu dapat dijadikan sebagai salah satu acuan untuk menggali data dalam mengetahui ketepatan akurasi dari penggunaan algoritma Naive Bayes dalam klasifikasi data teks. Sebelumnya pernah dilakukan penelitian mengenai oponion mining pada lirik lagu (Shu, 2010). Penelitian tersebut adalah mengklasifikasikan lagu dengan lirik berdasarkan kepopuleran lagu pada tahun tertentu. Pada penelitian ini menggunakan teori Natural Language Processing. Hal berbeda pada penelitian ini, penelitian ini pengelompokan data pada lirik lagu yang baik atau tidak baik untuk
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
anak dengan menggunakan analisis sentimen terhadap hasil klasifikasi lagu yang baik dan tidak baik. Analisis sentimen (Go & Bhayani, 2009) adalah proses memahami, mengekstrak dan mengolah data tekstual secara otomatis untuk mendapatkan informasi. Analisis sentimen merupakan salah satu bagian dari opinion mining. Berkenaan dengan penggalian data dengan menggunakan analisis sentimen maka digunakan metode Multinomial Naive Bayes. Klasifikasi yang akan dilakukan dengan mengklasifikasikan data berdasarkan jumlah kemunculan kata dalam teks lirik lagu. Kegiatan klasifikasi data pada lirik lagu ini dapat menggunakan metode Multinomial Naive Bayes untuk mengklasifikasikan data sehingga dapat diperoleh hasil analisis sentimen terhadap klasifikasi lagu yang baik atau tidak baik untuk anak.
1.2
Rumusan Masalah Berdasarkan pada latar belakang yang telah dipaparkan, perumusan masalah
akan dijabarkan sebagai berikut: 1.
Bagaimana mengklasifikasikan lagu untuk analisis sentimen lagu yang baik atau tidak baik untuk anak.
2.
Bagaimana ketepatan akurasi klasifikasi data lirik lagu untuk menentukan analisis sentimen lagu baik atau tidak untuk anak dengan menggunakan metode Multinomial Naive Bayes.
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.3
Batasan Masalah Dalam penulisan ini batasan – batasan permasalahan yang akan dibahas yaitu: 1. Bahasa yang digunakan dalam data berupa bahasa Indonesia. 2. Klasifikasi lagu ditujukan pada anak usia 5 – 10 tahun.
1.4
Tujuan Penelitian Tujuan penulisan ini adalah memperoleh hasil analisis sentimen terhadap klasifikasi lagu baik atau tidak baik untuk anak dengan menggunakan Multinomial Naive Bayes.
1.5
Metodologi Penelitian Langkah – langkah yang digunakan untuk melakukan penelitian ini adalah
sebagai berikut: 1.
Studi Pustaka Penggunaan studi pustaka pada penelitian ini adalah untuk mencari sumber – sumber mengenai metode Multinomial Naive Bayes untuk mengklasifikasikan data teks.
2.
Observasi Penggunaan observasi pada penelitian adalah untuk melakukan pencarian data teks lirik lagu dari berbagai macam situs website.
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.
Antarmuka Penggunaan antarmuka pada penelitian adalah mempermudah melakukan analisis sentimen terhadap klasifikasi lagu yang baik dan tidak baik untuk anak.
4.
Pengujian Penggunaan pengujian pada penelitian berikut adalah untuk mengukur ketepatan akurasi klasifikasi data teks dengan menggunakan metode Multinomial Naïve Bayes.
4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. BAB II LANDASAN TEORI
2.1
Analisis Sentimen Analisis sentimen atau opinion mining merupakan proses memahami,
mengekstrak dan mengolah data tekstual secara otomatis untuk mendapatkan informasi sentimen yang terkandung dalam suatu kalimat opini. Analisis sentimen dilakukan untuk melihat pendapat atau kecenderungan opini terhadap sebuah masalah atau objek oleh seseorang, apakah cenderung beropini negatif atau positif.
2.2
Pemerolehan Informasi Pemerolehan informasi atau biasa dikenal dengan Information Retrieval
mengacu pada pengambilan data terstruktur yang berisi bahasa teks alami. Data yang dapat diolah dalam pemerolehan informasi diantaranya teks, gambar, video, audio dan lainnya. Pemerolehan informasi fokus pada pengambilan data teks alami, karena terdapat tekanan penting dan banyaknya data tekstual dalam internet dan data pribadi.
Document
Document Representation
Query
Information Need
Matching
Gambar 2.1 Model Pemerolehan Informasi (Bates, 1989).
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.
Document Document merupakan kumpulan informasi yang dibutuhkan oleh pengguna. Pada penelitian ini data yang dimaksud adalah data teks pada lirik lagu yang akan diklasifikasikan berdasarkan kata.
2.
Document Representastion Document representation merupakan kumpulan informasi yang telah direpresentasikan atau diolah sesuai dengan kebutuhan yang diinginkan oleh pengguna. Pada penelitian ini proses yang dilakukan untuk mendapatkan document representation tersebut yaitu melalui proses indexing.
3.
Query Query merupakan proses merepresentasikan informasi yang dibutuhkan oleh pengguna sehingga menghasilkan sebuah query. Pengertian secara umum query merupakan interaksi antara pengguna dan komputer, sehingga menghasilkan suatu pemahaman terhadap informasi yang dibutuhkan oleh pengguna.
4.
Information Need Informastion need merupakan kebutuhan pengguna mengenai suatu informasi yang belum jelas atau belum dipahami.
5.
Matching Matching merupakan sebuah proses untuk membandingkan query dengan indexed document yang diperoleh melalui proses pencocokan. Tujuan dalam proses matching tersebut berguna dalam menemukan data teks yang sesuai. Hasil proses matching tersebut berupa daftar peringkat (rangking) dalam data. Peringkat pada daftar data digunakan oleh pengguna untuk menemukan
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
informasi yang dibutuhkan. Pada penelitian ini yang diharapkan adalah perbandingan mengenai lagu yang akan diklasifikasikan menggunakan model berdasarkan hasil training dengan menggunakan Multinomial Naive Bayes sehingga hasil yang didapatkan sesuai.
2.3
Indexing Langkah – langkah untuk membangun sebuah indeks dalam data teks menurut
Christopher dan Raghavan: 1.
Tokenizing Tokenizing merupakan proses pemisahan karakter yang muncul dalam suatu teks Input: Andi, mari kita berangkat sekarang Juga ! Output: Andi
mari
kita
berangkat
sekarang
juga
!
Tokenizing:
2.
Titik (.)
Kurung siku ([])
Kurung kurawal ({})
Petik (“)
Sign (@ _ )
Operator matematika (+ - * / = <>)
Titik dua (:)
Kurung ( ( ) )
Karakter special ( | & ~)
Koma (,)
Titik koma (;)
Normalization Normalization merupakan proses menyamakan ejaan dalam sebuah teks yang
memiliki berbagai macam ejaan dengan arti atau makna yang sama. Misal, t’lah,
7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tlah, atau Telah; pada tiga kata tersebut terdapat penulisan kata yang berbeda tetapi memiliki makna atau arti yang sama sehingga diganti menjadi telah. 3.
Stop Word Stop word merupakan proses menghilangkan kata pada data yang tidak
memiliki arti atau makna yang mempengaruhi proses klasifikasi sehingga mendapatkan hasil akurasi yang lebih tepat. Stop word didapat dari hasil tokenizing dan normalization. stop word: abang ada adalah adik agar ah akan aku alih anak andaikan antara apabila apalagi asalkan atas atau ayah bagai bahkan bahwa bak biar biarpun bibi cicit cucu dan daripada demi demikian dengan di dia du engkau hanya ho hoo ialah ibarat ibu ini ipar itu jika jikalau kakak kakek kalau kami kamu kanda karena ke kemudian kendati kendatipun keponakan ketika la lagi lagipula laksana maka manakala maupun melainkan menantu menjadi mereka mertua meskipun namun nenek oh oleh om ooo pada padahal paman pun sambil sampai seakan seandainya sebab sebagai sebagaimana sebelum sedangkan sedari sehingga sehubungan sejak sekali sekalipun sekiranya selagi selain selama selesai semenjak sementara seolah seperti sepupu seraya serta sesudah setelah setelah seusai sewaktu sungguh sungguhpun supaya tanpa tante tatkala tetapi tidak umpamanya untuk walau walaupun yaitu yakni yang 4.
Stemming Stemming merupakan proses menghilangkan kata imbuhan pada setiap kata
seperti awalan, akhiran, dan sisipan sehingga diperoleh kata dasar. Dalam proses stemming digunakan algortima porter untuk menentukan kata dasar.
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.
Sorting dan Grouping Proses sorting dan grouping akan dilakukan setelah stemming dilakukan.
Data yang diperoleh akan diurutkan mulai dari abjad a sampai dengan z.
2.4
Porter Stemmer
2.4.1
Tentang Porter Stemmer Porter Stemmer (Porter, 2006) merupakan sebuah algoritma yang digunakan
untuk melakukan proses menghapus akhiran infeksional dan morfologi yang umum pada kata dalam Bahasa Inggris. Terutama, penggunaan porter stemmer sebagai proses normalisasi pada kata yang biasa digunakan pada saat membangun sebuah pemerolehan informasi (Information retrieval). Algoritma porter stemmer didasarkan pada ide akhiran dalam Bahasa Inggris, secara umum terdiri dari kombinasi akhiran yang sederhana. Proses pada algoritma porter stemmer akan melalui beberapa tahapan, simulasi proses infleksional dan derivasional pada sebuah kata. Pada tahapan tersebut, sebuah akhiran dihapus melalui aturan subsitusi, aturan subsitusi menerapkan pada suatu kondisi harus terpenuhi secara keseluruhan. Dalam suatu kondisi kata dasar yang diakhiri dengan huruf mati maupun huruf hidup, maka panjang pada kata dasar yang telah dihasilkan disebut dengan measure.
2.4.2
Porter Stemmer Bahasa Indonesia Dalam Bahasa Indonesia terdapat sebuah kombinasi pada struktur yaitu
infleksional dan derivasional yang sederhana. Tahap – tahap dalam porter stemmer adalah simulasi proses pada infleksional dan derivasional dalam Bahasa Inggris cocok pada Bahasa Indonesia. 9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Penggunaan bahasa yang berbeda tersebut adalah sangat berbeda sehingga terdapat aturan tersendiri pada penggunaan algoritma porter stemmer untuk Bahasa Indonesia. Aturan untuk Bahasa Indonesia diantaranya, menghilangkan awalan, konflik, dan peneyesuaian ejaan pada kasus, dimana pada karakter awal pada sebuah kata dasar dapat berubah pada saat penambahan awalan dilakukan. Word
Remove Particle
Remove Possessive
Remove First Order Prefix
Remove Second Order Prefix
Remove Suffix
Remove Suffix
Remove Second Order Prefix
Stem
Gambar 2.2 Proses Porter Stemmer untuk Bahasa Indonesia (Tala, 2003).
Tabel 2.1 Aturan 1 Inflection Particle. Akhiran
Replacement Measure
Additional
Conditional Conditional -kah
NULL
2
NULL
pensilkah
pensil
-lah
NULL
2
NULL
janganlah
jangan
-pun
NULL
2
NULL
pensilpun
pensil
10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 2.2 Aturan 2 Inflection Possessive Pronouns. Akhiran
Replacement Measure
Additional
Conditional Conditional -ku
NULL
2
NULL
pensilku
pensil
-mu
NULL
2
NULL
bukumu
buku
-nya
NULL
2
NULL
pensilnya
pensil
Tabel 2.3 Aturan 3 Fisrt Order of Derivational Prefixs. Awalan
Replacement Measure
Additional
Conditional Conditional meng-
NULL
2
NULL
menggali
gali
meny-
NULL
2
NULL
menyapa
apa
men-
NULL
2
NULL
mencuri
curi
mem-
NULL
2
NULL
membaca
baca
me-
NULL
2
NULL
menulis
tulis
peng-
NULL
2
NULL
penggali
gali
peny-
NULL
2
NULL
penyayang
pen-
NULL
2
NULL
pencuri
curi
pem-
NULL
2
NULL
pembawa
bawa
di-
NULL
2
NULL
dicuri
curi
ter-
NULL
2
NULL
tercuri
curi
ke-
NULL
NULL
kepada
pada
sayang
11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 2.4 Aturan 4 Second Order of Derivational Prefixs. Awalan
Replacement Measure
Additional
Conditional Conditional ber-
NULL
2
NULL
berlutut
lutut
Bel
NULL
2
NULL
belajar
ajar
Be
NULL
2
NULL
bekerja
kerja
Per
NULL
2
NULL
perjelas
jelas
pel-
NULL
2
NULL
pelajar
ajar
pe-
NULL
2
NULL
penulis
tulis
Tabel 2.5 Aturan 5 Derivational Suffixes. Akhiran
Replacement Measure
Additional
Conditional Conditional -kan
-an
NULL
NULL
2
2
Awalan ϵ
tuliskan
tulis
{ke, peng}
carikan
cari
Awalan ϵ
(per)janjian
janji
{di,
meng, minuman
minum
ter} -i
NULL
2
V|K…𝑐1 𝑐1,
curangi
𝑐1 ≠ s, 𝑐2 ≠ i, (men)jalani
curang jalan
dan awalan ϵ
12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
{ber,
ke,
peng}
Tabel 2.6 Aturan 6 Suku Kata dalam Bahasa Indonesia Akhiran Replacement
Measure Conditional
0
Kh, ng, ny
Kh, ng, ny
1
Ma, af, nya, nga
Ma, af, nya, nga
2
Maaf, kami, rumpun, kompleks
Ma-af, ka-mi, rum-pun, kom-pleks
3
Mengapa, menggunung, tandai
Meng-apa, meng-gu-nung, tan-da-i
2.5
Klasifikasi Teks Banyak kebutuhan pengguna dalam berbagai macam aplikasi dalam
menggunakan pengklasifikasian teks, misalnya dalam data teks yang datanya terus bertambah. Klasifikasi teks kata masuk pada golongan supervised dikarenakan merupakan proses pembentukan golongan atau kelas dari data teks berdasarkan golongan atau kelas yang sesuai dengan kebutuhan. Klasifikasi teks merupakan suatu proses pengklasifikasian terhadap suatu data teks dengan membagi menjadi beberapa bagian kelas yang berbeda. Proses klasifikasi tersebut akan melalui beberapa tahapan reprocessing untuk mendapatkan data yang dibutuhkan oleh pengguna sehingga proses klasifikasi memiliki tingkat akurasi yang tinggi. Penggunaan klasifikasi pada teks biasanya dapat digunakan pada beberapa data.
13
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.6
Naive Bayes Naïve bayes (Tan & Kumar, 2006) merupakan salah satu metode yang
digunakan untuk pengklasifikasian sebuah data dengan berdasarkan teorema bayes dengan mengasumsikan bahwa suatu data memiliki sifat tidak saling terkait antar satu dengan yang lain atau disebut independen. Teknik penggunaan Naive Bayes sangat
sederhana
dan
cepat
dengan
penggunaan
probabilistik.
Untuk
memaksimalkan penggunaan dari metode Naive Bayes maka digunakan metode Multinomial Naive Bayes.
2.7
Multinomial Naive Bayes Multinomial Naive Bayes merupakan proses pengambilan jumlah kata yang
muncul dalam setiap dokumen, dengan mengasumsikan dokumen memiliki beberapa kejadian dalam kata dengan panjang yang tidak tergantung dari kelasnya dalam dokumen. Menurut (Manning, Raghavan, & Schutze, 2008), probabilitas sebuah dokumen d berada dikelas c, kondisi berikut dapat dinyatakan dengan rumus: 𝑃 (𝑐|𝑑) ∝ 𝑃 (𝑐) ∏1≤𝑘≤𝑛𝑑 𝑃(𝑡𝑘 |𝑐)
(1)
P(tk|c) merupakan conditional probabilitas dari kata 𝑡𝑘 yang terdapat dalam sebuah dokumen dari kelas c. P(c) merupakan prior probabilitas dari sebuah dokumen yang terdapat dalam kelas c. (t1, t2, …, tnd) merupakan token dalam dokumen d yang merupakan bagian dari vocabulary yang digunakan sebagai klasifikasi dan merupakan jumlah token dalam dokumen d.
14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Untuk memperkirakan prior probability 𝑃̂ (𝑐)dinyatakan dengan rumus: 𝑃(𝑐) =
𝑁𝑐
(2)
𝑁
𝑁𝑐 = jumlah dokumen training dalam kelas c. 𝑁 = jumlah keseluruhan dokumen training dari seluruh kelas. Untuk perkiraan conditional probability 𝑃̂ (𝑡|𝑐) dinyatakan dengan rumus: 𝑃(𝑡|𝑐) =
𝑇𝑐𝑡 ∑ 𝑡 ′ ∈𝑉 𝑇𝑐𝑡
(3)
𝑇𝑐𝑡 = jumlah kemunculan kata t dalam sebuah dokumen training pada kelas c. 𝑇𝑐𝑡 ∑ 𝑡 ′ ∈𝑉 𝑇𝑐𝑡
= jumlah total keseluruhan kata dalam dokumen training pada kelas c.
𝑡 ′ = jumlah total kata dalam dokumen training Untuk menghilangkan nilai nol pada sebuah dokumen, digunakan laplace smoothing sebagai proses penambahan nilai 1 pada setiap nilai Tct pada perhitungan conditional probabilities dan dinyatakan dengan rumus: 𝑃(𝑡𝑃𝑡𝑘 |𝑐) =
𝑇𝑐𝑡 +1 ′ ∑ 𝑡 ∈𝑉 𝑇𝑐𝑡 + 𝐵′
(4)
𝐵 ′ = total kata unik pada keseluruhan kelas dalam dokumen training Untuk memperoleh nilai probabilitas yang tinggi dari setiap kata digunakan laplace smoothing atau add-one, laplace smoothing digunakan agar nilai dari probabilitas masing – masing kata dapat memenuhi syarat yaitu tidak sama dengan 0. Jika nilai dari probabilitas kata adalah 0 maka data baik training maupun testing tidak akan pernah cukup untuk mewakili frekuensi saat terdapat kejadian langka.
15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.8
Penerapan Multinomial Naive Bayes Pada Klasifikasi Teks
2.9.1
Data Training
Data
training merupakan kumpulan dokumen yang dijadikan sebuah data
percobaan untuk menghasilkan sebuah model, data yang diuji sebagai berikut:
Kategori
Isi Dokumen
Aku adalah anak gembala Selalu riang serta gembira Karena aku senang bekerja Tak pernah malas ataupun lengah Tralala la la la la Tralala la la la la la la
Akan kuingat selalu Ade irma suryani Waktu dipeluk dipangku ibu Dengan segala kasih
Baik
Setiap hari ku bawa ternak Ke padang rumput, di kaki bukit Rumputnya hijau subur dan banyak Ternakku makan tak pernah sdikit Tralala la la la la Tralala la la la la la la
Kini ia terbaring dipangkuan tuhan Senang dan bahagia hatinya Kini ia terlena tertidur terbaring Nyenyak dipelukan tuhannya
Akankah kau melihatku Saat ku jauh Akankah kau merasakan Kehilanganku
Aku ini anak manja kusendiri di rumah saja tiap hari kubernyanyi lagunya sesuka hati
Tidak Baik
Ayah ibu kaya raya apa saja yang kuminta semuanya tersedia Aku makan tiga kali maksakannya enak sekali pakaianku tiga almari serba mewah, warna warni
Aku seorang Kapiten mempunyai pedang panjang Kalau berjalan prok-prok-prok Aku seorang Kapiten
Jiwaku yang telah mati Bukan cintaku Janjiku s'lalu abadi Hanya milikmu Aku pergi dan takkan kembali Akhir dari cinta yang abadi Akankah kau melihatku Di akhir nanti Jiwaku yang telah mati Bukan cintaku Janjiku s'lalu abadi Hanya untukmu Aku pergi dan takkan kembali Air mata untuk yang abadi Aku pergi ke alam yang suci Akhir dari abadi cintaku
Ada yang bergerak di dalam dadaku ini Seperti ku kenal pernah kurasakan Waktu aku jatuh cinta Waktu hatiku tertarik Rasanya pun begini Jatuh cinta Apakah ini sama seperti yang itu Hatiku bergerak Aku jatuh cinta Dinding hatiku berlagu Harmoni cinta menyentuh Pipiku pun merona Jatuh cinta Harmoni cintaku kini datang Nyanyikan suara hatiku Berlagu penuh cinta
Aku pergi ke alam yang abadi Akhir dari cinta yang abadi
16
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1)
Tokenizing Tabel 2.7 Tokenizing Training Kata
Tokenizing
Baik
Tidak Baik
Baik
Tidak Baik
aku
akankah
aku
akankah
adalah
kau
adalah
kau
anak
melihatku
anak
melihatku
gembala
saat
gembala
saat
selalu
ku
selalu
ku
riang
jauh
riang
jauh
serta
akankah
serta
akankah
gembira
kau
gembira
kau
karena
merasakan
karena
merasakan
aku
kehilanganku
aku
kehilanganku
senang
jiwaku
senang
jiwaku
bekerja
yang
bekerja
yang
tak
mati
tak
mati
pernah
bukan
pernah
bukan
malas
cintaku
malas
cintaku
ataupun
janjiku
ataupun
janjiku
lengah
s'lalu
lengah
s'lalu
tralala
abadi
tralala
abadi
la
hanya
la
hanya
la
milikmu
la
milikmu
la
aku
la
aku
la
pergi
la
pergi
tralala
dan
tralala
dan
17
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2)
Normalization Tabel 2.8 Normalization Training Tokenizing Baik
Normalization
Tidak Baik
Baik
Tidak Baik
akankah
aku
akankah
kau
adalah
kau
melihatku
anak
melihatku
gembala
saat
gembala
saat
selalu
ku
selalu
ku
riang
jauh
riang
jauh
serta
akankah
serta
akankah
kau
gembira
kau
merasakan
karena
merasakan
kehilanganku
aku
kehilanganku
senang
jiwaku
senang
jiwaku
bekerja
yang
bekerja
yang
tak
mati
tak
mati
pernah
bukan
pernah
bukan
malas
cintaku
malas
cintaku
ataupun
janjiku
ataupun
janjiku
lengah
s'lalu
lengah
s'lalu
tralala
abadi
tralala
abadi
la
hanya
la
hanya
la
milikmu
la
milikmu
la
aku
la
aku
aku adalah anak
gembira karena aku
18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3)
Stop Word Tabel 2.9 Stop Word Training Normalization
Stopword
Baik
Tidak Baik
Baik
Tidak Baik
aku
akankah
gembala
akankah
adalah
kau
selalu
kau
anak
melihatku
riang
melihatku
gembala
saat
gembira
saat
selalu
ku
senang
ku
riang
jauh
bekerja
jauh
serta
akankah
tak
akankah
gembira
kau
pernah
kau
karena
merasakan
malas
merasakan
aku
kehilanganku
ataupun
kehilanganku
senang
jiwaku
lengah
jiwaku
bekerja
yang
tralala
mati
tak
mati
tralala
bukan
pernah
bukan
setiap
cintaku
malas
cintaku
hari
janjiku
ataupun
janjiku
ku
s'lalu
lengah
s'lalu
bawa
abadi
tralala
abadi
ternak
hanya
la
hanya
ke
milikmu
la
milikmu
padang
pergi
la
aku
rumput
takkan
19
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4)
Stemming Tabel 2.10 Stemming Training Stopword
Stemming
Baik
Tidak Baik
Baik
Tidak Baik
gembala
akankah
gembala
akan
selalu
kau
selalu
kau
riang
melihatku
riang
saat
gembira
saat
gembira
ku
senang
ku
senang
jauh
bekerja
jauh
kerja
akan
tak
akankah
tak
kau
pernah
kau
pernah
rasa
malas
merasakan
malas
jiwa
ataupun
kehilanganku
atau
mati
lengah
jiwaku
lengah
bukan
tralala
mati
hari
cinta
tralala
bukan
ku
janji
setiap
cintaku
bawa
lalu
hari
janjiku
ternak
abadi
ku
s'lalu
ke
hanya
bawa
abadi
padang
milik
ternak
hanya
rumput
pergi
ke
milikmu
kaki
tak
padang
pergi
bukit
kembali
rumput
takkan
rumput
akhir
20
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5)
Daftar Kata beserta Frekuensi Kata Kumpulan kata pada tabel 2.10 kemudian disusun kedalam satu kolom dan
dihitung frekuensi kata kemunculan masing – masing dokumen. Tabel 2.11 Daftar Kata beserta Frekuensi Kata Training Stemming Daftar Kata Beserta Frekuensi Kata Baik
Tidak Baik
gembala
akan
Frekuensi Kata Kata
selalu
kau
riang
saat
gembira
Baik
Tidak Baik
gembala
1
0
ku
selalu
1
0
senang
jauh
riang
1
0
kerja
akan
gembira
1
0
tak
kau
senang
1
0
pernah
rasa
kerja
1
0
malas
jiwa
tak
1
0
atau
mati
pernah
1
0
lengah
bukan
malas
1
0
hari
cinta
atau
1
0
ku
janji
lengah
1
0
bawa
lalu
hari
1
0
ternak
abadi
ku
1
0
ke
hanya
bawa
1
0
padang
milik
ternak
1
0
rumput
pergi
ke
1
0
kaki
tak
padang
1
0
bukit
kembali
rumput
1
0
kaki
1
0
bukit
1
0
rumput
akhir
21
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6)
Hasil Sorting secara Ascending Tabel 2.12 Hasil Sorting secara Ascending Training Daftar Kata Beserta
Hasil Sorting Secara
Frekuensi Kata
Ascending
Frekuensi Kata Kata
Baik Tidak Baik
Frekuensi Kata Kata
Baik Tidak Baik
gembala
1
0
abadi
0
1
selalu
1
0
abadi
0
1
riang
1
0
abadi
0
1
gembira
1
0
abadi
0
1
senang
1
0
abadi
0
1
kerja
1
0
abadi
0
1
tak
1
0
abadi
0
1
pernah
1
0
ade
1
0
malas
1
0
air
0
1
atau
1
0
akan
0
1
lengah
1
0
akan
0
1
hari
1
0
akan
0
1
ku
1
0
akhir
0
1
bawa
1
0
akhir
0
1
ternak
1
0
akhir
0
1
ke
1
0
akhir
0
1
padang
1
0
alam
0
1
rumput
1
0
apa
0
1
kaki
1
0
apakah
0
1
bukit
1
0
atau
1
0
22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7)
Hasil Grouping dengan Kata yang Sama Setelah proses sorting pada tabel 2.12, dapat dilihat kata yang sama sehingga
kata yang sama dapat digabungkan seperti pada tabel berikut: Tabel 2.13 Hasil Grouping dengan Kata yang Sama Training Hasil sorting secara
Hasil Grouping berdasarkan
ascending
kata yang sama
Frekuensi kata Kata
Baik Tidak Baik
Frekuensi kata Kata
Baik
Tidak Baik
abadi
0
1
abadi
0
7
abadi
0
1
ade
1
0
abadi
0
1
air
0
1
abadi
0
1
akan
0
3
abadi
0
1
akhir
0
4
abadi
0
1
alam
0
1
abadi
0
1
apa
0
1
ade
1
0
apakah
0
1
air
0
1
atau
1
0
akan
0
1
bahagia
1
0
akan
0
1
banyak
1
0
akan
0
1
baring
2
0
akhir
0
1
bawa
1
0
akhir
0
1
begini
0
1
akhir
0
1
bukan
0
2
akhir
0
1
bukit
1
0
alam
0
1
cinta
0
12
apa
0
1
dada
0
1
apakah
0
1
dalam
0
1
atau
1
0
dari
0
3
23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8)
Prior Probabilitas Tabel 2.14 Prior Probabilitas Training Atribut kelas
9)
P(class)
Lagu Baik
3/6
Lagu Tidak Baik
3/6
Conditional Probabilitas Tabel 2.15 Conditional Probabilitas Training
Conditional probabilitas (P(t|c) Kata
Baik
Tidak Baik
abadi
0
0.039106145
ade
0.008
air
Laplace Smoothing Kata
Baik
Tidak Baik
abadi
8.474576271 44.69273743
0
ade
16.94915254 5.586592179
0
0.005586592
air
8.474576271 11.17318436
akan
0
0.016759777
akan
8.474576271 22.34636872
akhir
0
0.022346369
akhir
8.474576271 27.93296089
alam
0
0.005586592
alam
8.474576271 11.17318436
apa
0
0.005586592
apa
8.474576271 11.17318436
apakah
0
0.005586592
apakah
8.474576271 11.17318436
atau
0.008
0
atau
16.94915254 5.586592179
bahagia
0.008
0
bahagia
16.94915254 5.586592179
banyak
0.008
0
banyak
16.94915254 5.586592179
baring
0.017
0
baring
25.42372881 5.586592179
bawa
0.008
0
bawa
16.94915254 5.586592179
begini
0
0.005586592
begini
8.474576271 11.17318436
bukan
0
0.011173184
bukan
8.474576271 16.75977654
bukit
0.008
0
bukit
16.94915254 5.586592179
24
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.9.2
Data Testing Data testing merupakan data yang digunakan sebagai uji coba terhadap
model yang terbentuk dari data training dengan data sebagai berikut:
Kategori
Isi Dokumen
Hati hati dengan hatiku Karna hatiku mudah layu Jangan kamu bermain-main Karna kutak’ main-main Sungguh aku bersungguh-sungguh Cintaku ini cinta mati Mati-matian aku Pertahankan cintaku ?
Aku takkan rela...bila kau tinggalkan Aku kan berbuat...apa saja Untuk mendapatkan kamu lagi Rupa rupa alasan kamu Untuk tetap tinggalkan aku Rupanya kamu memang Sudah tak cinta aku Cintamu yang berbisa Bisa racuni aku Bisa-bisanya kamu mau tinggalkan aku
25
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1) Tokenizing Tabel 2.16 Tokenizing Testing Kata
Tokenizing
Hati
Hati
hati
hati
dengan
dengan
hatiku
hatiku
Karna
Karna
hatiku
hatiku
mudah
mudah
layu
layu
Jangan
Jangan
kamu
kamu
bermain
bermain
-
main
main
Karna
Karna
kutak’
kutak’
main
main
main
-
Sungguh
main
aku
Sungguh
bersungguh
aku
sungguh
bersungguh
Cintaku
-
ini
sungguh
cinta
Cintaku
mati
ini
Mati
26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2) Normalization Tabel 2.17 Normalization Testing Tokenizing
Normalization
Hati
hati
hati
hati
dengan
dengan
hatiku
hatiku
Karna
karna
hatiku
hatiku
mudah
mudah
layu
layu
Jangan
jangan
kamu
kamu
bermain
bermain
main
main
Karna
karna
kutak’
kutak’
main
main
main
main
Sungguh
sungguh
aku
aku
bersungguh
bersungguh
sungguh
sungguh
Cintaku
cintaku
ini
ini
cinta
cinta
mati
mati
Mati
mati
27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3) Stop Word Tabel 2.18 Stop Word Testing Normalization
Stopword
hati
hati
hati
hati
dengan
hatiku
hatiku
karna
karna
hatiku
hatiku
mudah
mudah
layu
layu
jangan
jangan
bermain
kamu
main
bermain
karna
main
kutak’
karna
main
kutak’
main
main
bersungguh
main
sungguh
sungguh
cintaku
aku
cinta
bersungguh
mati
sungguh
mati
cintaku
matian
ini
pertahankan
cinta
cintaku
mati
takkan
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4) Stemming Tabel 2.19 Stemming Testing Stopword
Stemming
hati
hati
hati
hati
hatiku
hati
karna
hati
hatiku
mudah
mudah
layu
layu
jangan
jangan
main
bermain
main
main
main
karna
main
kutak’
sungguh
main
sungguh
main
cinta
bersungguh
cinta
sungguh
mati
cintaku
mati
cinta
tahan
mati
cinta
mati
tak
matian
rela
pertahankan
bila
cintaku
kau
takkan
tinggal
rela
kan
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5) Daftar Kata Beserta Frekuensi Kata Tabel 2.20 Daftar Kata beserta Frekuensi Kata Testing Stemming Hati
Daftar Kata Beserta Frekuensi Kata Kata
Frekuensi Kata
hati
apa
1
hati
bila
1
hati
bisa
1
mudah
bisa
1
layu
bisa
1
jangan
bisa
1
main
buat
1
main
cinta
1
main
cinta
1
main
cinta
1
sungguh
cinta
1
sungguh
cinta
1
cinta
dapat
1
cinta
hati
1
mati
hati
1
mati
hati
1
tahan
hati
1
cinta
jangan
1
tak
kan
1
rela
kau
1
bila
layu
1
kau
main
1
tinggal
main
1
kan
main
1
buat
main
1
30
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6) Hasil Sorting secara Ascending Tabel 2.21 Hasil Sorting secara Ascending Testing Daftar kata beserta frekuensi katanya Kata
Hasil sorting secara ascending
Frekuensi kata
Kata
Frekuensi kata
apa
1
apa
1
bila
1
bila
1
bisa
1
bisa
4
bisa
1
buat
1
bisa
1
cinta
5
bisa
1
dapat
1
buat
1
hati
4
cinta
1
jangan
1
cinta
1
kan
1
cinta
1
kau
1
cinta
1
layu
1
cinta
1
main
4
dapat
1
mati
3
hati
1
mau
1
hati
1
memang
1
hati
1
mudah
1
hati
1
rela
1
jangan
1
rupa
3
kan
1
saja
1
kau
1
sungguh
2
layu
1
tahan
1
main
1
tak
2
main
1
tetap
1
31
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7)
Hasil Grouping dengan Kata yang Sama Tabel 2.22 Hasil Grouping dengan Kata yang Sama Testing
Hasil Sorting Secara Ascending Kata
Frekuensi Kata
Hasil Grouping Berdasarkan Kata Yang Sama Kata
Frekuensi Kata
apa
1
apa
1
bila
1
bila
1
bisa
4
bisa
4
buat
1
buat
1
cinta
5
cinta
5
dapat
1
dapat
1
hati
4
hati
4
jangan
1
jangan
1
kan
1
kan
1
kau
1
kau
1
layu
1
layu
1
main
4
main
4
mati
3
mati
3
mau
1
mau
1
memang
1
memang
1
mudah
1
mudah
1
rela
1
rela
1
rupa
3
rupa
3
saja
1
saja
1
sungguh
2
sungguh
2
tahan
1
tahan
1
tak
2
tak
2
tetap
1
tetap
1
tinggal
3
tinggal
3
32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8)
Prior Probabilitas Tabel 2.23 Prior Probabilitas Testing Prior Porbabilitas Atribut Kelas
9)
P(Class)
Baik
1/2
Tidak Baik
1/2
Hasil Proses Matching antara Model dengan Data Testing Tabel 2.24 Hasil Proses Matching antara Model dengan Data Testing Hasil Proses Matching antara Model dengan Data Testing Kata
Frekuensi Kata
apa
1
cinta
5
hati
4
kau
1
mati
3
saja
1
tak
2
…
…
33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10)
Hasil Matching beserta dengan Nilai Conditional Probabilitas Setelah proses hasil matching antara model beserta dengan nilai conditional
probabilitas-nya, frekuensi kata akan digabungkan dengan nilai conditional probabilitas-nya. Tabel 2.25 Hasil Matching beserta dengan Nilai Conditional Probabilitas Testing Hasil Matching beserta dengan Nilai Conditional Probabilitas-nya kata
Frekuensi kata
Baik
Tidak Baik
apa
1
8.474576271
11.17318436
cinta
5
8.474576271
72.62569832
hati
4
16.94915254
27.93296089
kau
1
8.474576271
22.34636872
mati
3
8.474576271
16.75977654
saja
1
8.474576271
16.75977654
tak
2
25.42372881
16.75977654
34
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11)
Hasil Perkalian Nilai Conditional Probabilitas dengan Frekuensi Kata
Tabel 2.26 Hasil Perkalian Nilai Conditional Probabilitas dengan Frekuensi Kata Testing Hasil Perkalian Nilai Conditional Probabilitas Dengan Frekuensi Kata Kata apa cinta hati kau mati saja tak Total 12)
Baik 8.474576271 43710.92162 82526.22002 8.474576271 608.6308727 8.474576271 646.3659868 8.63711E+17
Tidak Baik 11.17318436 2020466279 608790.5374 22.34636872 4707.655467 16.75977654 280.8901095 6.80633E+24
Hitung Probabilitas Untuk menghitung nilai probabilitas dari data testing diperlukan perkalian
antara nilai prior probabilitas dengan hasil perkalian antara nilai contiditional probabilitas dengan frekuensi kata sehingga didapat hasil sebagai berikut: Tabel 2.27 Hitung Probabilitas Testing Hitung probabilitas P(Baikllagu7)
4.31855E+17
P(Tidak Baikllagu7)
3.40316E+24
Dari hasil perhitungan diatas dapat disimpulkan bahwa lagu7 kata masuk pada klasifikasi lagu yang tidak baik untuk anak dengan nilai 3.40316E+24 yang telah melalui proses terhadap data training.
35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. BAB III PERANCANGAN SISTEM
3.1
Gambaran Umum Sistem Sistem yang dibangun dalam penelitian ini adalah sistem pengujian akurasi
dari penggunaan metode Multinomial Naïve Bayes pada klasifikasi data teks lirik lagu. Lirik lagu yang digunakan adalah lirik lagu dari beberapa situs website salah satunya adalah lirik.kapanlagi.com dan liriklaguanak.com. Proses klasifikasi yang akan dilakukan pada sistem ini menggunakan metode Multinomial Naïve Bayes sebagai klasifikasi. User dalam sistem ini adalah pihak yang menggunakan sistem. Data yang digunakan dalam penelitian adalah data dengan format ekstensi *.txt yang diimport dari direktori kemudian hasil teks akan dieksekusi kedalam proses indexing. Proses klasifikasi tersebut dapat dilihat pada Gambar 3.1.
Data Training
Tentukan Kategori
Tokenazing
Normalization
Stop Word
Sorting dan Grouping
Stemming
Indexing Index
Hitung Prior Porbabilitas
Hitung Conditional Probabilites
Laplace Smoothing
Model
Training
Modelling
Classification
Matching
Pangkatkan Nilai Conditional Probabilites
Hitung Probabilitas Tiap Kelas
Hasil Klasifikasi Testing
Index
Data Testing
Tokenazing
Normalization
Stop Word
Stemming
Sorting dan Grouping Indexing
Gambar 3.1 Diagram Block Proses Klasifikasi 36
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Pada Gambar 3.1 proses indexing menghasilkan kumpulan kata beserta nilai frekuensi kata dari masing - masing yang telah diseleksi. Kumpulan kata ini akan diolah menggunakan metode Multinomial Naïve Bayes sehingga menghasilkan model yang digunakan untuk proses klasifikasi. Proses klasifikasi, akan melalui proses indexing yang sama pada proses training tanpa diketahui kelas atau kategorinya yang menghasilkan kumpulan kata. Hasil kumpulan kata digunakan untuk proses matching agar mendapatkan daftar kata yang sama pada kumpulan kata dan data model. Hasil proses matching digunakan untuk melakukan klasifikasi menggunakan metode Multinomial Naïve Bayes.
3.2
Teknik Analisis Data
3.2.1
Metode Pengumpulan Data Data yang diperoleh merupakan data yang melalui beberapa tahapan.
Adapaun tahapan yang dilalui untuk melakukan pengumpulan data dalam penelitian ini sebagai berikut: 1.
Studi Pustaka Penggunaan studi pustaka pada penelitian ini adalah untuk mencari sumber – sumber mengenai metode Multinomia Naive Bayes untuk mengklasifikasikan data teks.
2.
Observasi Penggunaan observasi pada penelitian adalah untuk melakukan pencarian data teks lirik lagu dari berbagai macam situs website.
37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.
Wawancara Metode wawancara digunakan untuk pengelompokan data sebagai acuan pemberian label terhadap data dari seorang ahli. Dalam kasus penelitian ahli dipilih dari dosen psikologi untuk menentukan klasifikasi data yang baik dan tidak baik untuk anak.
3.2.1
Pengolahan Data
Dalam penelitian data yang digunakan sebanyak 500. Data yang digunakan diperoleh melalui beberapa situs website. Pembagian data dapat dilihat pada tabel 3.1 berikut: Tabel 3.1 Tabel Data Training dan Testing Jumlah Data Data Training Data Testing Lagu Baik
200
50
Lagu Tidak Baik
200
50
Total
400
100
Klasifikasi
Sebanyak 400 data sebagai data training akan melalui tahap preprocessing untuk mendapatkan sebuah model dan 100 data sebagai data testing akan melalui tahap preprocessing untuk mencocokan data testing dengan model untuk mengetahui hasil klasifikasi. Sampai pada akhirnya perhitungan akurasi dengan menggunakan confusion matrix.
38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.2.2
Preprocessing Data Preprocessing akan dilalui oleh data sebelum proses klasifikasi. Proses ini
dilakukan untuk meminimalisir permasalahan yang timbul dalam data diantaranya mengurangi jumlah kata yang tidak berarti atau tidak memiliki makna dalam data dalam dokumen. Proses yang berlangsung pada setiap data dilakukan melalui tahapan sebagai berikut : 1)
Tokenizing Tahapan ini, menghilangkan karakter yang tidak memiliki arti pada kumpulan kata.
2)
Normalization Tahapan ini, mengembalikan bentuk kata dari huruf besar menjadi huruf kecil.
3)
Stop Word Tahapan ini, menghilangkan kata yang tidak memiliki arti atau tidak mempengaruhi pemerolehan informasi.
4)
Stemming Tahapan ini, mengembalikan bentuk kata menjadi bentuk kata dasar
5)
Sorting dan Grouping Tahapan ini, mengurutkan kata dari abjad a sampai z serta menggabungkan kata yang sama.
39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.2.3
Klasifikasi Data Proses klasifikasi data yang telah melalui tahapan menghitung frekuensi kata
yang akan diklasifikasikan berdasarkan klasifikasi
yang telah ditentukan.
Klasifikasi data ini menggunakan metode Multinomial Naïve Bayes, adapun tahapan dalam proses klasifikasi data adalah sebagai berikut : 1.
Menghitung Prior Probabilitas Pada proses ini , hitung prior probabilitas pada data training dalam kelas dengan menggunakan rumus: 𝑷(𝒄) =
2.
𝑵𝒄 𝑵
Menghitung Conditional Probabilitas Pada proses ini , hitung nilai conditional probabilitas pada setiap data baik data training atau testing dengan menggunakan rumus berikut: 𝑷(𝒕|𝒄) =
𝑻𝒄𝒕 ∑ 𝒕′ ∈ 𝑽 𝑻𝒄𝒕
Untuk menghilangkan nilai nol pada sebuah dokumen, digunakan laplace smoothing sebagai proses penambahan nilai 1 pada setiap nilai Tct pada perhitungan conditional probabilities dan dinyatakan dengan rumus: 𝑷(𝒕𝑷𝒕𝒌 |𝒄) =
∑ 𝒕′
𝑻𝒄𝒕 + 𝟏 ∈ 𝑽 𝑻𝒄𝒕 + 𝑩′
40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.
Hasil proses matching antara model dan data testing Pada proses ini, untuk data testing akan dicari hasil matching melalui pengecekan ada atau tidak kata yang dicari pada model.
4.
Hasil matching beserta dengan nilai conditional probabilitas-nya Pada proses ini, setelah proses matching antara model dan data testing maka nilai dari kata yang sama pada data testing dan model, maka nilai dari kata pada model akan diambil dan dimasukkan dalam data testing.
5.
Hasil perkalian conditional probabilitas dengan frekuensi kata Pada proses ini, nilai yang diperoleh dari masing – masing kata pada data testing akan dipangkatkan sesuai dengan jumlah frekuensi kata yang dicari.
3.3
Akurasi Data Confusion matrix (Paskianti, 2011) adalah sebuah tabel yang menyatakan
jumlah data uji yang benar diklasifikasikan dan jumlah data uji yang salah diklasifikasikan. Confusion matrix ditunjukan pada tabel berikut: Tabel 3.2 Tabel Confusion Matrix Kelas Prediksi 1
0
Kelas
1
TP
FN
sebenarnya
0
FP
TN
tp (True positive) : jumlah dokumen dari kelas 1 yang benar diklasifikasikan sebagai kelas 1 tn (True negative) : jumlah dokumen dari kelas 0 yang benar diklasifikasikan sebagai kelas 0
41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
fp (False positive) : jumlah dokumen dari kelas 0 yang salah diklasifikasikan sebagai kelas 1 fn(False negative) : jumlah dokumen dari kelas 1 yang salah diklasifikasikan sebagai kelas 0
Perhitungan akurasi dinyatakan dalam persamaan berikut:
𝑨𝒌𝒖𝒓𝒂𝒔𝒊 =
𝑻𝑷 + 𝑻𝑵 𝒙 𝟏𝟎𝟎% 𝑻𝑷 + 𝑭𝑵 + 𝑭𝑷 + 𝑻𝑵
42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4. BAB IV IMPLEMENTASI
4.1
Antarmuka Menu
GAMBAR LOGO
ANALISIS SENTIMEN PADA LIRIK LAGU MENGGUNAKAN METODE MULTINOMIAL NAÏVE BAYES
Lagu Baik
200
Total TF Lagu Baik
Lagu Tidak Baik
200
Total TF Lagu Tidak Baik
GAMBAR
Baik
Tdk Baik
Jumlah Kata Unik dalam Keseluruhan Dokumen
PROSES
L.Baik Test
50
LT.Baik Test
50
0%
AKURASI BROWSE
LIRIK LAGU P(Baik|Data Testing)
0
0 %
P(Tidak Baik|Data Testing)
0
0 %
Apakah lirik dari lagu tersebut baik untuk anak ? 0
0%
RESET
0
Tujuan pembuatan aplikasi ini adalah membantu klasifikasi data teks dengan menggunakan metode Multinomial Naïve Bayes guna mempermudah analisis sentimen lagu yang baik atau tidak baik bagi anak
Nama : Elsa Rika .O. NIM : 115314079
Gambar 4.1 Menu Gambar diatas merupakan tampilan menu utama dari sistem, tampilan sistem ini mencakup keseluruhan bagian mulai dari input data training, klasifikasi lagu data testing sampai dengan akurasi sistem.
4.2
Antarmuka Training
Lagu Baik Lagu Tidak Baik Proses
Gambar 4.2 Input Data
43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar diatas merupakan sebuah tampilan untuk menginputkan data yang akan diolah. Data yang diolah merupakan data training dengan jumlah data maksimal yang telah ditentukan. Masing – masing klasifikasi merupakan data lagu yang tidak baik dengan jumlah data maksimal 200 data dan lagu yang tidak baik maksimal sebanyak 200 data. Pengguna dapat memasukkan data sesuai keinginan dengan jumlah data yang sama pada masing - masing klasifikasi tanpa melebihi batas maksimal data pada masing – masing klasifikasi .
Total TF Lagu Baik
Total TF Lagu Tidak Baik Jumlah Kata Unik dalam Keseluruhan Dokumen
Gambar 4.3 Hasil Stemming Gambar diatas merupakan panel yang digunakan untuk menampung hasil perhitungan dari proses preprocessing data training untuk mendapatkan total nilai frekuensi kata dari lagu yang baik, frekuensi kata dari lagu yang tidak baik serta jumlah kata unik dalam keseluruhan dokumen lagu baik dan lagu tidak baik.
4.3
Antarmuka Testing
BROWSE
Gambar 4.4 Ambil File
44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar diatas merupakan panel yang digunakan untuk mengambil data pada sebuah direktori untuk melakukan pengujian satu per satu terhadap data testing .
P(Baik|Data Testing)
%
P(Tidak Baik|Data Testing)
%
Gambar 4.5 Hasil Klasifikasi Gambar diatas merupakan panel yang digunakan untuk menampung hasil dari proses klasifikasi data testing untuk menentukan klasifikasi dari lagu data testing yang diuji.
Apakah lirik dari lagu tersebut baik untuk anak ?
Gambar 4.6 Penentu Kategori Lagu Gambar diatas merupakan panel yang digunakan untuk menampilkan klasifikasi dari data testing yang telah diolah.
L.Baik Test
50 AKURASI
LT.Baik Test
0%
50
Gambar 4.7 Akurasi Sistem Gambar diatas merupakan panel yang digunakan untuk melakukan proses pengujian terhadap keseluruhan data testing atau sesuai dengan jumlah data yang
45
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
diinginkan oleh pengguna. Jumlah data testing baik pada klasifikasi lagu baik atau lagu tidak baik harus sama.
Baik
Tdk Baik
0
0
Gambar 4.8 Nomor Lagu Gambar diatas merupakan panel yang digunakan untuk mengetahui nomor dari lagu yang masuk klasifikasi lagu baik atau lagu tidak baik. Pada panel yang berisi angka 0 merupakan tempat menampilkan total dari lagu yang masuk dalam klasifikasi lagu baik dan total dari lagu yang masuk dalam kategori lagu tidak baik.
0%
RESET
Gambar 4.9 Progres Sistem dan Reset
46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar diatas merupakan sebelah kanan merupakan panel yang digunakan untuk mengetahui progres dari sistem dan disebelah kiri merupakan panel yang berisi button reset untuk mengembalikan sistem pada kondisi awal.
LIRIK LAGU
Gambar 4.10 Isi Teks Lagu Gambar diatas merupakan panel yang digunakan untuk menampilkan isi dari teks dari lagu yang dipilih oleh pengguna pada saat uji coba terhadap satu per satu data testing.
47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5. BAB V PENGUJIAN
5.1
Pengujian Data Pengujian terhadap 500 data, dengan pembagian sebanyak 250 data lagu baik
untuk anak dan 250 data lagu tidak baik untuk anak. Dari masing – masing klasifikasi diambil 50 data lagu baik untuk anak dan 50 data lagu tidak baik untuk anak sebagai data testing. Setelah dilakukan percobaan didapat hasil sebagai berikut: Sebelum diolah oleh sistem sebagai berikut: Tabel 5.1 Sebelum Diolah Sistem Lagu Baik Data
1
2
3
4
5
6
7
8
9
10
Klasifikasi LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
Data
11
12
13
14
15
16
17
18
19
20
Klasifikasi LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
Data
21
22
23
24
25
26
27
28
29
30
Klasifikasi LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
Data
31
32
33
34
35
36
37
38
39
40
Klasifikasi LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
48
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Data
41
42
43
44
45
46
47
48
49
50
Klasifikasi LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
2
3
4
5
6
7
8
9
10
Lagu Tidak Baik Data
1
Klasifikasi
LTB LTB LTB LTB LTB LTB LTB LTB LTB LTB
Data
11
Klasifikasi
LTB LTB LTB LTB LTB LTB LTB LTB LTB LTB
Data
21
Klasifikasi
LTB LTB LTB LTB LTB LTB LTB LTB LTB LTB
Data
31
Klasifikasi
LTB LTB LTB LTB LTB LTB LTB LTB LTB LTB
Data
41
Klasifikasi
LTB LTB LTB LTB LTB LTB LTB LTB LTB LTB
12
22
32
42
13
23
33
43
14
15
24
25
34
35
44
45
16
26
36
46
17
27
37
47
18
28
38
48
19
29
39
49
20
30
40
50
Setelah diolah oleh sistem sebagai berikut: Tabel 5.2 Setelah Diolah Sistem Lagu Baik Data
1
2
3
4
5
6
7
8
9
10
49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Klasifikasi LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
Data
11
12
13
14
15
16
17
18
19
20
Klasifikasi LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
Data
22
23
24
25
26
27
28
29
30
Klasifikasi LTB
LB
LB
LB
LB
LB
LB
LB
LB
LB
Data
31
32
33
34
35
36
37
38
39
40
Klasifikasi LB
LB
LB
LB
LB
LB
LTB
LB
LB
LB
Data
41
42
43
44
45
46
47
48
49
50
Klasifikasi LB
LB
LB
LB
LB
LTB
LB
LB
LB
LB
2
3
4
5
6
7
8
9
21
Lagu Tidak Baik Data
1
Klasifikasi
LTB LTB LTB LTB LTB LTB LTB LTB LTB LTB
Data
11
Klasifikasi
LTB LTB LTB LTB LTB LTB LTB LTB LTB LB
Data
21
Klasifikasi
LTB LTB LTB LB
12
22
13
23
14
24
15
25
16
26
17
27
LTB LTB LB
18
28
19
29
10
20
30
LTB LTB LTB
50
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Data
31
32
33
34
35
36
37
Klasifikasi
LTB LTB LB
LTB LB
LTB LTB LTB LB
LTB
Data
41
42
43
44
45
46
49
50
Klasifikasi
LB
LTB LB
LB
LTB LTB LTB LTB LB
LB
47
38
48
39
40
LB = Lagu Baik; LTB = Lagu Tidak Baik
Dari hasil pengujian diatas yang dapat dilihat pada tabel 2.2 diatas dengan data yang telah diklasifikasikan sebelumnya, diketahui bahwa setelah melalui tahap pengujian, 50 data testing lagu baik diperoleh sebanyak 47 data masuk dalam klasifikasi lagu baik dan dari 50 data testing lagu tidak baik diperoleh sebanyak 39 data masuk dalam klasifikasi lagu tidak baik untuk anak.
5.1.1
Pengujian Akurasi Pengujian dilakukan terhadap 50 data testing lagu baik untuk anak dan 50
data testing lagu tidak baik untuk anak. Data testing yang diuji pada sistem dengan hasil sebagai berikut: Tabel 5.3 Tabel Confusion Matrix Kelas Prediksi Lagu Baik
Lagu Tidak Baik
Kelas
Lagu Baik
47
3
sebenarnya
Lagu Tidak Baik
11
39
51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
𝑨𝒌𝒖𝒓𝒂𝒔𝒊 =
=
𝟒𝟕 + 𝟑𝟗 𝒙 𝟏𝟎𝟎% 𝟒𝟕 + 𝟑 + 𝟏𝟏 + 𝟑𝟗
𝟖𝟔 𝒙 𝟏𝟎𝟎% = 𝟖𝟔% 𝟏𝟎𝟎
Dari hasil pengujian diatas dapat diketahui kemampuan sistem untuk membantu mengklasifikasikan data teks sebesar 86%.
5.2
Analisis Pengujian Dari tabel diatas telah diperoleh data sebanyak 47 data testing lagu baik yang
masuk dalam klasifikasi lagu baik untuk anak dan 39 data testing lagu tidak baik yang masuk dalam klasifikasi lagu tidak baik untuk anak. Melalui hasil pengujian diatas dapat diketahui hasil analisis sentimen terhadap klasifikasi lagu baik dan tidak baik untuk anak sebagai berikut: 1.
Jumlah kata pada masing – masing klasifikasi data training
Gambar 5.1 Jumlah Kata Gambar diatas menunjukkan jumlah kata dari masing – masing klasifikasi. Dari 200 data lagu baik diperoleh jumlah kata sebanyak 13535 kata dan data lagu tidak baik diperoleh jumlah kata sebanyak 16417 kata. Dari keseluruhan data lagu baik dan lagu tidak baik diperoleh sebanyak 3084 kata unik.
52
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.
Kegagalan dalam klasifikasi Pengujian data yang terdapat pada lagu baik tetapi setelah diolah tidak masuk
dalam klasifikasi lagu baik seperti gambar 5.2 berikut:
Gambar 5.2 Pengujian Data Testing Gambar 5.2 diatas menunjukkan bahwa data testing ini masuk dalam klasifikasi lagu tidak baik untuk anak. Data testing dapat masuk ke dalam klasifikasi lagu tidak baik dikarenakan nilai dari laplace smoothing yang terdapat pada masing – masing klasifikasi lagu baik dan tidak baik untuk anak berbeda – beda sesuai dengan frekuensi kata. Nilai dari laplace smoothing merupakan conditional probabilitas yang akan dijadikan sebagai model sehingga nilai dari conditional probabilitas pada model akan dipangkatkan sebanyak dengan frekuensi kata data testing. Lagu pada gambar 5.2 seharusnya masuk pada klasifikasi lagu yang baik, dikarenakan nilai laplace smoothing dari masing – masing kata berbeda dengan nilai laplace smoothing dari klasifikasi lagu tidak baik lebih tinggi dibandingkan dengan nilai laplace smoothing dari klasifikasi lagu baik sehingga mendapatkan hasil sebagai berikut:
53
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 5.4 Perbandingan Data Testing Terhadap Model Kata Unik Lagu Testing
Kata Frequecy Hasil Pengecekan dari Kata Unik Testing Terhadap Kata Unik Lagu pada Model Testing (TF) Lagu Baik Ada/Tidak
buat dari kita kota sahabat semua sudah teman
8 6 4 3 4 6 4 4
(Laplace Smoothing (LS))
Ada/Tidak
Ada Ada Ada Ada Ada Ada Ada Ada
Lagu Tidak Baik (Laplace Smoothing (LS))
Ada Ada Ada Ada Ada Ada Ada Ada
0.361032553 0.421204645 0.060172092 0.060172092 0.060172092 0.060172092 0.180516277 0.060172092
0.61535 0.05128 0.10256 0.10256 0.15384 0.87175 0.05128 0.10256
LS^TF
2.89E-04
2.06E-02
5.58E-03
1.82E-08
1.31E-05
1.11E-04
2.18E-04
1.08E-03
1.31E-05
5.60E-04
4.75E-08
4.39E-01
1.06E-03
6.91E-06
1.31E-05
1.11E-04
1.00E+00
1.00E+00
LS*Prior Probabilitas(PP)
1.99E-35
4.19E-30
Presentase
4.75E-04
99.9995
54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dari tabel 5.4 dapat diketahui bahwa kata unik yang ada dalam data testing mulai dari kata buat, dari, kita, kota, sahabat, semua, sudah dan teman terdapat pada klasifikasi lagu baik dan lagu tidak baik untuk anak dengan nilai laplace smoothing yang berbeda. Dari uji coba salah satu data testing menghasilkan klasifikasi yang tidak sesuai dikarenakan nilai laplace smoothing dari klasifikasi lagu tidak baik terhadap data testing memiliki nilai laplace smoothing yang lebih tinggi dibandingkan nilai laplace smoothing dari klasifikasi lagu tidak baik. Setiap kata unik yang terdapat pada data testing diantaranya kata buat, dari, kita, kota, kata sahabat, kata, semua, sudah dan teman merupakan kata – kata yang secara umum dapat digunakan tidak hanya dalam klasifikasi lagu baik melainkan dapat digunakan pada klasifikasi lagu tidak baik karena kata – kata tersebut merupakan kata yang bersifat umum sehingga tidak mudah dalam menentukan klasifikasi lagu dari data testing.
3.
Batasan terhadap frekuensi kata Melalui beberapa kali percobaan dengan memberikan batasan didapatkan
hasil sebagai berikut: Tabel 5.5 Batasan Frekuensi Kata Percobaan 1 2 3 4
Min 1 2 2 4
Max 5 5 10 8
Presentase Akurasi 58% 52% 86% 37%
55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dari tabel 5.4 diatas dapat diketahui presentase akurasi yang baik digunakan sebagai batasan terhadap data testing adalah percobaan kedua dengan batasan minimal 2 frekuensi kata yang digunakan dan maksimal 10 frekuensi kata yang digunakan.
4.
Kata yang ambigu Pada penelitian ini dapat dibandingkan antara total kata unik masing - masing
klasifikasi lagu baik dan lagu tidak baik untuk anak. Contoh beberapa kata unik pada masing - masing kelas dapat dilihat pada tabel berikut: Tabel 5.6 Kata Unik Pada Tiap Kelas Kata Unik Lagu Baik
Kata Unik Lagu Tidak Baik
'abadi'
'abadi'
'abah'
'abai'
'acara'
'abis'
'ada'
'abu'
'adik'
'acak'
'adil'
'acuh'
'adu'
'ada'
'agil'
'adik'
'agung'
'adu'
'air'
'aduhai'
'aja'
'agak'
'ajaib'
'ahli'
'ajak'
'air'
'ajal'
'aja'
'ajar'
'ajak'
'akan'
'ajar'
'akhir'
'akad'
'aksara'
'akal'
'aku'
'akan'
'alam'
'akang'
'alangkah'
'akh'
'album'
'akhir'
56
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
'alhamdulillah'
'akhirat'
'allah'
'akhlak'
'alu'
'akibat'
'alun'
'aksi'
'ama'
'aku'
'amat'
'alam'
'ambil'
'alami'
'anak'
'alangkah'
'ancol'
'alat'
'andai'
'aling'
'andong'
'alis'
'aneka'
'alur'
'angan'
'aman'
'angguk'
'amanah'
'angin'
'ambil'
'angka'
'ambisi'
'angkasa'
'amin'
'angkat'
'anak'
'angsa'
'anang'
'anjak'
'andai'
'anjing'
'aneh'
'anoa'
'angan'
'antara'
'anggap'
'antem'
'angin'
'apa'
'angkasa'
'apakah'
'angkat'
'api'
'anjak'
'arak'
'anjing'
'arek'
'antar'
'arena'
'antartika'
'ari'
'antem'
'aries'
'anti'
'arti'
'anting'
'asa'
'anugerah'
'asal'
'apa'
'asam'
'apakah'
'asap'
'ape'
'asin'
'apel'
'asing'
'api'
57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
'asli'
'arah'
'asmara'
'argumen'
'asyik'
'arti'
'atas'
'arus'
'atau'
'asa'
'atur'
'asal'
'awan'
'asmara'
'awar'
'aspirin'
'awas'
'asyik'
'ayah'
'atas'
'ayam'
'atau'
'ayo'
'atom'
'ayun'
'aura'
'bab'
'awak'
'baca'
'awal' 'awan' 'awas' 'ayah' 'ayam' 'ayat' 'ayem' 'ayo' 'ayu' 'ayun' 'baca'
Merah = kata berada pada klasifikasi lagu baik dan tidak baik. Hitam = kata hanya terdapat salah satu klasifikasi lagu baik atau lagu tidak baik.
Pada tabel diatas dapat diketahui bahwa dari beberapa kata unik masing – masing kelas ditemukan kata yang sama baik pada klasifikasi lagu baik atau klasifikasi lagu tidak baik untuk anak. Kata – kata yang terdapat pada masing – masing klasifikasi terdapat pula pada masing – masing klasifikasi dikarenakan kata
58
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
yang muncul merupakan kata umum yang sering digunakan tidak hanya dalam lagu baik tetapi dapat digunakan dalam lagu tidak baik untuk anak.
5.
Jumlah training seimbang Jika data yang digunakan tidak seimbang maka akan mempengaruhi hasil
klasifikasi. Misal data training lagu baik 5 dan lagu tidak baik 3, maka kosa kata pada lagu baik akan lebih banyak dibandingkan kosa kata lagu tidak baik sehingga pada saat data testing diuji maka hasil cenderung lebih mengarah pada lagu baik karena kosa kata dari lagu baik lebih banyak dibandingkan lagu tidak baik. Sehingga data yang digunakan harus seimbang karena penelitian data yang digunakan tidak dinormalisasikan dan hanya menggunakan jumlah frekuensi kata dalam sebuah dokumen untuk perhitungan klasifikasi lagu.
59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6. BAB VI KESIMPULAN DAN SARAN
6.1
Kesimpulan Kesimpulan dapat diambil melalui hasil pengujian dan implementasi yang
telah dipaparkan di atas sebagai berikut : 1.
Metode multinomial naive bayes dapat digunakan untuk mengklasifikasikan data berupa teks.
2.
Penggunaan metode Multinomial Naïve Bayes dengan melakukan proses pengambilan jumlah kata yang muncul dalam setiap dokumen membuat hasil dari keseluruhan data bergantung dari jumlah kata yang muncul dalam setiap dokumen.
3.
Batasan dengan term frekuensi minimal 2 dan maksimal 10 memberikan akurasi tertinggi yaitu 86%.
4.
Frekuensi kata dari sebuah dokumen memberi pengaruh yang besar dalam klasifikasi teks karena pada penelitian ini perhitungan berdasarkan dari jumlah frekuensi kata dalam sebuah dokumen.
6.2
Saran Beberapa saran kiranya dapat membantu dalam meningkatkan efektifitas dari
pengklasifikasian data teks sebagai berikut : 1. Penambahan jumlah data sekiranya dapat membantu memperbanyak kosa kata dalam data training.
60
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Penambahan kelas klasifikasi tidak hanya klasifikasi lagu baik dan lagu tidak baik untuk anak. 3. Program hendaknya dikembangkan menjadi sistem informasi.
61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA
Bates, Marcia J. (1989). The Design Of Browsing And Berrypicking Techniques For The Online Search Interface. University of California. Bing Liu. (2010). Sentiment Analysis and Subjectivity, in Handbook of Natural Language Processing. Go, A., Huang, L., & Bhayani, R. (2009). Twitter Sentiment Analysis. Final Project Report, Stanford University, Department of Computer Science. Manning, C. D., Raghavan, P., & Schutze, H. (2008). An Introduction to Information Retrieval. Cambridge University Press. Paskianti, Kristina. (2011). Klasifikasi Dokumen Tumbuhan Obat menggunakan Algoritma KNN Fuzzy. Institut Pertanian Bogor. Porter, M. (2006, January). The Porter Stemming Algorithm. Retrieved February 25, 2011, from Tartarus: http://tartarus.org/~martin/PorterStemmer/ Shu, Hanjie. (2010). Opinion Mining For Song Lyrics. Norwegian University of Science and Technology. Tala, F. Z. (2003). A Study of Stemming Effects on Information Retrieval in Bahasa Indonesia. M.Sc. Thesis, University of Amsterdam. Tan, P. N., Steinbach, M., & Kumar, V. (2006). Introduction to Data Mining. Pearson Education.
62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
Source Code main.fig
main.m function varargout = main(varargin) % MAIN MATLAB code for main.fig % MAIN, by itself, creates a new MAIN or raises the existing % singleton*. % % H = MAIN returns the handle to a new MAIN or the handle to % the existing singleton*. % % MAIN('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in MAIN.M with the given input arguments. % % MAIN('Property','Value',...) creates a new MAIN or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before main_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to main_OpeningFcn via varargin.
63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% % *See GUI Options on GUIDE's Tools menu. allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES
Choose "GUI
% Edit the above text to modify the response to help main % Last Modified by GUIDE v2.5 04-Jul-2015 20:36:13 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @main_OpeningFcn, ... 'gui_OutputFcn', @main_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT
% --- Executes just before main is made visible. function main_OpeningFcn(hObject, ~, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to main (see VARARGIN) % Choose default command line output for main handles.output = hObject; clc; % Clear command windows evalin( 'base', 'clearvars *' ); % Clear workspace % Menampilkan gambar axes(handles.axLogoUSD); imshow('Gambar\logosadar.png') axes(handles.axGambarNote); imshow('Gambar\gambarNote.jpg') % PEngaturan tabel no lagu set(handles.tblNoLBaik,'ColumnWidth',{50}); set(handles.tblNoLBaik,'Data',{}); set(handles.tblNoLTdkBaik,'ColumnWidth',{50});
64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
set(handles.tblNoLTdkBaik,'Data',{}); % Update handles structure guidata(hObject, handles); % UIWAIT makes main wait for user response (see UIRESUME) % uiwait(handles.main);
% --- Outputs from this function are returned to the command line. function varargout = main_OutputFcn(~, ~, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in proses_dtraining. function proses_dtraining_Callback(hObject, eventdata, handles) %#ok
% hObject handle to proses_dtraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% clear; clc; set(handles.lb_htraining,'String','0'); set(handles.ltb_htraining,'String','0'); set(handles.kataunik_htraining,'String','0'); set(handles.txtProgres,'String','0'); pause(0.1); nLgBaik=str2double(get(handles.lb_dtraining,'String')); nLgTdkBaik=str2double(get(handles.ltb_dtraining,'String')); dirTestLgBaik='DataLagu\LaguBaik\'; dirTestLgTdkBaik='DataLagu\LaguTidakBaik\'; nFileTestLbBaik=length(dir([dirTestLgBaik, '\*.txt'])); nFileTestLbTdkBaik=length(dir([dirTestLgTdkBaik, '\*.txt'])); if (nLgBaik == nLgTdkBaik) && (nLgBaik <= nFileTestLbBaik) && (nLgTdkBaik <= nFileTestLbTdkBaik) % PREPROCESSING % Baca file yang berisi kata penghubung/yang tidak dibutuhkan fileID = fopen('KamusKata\kataTiadaArti.txt'); % Membuka file data = textscan(fileID,'%s'); % Membaca file fclose(fileID); % Menutup file
65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
kataTiadaArti=data{1}; % Memasukkan data file ke dalam matriks cell array % Baca file yang berisi kata dasar fileID = fopen('KamusKata\katadasar.txt'); % Membuka file data = textscan(fileID,'%s'); % Membaca file fclose(fileID); % Menutup file kamusKataDasar=data{1}; % Memasukkan data file ke dalam matriks cell array % Lagu baik [matrixkataDasarHasilStemLgBaik{1:nLgBaik,1}]=deal(zeros(0)); ktDasarTraining_lgBaik=[]; gagalStemTraining_lgBaik=[]; kataTiadaArtiTraining_lgBaik=[]; progresTemp=50/nLgBaik; progres=0; for i=1:nLgBaik fileLagu=strcat('DataLagu\LaguBaik\',int2str(i),'.txt'); fileID = fopen(fileLagu); % Membuka file data = textscan(fileID,'%s'); % Membaca file fclose(fileID); % Menutup file data=data{1}; % Memasukkan data file ke dalam matriks [kataDasarHasilStem,dataKataPrefixSufixGagal_lgBaik,tiadaArti_lg Baik] = termFrequency(data,kataTiadaArti,kamusKataDasar ); matrixkataDasarHasilStemLgBaik{i} = kataDasarHasilStem; ktDasarTraining_lgBaik=[ktDasarTraining_lgBaik;kataDasarHasilSte m]; %#ok gagalStemTraining_lgBaik=[gagalStemTraining_lgBaik;dataKataPrefi xSufixGagal_lgBaik]; %#ok kataTiadaArtiTraining_lgBaik=[kataTiadaArtiTraining_lgBaik;tiada Arti_lgBaik]; %#ok % Progres progres=progres+progresTemp; set(handles.txtProgres,'String',num2str(int8(progres))); pause(0.1); end matrixGabunganLgBaik=[]; for i=1:nLgBaik matrixGabunganLgBaik=[matrixGabunganLgBaik;matrixkataDasarHasilS temLgBaik{i}]; %#ok end
[kataUnikLgBaik,~,indeksKataLgBaik]=unique(matrixGabunganLgBaik) ; % Menentukan kata unik beserta indeksnya
66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jmlReduksiKataUnikLgBaik = length(kataUnikLgBaik); % Jumlah total kata unik jmlPerKataUnikLgBaik = hist(indeksKataLgBaik,1:jmlReduksiKataUnikLgBaik); % Jumlah per kata unik jmlPerKataUnikLgBaik=jmlPerKataUnikLgBaik'; totalKataLgBaik=sum(jmlPerKataUnikLgBaik(:));
assignin('base','KataTiadaArti_Training_lgBaik',kataTiadaArtiTra ining_lgBaik); assignin('base','KataDasarSteming_Training_lgBaik',kataUnikLgBai k); assignin('base','KataGagalStemming_Training_LgBaik',gagalStemTra ining_lgBaik);
assignin('base','jmlPerKataUnikLgBaik',jmlPerKataUnikLgBaik); set(handles.lb_htraining,'String',num2str(totalKataLgBaik)); % Lagu tidak baik [matrixkataDasarHasilStemLgTdkBaik{1:nLgTdkBaik,1}]=deal(zeros(0 )); ktDasarTraining_lgTdkBaik=[]; gagalStemTraining_lgTdkBaik=[]; kataTiadaArtiTraining_lgTdkBaik=[]; progresTemp=50/nLgTdkBaik; for i=1:nLgTdkBaik fileLagu=strcat('DataLagu\LaguTidakBaik\',int2str(i),'.txt'); fileID = fopen(fileLagu); % Membuka file data = textscan(fileID,'%s'); % Membaca file fclose(fileID); % Menutup file data=data{1}; % Memasukkan data file ke dalam matriks [ kataDasarHasilStem,dataKataPrefixSufixGagal_lgTdkBaik,tiadaArti_ lgTdkBaik] = termFrequency(data,kataTiadaArti,kamusKataDasar ); matrixkataDasarHasilStemLgTdkBaik{i} = kataDasarHasilStem; ktDasarTraining_lgTdkBaik=[ktDasarTraining_lgTdkBaik;kataDasarHa silStem]; %#ok gagalStemTraining_lgTdkBaik=[gagalStemTraining_lgTdkBaik;dataKat aPrefixSufixGagal_lgTdkBaik]; %#ok kataTiadaArtiTraining_lgTdkBaik=[kataTiadaArtiTraining_lgBaik;ti adaArti_lgTdkBaik]; % Progres progres=progres+progresTemp; set(handles.txtProgres,'String',num2str(int8(progres))); pause(0.1);
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
end matrixGabunganLgTdkBaik=[]; for i=1:nLgBaik matrixGabunganLgTdkBaik=[matrixGabunganLgTdkBaik;matrixkataDasar HasilStemLgTdkBaik{i}]; %#ok end
[kataUnikLgTdkBaik,~,indeksKataLgTdkBaik]=unique(matrixGabunganL gTdkBaik); % Manentukan kata unik beserta indeksnya jmlReduksiKataUnikLgTdkBaik = length(kataUnikLgTdkBaik); % Jumlah total kata unik jmlPerKataUnikLgTdkBaik = hist(indeksKataLgTdkBaik,1:jmlReduksiKataUnikLgTdkBaik); % Jumlah per kata unik jmlPerKataUnikLgTdkBaik=jmlPerKataUnikLgTdkBaik'; totalKataLgTdkBaik=sum(jmlPerKataUnikLgTdkBaik(:));
assignin('base','KataTiadaArti_Training_lgTdkBaik',kataTiadaArti Training_lgTdkBaik); assignin('base','KataDasarSteming_Training_lgTdkBaik',kataUnikLg TdkBaik); assignin('base','KataGagalStemming_Training_LgTdkBaik',gagalStem Training_lgTdkBaik);
assignin('base','jmlPerKataUnikLgTdkBaik',jmlPerKataUnikLgTdkBai k);
set(handles.ltb_htraining,'String',num2str(totalKataLgTdkBaik));
kataunik_htraining=jmlReduksiKataUnikLgBaik+jmlReduksiKataUnikLg TdkBaik; set(handles.kataunik_htraining,'String',num2str(kataunik_htraini ng)); % Smoothing lagu baik dan lagu tidak baik % Lagu baik smoothingLgBaik=zeros(size(jmlReduksiKataUnikLgBaik,1)); for i=1:jmlReduksiKataUnikLgBaik smoothingLgBaik(i)=(jmlPerKataUnikLgBaik(i)+1)/(totalKataLgBaik+ kataunik_htraining); end smoothingLgBaik=smoothingLgBaik'; % assignin('base','smoothingLgBaik',smoothingLgBaik); % Lagu tidak baik
68
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
smoothingLgTdkBaik=zeros(size(jmlReduksiKataUnikLgTdkBaik,1)); for i=1:jmlReduksiKataUnikLgTdkBaik smoothingLgTdkBaik(i)=(jmlPerKataUnikLgTdkBaik(i)+1)/(totalKataL gTdkBaik+kataunik_htraining); end smoothingLgTdkBaik=smoothingLgTdkBaik'; % assignin('base','smoothingLgTdkBaik',smoothingLgTdkBaik); kataUnikSemuaJenisLg=[kataUnikLgBaik;kataUnikLgTdkBaik]; [kataUnikSemuaJenisLg,~,indeksKataUnikSemuaJenisLagu]=unique(kat aUnikSemuaJenisLg); % Manentukan kata unik beserta indeksnya jmlReduksiKataUnikSemuaJenisLg = length(kataUnikSemuaJenisLg); % Jumlah total kata unik jmlPerKataUnikSemuaJenisLg = hist(indeksKataUnikSemuaJenisLagu,1:jmlReduksiKataUnikSemuaJenis Lg); % Jumlah per kata unik jmlPerKataUnikSemuaJenisLg=jmlPerKataUnikSemuaJenisLg'; totalKataSemuaJenisLg=sum(jmlPerKataUnikSemuaJenisLg(:)); %#ok matrixSmoothing=zeros(jmlReduksiKataUnikSemuaJenisLg,2); % Lagu baik [yaTidak,idx]=ismember(kataUnikSemuaJenisLg,kataUnikLgBaik); n=1; for i=1:length(yaTidak) if yaTidak(i)==1 matrixSmoothing(i,1)=smoothingLgBaik(idx(i)); n=n+1; else matrixSmoothing(i,1)=(0+1)/(totalKataLgBaik+kataunik_htraining); end end % Lagu tidak baik [yaTidak,idx]=ismember(kataUnikSemuaJenisLg,kataUnikLgTdkBaik); n=1; for i=1:length(yaTidak) if yaTidak(i)==1 matrixSmoothing(i,2)=smoothingLgTdkBaik(idx(i)); n=n+1; else matrixSmoothing(i,2)=(0+1)/(totalKataLgTdkBaik+kataunik_htrainin g); end end matrixSmoothing=matrixSmoothing*1000; assignin('base','matrixSmoothing',matrixSmoothing); % Persiapan data yang akan disimpan dalam dataTraining.mat lb_dtraining=str2double(get(handles.lb_dtraining,'String')); %#ok
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ltb_dtraining=str2double(get(handles.ltb_dtraining,'String')); %#ok lb_htraining=str2double(get(handles.lb_htraining,'String')); %#ok ltb_htraining=str2double(get(handles.ltb_htraining,'String')); %#ok kataunik_htraining=str2double(get(handles.kataunik_htraining,'St ring')); %#ok
% Simpan data dalam file dataTraining.mat save('dataTraining.mat',... 'lb_dtraining',... 'ltb_dtraining',... 'lb_htraining',... 'ltb_htraining',... 'kataunik_htraining',... 'kataTiadaArti',... 'kamusKataDasar',... 'kataUnikSemuaJenisLg',... 'indeksKataUnikSemuaJenisLagu',... 'jmlReduksiKataUnikSemuaJenisLg',... 'jmlPerKataUnikSemuaJenisLg',... 'totalKataSemuaJenisLg',... 'matrixSmoothing'); uiwait(msgbox('Proses stemming telah selesai','Peringatan','modal')); else uiwait(msgbox({'Jumlah lagu training lagu baik dan lagu tidak baik harus sama',... ['dan tidak boleh lebih dari ', num2str(nFileTestLbBaik),' !']},'Peringatan','modal')); end guidata(hObject, handles); % --- Executes on button press in browse_file. function browse_file_Callback(hObject, eventdata, handles) %#ok % hObject handle to browse_file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clc; set(handles.txtProgres,'String','0'); pause(0.1); [filename, pathname] = uigetfile({'*.txt'},'Pilih file','DataLagu\'); % untuk membuka file yang akan dicari if filename ~= 0 fullpathname = strcat (pathname, filename); % menampilkan keseluruhan pathname text = fileread(fullpathname); % untuk menampilkan isi teks lagu={text}; % Menampilkan isi fullpathname/ isi dari file
70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
handles.isiLagu=lagu; menampilkanData(hObject,handles); % Menampilkan isi lagu ke panel set(handles.data_file_browse, 'String', fullpathname) % Tampil alamat file fileID = fopen(fullpathname); % Membuka file yang telah dipilih data = textscan(fileID,'%s'); % Membaca file fclose(fileID); % Menutup file data=data{1}; % Memasukkan data file ke dalam matriks load 'dataTraining.mat'; % Testing data set(handles.txtProgres,'String','1'); pause(0.1); [probabilitasBaik,probabilitasTidakBaik,persenBaik,persenTidakBa ik]=testingData(data,ltb_dtraining,lb_dtraining,kataUnikSemuaJen isLg,matrixSmoothing,kataTiadaArti,kamusKataDasar); set(handles.lb_htesting,'String',num2str(probabilitasBaik)); set(handles.presentase_lb_htesting,'String',num2str(persenBaik)) ;
set(handles.ltb_htesting,'String',num2str(probabilitasTidakBaik) ); set(handles.presentase_ltb_htesting,'String',num2str(persenTidak Baik)); % Tampilan tulisan if persenBaik > persenTidakBaik set(handles.textHasilTest,'String','Lagu baik untuk anak','ForegroundColor',[0 0.5 0]); elseif persenBaik < persenTidakBaik set(handles.textHasilTest,'String','Lagu tidak baik untuk anak','ForegroundColor','r'); else set(handles.textHasilTest,'String','Tidak diketahui','ForegroundColor','m'); end set(handles.txtProgres,'String','100'); pause(0.1); end % --- Executes on button press in btnAkurasi. function btnAkurasi_Callback(hObject, eventdata, handles) %#ok % hObject handle to btnAkurasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
clc; set(handles.txtAkurasi,'String','0','ForegroundColor','k'); set(handles.tblNoLBaik,'Data',{}); set(handles.edJmlBenarBaik,'String','0'); set(handles.tblNoLTdkBaik,'Data',{}); set(handles.edJmlBenarTdkBaik,'String','0'); set(handles.txtProgres,'String','0'); pause(0.1); nLgBaik=str2double(get(handles.edJmlLBaikTest,'String')); nLgTdkBaik=str2double(get(handles.edJmlLTBaikTest,'String')); dirTestLgBaik='DataLagu\DataTesting\LaguBaikTest\'; dirTestLgTdkBaik='DataLagu\DataTesting\LaguTdkBaikTest\'; nFileTestLbBaik=length(dir([dirTestLgBaik, '\*.txt'])); nFileTestLbTdkBaik=length(dir([dirTestLgTdkBaik, '\*.txt'])); if (nLgBaik == nLgTdkBaik) && (nLgBaik <= nFileTestLbBaik) && (nLgTdkBaik <= nFileTestLbTdkBaik) load 'dataTraining.mat'; % Testing lagu baik nBenarBaik=0; idxLgBaik=0; n=1; progresTemp=50/nLgBaik; progres=0; for i=1:nLgBaik % fileLagu=strcat('DataLagu\DataTesting\LaguBaikTest\',int2str(i), '.txt'); fileLagu=strcat(dirTestLgBaik,int2str(i),'.txt'); fileID = fopen(fileLagu); % Membuka file data = textscan(fileID,'%s'); % Membaca file fclose(fileID); % Menutup file data=data{1}; % Memasukkan data file ke dalam matriks [~,~,persenBaik,persenTidakBaik]=testingData(data,ltb_dtraining, lb_dtraining,kataUnikSemuaJenisLg,matrixSmoothing,kataTiadaArti, kamusKataDasar); if persenBaik > persenTidakBaik nBenarBaik=nBenarBaik+1; idxLgBaik(n,1)=i; %#ok n=n+1; elseif persenBaik < persenTidakBaik else end % Progres progres=progres+progresTemp; set(handles.txtProgres,'String',num2str(int8(progres))); pause(0.1); end
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% Testing lagu tidak baik nBenarTdkBaik=0; idxLgTdkBaik=0; n=1; progresTemp=50/nLgTdkBaik; for i=1:nLgTdkBaik % fileLagu=strcat('DataLagu\DataTesting\LaguTdkBaikTest\',int2str( i),'.txt'); fileLagu=strcat(dirTestLgTdkBaik,int2str(i),'.txt'); fileID = fopen(fileLagu); % Membuka file data = textscan(fileID,'%s'); % Membaca file fclose(fileID); % Menutup file data=data{1}; % Memasukkan data file ke dalam matriks [~,~,persenBaik,persenTidakBaik]=testingData(data,ltb_dtraining, lb_dtraining,kataUnikSemuaJenisLg,matrixSmoothing,kataTiadaArti, kamusKataDasar); if persenBaik > persenTidakBaik % nBenarBaik=nBenarBaik+1; elseif persenBaik < persenTidakBaik nBenarTdkBaik=nBenarTdkBaik+1; idxLgTdkBaik(n,1)=i; %#ok n=n+1; else end % Progres progres=progres+progresTemp; set(handles.txtProgres,'String',num2str(int8(progres))); pause(0.1); end % Perhitungan akurasi assignin('base','idxLgBaik',idxLgBaik); assignin('base','idxLgTdkBaik',idxLgTdkBaik); % jmlBenarLgBaik=nBenarBaik/nLgBaik % jmlBenarLgTdkBaik=nBenarTdkBaik/nLgTdkBaik % akurasiSistemProb=((jmlBenarLgBaik+jmlBenarLgTdkBaik)/2)*100
akurasiSistem=(nBenarBaik+nBenarTdkBaik)/(nLgBaik+nLgTdkBaik)*10 0; % akurasiSistem=((nBenarBaik+(nLgTdkBaiknBenarTdkBaik))/(nLgBaik+nLgTdkBaik))*100; if akurasiSistem > 50 set(handles.txtAkurasi,'String',num2str(akurasiSistem),'Foregrou ndColor',[0 0.5 0]); else set(handles.txtAkurasi,'String',num2str(akurasiSistem),'Foregrou ndColor','r'); end
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% Memasukkan indeks lagu yang benar pada tabel No Lagu dan jumlahnya set(handles.tblNoLBaik,'Data',idxLgBaik); set(handles.edJmlBenarBaik,'String',num2str(nBenarBaik)); set(handles.tblNoLTdkBaik,'Data',idxLgTdkBaik); set(handles.edJmlBenarTdkBaik,'String',num2str(nBenarTdkBaik)); uiwait(msgbox('Proses Akurasi telah selesai','Peringatan','modal')); else uiwait(msgbox({'Jumlah lagu testing lagu baik dan lagu tidak baik harus sama',... ['dan tidak boleh lebih dari ', num2str(nFileTestLbBaik),' !']},'Peringatan','modal')); end function [probabilitasBaik,probabilitasTidakBaik,persenBaik,persenTidakBa ik]=testingData(data,ltb_dtraining,lb_dtraining,kataUnikSemuaJen isLg,matrixSmoothing,kataTiadaArti,kamusKataDasar) probabilitasBaik=1; probabilitasTidakBaik=1; % Stemming [kataDasarHasilStem,dataKataPrefixSufixGagal_Testing,tiadaArti_T esting] = termFrequency(data,kataTiadaArti,kamusKataDasar ); [kataUnikLgTesting,~,indeksKataLgTesting]=unique(kataDasarHasilS tem); % Manentukan kata unik beserta indeksnya jmlReduksiKataUnikLgTesting = length(kataUnikLgTesting); % Jumlah total kata unik jmlPerKataUnikLgTesting = hist(indeksKataLgTesting,1:jmlReduksiKataUnikLgTesting); % Jumlah per kata unik jmlPerKataUnikLgTesting=jmlPerKataUnikLgTesting'; % Pembatasan term frekuensi [m,~]=size(jmlPerKataUnikLgTesting); dataTemp2=[]; dataTemp3=[]; dataTempBuang1=[]; dataTempBuang2=[]; x=1; y=1; for i=1:m if jmlPerKataUnikLgTesting(i,1)>2 && jmlPerKataUnikLgTesting(i,1)<10 dataTemp2(x,1)=jmlPerKataUnikLgTesting(i,1); %#ok dataTemp3{x,1}=kataUnikLgTesting{i,1}; %#ok x=x+1; else dataTempBuang1(y,1)=jmlPerKataUnikLgTesting(i,1); %#ok dataTempBuang2{y,1}=kataUnikLgTesting{i,1}; %#ok y=y+1; end end
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jmlPerKataUnikLgTesting= dataTemp2; kataUnikLgTesting= dataTemp3; if ~isempty(kataUnikLgTesting) assignin('base','jmlPerKataUnikLgTesting',jmlPerKataUnikLgTestin g); assignin('base','kataUnikLgTesting',kataUnikLgTesting); assignin('base','jmlPerKataUnikLgTestingDibuang',dataTempBuang1) ; assignin('base','kataUnikLgTestingDibuang',dataTempBuang2); % Prior probabilitas jmlDocLgBaik=lb_dtraining; jmlDocLgTdkBaik=ltb_dtraining; priorProbabilitasLgBaik=jmlDocLgBaik/(jmlDocLgBaik+jmlDocLgTdkBa ik); priorProbabilitasLgTdkBaik=jmlDocLgTdkBaik/(jmlDocLgTdkBaik+jmlD ocLgBaik); % Hasil matching nilai conditional probabilitas dengan tf nilaiKondisionalProbabilitas=zeros(jmlReduksiKataUnikLgTesting,2 ); assignin('base','kataUnikLgTesting',kataUnikLgTesting); yaTidak=ismember(kataUnikLgTesting,kataUnikSemuaJenisLg);
assignin('base','kataUnikSemuaJenisLg',kataUnikSemuaJenisLg); % Normalisasi matrixSmoothing
assignin('base','KataDasarSteming_Testing',kataDasarHasilStem); assignin('base','KataGagalStemming_Testing',dataKataPrefixSufixG agal_Testing); assignin('base','KataTiadaArti_Testing',tiadaArti_Testing); matrixSmoothingUtkTesting=[]; n=1; for i=1:length(yaTidak) if yaTidak(i)==1 nilaiKondisionalProbabilitas(n,1)=(matrixSmoothing(i,1)^jmlPerKa taUnikLgTesting(n)); nilaiKondisionalProbabilitas(n,2)=(matrixSmoothing(i,2)^jmlPerKa taUnikLgTesting(n)); matrixSmoothingUtkTesting(n,1)=matrixSmoothing(i,1); %#ok
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
matrixSmoothingUtkTesting(n,2)=matrixSmoothing(i,2); %#ok n=n+1; else nilaiKondisionalProbabilitas(n,1)=0; nilaiKondisionalProbabilitas(n,2)=0; n=n+1; end end
assignin('base','matrixSmoothingUtkTesting',matrixSmoothingUtkTe sting); % Perkalian nilai cp [m,~]=size(nilaiKondisionalProbabilitas); for i=1:m if nilaiKondisionalProbabilitas(i,1)> 0 probabilitasBaik=probabilitasBaik*nilaiKondisionalProbabilitas(i ,1); probabilitasTidakBaik=probabilitasTidakBaik*nilaiKondisionalProb abilitas(i,2); end end % Hasil probabilitas probabilitasBaik=probabilitasBaik*priorProbabilitasLgBaik; probabilitasTidakBaik=probabilitasTidakBaik*priorProbabilitasLgT dkBaik;
persenBaik=(probabilitasBaik/(probabilitasBaik+probabilitasTidak Baik))*(100); persenTidakBaik=(probabilitasTidakBaik/(probabilitasTidakBaik+pr obabilitasBaik))*(100); else persenBaik=0; persenTidakBaik=0; end
% Function untuk menampilkan isi lagu di panel function menampilkanData(hObject,handles) uicontrol(handles.pIsiLagu, 'Style','edit', 'FontSize',10, ... 'Min',0, 'Max',2, 'HorizontalAlignment','center', ... 'BackgroundColor','white',... 'Units','normalized', 'Position',[0 0 1 1], ... 'String',handles.isiLagu'); guidata(hObject,handles);
% --- Executes on button press in btnReset.
76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
function btnReset_Callback(hObject, eventdata, handles) %#ok % hObject handle to btnReset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) choice = questdlg('Apakah Anda yakin untuk melakukan proses mereset?', ... 'Reset', ... 'Ya','Tidak','Tidak'); % Handle response switch choice case 'Ya' clc; evalin( 'base', 'clearvars *' ); set(handles.lb_dtraining,'String','200'); set(handles.ltb_dtraining,'String','200'); set(handles.lb_htraining,'String','0'); set(handles.ltb_htraining,'String','0'); set(handles.kataunik_htraining,'String','0'); set(handles.data_file_browse,'String',''); set(handles.edJmlLBaikTest,'String','50'); set(handles.edJmlLTBaikTest,'String','50'); set(handles.txtAkurasi,'String','0','ForegroundColor','k'); set(handles.lb_htesting,'String','0'); set(handles.presentase_lb_htesting,'String','0'); set(handles.ltb_htesting,'String','0'); set(handles.presentase_ltb_htesting,'String','0'); set(handles.textHasilTest,'String',''); set(handles.txtProgres,'String','0'); set(handles.tblNoLBaik,'Data',{}); set(handles.tblNoLTdkBaik,'Data',{}); set(handles.edJmlBenarBaik,'String','0'); set(handles.edJmlBenarTdkBaik,'String','0'); uicontrol(handles.pIsiLagu, 'Style','edit', 'FontSize',10, ... 'Min',0, 'Max',2, 'HorizontalAlignment','center', ... 'BackgroundColor','white',... 'Units','normalized', 'Position',[0 0 1 1], ... 'String',''); uiwait(msgbox('Proses reset selesai.','Peringatan','modal')); end
function data_file_browse_Callback(~, ~, ~) %#ok % hObject handle to data_file_browse (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of data_file_browse as text % str2double(get(hObject,'String')) returns contents of data_file_browse as a double
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% --- Executes during object creation, after setting all properties. function data_file_browse_CreateFcn(hObject, ~, ~) %#ok % hObject handle to data_file_browse (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function lb_dtraining_Callback(~, ~, ~) %#ok % hObject handle to lb_dtraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of lb_dtraining as text % str2double(get(hObject,'String')) returns contents of lb_dtraining as a double
% --- Executes during object creation, after setting all properties. function lb_dtraining_CreateFcn(hObject, ~, ~) %#ok % hObject handle to lb_dtraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function ltb_dtraining_Callback(~, ~, ~) %#ok % hObject handle to ltb_dtraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of ltb_dtraining as text
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% str2double(get(hObject,'String')) returns contents of ltb_dtraining as a double
% --- Executes during object creation, after setting all properties. function ltb_dtraining_CreateFcn(hObject, ~, ~) %#ok % hObject handle to ltb_dtraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function lb_htraining_Callback(~, ~, ~) %#ok % hObject handle to lb_htraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of lb_htraining as text % str2double(get(hObject,'String')) returns contents of lb_htraining as a double
% --- Executes during object creation, after setting all properties. function lb_htraining_CreateFcn(hObject, ~, ~) %#ok % hObject handle to lb_htraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function kataunik_htraining_Callback(~, ~, ~) %#ok % hObject handle to kataunik_htraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% Hints: get(hObject,'String') returns contents of kataunik_htraining as text % str2double(get(hObject,'String')) returns contents of kataunik_htraining as a double
% --- Executes during object creation, after setting all properties. function kataunik_htraining_CreateFcn(hObject, ~, ~) %#ok % hObject handle to kataunik_htraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function lb_htesting_Callback(hObject, eventdata, handles) %#ok % hObject handle to lb_htesting (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of lb_htesting as text % str2double(get(hObject,'String')) returns contents of lb_htesting as a double
% --- Executes during object creation, after setting all properties. function lb_htesting_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to lb_htesting (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function ltb_htesting_Callback(hObject, eventdata, handles) %#ok % hObject handle to ltb_htesting (see GCBO)
80
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% eventdata MATLAB % handles
reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of ltb_htesting as text % str2double(get(hObject,'String')) returns contents of ltb_htesting as a double
% --- Executes during object creation, after setting all properties. function ltb_htesting_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to ltb_htesting (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function presentase_lb_htesting_Callback(hObject, eventdata, handles) %#ok % hObject handle to presentase_lb_htesting (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of presentase_lb_htesting as text % str2double(get(hObject,'String')) returns contents of presentase_lb_htesting as a double % menghitung presentase % lagu baik
% --- Executes during object creation, after setting all properties. function presentase_lb_htesting_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to presentase_lb_htesting (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function presentase_ltb_htesting_Callback(hObject, eventdata, handles) %#ok % hObject handle to presentase_ltb_htesting (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of presentase_ltb_htesting as text % str2double(get(hObject,'String')) returns contents of presentase_ltb_htesting as a double
% --- Executes during object creation, after setting all properties. function presentase_ltb_htesting_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to presentase_ltb_htesting (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes during object creation, after setting all properties. function axLogoUSD_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to axLogoUSD (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axLogoUSD % --- Executes during object creation, after setting all properties. function ltb_htraining_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to ltb_htraining (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlLBaikTest_Callback(hObject, eventdata, handles) %#ok % hObject handle to edJmlLBaikTest (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edJmlLBaikTest as text % str2double(get(hObject,'String')) returns contents of edJmlLBaikTest as a double
% --- Executes during object creation, after setting all properties. function edJmlLBaikTest_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to edJmlLBaikTest (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlLTBaikTest_Callback(hObject, eventdata, handles) %#ok % hObject handle to edJmlLTBaikTest (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edJmlLTBaikTest as text % str2double(get(hObject,'String')) returns contents of edJmlLTBaikTest as a double
% --- Executes during object creation, after setting all properties.
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
function edJmlLTBaikTest_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to edJmlLTBaikTest (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlBenarBaik_Callback(hObject, eventdata, handles) %#ok % hObject handle to edJmlBenarBaik (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edJmlBenarBaik as text % str2double(get(hObject,'String')) returns contents of edJmlBenarBaik as a double
% --- Executes during object creation, after setting all properties. function edJmlBenarBaik_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to edJmlBenarBaik (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlBenarTdkBaik_Callback(hObject, eventdata, handles) %#ok % hObject handle to edJmlBenarTdkBaik (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edJmlBenarTdkBaik as text
84
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% str2double(get(hObject,'String')) returns contents of edJmlBenarTdkBaik as a double
% --- Executes during object creation, after setting all properties. function edJmlBenarTdkBaik_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to edJmlBenarTdkBaik (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
stemming.m function [kataDasar,dataKataPrefixSufixGagal]=stemming(data,kamus) dataKataPrefixSufixGagal=[]; % Stemming % Cek awal untuk mengambil kata dasar atau tidak [kataDasar,dataKataPrefixSufix]=cekKeKamus(data,kamus); % assignin('base','kataDasarCekKamusAwal',kataDasar); % assignin('base','dataKataPrefixSufix',dataKataPrefixSufix); if ~isempty(dataKataPrefixSufix) [kataDasar,dataKataPrefixSufixGagal]=cekPrefixSufix(dataKataPref ixSufix,kamus,kataDasar); end end function [kataDasar,dataKataPrefixSufix]=cekKeKamus(data,kamus) % Cek ke kamus dan mengambil kata dasar dan tidak x=1; y=1; kataDasar={}; dataKataPrefixSufix={}; yaTidak=ismember(data,kamus); for i=1:length(data) if yaTidak(i)==1 kataDasar{x}=data{i}; x=x+1; else dataKataPrefixSufix{y}=data{i}; y=y+1;
85
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
end end kataDasar=sort(kataDasar'); dataKataPrefixSufix=sort(dataKataPrefixSufix'); end function [kataDasar,dataKataPrefixSufixGagal]=cekPrefixSufix(dataKataPref ixSufix,kamus,kataDasarTemp) % Hilangkan akhiran % -kah, -lah, pun inflection_particle={'kah' 'lah' 'pun' 'kan'}; % [m,n]=size(dataKataPrefixSufix); % kataDasar2={}; dataHilangSufix1={}; kataDasarTempKahLahPun={}; for i=1:length(dataKataPrefixSufix) kataTemp=dataKataPrefixSufix{i}; % mm=size(kataTemp,2); % kataTemp(mm-2:mm) % for j=1:length(inflection_particle) if length(kataTemp)>4 if ismember(kataTemp(end-2:end),inflection_particle) dataHilangSufix1{i}=kataTemp(1:end-3); % dataHilangSufix1{i}=regexprep(kataTemp,inflection_particle,'','m atchcase'); if ismember(dataHilangSufix1{i},kamus); kataDasarTempKahLahPun{i}=dataHilangSufix1{i}; dataHilangSufix1{i}=''; else dataHilangSufix1{i}=kataTemp; end else dataHilangSufix1{i}=kataTemp; end else dataHilangSufix1{i}=kataTemp; end end dataHilangSufix1=dataHilangSufix1'; kataDasarTempKahLahPun=kataDasarTempKahLahPun'; kataDasarTemp=[kataDasarTemp;kataDasarTempKahLahPun]; dataHilangSufix1=dataHilangSufix1(~cellfun('isempty',dataHilangS ufix1)); % Menghilangkan cell yang kosong % -ku, -mu, -nya inflection_possesif1={'ku' 'mu'}; inflection_possesif2={'nya'}; kataDasarTempKuMU={}; kataDasarTempNya={}; dataHilangSufix2={}; for i=1:length(dataHilangSufix1) kataTemp=dataHilangSufix1{i}; if length(kataTemp)>3 if ismember(kataTemp(end-1:end),inflection_possesif1)
86
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% ismember(kataTemp(end1:end),inflection_possesif1) % kataTemp(1:end-2) % kataTemp(end-1:end) dataHilangSufix2{i}=kataTemp(1:end-2); if ismember(dataHilangSufix2{i},kamus); kataDasarTempKuMU{i}=dataHilangSufix2{i}; dataHilangSufix2{i}=''; else dataHilangSufix2{i}=kataTemp; end elseif ismember(kataTemp(end2:end),inflection_possesif2) dataHilangSufix2{i}=kataTemp(1:end-3); if ismember(dataHilangSufix2{i},kamus); kataDasarTempNya{i}=dataHilangSufix2{i}; dataHilangSufix2{i}=''; else dataHilangSufix2{i}=kataTemp; end else dataHilangSufix2{i}=kataTemp; end else dataHilangSufix2{i}=kataTemp; end end kataDasarTempKuMU=kataDasarTempKuMU'; kataDasarTempNya=kataDasarTempNya'; dataHilangSufix2=dataHilangSufix2'; dataHilangSufix2=dataHilangSufix2(~cellfun('isempty',dataHilangS ufix2)); % Menghilangkan cell yang kosong kataDasarTemp=[kataDasarTemp;kataDasarTempKuMU;kataDasarTempNya] ; % Cek awalan % pen-, ter-, me-, di-, keprefix1_2={ 'me' 'di' 'ke' 'ku'}; prefix1_3={'pen' 'ter'}; % prefix1_4={'meng' 'peng'}; kataDasarTempMeDiKe={}; kataDasarTempPenTer={}; dataHilangPrefix1={}; for i=1:length(dataHilangSufix2) kataTemp=dataHilangSufix2{i}; if length(kataTemp)>3 if ismember(kataTemp(1:2),prefix1_2) dataHilangPrefix1{i}=kataTemp(3:end); if ismember(dataHilangPrefix1{i},kamus); kataDasarTempMeDiKe{i}=dataHilangPrefix1{i}; dataHilangPrefix1{i}=''; else [hasilKata]=hilangkanSufixKanAnI(dataHilangPrefix1{i},kamus); if ismember(hasilKata,kamus); kataDasarTempMeDiKe{i}=hasilKata; dataHilangPrefix1{i}=''; else dataHilangPrefix1{i}=kataTemp;
87
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
end end elseif ismember(kataTemp(1:3),prefix1_3) dataHilangPrefix1{i}=kataTemp(4:end); if ismember(dataHilangPrefix1{i},kamus); kataDasarTempPenTer{i}=dataHilangPrefix1{i}; dataHilangPrefix1{i}=''; else [hasilKata]=hilangkanSufixKanAnI(dataHilangPrefix1{i},kamus); if ismember(hasilKata,kamus); kataDasarTempMeDiKe{i}=hasilKata; dataHilangPrefix1{i}=''; else dataHilangPrefix1{i}=kataTemp; end end else dataHilangPrefix1{i}=kataTemp; end else dataHilangPrefix1{i}=kataTemp; end end kataDasarTempMeDiKe=kataDasarTempMeDiKe'; kataDasarTempPenTer=kataDasarTempPenTer'; dataHilangPrefix1=dataHilangPrefix1'; dataHilangPrefix1=dataHilangPrefix1(~cellfun('isempty',dataHilan gPrefix1)); % Menghilangkan cell yang kosong kataDasarTemp=[kataDasarTemp;kataDasarTempMeDiKe;kataDasarTempPe nTer]; % meng-, peng-, meny-, meng-, peng-, peny-, pem-, mem-, menprefix2_3={'pem' 'mem' 'men'}; prefix2_4={'meng' 'peng' 'meny' 'meng' 'peng' 'peny'}; kataDasarTempMengPengMenyMengPengPeny={}; kataDasarTempPemMemMen={}; kataDasarTempPrefixLain={}; dataHilangPrefix2={}; for i=1:length(dataHilangPrefix1) kataTemp=dataHilangPrefix1{i}; if length(kataTemp)>4 % Cek apakah masuk prefix2_3 dan pefix2_4 atau tidak if ismember(kataTemp(1:3),prefix2_3) || ismember(kataTemp(1:4),prefix2_4) if ismember(kataTemp(1:4),prefix2_4) dataHilangPrefix2{i}=kataTemp(5:end); % Cek apakah huruf awal fokal atau tidak [hasilKata]=jikaKondisiPrefixHurufAwalVokalAtauTidak(dataHilangP refix2{i},kamus); % Menghilangkan sufix -kan,-an,i [hasilKata]=hilangkanSufixKanAnI(hasilKata,kamus); kataDasarTempMengPengMenyMengPengPeny{i}=hasilKata; dataHilangPrefix2{i}=''; elseif ismember(kataTemp(1:3),prefix2_3)
88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dataHilangPrefix2{i}=kataTemp(4:end); % Cek apakah huruf awal fokal atau tidak [hasilKata]=jikaKondisiPrefixHurufAwalVokalAtauTidak(dataHilangP refix2{i},kamus); % Menghilangkan sufix -kan,-an,i [hasilKata]=hilangkanSufixKanAnI(hasilKata,kamus); kataDasarTempPemMemMen{i}=hasilKata; dataHilangPrefix2{i}=''; end else % -kan, -an, -i [hasilKata]=hilangkanSufixKanAnI(kataTemp,kamus); [hasilKata]=hilangkanPrefixBerBelBePerPelPe(kataTemp,kamus); kataDasarTempPrefixLain{i}=hasilKata; end else dataHilangPrefix2{i}=kataTemp; end end kataDasarTempMengPengMenyMengPengPeny=kataDasarTempMengPengMenyM engPengPeny'; kataDasarTempPemMemMen=kataDasarTempPemMemMen'; kataDasarTempPrefixLain=kataDasarTempPrefixLain'; dataHilangPrefix2=dataHilangPrefix2'; dataHilangPrefix2=dataHilangPrefix2(~cellfun('isempty',dataHilan gPrefix2)); % Menghilangkan cell yang kosong kataDasarTemp=[kataDasarTemp;kataDasarTempMengPengMenyMengPengPe ny;kataDasarTempPemMemMen;kataDasarTempPrefixLain]; kataDasarTemp=kataDasarTemp(~cellfun('isempty',kataDasarTemp)); % Menghilangkan cell yang kosong kataDasarTemp=sort(kataDasarTemp); % assignin('base','dataHilangPrefix2',dataHilangPrefix2); % assignin('base','kataDasarTambah',kataDasarTemp); [kataDasarTemp,dataKataPrefixSufixGagal]=cekKeKamus(kataDasarTem p,kamus); kataDasar=sort(kataDasarTemp); end function [hasilKata]=jikaKondisiPrefixHurufAwalVokalAtauTidak(data,kamus) kataTemp=data; vokal='[aiuoe]'; if ismember(kataTemp(1:1),vokal) kataTemp=strcat('s',kataTemp); if ismember(kataTemp,kamus); hasilKata=kataTemp; else [kataTemp]=hilangkanSufixKanAnI(kataTemp,kamus); if ismember(kataTemp,kamus); hasilKata=kataTemp; else kataTemp(1:1)='t'; if ismember(kataTemp,kamus);
89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
hasilKata=kataTemp; else [kataTemp]=hilangkanSufixKanAnI(kataTemp,kamus); if ismember(kataTemp,kamus); hasilKata=kataTemp; else kataTemp(1:1)='p'; if ismember(kataTemp,kamus); hasilKata=kataTemp; else [kataTemp]=hilangkanSufixKanAnI(kataTemp,kamus); if ismember(kataTemp,kamus); hasilKata=kataTemp; else kataTemp(1:1)='l'; if ismember(kataTemp,kamus); hasilKata=kataTemp; else [kataTemp]=hilangkanSufixKanAnI(kataTemp,kamus); if ismember(kataTemp,kamus); hasilKata=kataTemp; else kataTemp(1:1)='k'; if ismember(kataTemp,kamus); hasilKata=kataTemp; else [kataTemp]=hilangkanSufixKanAnI(kataTemp,kamus); if ismember(kataTemp,kamus); hasilKata=kataTemp; else kataTemp(1:1)='c'; if ismember(kataTemp,kamus); hasilKata=kataTemp; else [kataTemp]=hilangkanSufixKanAnI(kataTemp,kamus); if ismember(kataTemp,kamus); hasilKata=kataTemp; else % Kata dihilangkan jika huruf pertama vokal tetapi setelah % ditambah s,t,p,k,atau c tetap tidak ada di kamus. kataTemp(1:1)=''; hasilKata=kataTemp; end end end end
90
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
end end end end end end end end else % Kondisi huruf awal bukan vokal hasilKata=kataTemp; end end % Menghilangkan sufix -kan,-an,i function [hasilKata]=hilangkanSufixKanAnI(data,kamus) sufixKan={'kan'}; sufixAn={'an'}; sufixI={'i'}; kataTemp=data; if length(kataTemp)>3 if ismember(kataTemp(end-2:end),sufixKan) dataHilangSufixKan=kataTemp(1:end-3); if ismember(dataHilangSufixKan,kamus); hasilKata=dataHilangSufixKan; else % dataHilangSufixKan cek awalan ber dll [hasilKata]=hilangkanPrefixBerBelBePerPelPe(dataHilangSufixKan,k amus); end elseif ismember(kataTemp(end-1:end),sufixAn) dataHilangSufixAn=kataTemp(1:end-2); if ismember(dataHilangSufixAn,kamus); hasilKata=dataHilangSufixAn; else % dataHilangSufixAn cek awalan ber dll [hasilKata]=hilangkanPrefixBerBelBePerPelPe(dataHilangSufixAn,ka mus); end elseif ismember(kataTemp(end:end),sufixI) dataHilangSufixI=kataTemp(1:end-1); if ismember(dataHilangSufixI,kamus); hasilKata=dataHilangSufixI; else % dataHilangSufixI cek awalan ber dll [hasilKata]=hilangkanPrefixBerBelBePerPelPe(dataHilangSufixI,kam us); end else hasilKata=data; end else hasilKata=data;
91
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
end end % Menghilangkan prefix ber-, bel-, be-, per-, pel-, atau pefunction [hasilKata]=hilangkanPrefixBerBelBePerPelPe(data,kamus) prefix1_3={'ber' 'bel' 'per' 'pel'}; prefix2_2={'be' 'pe'}; kataTemp=data; if length(kataTemp)>3 if ismember(kataTemp(1:3),prefix1_3) dataHilangPrefix=kataTemp(4:end); if ismember(dataHilangPrefix,kamus); hasilKata=dataHilangPrefix; else [hasilKata]=hilangkanSufixKanAnI(dataHilangPrefix,kamus); end elseif ismember(kataTemp(1:2),prefix2_2) dataHilangPrefix=kataTemp(3:end); if ismember(dataHilangPrefix,kamus); hasilKata=dataHilangPrefix; else [hasilKata]=hilangkanSufixKanAnI(dataHilangPrefix,kamus); end else hasilKata=kataTemp; end else hasilKata=kataTemp; end end
strjoin.m function output = strjoin(input, separator) %STRJOIN Concatenate an array into a single string. % % Sumber: http://www.mathworks.com/matlabcentral/fileexchange/31862strjoin % % S = strjoin(C) % S = strjoin(C, separator) % % Description % % S = strjoin(C) takes an array C and returns a string S which concatenates % array elements with comma. C can be a cell array of strings, a character % array, a numeric array, or a logical array. If C is a matrix, it is first % flattened to get an array and concateneted. S = strjoin(C, separator) also
92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% specifies separator for string concatenation. The default separator is comma. % % Examples % % >> str = strjoin({'this','is','a','cell','array'}) % str = % this,is,a,cell,array % % >> str = strjoin([1,2,2],'_') % str = % 1_2_2 % % >> str = strjoin({1,2,2,'string'},'\t') % str = % 1 2 2 string % if nargin < 2, separator = ','; end assert(ischar(separator), 'Invalid separator input: %s', class(separator)); separator = strrep(separator, '%', '%%'); output = ''; if ~isempty(input) if ischar(input) input = cellstr(input); end if isnumeric(input) || islogical(input) output = [repmat(sprintf(['%.15g', separator], input(1:end-1)), ... 1, ~isscalar(input)), ... sprintf('%.15g', input(end))]; elseif iscellstr(input) output = [repmat(sprintf(['%s', separator], input{1:end1}), ... 1, ~isscalar(input)), ... sprintf('%s', input{end})]; elseif iscell(input) output = strjoin(cellfun(@(x)strjoin(x, separator), input, ... 'UniformOutput', false), ... separator); else error('strjoin:invalidInput', 'Unsupported input: %s', class(input)); end end end
stemming.m function [ kataDasarHasilStem,dataKataPrefixSufixGagal,ktTiadaArti] = termFrequency(data,kataTiadaArti,kamus ) %UNTITLED Summary of this function goes here % Detailed explanation goes here
93
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tiadaArti=[]; data=lower(data); % Mengubah huruf besar menjadi kecil data=regexprep(data,'[.,?!"-+=\/:;_12345678910]',' '); % Menghilangkan tanda baca tiadaArtiTemp=ismember(data,kataTiadaArti); % Mengambil kata tiada arti dari teks % dataTempt=data{1} mTiadaArti=size(tiadaArtiTemp); n=1; for i=1:mTiadaArti if tiadaArtiTemp(i) == 1 tiadaArti{n}=data{i}; n=n+1; end end tiadaArti=tiadaArti'; ktTiadaArti=tiadaArti; data = strjoin(data(~ismember(data,kataTiadaArti)),' '); % Menghilangkan kata yang tidak punya arti dari data data=regexprep(data,'-',' '); % Menghilangkan tanda baca % data=regexprep(data,kataTiadaArti,'') data = textscan(data,'%s'); % Membaca file data=data{1}; % Memasukkan data file ke dalam matriks cell array % data(strcmp('',data)) = []; % Menghilangkan cell yang kosong data=data(~cellfun('isempty',data)); % Menghilangkan cell yang kosong data=sort(data); % assignin('base','data',data); [kamusKataDasar]=unique(kamus); % Memastikan bahwa di kamus data tidak ada kata yang sama [kataDasarHasilStem,dataKataPrefixSufixGagal]=stemming(data,kamu sKataDasar); % steming end
94