Data yang digunakan Arsitektur Umum Analisis Data

BAB 3 ANALISIS DAN PERANCANGAN SISTEM Bab ini membahas data yang digunakan dan mengimplementasikan algortima pattern matching pada pencarian sinonim kata dalam dokumen.

3.1 Data yang digunakan

Data yang digunakan merujuk Kamus Besar Bahasa Indonesia KBBI yang berisi kumpulan kata-kata lengkap bahasa Indonesia dan makna persamaan kata merujuk kepada Thesaurus bahasa Indonesia.

3.2 Arsitektur Umum

Tahapan awal sistem dimulai dengan proses input yang berisi kata-kata yang ingin dicari oleh user. Sistem melakukan pengecekan tiap kata dan melakukan penghapusan kata yang tidak penting atau tepat untuk pencarian kata selanjutnya. Kemudian sistem akan memulai tahapan parsing yang diawali dengan stemming kata, pemisahan struktur kata antara imbuhan dengan kata dasarnya. Pada saat proses stemming berlangsung, sistem mencocokkan inputan user terhadap kata dasar yang sudah disimpan di database; penambahan persamaan kata yang relevan dengan makna kata tersebut baik kata tunggal maupun frasa untuk pencarian selanjutnya; pencarian kata atau sinonim kata yang sesuai dengan dokumen yang ada di database. Hasil berupa nama dan isi dari dokumen yang sesuai dengan sinonim kata yang ingin dicari oleh pengguna. Adapun arsitektur umum yang menggambarkan tahapan yang digunakan dalam penelitian ini dapat dilihat pada gambar 3.1. Universitas Sumatera Utara Input teks - Memulai Porter Stemming - Penghilangan Stopwords - Pencocokan sinonim kata Membandingkan kecocokan teks pada dokumen di sisi kiri dan kanan Menampikan keluaran kata dan persamaan kata yang cocok dengan isi dokumen Database kamus Database dokumen Menentukan nilai geser sisi kiri shiftl dan sisi kanan shiftr Two Sliding Windows Berry-Ravindran Gambar 3.1 Arsitektur Umum Sistem

3.3 Analisis Data

