Implementasi Algoritma Levenshtein Distance dan Boyer Moore untuk Fitur Autocomplete dan Autocorrect pada Aplikasi Katalog Perpustakaan Daerah Aceh Timur
IMPLEMENTASI ALGORITMA LEVENSHTEIN DISTANCE
DAN BOYER MOORE UNTUK FITUR AUTOCOMPLETE
DAN AUTOCORRECT PADA APLIKASI KATALOG
PERPUSTAKAAN DAERAH ACEH TIMUR
SKRIPSI
TEUKU IGHFAR HAJAR
131421063
PROGRAM STUDI S1 EKSTENSI ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
(2)
IMPLEMENTASI ALGORITMA LEVENSHTEIN DISTANCE
DAN BOYER MOORE UNTUK FITUR AUTOCOMPLETE
DAN AUTOCORRECT PADA APLIKASI KATALOG
PERPUSTAKAAN DAERAH ACEH TIMUR
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh
ijazah Sarjana Ilmu Komputer
TEUKU IGHFAR HAJAR
131421063
PROGRAM STUDI S1 EKSTENSI ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
(3)
PERSETUJUAN
Judul : IMPLEMENTASI ALGORITMA LEVENSHTEIN
DISTANCE DN BOYER MOORE UNTUK FITUR
AUTOCOMPLETE DAN AUTOCORRECT PADA
APLIKASI KATALOG PERPUSTAKAAN
ACEH TIMUR
Kategori : SKRIPSI
Nama : TEUKU IGHFAR HAJAR
Nomor Induk Mahasiswa : 131421063
Program Studi : SARJANA (S1) ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI (FASILKOMTI) UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, 2 Agustus 2015
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Maya Silvi Lydia, B.Sc, M.Sc Dr. Poltak Sihombing, M.Kom
NIP. 19740127 200212 2 001 NIP. 19620317 199103 1 001
Diketahui/Disetujui oleh
Program Studi S1 Teknologi Informasi Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 19620317 199103 1 001
(4)
PERNYATAAN
IMPLEMENTASI ALGORITMA LEVENSHTEIN DISTANCE DAN BOYER
MOORE UNTUK FITUR AUTOCOMPLETE DAN AUTOCORRECT PADA
APLIKASI PERPUSTAKAAN DERAH ACEH TIMUR
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, Juni 2015
Teuku Ighfar Hajar
131421063
(5)
PENGHARGAAN
Puji dan syukur kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Ny a, sehingga Penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer pada Program Studi S1 Ilmu Komputer Universit as Sumatera Utara.
Penulis ingin menyampaikan rasa hormat dan terima kasih yang sebesar–besar nya kepada :
1. Bapak Prof. Dr. Subhilhar, M.A., Ph.D. selaku Plt Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan
Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu
Komputer Universitas Sumatera Utara dan Dosen Pembimbing I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
4. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi S1 Ilmu
Komputer Universitas Sumatera Utara dan sebagai Dosen Pembimbing II yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini..
6. Bapak M. Andri Budiman, ST, M.Comp, Sc.M.E.M selaku Dosen Pembanding
I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
7. Bapak Ade Candra ST, M.Kom selaku Dosen Pembanding II yang telah
memberikan kritik dan saran dalam penyempurnaan skripsi ini.
9. Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi
Universitas Sumatera Utara, seluruh tenaga pengajar serta pegawai di Program Studi S1 Ilmu Komputer Fasilkom-TI USU.
10.Ayahanda H. Bustami T. Ibrahim, S.Ag dan Ibunda Hj. Farida AR yang selalu memberikan doa dan dukungan serta kasih sayang kepada penulis, serta kakanda tersayang Miftahul Wardah, S.Si, Musriyani Safitri, S.Si, Teuku Muarrif Ikramullah, S.Kom dan adik tersayang Teuku Ichsanul Aulia yang terus memberikan dukungan dan dorongan bagi penulis untuk menyelesaikan skripsi ini.
(6)
11. Sahabat terbaik saya, terutama Satriyo Wibowo,Ryan Dhika Priyatna, Adli Abdillah Nababan, Ade Rizka, Nurul Zakya Haque,Fera Ferdian,Wiwin Agustini Lubis, Tiany Dwi Lestari, Ratno Zulita dan Tika Puspita Sari serta teman-teman seperjuangan yang sedang menyelesaikan skripsinya terutama stambuk 2013 terkhusus kom B atas semangat dan dorongannya dan Padlian Chairi yang membantu dalam menyelesaikan skripsi ini.
12. Buat Silvia Bilqis Magdalena yang selalu memberikan semangat dan
dorongannya sehingga saya bersemangat dalam menyelesaikan skripsi saya ini.
13. Sahabat kecil saya, Sayed Multazam, Teuku Nazarullah dan Cahya Isna Kirani Lubis atas semangat dan dorongannya membantu dalam menyelesaikan skripsi ini.
14.Dan semua pihak yang telah banyak membantu yang tidak bisa disebutkan
satu-persatu.
Semoga semua kebaikan, bantuan, perhatian, serta dukungan yang telah diberikan kep ada penulis mendapatkan pahala yang melimpah dari Allah SWT.
Medan, Juni 2015
Penulis
(7)
ABSTRAK
Katalog perpustakaan adalah suatu media yang dapat menampilkan sejumlah data buku atau koleksi pada suatu perpustakaan. Dengan mencari judul buku pada katalog perpustakaan maka informasi mengenai judul buku yang dicari dapat diperoleh dengan mudah. Namun, terkadang dalam pengetikan judul buku terdapat kendala ketika ingin memperoleh informasi mengenai judul buku yang dicari. Kendala tersebut adalah kesalahan dalam pengetikan judul buku pada kotak pencarian. Kesalahan dalam pengetikan judul buku tersebut akan mengakibatkan informasi dari buku tersebut tidak dapat ditemukan. Oleh karena itu, diperlukan suatu aplikasi yang dapat membantu penguna ketika mengetikkan judul buku yang akan dicari seperti
autocomplete dan autocorrect. Autocomplete merupakan suatu fitur atau layanan yang
dapat menampilkan prediksi kata yang diketikkan belum lengkap, sedangkan
autorrect merupakan suatu fitur/layanan yang dapat menampilkan perbaikan kata.
Algoritma Levenshtein Distance merupakan algoritma pencocokan string berdasarkan pendekatan perkiraan dan digunakan untuk menampilkan autocorrect sedangkan algoritma Boyer Moore adalah algoritma pencocokan string berdasarkan lompatan dari setiap string yang digunakan untuk menghasilkan autocomplete. Keluaran yang dihasilkan dari sistem ini berupa prediksi judul buku yang diketikkan oleh pengguna
Kata kunci : Algoritma Levenshtein Distance, Algoritma Boyer Moore, Autocomplete,
Autocorrect, katalog perpustakaan, Aceh Timur
(8)
Implementation Levenshtein Distance Algorithm and Boyer Moore for Autocomplete and Autocorrect Feature in Aceh Timur’s Library Catalog
ABSTRACT
A library catalogue is a medium which can show some data, book, or collection in a library by searching for a title in the library catalogue. Therefore, the information connected to the title which the readers are looking for can be found easily. However, sometimes, there are some difficulties in searching some books by using its title. The difficulties are the type missing in the searching box. As a result, the book which is searched for cannot be found. Therefore, it is needed to create an application to help the users when they type the title of the book,with some essential feature such as auto complete and autocorrect. Autocomplete is a feature that can show missing word. Algorithm Levenshtein Distance is an algorithm which can match string based on hypotheses approach. Boyer Moore is used to make autocomplete. The output create from this system is a oprediction of the book’s title that is typed by the users.
Keywords: Algorithm Levenshtein Distance, Algoritm Boyer Moore, Autocomplete, Autocorrect, Library catalogue, Aceh Timur
(9)
DAFTAR ISI
Halaman
PERSETUJUAN ii
PERNYATAAN iii
PENGHARGAAN iv
ABSTRAK vi
ABSTRACT vii
DAFTAR ISI viii
DAFTAR TABEL x
DAFTAR GAMBAR xi
Bab 1 PENDAHULUAN
1.1 Latar Belakang 1
1.2 Rumusan Masalah 3
1.3 Ruang Lingkup Penelitian 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 4
1.6 Metode Penelitian 4
1.7 Sistematika Penulisan 5
BAB 2 LANDASAN TEORI
2.1 Katalog Perpustakaan 6
2.2 Fitur atau Layanan Autocomplete 7
2.3 Fitur atau Layanan Autocorrect 8
2.4 Approximate String Matching 8
2.4.1 Operasi penghapusan 8
2.4.2 Operasi penyisipan 9
2.4.3 Operasi penukaran 10
2.5 Algoritma Levenshtein Distance 10
2.6 Algoritma Boyer Moore 13
2.6.1 Cara Kerja Algoritma Boyer Moore 16
2.6.2 Prosedur Algoritma Boyer Moore 19
2.7 Penelitian Terdahulu 22
(10)
BAB 3 ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Masalah 24
3.2 Analisis Kebutuhan Sistem 25
3.2.1 Kebutuhan fungsional sistem 25
3.2.2 Kebutuhan nonfungsional sistem 26
3.3 Pemodelan sistem 27
3.3.1 Use case Diagram 27
3.3.2 Activity Diagram 29
3.3.3 Sequence Diagram 31
3.4 Analisis Data 31
3.5 Perancangan Sistem 34
3.5.1 Flowchart sistem Autocomplete 34
3.5.2 Proses pencarian Boyer Moore untuk autocomplete 35
3.5.3 Flowchart sistem Autocorrect 40
3.5.4 Proses pencarian pada Levenshtein Distance untuk 41
3.6 Antarmuka Sistem 51
3.6.1 Flowchart Sistem 52
3.6.2 Rancangan Halaman Awal User 53
3.6.3 Rancangan Halaman Hasil pencarian Judul Buku 53
3.6.4 Rancangan Halaman Informasi Data Buku 54
3.6.5 Rancangan Halaman Login Admin 54
3.6.6 Rancangan Halaman Awal/Home Admin 55
3.6.7 Rancangan Halaman Daftar Buku 55
3.6.8 Rancangan Halaman Tambah Buku 56
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM 4.1 Perhitungan Nilai Levenshtein Distance dan Boyer Moore pada Fitur Autocomplete dan Autocorrect secara manual 57 4.1.1 Perhitungan Nilai Levenshtein Distance Untuk Fitur Autocorrect 57
4.1.1.1 Potongan Program dari Metode Levenshtein Distance 59
4.1.2 Perhitungan Nilai Boyer Moore untuk Fitur Autocomplete 61
4.1.2.1Potongan Program dari Metode Boyer Moore 65
4.2 Pengujian Sistem
4.2.1 Rencana Pengujian Sistem 67
4.2.2 Pengujian fungsi dasar sistem 67
4.2.3 Pengujian hasil pencarian autocorrect 68
4.2.4 Pengujian hasil pencarian autocomplete 69
(11)
4.3 Implementasi Perancangan Antarmuka 69
4.3.1 Tampilan halaman awal user 70
4.3.2 Tampilan halaman hasil pencarian judul buku 70
4.3.3 Tampilan halaman informasi data buku 71
4.3.4 Tampilan halaman login admin 71
4.3.5 Tampilan halaman awal admin 72
4.3.6 Tampilan halaman daftar buku 73
4.3.7 Tampilan halaman tambah buku 73
4.3.8 Tampilan halaman edit buku 74
BAB 5 KESIMPULAN DAN SARAN
5.1 Kesimpulan 75
5.2 Saran 76
DAFTAR PUSTAKA 77
LAMPIRAN
(12)
DAFTAR TABEL
Halaman
Tabel 2.1 Penelitian sebelumnya 22
Tabel 3.1 Tabel Use Case Proses Pencarian Judul Buku 28
Tabel 3.2 Keterangan Bagian-Bagian Rancangan Halaman Utama 30
Tabel 3.3 Sampel Data Buku 32
Tabel 3.4 Occurence Heuristic 37
Tabel 3.5 Math Heuristic 37
Tabel 3.6 Math Heuristic 39
Tabel 4.1 Occurence Heuristic 63
Tabel 4.2 Math Heuristic 63
Tabel 4.3 Tabel nilai OH dan MH 65
Tabel 4.4 Rencana Pengujian Sistem 67
Tabel 4.5 Hasil Pengujian Fungsi Dasar Sistem 68
Tabel 4.6 Pengujian Hasil pencarian Autocorrect 68
Tabel 4.7 Pengujian Hasil pencarian Autocomplete 69
(13)
DAFTAR GAMBAR
Halaman
Gambar 2.1 Ilustrasi Penggunaan Autocomplete 7
Gambar 2.2 Ilustrasi Penggunaan Autocorrect 8
Gambar 2.3 Good-Suffix shift u 14
Gambar 2.4 Good-Suffix shift 14
Gambar 2.5 Bad Character shift 15
Gambar 2.6 Bad Character shift 15
Gambar 2.7 Prosedur preBmBc algoritma Boyer Moore 19
Gambar 2.8 Prosedur preBmGs algoritma Boyer Moore 21
Gambar 3.1 Diagram Ishikawa untuk lingkup penelitian 25
Gambar 3.2 Use case diagram 27
Gambar 3.3 Activity diagram 29
Gambar 3.4 Sequence diagram sistem 31
Gambar 3.5 Flowchart sistem autocorrect 34
Gambar 3.6 Pencocokan 1 35
Gambar 3.7 Pencocokan 2 36
Gambar 3.8 Pencocokan 3 36
Gambar 3.9 Proses pencarian Math Heuristic 1 38
Gambar 3.10 Proses pencarian Math Heuristic 2 38
Gambar 3.11 Proses pencarian Math Heuristic 3 38
Gambar 3.12 Proses pencarian Math Heuristic 4 39
Gambar 3.13 Flowchart sistem autocorrect 40
Gambar 3.14 Flowchart sistem 52
Gambar 3.15 Rancangan halaman awal 53
Gambar 3.16 Rancangan halaman hasil pencarian judul buku 53
Gambar 3.17 Rancangan halaman informasi data buku 54
Gambar 3.18 Rancangan halaman login untuk admin 54
Gambar 3.19 Rancangan halaman awal/home admin 55
Gambar 3.20 Rancangan halaman daftar buku 55
Gambar 3.21 Rancangan halaman tambah buku 56
Gambar 4.1 Pencocokan 1 61
Gambar 4.2 Pencocokan 2 62
Gambar 4.3 Pencocokan 3 62
Gambar 4.4 Proses pencarian Math Heuristic 2 64
Gambar 4.5 Proses pencarian Math Heuristic 3 64
Gambar 4.6 Proses pencarian Math Heuristic 4 65 Gambar 4.7 Tampilan halaman awal user 67
Gambar 4.8 Tampilan halaman hasil pencarian judul buku 67
(14)
Gambar 4.9 Tampilan halaman informasi data buku 68
Gambar 4.10 Tampilan halaman login admin 69
Gambar 4.11 Tampilan halaman awal admin 69
Gambar 4.12 Tampilan halaman daftar buku 70
Gambar 4.13 Tampilan halaman tambah buku 70
Gambar 4.14 Tampilan halaman edit buku 71
Gambar 4.15 Autocomplete untuk “panduan” 72
Gambar 4.16 Autocorrect untuk “sehat”
73
(15)
ABSTRAK
Katalog perpustakaan adalah suatu media yang dapat menampilkan sejumlah data buku atau koleksi pada suatu perpustakaan. Dengan mencari judul buku pada katalog perpustakaan maka informasi mengenai judul buku yang dicari dapat diperoleh dengan mudah. Namun, terkadang dalam pengetikan judul buku terdapat kendala ketika ingin memperoleh informasi mengenai judul buku yang dicari. Kendala tersebut adalah kesalahan dalam pengetikan judul buku pada kotak pencarian. Kesalahan dalam pengetikan judul buku tersebut akan mengakibatkan informasi dari buku tersebut tidak dapat ditemukan. Oleh karena itu, diperlukan suatu aplikasi yang dapat membantu penguna ketika mengetikkan judul buku yang akan dicari seperti
autocomplete dan autocorrect. Autocomplete merupakan suatu fitur atau layanan yang
dapat menampilkan prediksi kata yang diketikkan belum lengkap, sedangkan
autorrect merupakan suatu fitur/layanan yang dapat menampilkan perbaikan kata.
Algoritma Levenshtein Distance merupakan algoritma pencocokan string berdasarkan pendekatan perkiraan dan digunakan untuk menampilkan autocorrect sedangkan algoritma Boyer Moore adalah algoritma pencocokan string berdasarkan lompatan dari setiap string yang digunakan untuk menghasilkan autocomplete. Keluaran yang dihasilkan dari sistem ini berupa prediksi judul buku yang diketikkan oleh pengguna
Kata kunci : Algoritma Levenshtein Distance, Algoritma Boyer Moore, Autocomplete,
Autocorrect, katalog perpustakaan, Aceh Timur
(16)
Implementation Levenshtein Distance Algorithm and Boyer Moore for Autocomplete and Autocorrect Feature in Aceh Timur’s Library Catalog
ABSTRACT
A library catalogue is a medium which can show some data, book, or collection in a library by searching for a title in the library catalogue. Therefore, the information connected to the title which the readers are looking for can be found easily. However, sometimes, there are some difficulties in searching some books by using its title. The difficulties are the type missing in the searching box. As a result, the book which is searched for cannot be found. Therefore, it is needed to create an application to help the users when they type the title of the book,with some essential feature such as auto complete and autocorrect. Autocomplete is a feature that can show missing word. Algorithm Levenshtein Distance is an algorithm which can match string based on hypotheses approach. Boyer Moore is used to make autocomplete. The output create from this system is a oprediction of the book’s title that is typed by the users.
Keywords: Algorithm Levenshtein Distance, Algoritm Boyer Moore, Autocomplete, Autocorrect, Library catalogue, Aceh Timur
(17)
BAB 1 PENDAHULUAN
1.1.Latar Belakang
Kemajuan teknologi pada masa sekarang sangat membantu serta memberi kemudahan bagi manusia dalam melakukan berbagai aktivitas, khususnya aktivitas yang berkaitan dengan informasi seperti mencari informasi buku, mencari bahan kuliah, mencari informasi seseorang, dan lain-lain. Jika informasi yang dicari memiliki jumlah yang masih sedikit, pencarian dapat dilakukan secara manual. Namun jika informasi yang dicari sudah memiliki jumlah yang banyak dan besar maka pengguna akan mengalami kesulitan dalam mencari informasi yang dicari (Chiquita, 2011). Untuk memperoleh informasi dengan cepat dan mudah dari banyaknya kumpulan informasi maka dapat menggunakan mesin pencari.
Mesin pencari merupakan program komputer yang dirancang agar mampu menemukan informasi yang dicari dari banyaknya kumpulan informasi yang tersedia Dengan adanya mesin pencari setiap orang dapat dengan mudah memperoleh informasi yang diinginkan. Dengan mengetikkan kata yang ingin dicaripada mesin pencari maka seluruh informasi yang diinginkan akan ditampilkan. Namun sejumlah penelitian terhadap mesin pencari menyimpulkan bahwa rata-rata kesalahan dalam pengetikan kata yang dicari yang dilakukan oleh pengguna cukup tinggi ,kesalahan dalam pengetikan kata yang dicari oleh pengguna dapat menyebabkan informasi yang dicari tidak dapat ditemukan.Untuk itu dibutuhkan penambahan fitur yang dapat membantu pengguna ketika mengetik, dimana fitur tersebut dapat menampilkan prediksi kata seperti autocomplete dan autocorrect yang dapat membantu pengguna untuk mengetikkan kata pada mesin pencari.
(18)
Autocomplete merupakan fitur atau layanan yang dapat menampilkan prediksi kata
jika kata yang diketikkan belum lengkap (Chiquita, 2011). Beberapa penelitian yang berkaitan dengan masalah ini diantaranya yaitu penelitian yang pernah dilakukan oleh (Chiquita, 2011), pada penelitiannya Chiquita menerapkan algoritma Boyer-Moore untuk layanan autocomplete dan menggunakan algoritma Dynamic Programming untuk layanan
autocorrect untuk mencari kata di dalam paragraf. Kemudian selanjutnya penelitian yang
pernah dilakukan oleh Chiquita (2011), pada penelitiannya Kusuma melakukan pencocokan string untuk fitur autocompletion pada text editor atau integrated development environment
(IDE) menggunakan algoritma Brute Force dan KMP. Selanjutnya penelitian yang pernah
dilakukan oleh Pradhana (2012), pada penelitiannya Pradhana menerapkan algoritma string
matching seperti Brute Force, Knuth-Morris Pratt dan Boyer-Moore untuk fitur autocorrect
dan fitur autotext pada smart phones. Pada penelitian ini, penulis akan mensimulasikan algoritma Levenshtein Distance dan Boyer Moore untuk menghasilkan fitur autocomplete dan
autocorrect. Pada simulasinya fitur autocomplete digunakan untuk membantu pengetikan
judul buku pada aplikasi katalog perpustakaan, sedangkan autocomplete untuk membenarkan pencarian judul buku yang dicari. Algoritma Levenshtein Distance dan Boyer Moore merupakan salah satu algoritma Approximate String Matching yang digunakan dalam pencarian string berdasarkan pendekatan perkiraan (Adiwidya, 2009). Pada penelitian sebelumnya algoritma string matching seperti Brute Force,, dan Knuth-Morris Pratt melakukan pencocokan secara bertahap pada seluruh rangkaian string sehingga memiliki proses yang cenderung panjang dan rumit.Sedangkan algoritma Levenshtein Distance melakukan modifikasi dengan mengubah suatu string menjadi string yang lain sehingga prosesnya lebih sederhana.
Algoritma Levenshtein Distance terbukti dapat menyelesaikan beberapa permasalahan dalam penelitian ilmiah, beberapa penelitian yang pernah dilakukan yang berkaitan dengan algoritma Levenshtein Distance, diantaranya yaitu Adriyani (2012) menggunakan algoritma
Levenstein Distance dan metode empiris untuk menampilkan saran perbaikan kesalahan
pengetikan dokumen berbahasa Indonesia, (2010) di dalam penelitiannya menggunakan algoritma Levenshtein Distance untuk menampilkan string suggestion pada aplikasi seperti
spell checker dan kamus. Selanjutnya Benisius (2010) menggunakan algoritma Levenshtein Distance untuk sistem pengoreksian kata kunci, dimana di dalam penelitiannya Benisius
melakukan studi kasus terhadap website Universitas Halmahera. Di dalam penelitiannya juga, Benisius menggunakan proses crawling dan indexing untuk mengumpulkan informasi dari
(19)
website Universitas Halmahera untuk dicocokkan dengan kata kunci sebagai hasil koreksi
kata kunci.
1.2.Rumusan Masalah
1. Bagaimana cara kerja fitur autocomplete dan fitur autocorrect dalam proses pencarian judul buku pada katalog perpustakaan menggunakan Algoritma Levenshtein Distance dan Algoritma Boyer Moore?
1.3.Ruang Lingkup Penelitian
Adapun batasan masalah yang diberikan pada penelitian ini adalah sebagai berikut :
1. Peneliti menerapkan algoritma Levenshtein Distance pada fitur autocorrect dan
Algoritma Boyer Moore pada fitur autocomplete.
2. Data koleksi perpustakaan yang akan digunakan di dalam penelitian hanya data buku saja seperti judul buku, pengarang, penerbit, tahun terbit, edisi, jenis, deskripsi, subjek, bahasa dan jumlah eksemplar, sedangkan jurnal dan kumpulan dokumen pendidikan yang lain tidak diikut sertakan.
3. Data judul buku yang diambil berasal dari Dinas Perpustakaan dan Arsip Daerah Aceh Timur
4. Dalam hal ini peneliti menggunakan PHP (Hypertext Prepocessor) dan MySQL
sebagai DBMS
1.4.Tujuan Penelitian
Mensimulasikan algoritma Levenshtein Distance dan Boyer Moore dalam membuat fitur
autocomplete dan autocorrect pada aplikasi katalog perpustakaan Daerah Aceh Timur agar
dapat membantu pengguna ketika menuliskan judul buku yang ingin dicari.
1.5. Manfaat Penelitian
Manfaat yang diharapkan dari penelitian ini adalah
(20)
1. Membantu pengguna dalam mencari buku dengan menggunakan aplikasi perpustakaan ini.
2. Menerapkan fitur autocomplete dan autocorrect untuk mempermudah dalam
pencarian buku pada aplikasi ini.
3. Mempersingkat waktu serta keefesienan waktu dalam pencarian judul buku pada
aplikasi ini.
1.6. Metode Penelitian
Adapun metode penelitian yang akan digunakan adalah:
1. Studi Literatur
Pada tahap ini dilakukan dengan membaca dan mempelajari lebih dalam buku-buku referensi, jurnal atau sumber-sumber penelitian lain yang berkaitan dengan autocomplete serta teori algoritma Levenshtein Distance.
2. Analisis dan Perancangan Desain Sistem
Pada tahap ini akan dilakukan analisis terhadap penerapan algoritma Levenshtein
Distance pada autocomplete, serta perancangan aplikasi, antara lain: menggambar flowchart, use case, DFD dan perancangan antarmuka atau interface.
3. Implementasi Sistem
Pada tahap ini akan dilakukan pengkodean dan menerapkan perancangan aplikasi tersebut ke dalam bahasa pemrograman PHP dan MYSQL.
4. Pengujian Sistem
Pada tahap ini akan dilakukan pengujian terhadap aplikasi apakah telah memenuhi kriteria atau tidak.
5. Dokumentasi Sistem
Pada tahap ini akan dilakukan penulisan laporan mengenai aplikasi tersebut yang bertujuan untuk menunjukkan hasil penelitian ini.
(21)
1.7.Sistematika Penulisan
Sistematika penulisan dari skripsi ini terdiri dari lima bagian utama sebagai berikut:
BAB 1: PENDAHULUAN
Bab ini akan menjelaskan tentang latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.
BAB 2: LANDASAN TEORI
Bab ini akan menjelaskan tentang segala teori yang berkaitan dengan penelitian seperti pengertian autocomplete, pembahasan algoritma Levenshtein Distance, penelitian-penelitian terdahulu dan teori-teori lainnya yang berkaitan dengan penelitian.
BAB 3: ANALISIS DAN PERANCANGAN SISTEM
Bab ini berisi analisis terhadap fokus permasalahan penelitian dan perancangan sistem yang akan dibangun seperti menggambar flowchart atau diagram alur kerja system, analisis terhadap proses kerja algoritma Levenshtein Distance pada autocomplete dan perancangan antarmuka atau interface.
BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM
Bab ini berisi pembahasan tentang implementasi algoritma yang disusun pada bab 3 dan pengujian terhadap sistem yang dibangun.
BAB 5: KESIMPULAN DAN SARAN
Bab ini memuat kesimpulan dari keseluruhan uraian bab-bab sebelumnya dan saran yang diperoleh yang diharapkan dapat bermanfaat untuk pengembangan program selanjutnya.
(22)
BAB 2
LANDASAN TEORI
Pada bab ini akan dibahas tentang teori-teori dan konsep dasar yang mendukung pembahasan dari sistem yang akan dibuat.
2.1. Katalog Perpustakaan
Katalog perpustakaan adalah suatu media yang dibutuhkan oleh perpustakaan agar dapat memudahkan pengunjung dalam memperoleh informasi mengenai koleksi apa saja yang dimiliki oleh perpustakaan.
Ada beberapa pengertian tentang katalog perpustakaan, antara lain yaitu :
a. Gates (1989) menyatakan bahwa katalog perpustakaan adalah suatu daftar yang
sistematis dari buku dan bahan-bahan lain dalam suatu perpustakaan, dengan informasi deskriptif mengenai pengarang, judul, penerbit, tahun terbit, bentuk fisik, subjek, dan ciri khas bahan.
b. Sulistyo-Basuki (1991) menyatakan bahwa katalog perpustakaan adalah senarai
dokumen yang dimiliki sebuah perpustakaan atau kelompok perpustakaan
2.2. Fitur atau Layanan Autocomplete
(23)
Autocomplete merupakan pola yang pertama kali muncul dalam bantuan fungsi aplikasi
dekstop, dimana pengguna mengentrikan teks ke dalam kotak kemudian saran pengetikan
akan muncul secara otomatis . Autocomplete memecahkan beberapa masalah umum pada pengetikan (Morville & Callender, 2010) yaitu :
a. Mengetik membutuhkan waktu.
b. Pengguna tidak dapat mengeja kata dengan baik.
c. Pengguna sering salah atau lupa ketika mengetikkan kata-kata, sulit mengingat istilah yang tepat.
Autocomplete bekerja ketika pengguna menulis huruf pertama atau beberapa huruf/karakter
dari sebuah kata, program yang melakukan prediksi akan mencari satu atau lebih kemungkinan kata sebagai pilihan. Jika kata yang dimaksud ada dalam pilihan kata prediksi maka kata yang dipilih tersebut akan disisipkan pada teks (Kusuma, 2012). Saat ini
autocomplete tidak hanya terdapat pada dekstop, tetapi terdapat juga pada web browser, email-programs, search engine interface, source code editors, database query tools, word processor, dan command line interpreters (Kusuma, 2012). Ilustrasi penggunaan layanan autocomplete dapat dilihat pada gambar 2.1.
Gambar 2.1. Ilustrasi Penggunaan Autocomplete
2.3. Fitur atau layanan Autocorrect
Auto Correct adalah fitur yang berguna untuk memberikan sugesti kata (suggestion). Dengan
mengetikkan beberapa huruf atau seluruh huruf maka sistem akan mencari kedalam database
(24)
apakah ada kata yang memenuhi kriteria dari huruf-huruf yang dimasukkan untuk mencari judul buku,penerbit bahkan pengarang dari buku tersebut. Ilustrasi penggunaan fitur autocorrect dapat dilihat pada gambar 2.2
Gambar 2.2. Ilustrasi Penggunaan Autocorrect
2.4. Approximate String Matching
Approximate string matching merupakan pencocokan string dengan dasar kemiripan dari segi
penulisannya (jumlah karakter dan susunan karakter), tingkat kemiripan ditentukan dengan jauh tidaknya beda penulisan dua buah string yang dibandingkan tersebut (Haryanto, 2011). Operasi mengubah string ini bisa berupa mengubah satu huruf ke huruf yang lain, menghapus satu huruf dari string, atau memasukkan satu huruf ke dalam string. Operasi-operasi ini digunakan untuk menghitung jumlah perbedaan yang diperlukan untuk pertimbangan kecocokan suatu string dengan string sumber, jumlah perbedaan tersebut diperoleh dari penjumlahan semua pengubahan yang terjadi dari masing-masing operasi. Penggunaan perbedaan tersebut diaplikasikan dalam berbagai macam algoritma, seperti Hamming, Levenshtein, Damerau-Levenshtein, Jaro-Winkler, Wagner-Fischer, dan lain-lain (Husain, 2013). Operasi penghitungan tersebut meliputi tiga operasi string seperti di bawah ini (Adiwidya, 2009).
2.4.1. Operasi penghapusan
Operasi penghapusan dilakukan dengan menghapus karakter pada indeks tertentu untuk menyamakan string sumber (S) dengan string target (T), misalnya S= matching dan T= match. Penghapusan dilakukan untuk karakter i pada lokasi ke-6, penghapusan karakter n
(25)
pada lokasi ke-7, penghapusan karakter g pada lokasi ke-8. Operasi penghapusan tersebut menunjukkan tranformasi S ke T, ilustrasinya adalah sebagai berikut :
1 2 3 4 5 6 7 8
T = m a t c h - - -
S = m a t c h i n g
2.4.2. Operasi penyisipan
Operasi penyisipan dilakukan dengan menyisipkan karakter pada indeks tertentu untuk menyamakan string sumber (S) dengan string target (T), misalnya S= cerdas dan T= kecerdasan. Operasi penyisipan dapat dilakukan dengan menyisipkan e pada posisi 2, menyisipkan c pada posisi 3, menyisipkan a pada posisi 8 dan menyisipkan n pada posisi 9. Yang dapat diilustrasikan sebagai berikut:
K e c e r d a s a n
K - - e r d a s - -
1 2 3 4 5 6 7 8 9
T = K e c e r d a s a n
S = K - - e r d a s - -
e c a n
2.4.3. Operasi penukaran
Operasi penukaran dilakukan dengan menukar karakter pada indeks tertentu untuk menyamakan string sumber (S) dengan string target (T), misalnya S= computer dan T= komputer. String S ditranformasikan menjadi T dengan melakukan penggantian (substitusi) pada posisi ke-1. Huruf C ditukar menjadi K. Prosesnya dapat diilustrasikan sebagai berikut:
(26)
1 2 3 4 5 6 7 8
T = k o m p u t e r
S = c o m p u t e r
k
2.5. Algoritma Levenshtein Distance
Algoritma Levenshtein Distance ditemukan oleh Vladimir Levenshtein, seorang ilmuan asal Rusia pada tahun 1965 (Janowski, 2010), algoritma ini sering juga disebut dengan Edit Distance (Husain,2013). Yang dimaksud dengan distance adalah jumlah modifikasi yang dibutuhkan untuk mengubah suatu bentuk string ke bentuk string yang lain, sebagai contoh hasil penggunaan algoritma ini, string “komputer” dan “computer” memiliki distance 1 karena hanya perlu dilakukan satu operasi saja untuk mengubah satu string ke string yang lain. Dalam kasus dua string di atas, string “computer” dapat menjadi
“komputer” hanya dengan melakukan satu penukaran karakter „c‟ menjadi „k‟ (Andhika,
2010). Algoritma Levenshtein Distance digunakan secara luas dalam berbagai bidang, misalnya mesin pencari, pengecek ejaan (spell checking), pengenal pembicaraan (speech recognition), pengucapan dialek, analisis DNA, pendeteksi pemalsuan, dan lain-lain. Algoritma ini menghitung jumlah operasi string paling sedikit yang diperlukan untuk mentransformasikan suatu string menjadi string yang lain (Adiwidya, 2009). Algoritma Levenshtein Distance bekerja dengan menghitung jumlah minimum pentranformasian suatu string menjadi string lain yang meliputi penghapusan, penyisipan, dan penukaran (Husain, 2013). Selisih perbedaan antar string dapat diperoleh dengan memeriksa apakah suatu string sumber sesuai dengan string target. Nilai selisih perbedaan ini disebut juga Edit distance/ jarak Levenhstein. Jarak Levenshtein antar string s dan string t tersebut adalah fungsi D yang memetakan (s,t) ke suatu bilangan real nonnegatif, sebagai contoh diberikan dua buah string s = s(1)s(2)s(3)...s(m) dan t = t(1)t(2)t(3)...t(n) dengan | s | = m dan | t | = n sepanjang alfabet V berukuran r sehingga s dan t anggota dari V*. S(j) adalah karakter pada posisi ke-j pada string s dan t(i) adalah karakter pada posisi ke-i pada string t. Sehingga jarak Levenshtein dapat didefinisikan sebagai (Harahap, 2013).
(27)
D ( s, t) adalah banyaknya operasi minimum dari operasi penghapusan, penyisipan dan penukaran untuk menyamakan string s dan t. Pada implementasi pencocokan antar string, ketiga operasi tersebut dapat dilakukan sekaligus untuk menyamakan string sumber dengan string target seperti pada contoh berikut ini. Jika diberikan string sumber (S) = “pemrograman” dan T = “ algoritma” merupakan string target, dengan | s | = 11, | t | = 9, maka proses pencocokan string dapat diilustrasikan sebagai berikut :
1 2 3 4 5 6 7 8 9 10 11
T = a l g o r i t m a - -
S = p e m p r o s e s a n
a l g o i t m a
Pada contoh di atas terlihat bahwa proses penukaran karakter „p‟ pada indeks ke-1, „e‟ pada indeks ke-2,”m” pada indeks ke-3, ‟p‟ pada indeks ke-4, ‟o‟ pada indeks ke-6, ‟s‟ pada indeks ke-7, ‟e‟ pada indeks ke-8, penyisipan karakter „g‟ pada indeks ke-3 dan proses penghapusan karakter „a‟ pada indeks ke-9, dan „n‟ pada indeks ke-11. Maka jarak Levenshtein antara S dan T adalah sebagai berikut ini.
(28)
= d( s1, t1 ) + d( s2, t2 ) + d( s3, t3 ) + d( s4, t4 ) + d( s5, t5 ) +
d( s6, t6 ) + d( s7, t7 ) + d( s8, t8 ) + d( s9, t9 ) + d( s10, t10 ) +
d( s11, t11 ) + d( s12, t12 )
= d( a, p ) + d( l, e ) + d( g, - ) + d( o, m ) + d( r, r ) + d( i, o) +
d( t, g ) + d( m, r) + d( a, a ) + d( -, m )+ d( -, a) + d(-, n)
= 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1
= 10
Sehingga jarak Levenshtein antara string T = “pemprosesan” dan T = “algoritma” adalah D(s, t) = 10.
2.6. Algoritma Boyer Moore
Algoritma Boyer Moore termasuk algoritma string matching yang paling efisien
dibandingkan algoritma-algoritma string matching lainnya. Karena sifatnya yang efisien,
banyak dikembangkan algoritma string matching dengan bertumpu pada konsep algoritma
Boyer Moore, beberapa di antaranya adalah algoritma Turbo BM dan algoritma Quick
Search.( Chiquita. 2012).
Algoritma Boyer Moore menggunakan metode pencocokan string dari kanan ke kiri
yaitu men-scan karakter pattern dari kanan ke kiri dimulai dari karakter paling kanan.
Algoritma Boyer Moore menggunakan dua fungsi shift yaitu good-suffix shift dan
(29)
character shift untuk mengambil langkah berikutnya setelah terjadi ketidakcocokan antara
karakter pattern dan karakter teks yang dicocokkan ( Sagita Vina, 2012).
1. Deskripsi kerja algoritma Boyer Moore
Untuk menjelaskan konsep dari good-suffix shift dan bad-character shift diperlukan
contoh kasus, seperti kasus ketidakcocokan ditengah pencocokan karakter pada teks dan
pattern. Karakter pattern x[i]=a tidak cocok dengan karakter teks y[i+j]=b saat pencocokan
pada posisi j. Maka x[i+l .. m-1]= y[i+j+1 .. j+m-1]=u dan x[i] ≠ y[i+j].
2. Good-suffix shift
Konsep dari fungsi good-suffix shift adalah sebagai berikut:
1. Good-suffix shift adalah pergeseran yang dibutuhkan dari x[i]=a ke karakter lain yang
letaknya lebih kiri dari x[i] dan terletak di sebelah kiri segmen u. Kasus ini ditunjukkan
pada Gambar 2.3.
y
x shift
x
Gambar 2.3 Good-suffix shift, u terjadi lagi didahului karakter c berbeda dari a
2. Jika tidak ada segmen yang sama dengan u, maka dicari u yang merupakan suffiks
terpanjang u. Kasus ini ditunjukkan pada Gambar 2.4
u b
u a
u c
u b
u a
v
(30)
y
x shift
x
Gambar 2.4 Good-suffix shift, hanya suffix dari u yang terjadi lagi di pattern x
3. Bad-character shift
Berdasarkan contoh kasus di atas, bad-character adalah karakter pada teks yaitu y
[i+j] yang tidak cocok dengan karakter pada pattern.
Konsep dari fungsi bad-character shift adalah sebagai berikut:
1. Jika bad-character y[i+j] terdapat pada pattern di posisi terkanan k yang lebih kiri dari
x[i] maka pattern digeser ke kanan sejauh i-k. Kasus ini ditunjukkan pada Gambar 2.5.
y
x shift x
Gambar 2.5 Bad-character shift, b terdapat di pattern x
2. Jika bad-character y[i+j] tidak ada pada pattern sama sekali, maka pattern digeser ke
kanan sejauh i. Kasus ini dit tunjukkan pada Gambar 2.6.
y
u b
u a
Contains no b b
u b
u a
Contains no b
(31)
x shift
x
Gambar 2.6 Bad-character shift, b tidak ada di pattern x
3. Jika bad-character y[i+j] terdapat pada pattern di posisi terkanan k yang lebih kanan
dari x[i] maka pattern seharusnya digeser sejauh i-k yang hasilnya negatif (pattern
digeser kembali ke kiri). Maka bila kasus ini terjadi. akan diabaikan.
Pada kasus ketidakcocokan di atas, algoritma akan membandingkan langkah yang
diambil oleh fungsi good-suffix shift dan bad-character shift di mana langkah yang paling
besar yang akan digunakan.
2.6.1 Cara kerja algoritma Boyer Moore
Cara kerja dari algoritma Boyer Moore adalah sebagai berikut:
1. Menjalankan prosedur preBmBc dan preBmGs untuk mendapatkan inisialisasi.
a.Menjalankan prosedur preBmBc. Fungsi dari prosedur ini adalah untuk
menentukan berapa besar pergeseran yang dibutuhkan untuk mencapai karakter
tertentu pada pattern dari karakter pattern terakhir/terkanan. Hasil dari prosedur
preBmBc disimpan pada tabel BmBc.
b.Menjalankan prosedur preBmGs. Sebelum menjalankan isi prosedur ini,
prosedur suffix dijalankan terlebih dulu pada pattern. Fungsi dari prosedur suffix
adalah memeriksa kecocokan sejumlah karakter yang dimulai dari karakter
terakhir/terkanan dengan sejumlah karakter yang dimulai dari setiap karakter
(32)
yang lebih kiri dari karakter terkanan tadi. Hasil dari prosedur suffix disimpan
pada tabel suff. Jadi suff[i] mencatat panjang dari suffix yang cocok dengan
segmen dari pattern yang diakhiri karakter ke-i.
c.Dengan prosedur preBmGs, dapat diketahui berapa banyak langkah pada pattern
dari sebeuah segmen ke segmen lain yang sama yang letaknya lebih kiri dengan
karakter di sebelah kiri segmen yang berbeda. Prosedur preBmGs menggunakan
tabel suff untuk mengetahui semua pasangan segmen yang sama. Contoh pada
Gambar 2.1, yaitu berapa langkah yang dibutuhkan dari au(u = segmen, a =
karakter di sebelah kiri u) ke cu yang mempunyai segmen u pada pattern dengan
karakter di sebelah kiri segmen yaitu c berbeda dari a dan terletak lebih kiri dari
au. Hasil dari prosedur preBmGs disimpan pada tabel BmGs.
2. Dilakukan proses pencarian string dengan menggunakan hasil dari prosedur preBmBc
dan preBmGs yaitu tabel BmBc dan BmGs.
Berikut ini diberikan contoh untuk menjelaskan proses inisialisasi dari algoritma Boyer
Moore dengan pattern gcagagag yang akan dicari pada string gcatcgcagagagtatacagtacg.
1. Dengan prosedur preBmBc, didapatkan jumlah pergeseran pada pattern yang
dibutuhkan untuk mencapai karakter a,c,g,t dari posisi terkanan. Berdasarkan contoh
diketahui untuk mencapai masing-masing karakter tadi dibutuhkan pergeseran
sebanyak 1, 6, 2 dan 8.
2. Dengan prosedur preBmGs, dijalankan prosedur suffix terlebih dulu. Dengan prosedur
suffix akan diketahui:
suff[0] = 1, 1 karakter g posisi 7 cocok dengan 1 karakter g posisi 0.
suff[1] = 0, karakter g posisi 7 tidak cocok dengan karakter c posisi 1.
(33)
suff[2] = 0, karakter g posisi 7 tidak cocok dengan karakter a posisi 2.
suff[3] = 2, 2 karakter dimulai dari karakter g posisi 7 cocok dengan 2 karakter
dimulai dari karakter g posisi 3, yang artinya karakter a,g posisi 6,7 cocok dengan
karakter a,g posisi 2,3.
suff[4] = 0, karakter g posisi 7 tidak cocok dengan karakter a posisi 4.
suff[5] = 4, 4 karakter dimulai dari karakter g posisi 7 cocok dengan 4 karakter
dimulai dari karakter 5,artinya karakter a,g,a,g posisi 4,5,6,7 cocok dengan karakter
a,g,a,g posisi 2,3,4,5.
suff[6] = 0,karakter g posisi 7 tidak cocok dengan karakter a posisi 6.
suff[7] = 8, 8 karakter g,c,a,g,a,g,a,g posisi 0,1,2,3,4,5,6,7 cocok dengan 8 karakter
g,c,a,g,a,g,a,g posisi 0,1,2,3,4,5,6,7.
3. Dengan prosedur BmGs akan didapatkan:
0 1 2 3 4 5 6 7
g c a g a g a g
bmGs[0]= 7, karakter ke-0 g adalah karakter sebelah kiri segmen cagagag.Tidak ada
segmen cagagag lain dengan karakter sebelah kiri bukan g maka digeser 7 langkah.
bmGs[1]= 7, karakter ke-1 c adalah karakter sebelah kiri segmen agagag. Tidak ada
segmen agagag lain dengan karakter sebelah kiri bukan c maka digeser 7 langkah.
bmGs[2]= 7, karakter ke-2 a adalah karakter sebelah kiri segmen gagag. Tidak ada
segmen gagag lain dengan karakter sebelah kiri bukan a maka digeser 7 langkah.
(34)
bmGs[3]= 2. karakter ke-3 g adalah karakter sebelah kiri segmen agag. Karena ada
segmen agag posisi 2,3,4,5 dengan karakter sebelah kiri bukan g yaitu c posisi 1 maka
digeser 2 langkah.
bmGs[4]= 7, karakter ke-4 a adalah karakter sebelah kiri segmen gag. Karena tidak ada
seamen gag lain dengan karakter sebelah kiri bukan a maka digeser 7 langkah.
bmGs[5]= 4. karakter ke-5 g adalah karakter sebelah kiri seamen ag. Karena ada
segmen ag posisi 2,3 dengan karakter sebelah kiri bukan g yaitu c posisi 1 maka
digeser 4 langkah.
bmGs[6]= 7, karakter ke-6 a adalah karakter sebelah kiri segmen yaitu a posisi 7.
Karena tidak ada segmen g dengan karakter sebelah kirinya bukan a maka digeser 7
langkah.
bmGs[7]= 1, karakter ke-7 g adalah karakter sebelah kiri segmen dan karena segmen
tidak ada maka digeser 1 langkah
2.6.2 Prosedur Algoritma Boyer Moore
procedure preBmBc(in/out x: string, m: integer, output BmBc: array of integer)
{ ASIZE = ukuran ∑ }
i traversal [0..ASIZE - 1]
BmBc[i] ← m i traversal [0..m - 2]
BmBc[x[i] ] ← m - i - 1
Gambar 2.7 Prosedur preBmBc algoritma Boyer Moore
procedure suffix (in/out x: string, m: integer, output suff: array of integer)
(35)
suff [m – 1] ← m g ← m – 1 i traversal [m – 2..0]
if ( i > g and suff [i + m -1 – f] < i – g) then
suff [i] ← suff [ i + m – 1 – f] else
if (i < g) then
g ← i f ← i
while (g ≥ 0 and x[g] ← x [ g + m - 1 - f ] ) do g ← g - 1
f ← i
while ( g ≥ 0 and x [g] ← x [g] + m - 1 - f ] ) do
g ← g - 1
suff [ i ] ← f - g
Gambar 2.7 Prosedur suffix algoritma Boyer Moore
procedure preBmGs(in/out x: string, m: integer, output BmGs: array of integer)
suffix (x, m, suff)
i traversal [0..m - 1]
BmGs[i] ← m i traversal [m – 1 .. -1]
if (I = - 1 or suff [i] = i + 1 ) then
(36)
j traversal [ 0 .. m - 2 - i ) do
if (BmGs [j] = m) then BmGs [j] ← m - 1 - i i traversal [0..m - 2]
BmGs [m - 1 - suff [i] ] ← m - 1 - i
Gambar 2.7 prosedur preBmGs algoritma Boyer Moore
procedure BM(in/out x,y: string, m,n: integer)
{ Preprocessing }
preBmGs(x, m, BmGs)
preBmBc(x, m, BmBc)
{ Searching }
j ← 0
while ( j ≤ n – m )do
i traversal [m - 1..0]
if (x[i] = y [ i + j ] ) then
if ( i < 0 )
OUTPUT ( j )
j ← j + BmGs [ 0 ]
else
j ← j + MAX( BmGs [i] , BmBc [ y [ i + j ] ] - m + 1 + i )
(37)
2.7 Penelitian Terdahulu
Pada bagian ini akan dijelaskan beberapa penelitian terdahulu, layanan autocorrect dan
autocomplete telah banyak digunakan pada penelitian terdahulu. Seperti layanan autocomplete dan autocorrect pada teks editor (Chiquita, 2011), dengan menggunakan
algoritma Boyer-Moore dan Dynamic Programming. Kemudian layanan autocorrect juga pernah diterapkan pada Smart Phones (Pradhana, 2012), dengan menggunakan kombinasi algoritma Brute Force, Boyer-Moore dan Knuth-Morris Pratt. Untuk lebih jelasnya, pada tabel 2.1 berikut akan dijelaskan penelitian-penelitian yang telah dibuat sebelumnya.
Tabel 2.1 Penelitian sebelumnya
No. Judul Pengarang Tahun Kelebihan Kekurangan
1 Penerapan Algoritma Boyer-Moore-Dynamic Programming untuk Layanan Auto-Complete dan Auto-Correct Christabella
Chiquita B 2011
Algoritma Boyer-Moore lebih mangkus dibandingkan dengan algoritma yang lain serta
sangat tepat digunakan sebagai layanan
auto-complete Tidak ada 2 Pencocokan string untuk fitur autocompletion pada text editor atau integrated development environment (IDE)
Muhammad Wachid
Kusuma 2012
Algoritma brute force dapat diterapkan untuk
membentuk fitur autocomplete pada text
editor dengan baik
Cara kerja algoritma brute force berjalan
lambat
3.
Penerapan String Matching pada Fitur Auto Correct dan Fitur Auto Text
di Smart Phones
Fandi Pradhana 2014
Penerapan algoritma string matching seperti Brute Force, Boyer-Moore dan
KMP pada fitur auto correct mampu memberikan hasil yang
benar-benar
Waktu pengecekan membuat sistem mejadi
lambat
(38)
4
Simulasi Algoritma Levenshtein Distance untuk fitur
Autocomplete pada aplikasi katalog
perpustakaan
Yuli Primadani 2014
Algoritma Levenshtein Distance dapat bekerja maksimal pada fitur
autocomplete
Tidak dilengkapi dengan fitur autocorrect
(39)
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Masalah
Pada bab ini akan membahas tentang analisis dan perancangan sistem untuk fitur
autocomplete dan autocorrect dengan menggunakan algoritma Levenshtein Distance dan Boyer Moore, membuat pemodelan sistem seperti merancang alur kerja sistem (flowchart).
Mempelajari dan menganalisis konsep kerja dan proses kerja algoritma Levenstein Disance dan Boyer Moore dan merancang antar muka.
Untuk mendapatkan informasi buku secara cepat pada katalog perpustakaan, pada umumnya orang mengetikkan judul buku pada mesin pencari. Dengan adanya mesin pencari, informasi mengenai buku yang akan dicari akan ditampilkan akan lebih mudah untuk ditampilkan. Namun ketika mengetikkan judul buku tersebut, biasanya pengguna salah mengetikkan atau bahkan lupa akan judul buku yang akan dicari.
Kesalahan dalam pengetikan judul buku menyebabkan judul buku yang akan dicari tidak akan ditemukan, posisi huruf yang salah atau bahkan lupa judul buku keselurahan sehingga membuat data yang dicari tidak dapat disesuaikan dengan data yang ada di
database, sehingga menyebabkan mesin pencari tidak menemukan informasi yang dicari.
Untuk itu pada mesin pencarian perlu dibutuhkan fitur autocomplete dan autocorrect. Layanan ini berguna untuk membantu pengguna ketika mengetikkan judul buku yang akan dicari.
Gambar 3.1. merupakan diagram Ishikawa yang dapat digunakan untuk menganalisis masalah. Bagian kepala atau segi empat yang berada di sebelah kanan merupakan masalah. Sementara di pada bagian tulang merupakan penyebab.
(40)
Gambar 3.1 Diagram Ishikawa Untuk Ruang Lingkup Penelitian
3.2. Analisis Kebutuhan Sistem
Analisis kebutuhan sistem dapat dibagi pada dua kelompok, yaitu kebutuhan fungsional sistem dan kebutuhan non fungsional sistem
3.2.1 Kebutuhan Fungsional
Fungsional sistem adalah aktifitas atau pelayanan yang harus dimiliki oleh sebuah sistem berupa input, proses, output, maupun penyimpanan data ( Harahap, 2013). Adapun kebutuhan fungsional yang dibutuhkan yaitu :
1. Pengguna memasukkan input berupa judul buku.
2. Sistem melakukan pencocokan string melalui judul buku yang diketikkan oleh
pengguna.
3. Sistem harus mampu menampilkan autocomplete dan autocorret yang mendekati
seperti input yang dimasukkan oleh pengguna. PEOPLE
ALGORITMA STRING
MATCHING
METHOD
Sistem pencarian judul buku dengan menggunakan fitur
autocorrect dan autocomplete dengan
mensimulasikan algoritma
Levenshtein Distance dan Boyer Moore APLIKASI Pengguna dipermudah dengan fitur autocomplete danautocorrect Menampilkan Judul buku
Algoritma Boyer Moore Algoritma Levenshtein Distance
PHP (Hypertext Prepocessor)
Mysql (DBMS) Dapat mencari judul
buku yang diinginkan
(41)
3.2.2 Kebutuhan Non fungsional
Kebutuhan non fungsional sistem merupakan karakteristik atau batasan yang menentukan kepuasan pada sebuah sistem seperti kinerja, kemudahan pengguna, biaya, dan kemampuan sistem bekerja tanpa mengganggu fungsionalitas sistem lainnya (Whitten, 2007).
1. Sisi performa, sistem yang dirancang harus memiliki :
- Antarmuka (interface) yang sederhana dan menarik.
- Autocomplete yang mampu menampilkan judul buku yang diketikkan oleh
pengguna
- Autocorrect yang mampu memperbaiki judul buku yang diketikkan oleh pengguna
2. Sisi kemudahan penggunaan, sistem yang dirancang harus memiliki :
- Tampilan antarmuka (interface) menu bar, serta tombol botton akan dibuat
sederhana sehingga dapat emmudakan bagi para pengguna.
- Halaman form dirancang dengan mempertimbangkan jenis huruf, warna dan
layout dari antar muka.
- Bahasa yang digunakan dapat mudah dimengerti.
3. Sisi Ekonomi, sistem yang dirancang memiliki :
- Instalasi perangkat lunak dan keras yang tidak memerlukan biaya yang besar. 4. Sisi dokumentasi, sistem memiliki kemapuan sebagai berikut :
- Sistem dapat menyimpan data yang diinputkan pada database
5. Sisi kontrol, sistem yang dirancang harus memiliki :
- Sistem mengizinkan pembatalan terhadap suatu tindakan
- Sistem mampu menampilkan pesan kesalahan jika input yang dimasuukan oleh
pengguna tidak tepat.
6. Sisi kualitas, sistem yang akan dirancang memiliki :
- Kemampuan membandingkan input lebih dari satu kata
- Sistem mampu menampilkan hasil yang lebih baik
(42)
<<extends>>
<<extends>>
<<extends>> <<extends>>
<<extends>> 3.3 Pemodelan Sistem
Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan kegunaannya.
Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai bahasa pemodelan untuk mendesain dan merancang Sistem Pendukung Keputusan Pemilihan Gitar dengan Metode Weighted Sum Model. Model UML yang digunakan antara lain use case diagram,
activity diagram, dan sequence diagram.
3.3.1. Use-Case Diagram
Use case merupakan fungsionalitas dari suatu sistem, sehingga customer atau pengguna
sistem paham dan mengerti mengenai kegunaan sistem yang akan dibangun. Use case berperan menggambarkan interaksi antar komponen-komponen yang berperan dalam sistem yang akan dirancang.
Gambar 3.2 Use Case Diagram Sistem
Input Judul Buku
User
Algoritma Levenshtein Distance
Algoritma Boyer Moore
Menghitung nilai
distance
Mencocokkan
pattern dengan string
Mengeser pattern
Menjalankan fungsi
Menjalankan fungsi
(43)
di dalam use case diagram dapat digambarkan bahwa terdapat 2 orang aktor yang akan berperan, yaitu user dan admin. Untuk memperoleh informasi mengenai buku yang dicari maka aktor user harus memasukkan input berupa judul buku ke dalam search box. Selanjutnya jika pencarian yang dilakukan berhasil maka sistem akan menampilkan sebuah halaman yang berisi kumpulan dari buku-buku yang berkaitan dengan judul buku yang diinputkan, kemudian user harus mengklik salah satu dari judul buku yang ditampilkan untuk dapat melihat informasi buku secara lengkap.
Selanjutnya untuk bagian admin yaitu terlebih dahulu melakukan login, dengan menginputkan
username dan password, jika username dan password berhasil divalidasi, maka selanjutnya
admin akan masuk ke halaman beranda. Untuk melakukan pengelolahan admin dapat melakukan penambahan, pengeditan dan penghapusan buku.
Tabel 3.1. Tabel Use Case Proses Pencarian Judul buku
Name Proses Pencarian Judul Buku pada katalog perpustakaan Daerah Aceh Timur
Actors User yang telah ditentukan.
Description Use Case ini mendeskripsikan Pencarian Judul buku
dengan menggunakan fitur autocomplete dan
autocorrect dengan menggunakan algortima
Levenshtein Distance dan algoritma Boyer Moore
Basic Flow User memasukkan inputan karakter berupa judul Buku
yang ingin dicari pada katalog perpustakaan.
Alternate Flow
User dipermudah dengan fitur autocomplete dan autocorrect.
Pre Condition
-
Post Condition
User mendapatkan pencarian judul buku yang ingin
dicari jika tersedia di dalam database.
(44)
3.3.2. Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang
atau menggambarkan proses parallel yang mungkin terjadi dalam beberapa eksekusi. Gambar 3.3 merupakan activity diagram dari sistem yang dibangun.
Pencarian Judul buku Input judul
buku
Info buku
Menampilkan halaman awal
Menampilkan judul buku Mulai
Judul buku tidak ditemukan
User
=Autocomplete =Autocorrect =Boyer Moore
=Levenshtein Distance
Menampilkan info buku
Sistem
(45)
Gambar 3.3 Activity Diagram Sistem
Tabel 3.2 Keterangan Bagian-Bagian Rancangan Halaman Utama
3.3.3. Sequence Diagram
Sequence diagram merupakan diagram yang menggambarkan interaksi antar objek dan
menjelaskan bagaimana suatu operasi dilakukan.Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan oleh objek. Dalam sistem yang akan dibangun, interaksi dilakukan antara pengguna dan sistem. Sequence diagram sistem dapat dilihat pada Gambar 3.4.
Name Activity Diagram Activity diagram Sistem
Actors User
Deskripsi Activity ini mendeskripsikan proses Sistem pada Aplikasi
Pencarian Judul buku pada fitur autocomplete dan
autocorrect
Prakondisi Sudah Masuk ke tampilan utama
Bidang Khas Suatu Kejadian
Kegiatan User Respon system
1. Menginputkan judul buku
yang ingin dicari
2. Menekan tombol cari
3. Memilih judul buku yang
ditampilkan .
1. System menampilkan
halaman yang dipilih
2. System akan melakukan
searching pada database
3. Menampilkan data info
buku
Pasca kondisi Menampilkan Judul buku
(46)
Gambar 3.4 Sequence Diagram Sistem
Dari keterangan diatas dapat digambarkan dengan sequence diagram mengenai informasi sistem yang berjalan saat ini, sehingga dengan diagram ini dapat menggambarkan pergerakan sebuah objek dan pesan yang terjadi di dalam sistem penyampaian informasi.
3.4 Analisis Data
Data yang digunakan pada sistem ini adalah data buku yang didapatkan dari Dinas Perpustakaan dan Arsip Daerah Aceh Timur. Pada tabel 3.1 akan diberikan beberapa data buku yang diperoleh dari Dinas Peepustakaan dan Arsip Daerah Kabupaten Aceh Timur
No. Judul Pengarang Penerbit Edisi Jenis Subjek Bahasa Jumlah Eksemplar
Halaman awal Halaman Judul buku
User
Halaman info buku
Menekan tombol cari
Halaman awal Menampilkan halaman awal
Klik judul buku
(47)
1 MISTERI RAWA KALONG BAMBANG JOKO SUSILO BAMBANG JOKO SUSILO IND GRAFIKI
DS - Buku KOMIK IND 5
2 ISLAMIC GOLDEN PERSPECTI VE (BENANG MERAH SEJARAH ISLAM ) TUTIK HASANAH, S.Th.l. TUTIK HASANAH S.Th.l. IND PRENAD
A - Buku
SOSIOL OGI ISLAM
IND 5
3 ACEH ANTARA CINTA DAN KEANGKU HAN BAHARUDDIN
AR BANDAR - Buku ACEH IND 5
4 SEHAT CANTIK ALAMI BERKAT KHASIAT BUMBU DAPUR NIA KURNIAW ATI NIA
KURNIAWATI QANITA - Buku
OBAT TRADISI
ONAL
IND 10
- - - - - - - - - - - - 100 MAHLIGAI DI ATAS PASIR MIRA W GRAME DIA PUSTAK A UTAMA
- Buku NOVEL IND 5
Tabel 3.3 Sampel Data Buku
Dapat dilihat pada tabel 3.1 bahwa data buku yang berhasil dikumpulkan dari katalog Dinas Perpustakaan dan Arsip Daerah Kabupaten Aceh Timur adalah sebanyak 100 data, data ini diambil dan dikumpulkan pada tanggal 30 Maret 2015 sampai 03 April 2015
(48)
3.5 Perancangan sistem
3.5.1 Flowchart Sistem autocomplete
Adapun alur kerja yang terdapat pada autocomplete dapat dilihat pada gambar 3.5
tidak
ya
Gambar.3.5 Flowchart autocomplete dengan algoritma Boyer Moore
Mengambil semua judul buku pada database
Memodifikasi kata pada judul buku dengan operasi tambah/tukar/hapus
Hitung nilai jarak pada Boyer Moore
Mulai
Ketika ditemukan kata yang pas Input Judul buku
Membandingkan judul buku pada database dengan judul buku yang diinput pengguna
selesai
Menampilkan Autocomplete
(49)
3.5.2 Proses pencarian pada Boyer Moore untuk autocomplete
Algoritma Boyer Moore adalah salah satu algoritma pencarian string yang dipublikasikan oleh Rober S. Boyer an J. Stroher Moore pada tahun 1977. Algoritma Boyer Moore tidak seperti algoritma pencarian string lainnya, algoritma Boyer Moore mulai mencocokkan karakter dari sebelah kanan pattern sehingga pencariannya lebih cepat.
Algoritma Boyer Moore dianggap sebagai pencocokan string yang paling efisien dalam berbagai aplikasi. Algoritma ini sering diimplementasi dalam teks editor seperti Microsoft Word untuk fungsi Font dan Replace. (Minandar 2009).
1. Sistematika Algoritma Boyer Moore
a. Algoritma Boyer Moore mulai mencocokkan pattern pada awal teks.
b. Dari kanan ke kiri, algoritma ini akan mencocokkan karakter per karakter
pattern dengan karakter di teks yang bersesuain sampai salah satu kondisi
berikut :
- Karakter di pattren dan di teks yang dibandingkan tidak cocok (missmatch)
- Semua karakter dipattern cocok, kemudian algoritma ini akan
memberitahukan penemuan di posisi ini.
c. Algoritma menggeser pattern dengan memaksimalkan nilai pergeseran
Occurrence Heuristic dan pergeseran Math Heuristic untuk melakukan
pergeseran seingga menemukan teks yang sama dengan pattern. R Wald,2012
Cara kerja Algoritma Boyer Moore :
e l e k T r o n I k
Gambar 5.2. Pencocokan 1
Gambar 3.6. Pencocokan 1
R o n I
(50)
Langkah ke -1
e l e k T r o n I k
Gambar 3.7. Pencocokan 2
Langkah ke 2
e l e k t r o n I k
Gambar 5.2.
Gambar 3.8. Pencocokan 3
Langkah ke-3
Dari gambar 5.2, dapat dilihat bahwa karakter terakhir dari kata kunci adalah huruf “i” yang terakhir dari kata kunci adalah huruf “i” yang dicocokkan dengan huruf “k” pada kata “elektronik”. Karena huruf “i” dan huruf “k” berbeda, maka akan dilakukan pencocokan huruf “k” dengan seluruh karakter pada kata kunci. Karena huruf “k” tidak terdapat pada seluruh karakter pada kata kunci, maka kata kunci bergeser ke kanan sebanyak empat karakter sesuai dengan panjang karakter kata kunci seperti yang tampak pada gambar 5.3. setelah dilakukan pergeseran maka dicocokkan kembali karakter terakhir pada kata kunci yaitu huruf “i” dengan huruf “n” dicocokkan dengan keseluruhan karakter pada kata kunci. Karena pada kata kunci. Karena pada kata kunci terdapat huruf “n”, maka kata kunci akan bergeser sedemikian rupa sehingga huruf “n” pada kata kunci memiliki posisi yang sejajar dengan posisi huruf “n” pada kata yang dicocokkan seperti yang ditujukan pada gambar 5.4. Setelah itu dilakukan kembali pencocokan karakter terkhir kata kunci, yaitu huruf “i” yang terletak sejajar dengan huruf “i” tersebut, karena karakter tersebut sama maka dicocokkan kembali karakter yang berbeda dsebelah kiri huruf “i” sehingga kesluruhan karakter pada kata kunci selesai diperiksa.
R o n i
r o n I
(51)
2. Cara menghitung Tabel Occurrence Heuristic
Posisi 1 2 3 4
String R O N I
OH 3 2 1 0
Tabel 3.4. Occurence Heuristic
1. Lakukan pencacahan mulai dari posisi terakhir string sampai ke posisi awal,
dimulai dengan nilai 0, catat karakter yang sudah ditemukan (dalam contoh ini karakter “I”)
2. Mundur ke posisi sebelumnya, nilai pencacah ditambah 1, jika karakter pada
posisi ini belum pernah ditemukan, maka nilai pergeserannya adala sama dengan nilai pencacah.(dalam contoh ini, karakter “N” belum pernah ditemukan sehingga nilai pergeserannya adalah sebesar nilai pencacah yaitu 1).
3. Mundur ke posisi sebelumnya, karakter”O” nilai pergeserannya 2
4. Mundur lagi, karakter “R” nilai pergeserannya yaitu 3.
5. Begitu seterusnya sampai posisi awal string.
3. Cara menghitung tabel Math Heuristic
Posisi 1 2 3 4
String R O N I
OH 4 4 4 1
Tabel 3.5 Math Heuristic
(52)
Nilai MH didapat dari langkah-langkah sebagai berikut :
String R O N X A B C D
Pattern R O N I
R O N I
Gambar 3.9. Proses pencarian Math Heuristic 1
Untuk ketidakcocokan karakter pada posisi terakhir (posisi 4), karakter “I” maka nilai pergesernnya selalu I
String R O X I A B C D
Pattern R O N I
R O N I
Gambar 3.10. Proses pencarian Math Heuristic 2
Jika karakter “I” sudah cocok, tetapi karakter pada posisi 3 (sebelum “I”) bukan “N” maka geser sebanyak 4 posisi, sehingga posisi string melawati teks. Karena sudah pasti “ ROXI” bukan “RONI”
String R X N I A B C D
Pattern R O N I
R O N I
Gambar 3.11. Proses pencarian Math Heuristic 3
Jika karakter “N” sudah cocok, tetapi karakter pada posisi 2 (sebelum “N”) bukan “O” maka geser sebanyak 4 posisi, sehingga posisi string melewati teks. Karena sudah past “RXNI” bukan “RONI”
(53)
String X O N I A B C D
Pattern R O N I
R O N I
Gambar 3.12. Proses pencarian Math Heuristic 4
Jika karakter “O” sudah cocok, tetapi karakter posisi 1 (sebelum”O”) bukan “R” maka geser sebanyak 4 posisi, sehingga posisi string melewati teks. Karena sudah pasti “XONI” bukan “RONI”. Dari proses diatas maka pergeseran Math Heuristic nya ditemukan R=4, O=4, I=1. Hasil pencocokan :
String 1 2 3 4
Pattern R O N I
OH 3 2 1 0
MH 4 4 4 1
Tabel 3.6. Tabel nilai OH dan MH
(54)
3.5.3 Flowchart Sistem autocorrect
Adapun alur kerja yang terdapat pada autocorrect dapat dilihat pada gambar 3.13
tidak
ya
ya
Gambar 3.13 Flowchart autocorrect dengan menggunakan algoritma Levenshtein Distance
Mengambil semua judul buku pada database
Memodifikasi kata pada judul buku dengan operasi tambah/tukar/hapus
Hitung nilai jarak Levenstein Distance
Jika nilai Levenshein Distance = 0
Input Judul buku
Membandingkan judul buku pada database dengan judul buku yang diinput pengguna
selesai
Menampilkan Autocorrect Start
(55)
3.5.4 Proses pencarian jarak Levenshtein untuk autocorrect
Langkah-langkah yang terdapat pada flowchart sistem dapat menjelaskan bagaimana alur kerja yang terdapat di dalam sistem , proses kerja algoritma Levenshtein Distance untuk mendapatkan nilai jarak Levenshtein yang akan menghasilkan autocorrect, yaitu :
1. Memberikan input berupa judul buku pada kotak pencarian.
2. Selanjutnya judul buku yang akan diinputkan akan dibandungkan dengan semua
judu buku yang terdapat di database
3. Kemudian akan dilakukan modifikasi kata pada judul buku dengan menggunakan
operasi sisip, tukar dan hapus, hal ini dilakukan jika kata yang dicocokkan berbeda
4. Setelah modifikasi dilakukan selanjutnya yaitu menghitung nilai Levenshtein
Distance, nilai Levenshtein Distance di peroleh dari hasil modifikasi.
5. Jika nilai jarak Levenshtein Distance sama dengan 0 maka judul buku yang
diinputkan dengan judul buku yang terdapat pada database dianggap sama persis sehingga proses perulangan itu dihentikan karena dianggap sudah cocok, dan jika tidak maka perulangan akan terus berlanjut.
6. Kemudian judul buku yang dianggap sudah cocok atau mendekati maka akan
ditampilkan sebagai autocorrect.
Algoritma Levenshtein Distance akan menampilkan layanan autocorrect dengan melakukan perbandingan berdasarkan judul buku yang diinputkan dengan judul buku yang terdapat di dalam database. Ketika judul buku diketikkan, sistem akan melakukan modifikasi terhadap judul buku yang terdapat di dalam database. Modifikasi tersebut meliputi proses penyisipan, penukaran dan penghapusan, jika proses modifikasi telah dilakukan selanjutnya akan dilakukan perhitungan nilai jarak Levenshtein.
Penentuan jarak Levenshtein didasarkan kepada nilai yang paling terkecil atau paling sedikit jumlah modifikasinya, sehingga string atau kata yang memiliki nilai modifikasi yang paling sedikit saat dibandingkan dengan string atau kata lain dianggap sebagai kata yang cocok atau paling mendekati.
(56)
Berikut adalah langkah-langkah proses pencarian jarak Levenshtein dengan kata depan dari judul buku yaitu:
1. Membandingkan string
String yang akan dibandingkan yaitu judul buku yang diinput sebagai string target dan judul buku yang terdapat di dalam database sebagai string sumber.
Misalkan :
String Target : algoritma
String Sumber : algoritma pencarian, pemrograman basic, kecerdasan buatan.
Misalkan string target atau judul buku yang diinputkan adalah “algoritma” sedangkan
string sumber atau judul buku yang terdapat di dalam database misalnya adalah “algoritma
pencarian”,”pemrograman c++”,“kecerdasan buatan”. Judul buku yang terdapat di dalam
database akan diubah menjadi string target atau judul buku yang diinputkan.
2. Melakukan modifikasi dan perhitungan jarak Levenshtein
Operasi Levenshtein Distance terdiri dari 3 yaitu, operasi penyisipan, operasi penukaran dan operasi penghapusan. Sehingga proses modifikasi yang dapat dilakukan yaitu :
a. Target = algoritma
Sumber = Algoritma pencarian
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Target = A l g o r i t m a - - - - - - - - - -
Sumber = A l g o r i t m a - P e n c a r i a n
a
Pada proses modifikasi dapat dilihat terdapat 10 operasi penghapusan, yang dimulai dengan menghapus spasi pada indeks ke-10, kemudian menghapus karakter ‘p’ pada indeks ke-11, ‘e’ pada indeks ke-12,’n’ pada indeks 13, ‘c’ pada indeks ke-14, ‘a’ pada indeks ke-15, ‘r’ pada indeks ke-16, ‘i’ ke-17 ,‘a’ pada indeks ke-18, dan ‘n’ pada indeks ke 19. Kemudian melakukan di dalam 1 operasi penukaran yaitu menukar karakter ‘A’ menjadi ‘a’ pada posisi
(57)
indeks ke-1, sedangkan operasi penyisipan tidak perlu dilakukan. Selanjutnya melakukan perhitungan jarak levenshtein dengan rumus yaitu:
= d( s1, t1 ) + d( s2, t2 ) + d( s3, t3 ) + d( s4, t4 ) + d( s5, t5 ) +
d( s6, t6 ) + d( s7, t7 ) + d( s8, t8 ) + d( s9, t9 ) + d( s10, t10 ) +
d( s11, t11 )+ d( s12, t12 )+ d( s13, t13 )+ d( s14, t14 )+
d( s15, t15 )+ d( s16, t16 )+ d( s17, t17 ) + d( s18, t18 )+( s19, t19)
= d( A, a ) + d( l, l) + d( g, g ) + d( o, o ) + d( r, r ) +
d( i, i) + d( t, t) + d( m, m) + d( a, a ) + d( -, - ) +
d( p, - )+ d (e,-) +d (n,-) + d (c,-) + d (a,-) + d(r,-) +
d (i,-) + d (a,-)+ d (n,-)
= 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 +
1 + 1 + 1+1
= 11
Dari perhitungan yang dilakukan diperoleh nilai modifikasi atau jarak Levenshtein yang diperoleh adalah 11.
b. Target = algoritma
Sumber = Pemrograman basic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Target = a l g o r i t m a - - - - - - - -
Sumber = P e m r o g r a m a n - B a s i c
a l g o r i t m a
(58)
Pada proses modifikasi dapat dilihat terdapat 8 operasi penghapusan, yang dimulai dengan menghapus karakter ‘a’ pada indeks ke-10, ‘n’ pada indeks ke-11, ‘spasi’ pada indeks ke-12, ’B’ pada indeks ke-13, ‘a’ pada indeks ke-14, ‘s’ pada indeks ke-15, ‘i’ pada indeks ke-16, ‘c’ pada indeks ke-17 dan terdapat 9 operasi penukaran yaitu ‘P’ menjadi ‘a’ pada indeks ke-1, ‘e’ menjadi ‘l’ pada indeks ke-2, ‘m’ menjadi ‘g’ pada indeks ke-3, ‘r’ menjadi ‘o’ pada indeks ke-3, ‘o’ menjadi ‘r’ pada indeks ke-5, ‘g’ menjadi ‘i’ pada indeks ke-6, ‘r’ menjadi ‘t’ pada indeks ke-7, ‘a’ menjadi ‘m’ pada indeks ke-8 dan ‘m’ menjadi ‘a’ pada indeks ke-9. Sedangkan operasi Levenshtein yang lain seperti penyisipan tidak perlu dilakukan, selanjutnya melakukan perhitungan jarak levenshtein dengan rumus yaitu:
= d( s1, t1 ) + d( s2, t2 ) + d( s3, t3 ) + d( s4, t4 ) + d( s5, t5 ) +
d( s6, t6 ) + d( s7, t7 ) + d( s8, t8 ) + d( s9, t9 ) + d( s10, t10 ) +
d( s11, t11 )+ d( s12, t12 )+ d( s13, t13 )+ d( s14, t14 )+ d( s15, t15 )+
d( s16, t16 )+ d( s17, t17 )
= d( P, a ) + d( e, l) + d( m, g ) + d( r, o ) + d( o, r ) + d( g, i) +
d( r, t) + d( a, m) + d( m, a ) + d( a, - ) + d( n, - )+ d (-,-) +
d (B,-) + d (a,-) + d (s,-)+ d (i,-)+ d (c,-)
= 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1+ 1+ 1
= 17
Dari perhitungan tersebut dapat diperoleh nilai modifikasi atau jarak Levenshtein yang dibutuhkan adalah 17.
c. Target = algoritma
Sumber = Kecerdasan Buatan
(59)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Target = a l g o r i t m a - - - - - - - -
Sumber = K e c e r d a s a n - B u a t a n
a l g o i t m
Pada proses modifikasi dapat dilihat terdapat 7 operasi penukaran, yang dimulai dengan menukar karakter ‘K’ menjadi ‘a’ pada indeks ke-1, ‘e’ menjadi ‘l’ pada indeks ke-2,’c’ menjadi ‘g’ pada indeks 3, ‘e’ menjadi ‘o’ pada indeks ke-4, ‘d’ menjadi ‘i’ pada indeks ke-6, ‘a’ menjadi ‘t’ pada indeks ke-7, ‘s’ menjadi ‘m’ pada indeks ke-8. Kemudian selanjutnya melakukan 8 operasi penghapusan yang dimulai dengan menghapus karakter ‘n’ pada indeks ke-10, ‘spasi’ pada indeks ke-11, ‘B’ pada indeks ke-12, ‘u’ pada indeks ke-13, ‘a’ pada indeks ke-14, ‘t’ pada indeks ke-15, ‘a’ pada indeks ke-16 dan ‘n’ pada indeks ke-17. Sedangkan operasi penyisipan tidak perlu dilakukan, selanjutnya melakukan perhitungan jarak levenshtein dengan rumus yaitu:
= d( s1, t1 ) + d( s2, t2 ) + d( s3, t3 ) + d( s4, t4 ) + d( s5, t5 ) +
d( s6, t6 ) + d( s7, t7 ) + d( s8, t8 ) + d( s9, t9 ) + d( s10, t10 )+
d( s11, t11 )+ d( s12, t12 )+ d( s13, t13 )+ d( s14, t14 )+ d( s15, t15 )+
d( s16, t16 )+ d( s17, t17 )
= d( K, a ) + d( e, l) + d( c, g ) + d( e, o ) + d( r, r ) +
d( d, i) + d( a, t) + d( s, m) + d( a, a ) + d( n, - )+
d (-,-) + d(B,-)+ d (u,-) + d (a,-) + d (t,-) + d(a,-) +
d (n,-)
= 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 1+ 1 + 1 + 1 +
(60)
1 + 1 + 1
= 15
Dari perhitungan yang dilakukan diperoleh nilai modifikasi atau jarak Levenshtein yang dibutuhkan adalah 15.
3. Menampilkan autocorrect
Dari perhitungan untuk mencari jarak levenshtein distance yang telah dilakukan maka diperoleh jarak levenshtein untuk string “Algoritma Genetika” menjadi “algoritma” adalah 10, untuk “Pemrograman C++” menjadi “algoritma” adalah 15 dan “Kecerdasan Buatan” menjadi “algoritma” adalah 15. Untuk dapat ditampilkan sebagai autocomplete maka diseleksi terlebih dahulu berdasarkan jarak levenshtein yang diperoleh, semakin kecil nilai jarak yang diperoleh maka kemungkinan untuk ditampilkan sebagai autocomplete akan semakin besar.
Prinsip kerja algoritma levenshtein yaitu berdasarkan jaraknya, semakin kecil nilai jarak yang diperoleh maka dianggap semakin mendekati dengan string target. Urutan string berdasarkan nilai jarak terkecil yang diperoleh yaitu judul buku “Algoritma Genetika”, kemudian “Pemrograman C++” dan “Kecerdasan Buatan”. Berdasarkan hal tersebut maka yang dapat ditampilkan sebagai autocomplete adalah “Algoritma Genetika” karena dianggap yang paling mendekati.
Selanjutnya akan dijelaskan langkah-langkah proses pencarian jarak Levenshtein dengan pola yang berbeda yaitu:
1. Membandingkan string
String yang akan dibandingkan yaitu judul buku yang diinput sebagai string target dan judul buku yang terdapat di dalam database sebagai string sumber.
Misalkan :
String Target : cerdas
String Sumber : Algoritma pencarian, pemrograman basic, kecerdasan buatan.
(61)
Misalkan string target atau judul buku yang diinputkan adalah “cerdas” sedangkan string sumber atau judul buku yang terdapat di dalam database misalnya adalah “Algoritma pencarian”,”Pemrograman basic”,“Kecerdasan Buatan”. Judul buku yang terdapat di dalam
database akan diubah menjadi string target atau judul buku yang diinputkan.
2. Melakukan modifikasi dan perhitungan jarak Levenshtein
Operasi Levenshtein Distance terdiri dari 3 yaitu, operasi penyisipan, operasi penukaran dan operasi penghapusan. Sehingga proses modifikasi yang dapat dilakukan yaitu :
a. Target = cerdas
Sumber = Algoritma Pencarian
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Target = c e r d a s - - - - - - - - - - - - -
Sumber = A l g o r i t m a - P e n c a r i a n
c e r d a s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Target = c e r d a s - - - - - - - - - - - -
Sumber = A l g o r i t m a - G e n e t i k a
c e r d a s
Pada proses modifikasi dapat dilihat terdapat 13 operasi penghapusan, yang dimulai dengan menghapus karakter “t” pada indeks 7, kemudian menghapus karakter ‘m’ pada indeks ke-8, ‘a’ pada indeks ke-9,’spasi’ pada indeks 10, ‘P’ pada indeks ke-11, ‘e’ pada indeks ke-12, ‘n’ pada indeks ke-13, ‘c’ pada indeks ke-14 dan ‘a’ pada indeks ke-15, ‘r’ pada indeks ke-16, ‘i’ pada indeks ke-17 ‘a’ pada indeks ke-18 dan ‘n’ pada indeks ke-19. Kemudian selanjutnya melakukan 6 operasi penukaran yaitu menukar karakter ‘A’ menjadi ‘c’ pada indeks ke-1, karakter ‘l’ menjadi ‘e’ pada indeks ke-2, karakter ‘g’ menjadi ‘r’ pada indeks ke-3, ‘o’ menjadi ‘d’ pada indeks ke-4, ‘r’ menjadi ‘a’ pada indeks ke-5 dan ‘i’ menjadi ‘s’ pada indeks ke-6. Selanjutnya melakukan perhitungan jarak levenshtein dengan rumus yaitu:
(1)
else{
$x+=$cari_len; }
$y++; }
if ($x>$batas) {
//echo "kata tidak ditemukan"; return "";
}
if ($ditemukan==1) {
//echo "kata ditemukan di iterasi ke $iterasike";
return $kata2; }
}
$cari=trim($_GET['cari']); // menangkap variable cari yang dikirim
$arr=array();
$result=mysql_query("SELECT id_buku ,judul_buku,pengarang,penerbit,tahun_terbit FROM buku",$koneksi) or die(mysql_error()); // melakukan pengambilan dari database dengan nilai levenshtein kurang dari 15 yang diurutkan berdasarkan nilai lev terkecil
while($data=mysql_fetch_array($result)){
(2)
$kata= $data['judul_buku']; $isi=boyermoore($cari, $kata, $kata);
if ($isi != '') { $no++;
$id=$data['id_buku']; $judul_buku=
$data['judul_buku'];
$pengarang= $data['pengarang'];
$penerbit= $data['penerbit'];
$tahun_terbit= $data['tahun_terbit'];
echo " <div class='buku_wrapper'>
<table> <tr>
<td width='40'>$no</td>
<td>
<span ><a href='detail_buku.php?id=$id' class='judul'>$judul_buku</a></span><br/>
<span class='pengarang'>$pengarang </span><br/>
<span class='penerbit'>$penerbit </span><br/>
<span class='tahun'>$tahun_terbit </span>
(3)
</table> </div>
"; }
}
?> </div>
<div id="kanan">
<h4>Levenshtein (Auto Correct)</h4> <?php
if($cari) // hasil pencarian akan dikeluarkan jika ada objek yang di cari
{
$file = "index.php"; $cari=urlencode($cari); $page = "cari=$cari";
// Memanggil dan menginisiasi class include
"admin/library/class_paging.php";
$p = new Paging;
// Tentukan limit atau batas $batas = 10;
// Cek halaman dan posisi data $posisi = $p->cariPosisi($batas);
(4)
$search=$_REQUEST['search'];
$query="SELECT id_buku
,judul_buku,pengarang,penerbit,tahun_terbit,levenshtein('$cari', judul_buku) as lev FROM buku ORDER BY lev";
$sql = mysql_query("$query LIMIT $posisi,$batas", $koneksi) or die (mysql_error());
$sql2 = mysql_query("$query"); $no=0;
while($row=mysql_fetch_array($sql)) {
$no++;
$id=$row['id_buku']; $judul_buku=
$row['judul_buku'];
$pengarang=$row['pengarang']; $penerbit=$row['penerbit'];
$tahun_terbit=$row['tahun_terbit'];
echo "
<div class='buku_wrapper'> <table>
<tr> <td width='40'>$no</td>
<td>
<span ><a href='detail_buku.php?id=$id'
class='judul'>$judul_buku</a></span><br/>
<span class='pengarang'>$pengarang</span><br/>
(5)
<span class='penerbit'>$penerbit</span><br/>
<span class='tahun'>$tahun_terbit</span>
</td> </tr>
</table> </div>
"; }
// Dapatkan jumlah data keseluruhan $jmldata = mysql_num_rows($sql2);
// Dapatkan jumlah halaman $jmlhalaman =
$p->jumlahHalaman($jmldata, $batas);
// Cetak link navigasi halaman $linkHalaman =
$p->navHalaman($_GET[halaman], $jmlhalaman, $page); echo $linkHalaman; }
?> </div> </div>
<?php } ?> </div>
(6)