Implementasi Algoritma Levenshtein Distance dan Boyer Moore untuk Fitur Autocomplete dan Autocorrect pada Aplikasi Katalog Perpustakaan Daerah Aceh Timur

(1)

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)

DAFTAR RIWAYAT HIDUP

Saya yang bertanda tangan dibawah ini :

DATA PRIBADI

Nama

: Teuku Ighfar Hajar

Alamat

: Jalan Gajah Mada, Gang Makmur 15B, Medan

Hp

: 0811642809

Email

:teukuighfarhajar@yahoo.com

Tempat/tanggal lahir : Kuta Binjei/ 28 September 1992

Jenis Kelamin

: Laki-laki

Status

: Belum Menikah

PENDIDIKAN

1998-2004

: SD Negeri 1 Kuta Binjei

2004-2007

: MTsN 1 Kuta Binjei

2007- 2010

: SMA Negeri Ungul Aceh Timur

2010-2013

: DIII Teknik Informatika Universitas Sumatera Utara

2013- 2015

: S-1 Ekstensi Ilmu Komputer Universitas Sumatera Utara

SEMINAR

Seminar Nasional Literasi Informasi (SENARAI) 2014 Fakultas Ilmu Komputer dan

Teknologi Informasi Universitas Sumatera Utara.

Demikianlah Daftar Riwayat Hidup ini saya perbuat dengan sebenarnya.

Hormat Saya,