Perincian proses pada gambar 3.1 dijelaskan dengan tahapan sebagai berikut : 1. User mengetikan input kalimat : Perangainya yang degil membuat orang segan untuk berteman dengannya . Kalimat tersebut di-parsing menjadi [Perangainya] [yang] [degil] [membuat] [orang] [segan] [untuk] [berteman] [dengannya]. 2. Proses Stopwords Kata-kata yang telah dibagi menjadi kumpulan array, yakni arr_kata, program akan memulai proses penghilangan kata-kata yang tidak relevan atau tidak tepat terutama tanda baca dan kata penghubung stopwords. Program melakukan pendeteksian kata per kata berdasarkan stopword yang ada di database. Kemudian kata-kata tersebut dihapus berdasarkan kamus kata yang berisi kata- kata “tidak relevan” stopwords . Penghapusan kata tidak relevan dengan kalimat masukan menjadi : Universitas Sumatera Utara [Perangainya][degil][orang][segan][berteman] Kata yang dihapus antara lain, : [yang][membuat][untuk] [dengannya] Proses penghapusan stopwords dapat dilihat pada Gambar 3.2. Gambar 3.2 Proses stopwords 3. Proses Stemming Setelah selesai proses stopword, maka dilanjutkan proses stemming menggunakan algoritma Porter. Pada penelitian ini, algoritma Porter dimodifikasi agar sesuai dengan imbuhan Bahasa Indonesia Tala, 2003. Aturan ditambahkan untuk memberikan hasil yang maksimal dan mempermudah proses stemming. Berikut adalah aturan yang ditambahkan dalam algoritma Porter. 1. Kata dasar yang dilekati partikel infleksional yang tidak mempunyai imbuhan apapun. Contoh : masalah. 2. Kata dasar yang dilekati partikel berprefiks yang tidak mempunyai imbuhan apapun. Contoh : menikah. 3. Kata dasar yang dilekati kata ganti milik yang tidak mempunyai imbuhan apapun. Contoh : bangku. 4. Kata dasar yang dilekati kata ganti milik berprefiks yang tidak mempunyai imbuhan apapun. Contoh : bersuku. 5. Kata dasar yang dilekati prefix pertama yang tidak mempunyai imbuhan apapun. Contoh : median. Mulai Hapus tanda baca; Explode textfile, “spasi” ; For i=1 to jumlah kata For j =1 to jumlah stopwords If teks[i] == stopword[j] { Hapus teks[i]; } End for End for Implode teks,”spasi”; Akhir Universitas Sumatera Utara 6. Kata dasar yang dilekati prefix pertama bersufiks yang berarti kata dasar yang memiliki suku kata pertama awalan dan mempunyai akhiran. Contoh : terapan. 7. Kata dasar yang dilekati prefiks kedua yang tidak mempunyai imbuhan apapun . Contoh : percaya. 8. Kata dasar yang dilekati prefiks kedua bersufiks yang berarti kata dasar yang memiliki suku pertama awalan kedua dan mempunyai akhiran. Contoh: perasaan. 9. Kata dasar yang dilekati sufiks yang tidak mempunyai imbuhan apapun. Contoh: pantai. Keseluruhan proses stemming menggunakan algoritma Porter dapat dilihat pada gambar 3.3. Gambar 3.3 Algoritma Porter dalam proses stemming Algoritma Porter dimulai dengan langkah-langkah antara lain : 1. Kata yang distemming mula-mula dicari di kamus data, jika ada kata dasar yang sesuai, maka algoritma berhenti, jika tidak ada, maka lanjutkan ke langkah 2. 2. Cek aturan tambahan yang bukan merupakan imbuhan Bahasa Indonesia, jika ada yang sesuai, maka algoritma berhenti. Jika tidak ada, maka lanjutkan ke langkah 3. 3. Hilangkan partikel “-lah”, “-kah”,” –tah”,” –pun”. Mulai Cek kata dasar; If kata = kata dasar then return kata; Else If kata mengandung partikel then Hapus partikel; If kata mengandung kata ganti milik then Hapus kata ganti milik; If kata mengandung kata awalan pertama then Hapus kata awalan pertama; If kata mengandung kata awalan kedua then Hapus kata awalan kedua; If kata mengandung akhiran then Hapus akhiran; Akhir Universitas Sumatera Utara 4. Hilangkan kata ganti kepemilikan “-ku”, “-mu”, “-nya” . 5. Hilangkan awalan pertama “meng-“, “meny-“, “men-“, “mem-“, “me-“, “peng-“, “peny-“, “pen-“, “pem-“, “di-“, “ter-“, “ke-“ . Jika tidak terdapat awalan pertama pada kata, maka lanjutkan ke langkah 7. Jika ada, maka lanjutkan ke langkah 6. 6. Hilangkan awalan kedua “ber-“, “bel-“, “be-“, “per-“, “pel-“, “pe-“ . Algoritma akan berhenti jika sebelumnya sudah melalui langkah 7 dan masih tidak menemukan adanya awalan kedua pada kata. Algoritma akan menggangap kata yang dimasukkan sebagai kata dasar. 7. Hilangkan akhiran “-kan”, “-an”, “-i” . Jika tidak terdapat akhiran pada kata, maka lanjutkan ke langkah 6. Berdasarkan kata yang telah dihapus melalui proses stopwords, maka sistem memulai stemming menggunakan algoritma Porter untuk bahasa Indonesia. Proses yang terjadi sebagai berikut :  [perangainya] di-stemming, kamus kata tidak mendapati adanya kata dasar yang cocok dengan kata [perangainya] ,maka akan melalui tahapan berikut : 1. Hapus partikel -lah, -kah, -tah, -pun , tidak ada kecocokan partikel dengan kata [perangainya], maka dilanjutkan ke langkah 2. 2. Hapus kata ganti kepunyaan-ku, -mu, -nya, ada kecocokan kata ganti kepunyaan dengan kata [perangainya], maka dihapus menjadi [perangai]. 3. Hapus awalan pertama First Order Derivational Prefix meng-, meny-, men-, me-, peng- ,dll , tidak ada kecocokan awalan pertama dengan kata [perangai], maka dilanjutkan ke langkah 4. 4. Hapus akhiran Derivation Suffix -kan, -an, -i , tidak ada kecocokan akhiran dengan kata [perangai], maka [perangai] sudah menjadi kata dasar.  [degil] di-stemming, maka kata [degil] akan dikembalikan menjadi kata dasar.  [orang] di-stemming, maka kata [orang] akan dikembalikan menjadi kata dasar.  [segan] di-stemming, maka kata [segan] akan dikembalikan menjadi kata dasar. Universitas Sumatera Utara  [berteman] di-stemming, kamus kata tidak mendapati adanya kata dasar yang cocok dengan kata [berteman] ,maka akan melalui tahapan berikut : 1. Hapus partikel -lah, -kah, -tah, -pun , tidak ada kecocokan partikel dengan kata [berteman], maka dilanjutkan ke langkah 2. 2. Hapus kata ganti kepunyaan-ku, -mu, -nya, tidak ada kecocokan kata ganti kepunyaan dengan kata [berteman], maka dilanjutkan ke langkah 3. 3. Hapus awalan pertama First Order Derivational Prefix meng-, meny-, men-, me-, peng- ,dll , tidak ada kecocokan awalan pertama dengan kata [berteman], maka dilanjutkan ke langkah 4. 4. Hapus awalan kedua Second Order Derivational Prefix ber-, bel-, be-, per-, pel-, pe- , pemenggalan awalan “ber-“ sesuai dengan [berteman], maka dihapus menjadi [teman]. 5. Hapus akhiran Derivation Suffix -kan, -an, -i , , tidak ada kecocokan akhiran dengan kata [teman], maka [teman] sudah menjadi kata dasar. 4. Pencocokan Kata dan Sinonim Kata Menurut Murad,et al2007, pencarian relevansi kata yang satu dengan kata yang lain tidak memerlukan pencarian sinonim kata karena pencarian dilakukan dengan kemiripan kata yang diubah ke dalam fuzzy set. Pada penelitian ini, pencocokan langsung ditentukan berdasarkan makna kata nya itu sendiri. Kata yang telah di-stem dilanjutkan dengan mencari persamaan kata sinonim yang ada di dalam kamus sinonim kata. Tiap arr_kata[] kata hasil stemming dilakukan scanning dan hasil pencocokan persamaan kata akan dimuat ke dalam array baru,yaitu arr_Snmkata[]. Apabila hasil pencocokan terdapat lebih dari satu makna kata, maka program tetap akan memuat sinonim kata tersebut ke dalam arr_Snmkata[]. Kumpulan kata dasar [perangai][degil][orang][segan][teman] akan dicari persamaan kata pada kamus data yang memiliki makna serupa.  [perangai] memiliki persamaan makna kata dengan [perilaku], maka dibentuk arr_Snmkata[i] = [perilaku]. Universitas Sumatera Utara Fase Pre-processing Fase Pencarian Algoritma Two Sliding Windows Algoritma Berry-Ravindran  [degil] memiliki persamaan makna kata dengan [keras kepala], maka dibentuk arr_Snmkata[i+1] = [keras kepala].  [orang] memiliki persamaan makna kata dengan [manusia], maka dibentuk arr_Snmkata[i+2] = [manusia].  [segan] memiliki persamaan makna kata dengan [sungkan] dan [malu], maka dibentuk arr_Snmkata[i+3] = [sungkan] dan arr_Snmkata[i+4] = [malu].  [teman] memiliki persamaan makna kata dengan [sahabat] dan [rekan], maka dibentuk arr_Snmkata[i+5] = [sahabat] dan arr_Snmkata[i+6] = [rekan]. 5. Pencarian teks Pada tahapan pencarian teks digunakan Algoritma Two Sliding Windows TSW yang mencakupi dua proses utama yaitu fase pre-processing dan fase pencarian. Pada dasarnya, algoritma TSW melakukan pencarian dari dua sisi windows yaitu sisi kiri left window dan sisi kanan right window secara parallel Hudaib et al, 2008 . Fase pre-processing menggunakan algoritma Berry-Ravindran untuk menentukan nilai shift yang akan digunakan pada saat fase pencarian. Proses keseluruhan pencarian teks dapat dilihat pada gambar 3.4. Gambar 3.4 Proses pencarian teks Pengecekan bagian kiri dan kanan teks START Kata dan sinonim kata Get shiftl ; Get shiftr ; END Menentukan karakter a dan b Database dokumen Ada di database dokumen ? Ya Tidak Universitas Sumatera Utara a b  Fase Pre-Processing Fase pre-processing menggunakan dua array yaitu nextl dan nextr. Nilai dari kedua array tersebut ditentukan oleh algoritma bad character Berry Ravindran BR. Nilai dari kedua array tersebut akan dimasukkan ke dalam masing-masing variable shiftl dan shiftr. Kata-kata dasar [perangai] [degil] [orang] [segan] [teman] dan persamaan kata [perilaku] [keras kepala] [manusia] [sungkan] [malu] [sahabat][rekan] melalui proses penentuan nilai kedua shift sebagai berikut : Variabel shiftl Langkah – langkah pencarian nilai shiftl dijelaskan sebagai berikut : 1. Apabila pencarian dimulai pertama kalinya, maka nilai variabel shiftl adalah 0. Jika tidak, maka nilai awal shiftl = m+2 dimana m merupakan jumlah pola pattern yang ingin dicari. 2. Penetapan nilai a dan b yang merupakan dua karakter berurutan di hitung setelah posisi pola, antara lain : Dimana, P = Pattern ; m = banyak pola yang dicari ; n = nilai tengah dari banyak pola yang dicari. Pada contoh sebelumnya, berarti : Kata “perangai” memiliki nilai a = “k” ; b = “a” Kata “degil” memiliki nilai a = “s” ; b = “a” Kata “orang” memiliki nilai a = “s” ; b = “a” Kata “segan” memiliki nilai a = “s” ; b = “a” Kata “teman” memiliki nilai a = “s” ; b = “a” Proses penetapan nilai a dan b dapat dilihat pada gambar 3.5. p e r a n g a i b e r d a s a r k a n a n ... d e g i l b e r d a s a r k a n a n ... a = P[m+1] b = P[m+2] Pattern Text Pattern Text Universitas Sumatera Utara shiftl a, b = � { − � + + � [ − ] = � [�][� + ] = � [ ] = ℎ �� } o r a n g b e r d a s a r k a n a n ... s e g a n b e r d a s a r k a n a n ... t e m a n b e r d a s a r k a n a n ... Gambar 3.5 Ilustrasi posisi penentuan letak pada bagian kiri teks 3. Lakukan loop yang dimulai dari awal sampai akhir karakter yang sebanyak m- 2. 4. Pada saat terjadi looping, algoritma menghitung nilai array nextl yang akan dimasukkan kedalam variabel shiftl. Apabila hasil array nextl lebih dari satu nilai, maka algoritma memilih nilai terkecil dari hasil tersebut. Proses perhitungan nilai shiftl dapat dilihat pada gambar 3.5. Gambar 3.6 Aturan Operasi Hitung Nilai shift kiri Berdasarkan contoh sebelumnya, maka : nilai shiftla,b pada kata “perangai” = “k”,”a” = m + 2 = 8 + 2 = 10. nilai shiftla,b pada kata “degil” = “s”,”a” = m + 2 = 5 + 2 = 7. nilai shiftla,b pada kata “orang” = “s”,”a” = m + 2 = 5 + 2 = 7. nilai shiftla,b pada kata “segan” = “s”,”a” = m + 2 = 5 + 2 = 7. nilai shiftla,b pada kata “teman“ = “s”,”a” = m + 2 = 5 + 2 = 7. Hal ini berarti bahwa algoritma melakukan pengg eseran pada kata “perangai” sebanyak 7 langkah ke kanan dan kata “degil”, “orang”, “segan”, “teman” sebanyak 7 langkah ke kanan. Penentuan nilai shiftl selanjutnya ditentukan oleh dua karakter berurutan a,b pada teks. Pattern Text Pattern Text Pattern Text Universitas Sumatera Utara a b Variabel shiftr Langkah – langkah penentuan nilai shiftr dijelaskan sebagai berikut : 1. Apabila pencarian dimulai pertama kalinya, maka nilai variabel shiftl adalah 0. Jika tidak, maka nilai awal shiftl = m+2 dimana m merupakan jumlah pola pattern yang ingin dicari. 2. Penetapan nilai a dan b seperti pada gambar 3.6 yang merupakan dua karakter berurutan di hitung setelah pola tersebut, antara lain : Dimana, P = Pattern ; m = banyak pola yang dicari ; n = nilai tengah dari banyak pola yang dicari. Pada contoh diatas, berarti : Kata “perangai” memiliki nilai a = “a” ; b = “a” Kata “degil” memiliki nilai a = “g” ; b = “o” Kata “orang” memiliki nilai a = “g” ; b = “o” Kata “segan” memiliki nilai a = “g” ; b = “o” Kata “teman” memiliki nilai a = “g” ; b = “o” Proses penetapan nilai a dan b dapat dilihat pada gambar 3.7. a n g a i b e d a a l g o r i t m a ... r e p s e g a n b e d a a l g o r i t m a ... d e g i l b e d a a l g o r i t m a ... o r a n g b e d a a l g o r i t m a ... Pattern Text a = P[n-m-1] b = P[n-m-2] Universitas Sumatera Utara shiftr a, b = � { + − − − � + � [ − ] = � [�][� + ] = � [ ] = ℎ �� } t e m a n b e d a a l g o r i t m a ... Gambar 3.7 Ilustrasi posisi penentuan letak pada bagian kanan teks 3. Lakukan loop yang dimulai dari awal sampai akhir karakter sebanyak m-2. 4. Pada saat terjadi looping, algoritma menghitung nilai array nextl yang akan dimasukkan kedalam variabel shiftl. Apabila hasil array nextl lebih dari satu nilai, maka algoritma memilih nilai terkecil dari hasil tersebut. Proses perhitungan nilai shiftl pada gambar 3.8 sebagai berikut. Gambar 3.8 Aturan Operasi Hitung Nilai shift kanan Berdasarkan contoh sebelumnya, maka nilai shiftra,b pada kata “perangai” = shiftr “a”,”a” = m + 2 = 8 + 2 = 10 nilai shiftra,b pada kata “degil” = shiftr “g”,”o” = m + 2 = 5 + 2 = 7 nilai shiftra,b pada kata “orang” = shiftr “g”,”o” = m + 1 = 5 + 1 = 6 nilai shiftra,b pada kata “segan” = shiftr “g”,”o” = m + 2 = 5 + 2 = 7 nilai shiftra,b pada kata “teman” = shiftr “g”,”o” = m + 2 = 5 + 2 = 7 Hal ini berarti bahwa algoritma akan melakukan penggeseran kata “orang” sebanyak 9 karakter ke kiri dan kata”segan” “perangai”, “degil”, “teman” sebanyak 10 karakter ke kiri. Penentuan nilai shiftr selanjutnya ditentukan oleh dua karakter berurutan a,b pada teks. Keseluruhan proses penentuan nilai shift dapat dilihat pada gambar 3.8 sebagai berikut. Universitas Sumatera Utara Gambar 3.9 Pseudocode Pre-processing bad character shift Algoritma Berry- Ravindran. Sumber : Hudaib et al, 2008  Fase Pencarian Apabila nilai shiftl dan shiftr sudah didapatkan dari fase pre-processing, maka program akan memulai fase pencarian menggunakan algoritma Two Sliding Windows. Proses pencarian kata yang sesuai dengan dokumen adalah sebagai berikut : 1. Pencocokan string dari sebelah kiri teks dimulai dari posisi akhir string sampai posisi awal string. Jika terjadi kecocokan, maka algoritma akan berhenti. Jika tidak, maka lanjutkan ke langkah 3. 2. Pencocokan string dari sebelah kanan teks dimulai dari posisi awal string sampai posisi akhir string. Jika terjadi kecocokan, maka algoritma akan berhenti. Jika tidak, maka lanjutkan ke langkah 3. 3. Penentuan nilai shift kiri dan kanan dari algoritma BR. 4. Menggeser pattern sesuai nilai shift yang didapat dari langkah 3. Pada bagian kiri akan menggeser ke sebelah kanan dan bagian kanan menggeser ke sebelah kiri. Seperti contoh sebelumnya, Kata “perangai” dengan nilai shiftl = 10 ; shiftr = 10. Begin shiftl=shiftr=m+2 for each character i=0 ….. i=m-2 Nextl[i] = m-I, nextr[i] = m-m-2-i if P[m-1] = a { shiftl=1, shiftr=m+1 } else if P[0] = b { shiftl = m+1, shiftr =1 } else if P[i][i+1] = ab { shiftl=nextl[i], shiftr=nextr[i] } End Universitas Sumatera Utara 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Bagian kiri teks p e r a n e r d a s a r k a n a n b g a i r u g e p e r a n e r d a s a r k a n a n b g a i r u g e a h a h y ... y ... Bagian kanan teks b e d a a l g o r i t a m p e r a n g a i r b e d a a l g o r i t a m p e r a n g a i e b g n a y ... r e b g n a y ... Kata “degil” dengan nilai shiftl = 7 ; shiftr = 7. Bagian kiri teks d e g i l e r d a s a r k a n a n b r u g e a ... d e g i l e r d a s a r k a n a n b r u g e a ... Bagian kanan teks r b e d a a l g o r i t a m d e g i l e b g n a y ... r b e d a a l g o r i t a m d e g i l e b g n a y ... Universitas Sumatera Utara 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Kata “orang” dengan nilai shiftl = 7 ; shiftr = 6. Bagian kiri teks Bagian kanan teks Kata “segan” dengan nilai shiftl = 7 ; shiftr = 7. Bagian kiri teks Bagian kanan teks o r a n g e r d a s a r k a n a n b r u g e a ... o r a n g e r d a s a r k a n a n b r u g e a ... r b e d a a l g o r i t a m o r a n g e b g n a y ... r b e d a a l g o r i t a m o r a n g e b g n a y ... s e g a n e r d a s a r k a n a n b r u g e a ... s e g a n e r d a s a r k a n a n b r u g e a ... r b e d a a l g o r i t a m s e g a n e b g n a y ... r b e d a a l g o r i t a m s e g a n e b g n a y ... Universitas Sumatera Utara 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Kata “teman” dengan nilai shiftl = 7 ; shiftr = 7. Bagian kiri teks t e m a n e r d a s a r k a n a n b r u g e a ... t e m a n e r d a s a r k a n a n b r u g e a ... Bagian kanan teks 5. Kembali ke langkah 1 untuk melakukan pencocokan string dan posisi indeks pencarian yang baru ditentukan dari nilai shift pada proses pre-processing algoritma BR. Pencocokan terus dilakukan hingga pattern berada ditengah teks n 2 . Apabila masih tidak terdapat kecocokan dengan pattern sampai di tengah teks, maka algoritma memberikan hasil kosong. Proses pencocokan string menggunakan algoritma TSW dapat dilihat pada gambar 3.9 sebagai berikut. Gambar 3.10 Pseudocode Algoritma Two Sliding Windows TSW Sumber : Hudaib et al 2008 r b e d a a l g o r i t a m t e m a n e b g n a y ... r b e d a a l g o r i t a m t e m a n e b g n a y ... L=m-1 text index used from left R=n-m-1-1 text index used from right Tindex=0; text index used to control the scanning process … Universitas Sumatera Utara Gambar 3.10 Pseudocode Algoritma Two Sliding Windows lanjutan Sumber : Hudaib et al 2008

3.3 Rancangan Antar Muka