Algoritma Dynamic Programming

10
Implementasi Algoritma Dynamic Programming untuk Koreksi Kesalahan Ejaan Kata pada Search Engine Muhammad Fauzi 1 , Veri Ilhadi 2 , Muhammad Nuh 3 Program Studi Magister Teknik Informatika Fasilkom-TI USU Jl. Universitas No. 24 A Kampus USU Medan

description

Implementasi Algoritma Dynamic Programming untuk Koreksi Kesalahan Ejaan Kata pada Search Engine

Transcript of Algoritma Dynamic Programming

Page 1: Algoritma Dynamic Programming

Implementasi Algoritma Dynamic Programming untuk Koreksi Kesalahan Ejaan Kata pada Search Engine

Muhammad Fauzi1, Veri Ilhadi2, Muhammad Nuh3

Program Studi Magister Teknik Informatika Fasilkom-TI USUJl. Universitas No. 24 A Kampus USU Medan

Page 2: Algoritma Dynamic Programming

Abstrak

Kesalahan pengetikan sering terjadi ketika kita melakukan pencarian pada search engine, hal tersebut disebabkan pada tata letak keyboard yang saling berdekatan, slip jari, ataupun karena dua karakter yang letaknya tertukar. Pada text mining untuk mengatasi permasalahan tersebut dapat dilakukan dengan menambahkan algoritma untuk mengoreksi kesalahan ejaan kata yang diinput user sebelum melanjutkannya kembali pada pencarian lebih lanjut. Salah satu cara untuk mengatasi masalah ini adalah dengan menerapkan algoritma Dynamic Programming untuk menghitung score dan menetapkan string yang benar yang paling mendekati (closest match) atau mirip dengan string yang dimasukkan oleh user atau sering dikenal dengan Algoritma Levenshtein Distance. Pengembangan teknik ini banyak diterapkan pada bidang disiplin ilmu Bioinformatika untuk mengecek kemiripian rumus DNA atau protein (sequence aligment). Pemecahan masalah string edit distance menjadi titik temu antara bidang informatika dengan biologi. Pada makalah ini akan dibahas secara singkat bagaimana langkah-langkah teknis algoritma Dynamic Programming dalam memecahkan masalah ini, serta bagaimana kompleksitas ruang dan waktu dari langkah-langkah tersebut.

Kata Kunci : Koreksi ejaan Kata, Dynamic Programming, Text Mining, string edit distance, Levenshtein Distance

1. PENDAHULUAN

1.1 Latar Belakang Masalah

Kesalahan pengetikan kata pada search engine memang sering sekali terjadi. Apalagi belakangan ini kesadaran masyarakat untuk menuangkan idenya ke dalam artikel, jurnal ilmiah, tugas kuliah ataupun dokumen lainnya mengalami peningkatan. Tentu saja dalam penulisan dokumen tersebut adanya kesalahan pengetikan yang disebabkan oleh beberapa faktor seperti :

- Letak huruf pada keyboard yang berdekatan,

- Kesalahan karena kegagalan mekanis atau slip dari tangan atau jari,

- Kesalahan yang disebabkan oleh ketidaksengajaan.

- Proses pengecekan kesalahan pengetikan dengan cara manual akan menghabiskan banyak waktu dan membutuhkan suatu sumber pasti sebagai acuan bahwa kata tersebut memang salah dalam proses penulisannya. Efisiensi waktu yang dibutuhkan jika dilakukan dengan manual tentunya tidak akan optimal dan cukup membosankan sehingga kemungkinan adanya human error dapat mengakibatkan proses pengecekan kata menjadi tidak optimal.

Beberapa algoritma pun dapat diimplementasikan dalam memberikan kata saran yang paling mendekati dari kata yang salah pengetikannya. Salah satunya algoritma Levenshtein Distance yang dapat menghitung jarak keterbedaan antara dua string [1].

Selain itu ada juga kesalahan pengetikan karena kurangnya spasi sehingga kata tersebut tidak memiliki arti. Untuk permasalahan kata yang berdempetan tersebut digunakan metode empiris yaitu dengan cara memecah kata menjadi dua bagian dan mencocokkan kata ke dalam basis data dan memberikan saran kemungkinan adanya kata yang diketik tanpa spasi [2].

1.2 Perumusan Masalah

1. Mengimplementasikan algoritma dynamic programming untuk koreksi kesalahan ejaan kata pada search engine.

2. Mendeteksi kesalahan pengetikan pada search engine.

1.3 Tujuan Kajian

1. Mengoptimalkan kinerja search engine dalam hal pengoreksi kata.

2. Mengimplementasikan algoritma dynamic programming untuk koreksi kesalahan ejaan kata pada search engine.

1.4 Manfaat Kajian

2.3.1 Menyajikan aplikasi search engine yang dapat mengoreksi kesalahan ejaan.

2.3.2 Dapat memberikan alternative kata yang sesuai dengan library yang ada pada search engine.

2. DASAR TEORI

2.1 Algoritma Dynamic Programming

Dynamic Programming merupakan sebuah algoritma pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dai persoalan dapat dipandang dari

Page 3: Algoritma Dynamic Programming

serangkaian keputusan yang saling berkaitan. Pada penyelesaian metode in kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap. Algoritma Dynamic Programming memiliki karakteristik sebagai berikut :

1. Persoalan dapat dibagi mejadi beberapa tahap(stage), yang pada setiap tahap hanya diambil satu keputusan yang optimal.

2. Masing-masing tahap terdiri dari sejumlah status(state) yang berhubungan dengan tahap tersebut.

3. Hasil keputusan yang diambil pada tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.

4. Ongkos (cost) pada suatu tahap bergantung pada ongkos tahap-tahap sebelumnya dan meningkat secara teratur dengan bertambahnya jumlah tahapan.

5. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan tahap sebelumnya.

6. Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk tahap sebelumnya.

7. Prinsip optimalitas berlaku pada persoalan tersebut. Ciri utama dari dynamic programming adalah prinsip optimalitas yang berbunyi : jika solusi total optimal, maka bagian solusi sampai tahap ke-k juga optimal.

Dari karakteristik poin ke-4 di atas, kita dapat menyimpulkan bahwa algoritma Dynamic Programming dapat diaplikasikan apabila peningkatkan ongkos secara linear dan diskrit sehingga optimasi parsial dapat dilakukan.Dalam menyelesaikan persoalan dengan Dynamic Programming, kita dapat menggunakan 2 pendekatan berbeda yaitu :

a. Maju (forward atau up-down) : bergerak mulai dari tahap 1, terus maju ke tahap 2,3,..,n. Urutan variabel keputusan adalah x1,x2,...,xn.

b. Mundur(backward atau bottom-up) : bergerak mulai dari tahap n, terus mundur ke tahap n-1, n-2,..,2,1. Urutan variabel keputusan adalah xn xn-1, x2, x1 [3].

2.2 Algoritma Levenshtein Distance

Levenshtein Distance dibuat oleh Vladimir Levenshtein pada tahun 1965. Perhitungan edit distance didapatkan dari matriks yang digunakan untuk menghitung jumlah perbedaan string antara dua string. Perhitungan jarak antara dua string ini ditentukan dari jumlah minimum operasi perubahan untuk membuat string A menjadi string B [2].

Ada 3 macam operasi utama yang dapat dilakukan oleh algoritma ini yaitu :1. Operasi Pengubahan Karakter Operasi pengubahan

karakter merupakan operasi menukar sebuah karakter

dengan karakter lain contohnya penulis menuliskan string “yamg” menjadi “yang”. Dalam kasus ini karakter “m” diganti dengan huruf “n”.

2. Operasi Penambahan Karakter Operasi penambahan karakter berarti menambahkan karakter ke dalam suatu string. Contohnya string “kepad” menjadi string “kepada”, dilakukan penambahan karakter “a” di akhir string. Penambahan karakter tidak hanya dilakukan di akhir kata, namun bias ditambahkan diawal maupun disisipkan di tengah string .

3. Operasi Penghapusan Karakter Operasi penghapusan karakter dilakukan untuk menghilangkan karakter dari suatu string Contohnya string “barur” karakter terakhir dihilangkan sehingga menjadi string “baru”. Pada operasi ini dilakukan penghapusan karakter “r” [2].

Algoritma ini berjalan mulai dari pojok kiri atas sebuah array dua dimensi yang telah diisi sejumlah karakter sring awal dan string target dan diberikan nilai cost. Nilai cost pada ujung kanan bawah menjadi nilai edit distance yang menggambarkan jumlah perbedaan dua string.

2.3 Text Mining

2.3.1 Pengertian Text Mining

Text mining, yang juga disebut sebagai Text Data Mining (TDM) atau Knowledge Discovery in Text (KDT), secara umum mengacu pada proses ekstraksi informasi dari dokumen-dokumen teks tak terstruktur (unstructured). Teks mining dapat didefinisikan sebagai penemuan informasi baru dan tidak diketahui sebelumnya.

Tujuan utama teks mining (text mining) adalah mendukung proses knowledge discovery pada koleksi dokumen yang besar. Pada prinsipnya, teks mining adalah bidang ilmu multidisipliner, melibatkan information retrieval (IR), text analysis, information extraction (IE), clustering, categorization, visualization, database technology, natural language processing (NLP), machine learning, dan data mining. Dapat pula dikatakan bahwa teks mining merupakan salah satu bentuk aplikasi kecerdasan buatan (artificial intelligence / AI).

Teks mining mencoba memecahkan masalah information overload dengan menggunakan teknik-teknik dari bidang ilmu yang terkait. Teks mining dapat dipandang sebagai suatu perluasan dari data mining atau knowledge-discovery in database (KDD), yang mencoba untuk menemukan pola-pola menarik dari basis data berskala besar. Namun teks mining memiliki potensi komersil yang lebih tinggi dibandingkan dengan data mining, karena kebanyakan format alami dari penyimpanan informasi adalah berupa teks. Teks mining menggunakan informasi teks tak terstruktur dan mengujinya dalam upaya mengungkap struktur dan arti Yang “tersembunyi” dalam teks.

Page 4: Algoritma Dynamic Programming

Perbedaan mendasar antara teks mining dan data mining terletak pada sumber data yang digunakan. Pada data mining, pola-pola diekstrak dari basis data yang terstruktur, sedangkan di teks mining,pola-pola diekstrak dari data tekstual (natural language). Secara umum, basis data didesain untuk program dengan tujuan melakukan pemrosesan secara otomatis, sedangkan teks ditulis untuk dibaca langsung oleh manusia. (Hearst, 2003)

2.3.2 Ruang Lingkup Teks Mining

Teks mining merupakan suatu proses yang melibatkan beberapa area teknologi. Namun secara umum proses-proses pada teks mining mengadopsi proses data mining. Bahkan beberapa teknik dalam proses teks mining juga menggunakan teknik-teknik data mining. Ada empat tahap proses pokok dalam teks mining, yaitu pemrosesan awal terhadap teks (text preprocessing), transformasi teks (text transformation), pemilihan fitur (feature selection), dan penemuan pola (pattern discovery). (Even-Zohar, 2002).

a. Text Preprocessing

Tahap ini melakukan analisis semantik (kebenaran arti) dan sintaktik (kebenaran susunan) terhadap teks. Tujuan dari pemrosesan awal adalah untuk mempersiapkan teks menjadi data yang akan mengalami pengolahan lebih lanjut. Operasi yang dapat dilakukan pada tahap ini meliputi part-of-speech (PoS) tagging, menghasilkan parse tree untuk tiap-tiap kalimat, dan pembersihan teks.

b. Text Transformation

Transformasi teks atau pembentukan atribut mengacu pada proses untuk mendapatkan representasi dokumen yang diharapkan. Pendekatan representasi dokumen yang lazim digunakan adalah “bag of word” dan model ruang vektor (vector space model). Transformasi teks sekaligus juga melakukan pengubahan kata-kata ke bentuk dasarnya dan pengurangan dimensi kata di dalam dokumen. Tindakan ini diwujudkan dengan menerapkan stemming dan menghapus stopwords.

c. Feature selection

Pemilihan fitur (kata) merupakan tahap lanjut dari pengurangan dimensi pada proses transformasi teks. Walaupun tahap sebelumnya sudah melakukan penghapusan kata-kata yang tidak deskriptif (stopwords), namun tidak semua kata-kata di dalam dokumen memiliki arti penting. Oleh karena itu, untuk mengurangi dimensi, pemilihan hanya dilakukan terhadap kata-kata yang relevan yang benar-benar merepresentasikan isi dari suatu dokumen. Ide dasar dari pemilihan fitur adalah menghapus kata-kata yang

kemunculannya di suatu dokumen terlalu sedikit atau terlalu banyak.

d. Pattern Discovery

Pattern discovery merupakan tahap penting untuk menemukan pola atau pengetahuan (knowledge ) dari keseluruhan teks. Tindakan yang lazim dilakukan pada tahap ini adalah operasi teks mining, dan biasanya menggunakan teknik-teknik data mining. Dalam penemuan pola ini, proses teks mining dikombinasikan dengan proses-proses data mining. Masukan awal dari proses teks mining adalah suatu data teks dan menghasilkan keluaran berupa pola sebagai hasil interpretasi atau evaluasi. Apabila hasil keluaran dari penemuan pola belum sesuai untuk aplikasi, dilanjutkan evaluasi dengan melakukan iterasi ke satu atau beberapa tahap sebelumnya. Sebaliknya, hasil interpretasi merupakan tahap akhir dari proses teks mining dan akan disajikan ke pengguna dalam bentuk visual. (Even-Zohar,2002).

2.3.3 Ekstraksi Dokumen

Teks yang akan dilakukan proses teks mining, pada umumnya memiliki beberapa karakteristik diantaranya adalah memiliki dimensi yang tinggi, terdapat noise pada data, dan terdapat struktur teks yang tidak baik. Cara yang digunakan dalam mempelajari suatu data teks, adalah dengan terlebih dahulu menentukan fitur-fitur yang mewakili setiap kata untuk setiap fitur yang ada pada dokumen. Sebelum menentukan fitur-fitur yang mewakili, diperlukan tahap preprocessing yang dilakukan secara umum dalam teks mining pada dokumen, yaitu case folding, tokenizing, filtering, stemming, tagging dan analyzing. Gambar 2.1 adalah tahap dari preprocessing: (Triawati, 2009).

Gambar 2.1 : Tahap Preprocessing (Pemrosesan Awal)

2.3.3.1 Case Folding dan Tokenizing

Case folding adalah mengubah semua huruf dalam dokumen menjadi huruf kecil hanya “a” sampai huruf “z” yang diterima. Karakter selain huruf dihilangkan dan dianggap

CASE FOLDING

TOKENIZING

FILTERING

STEMMING

Page 5: Algoritma Dynamic Programming

delimiter. Tahap tokenizing/parsing adalah tahap pemotongan string input berdasarkan tiap kata yang menyusunnya. Gambar 2.1 adalah proses tokenizing: (Triawati, 2009).

Gambar 2.2 : Proses Tokenizing

2.3.3.2 Filtering

Filtering adalah tahap mengambil kata-kata penting dari hasil token. Bisa menggunakan algoritma stoplist (membuang kata yang kurang penting) atau wordlist (menyimpan kata penting). Stoplist / stopword adalah kata-kata yang tidak deskriptif yang dapat dibuang dalam pendekatan bag-of-words.

Gambar 2.3 : Proses Filtering

2.3.3.3 Stemming

Tahap stemming adalah tahap mencari root kata dari tiap kata hasil filtering. Pada tahap ini dilakukan proses pengembalian berbagai bentukan kata ke dalam suatu representasi yang sama. Tahap ini kebanyakan dipakai untuk teks berbahasa inggris dan lebih sulit diterapkan pada teks berbahasa Indonesia. Hal ini dikarenakan bahasa Indonesia tidak memiliki rumus bentuk baku yang permanen (Triawati, 2009 ).

Stemming merupakan suatu proses untuk menemukan kata dasar dari sebuah kata. Dengan menghilangkan semua imbuhan (affixes) baik yang terdiri dari awalan (prefixes), sisipan (infixes), akhiran (suffixes) dan confixes (kombinasi dari awalan dan akhiran) pada kata turunan. Misalnya kata “berlari” dan “dilarikan” akan diubah menjadi sebuah kata yang sama yaitu “lari”.

Metode stemming memerlukan masukan berupa kata yang terdapat dalam suatu dokumen, dengan menghasilkan

keluaran berupa kata dasar. Mencari kata dasar (root word) dari suatu kata yang berimbuhan di dalam bahasa Indonesia merupakan pekerjaan yang kompleks. Berbeda dengan bahasa Inggris yang hanya memiliki imbuhan berupa suffixes (akhiran), kata-kata dalam bahasa Indonesia bisa memiliki imbuhan yang terdiri dari prefixes (awalan), suffixes (akhiran), infixes (sisipan) dan confixes (kombinasi dari awalan, akhiran dan sisipan). Penggunaan imbuhan di dalam bahasa Indonesia bisa memakai lebih dari satu prefiks dan sufiks dalam satu kata. Sebuah kata dengan awalan bisa memiliki arti yang berbeda dari kata dasarnya. hal ini disebut kata turunan. selain itu sebuah awalan juga dapat mengubah huruf awal suatu akar kata yang biasa disebut peluluhan, sehingga dibutuhkan pengkodean ulang (recode) untuk menemukan kembali akar kata berdasarkan penggunaan awalan.

Gambar 2.4 : Proses Stemming

Page 6: Algoritma Dynamic Programming

3. PERANCANGAN

3.1 Perancangan Sistem

Dalam tahap ini dilakukan pencarian dan pengumpulan informasi yang dibutuhkan selama perancangan sistem. Metode yang digunakan untuk mengumpulkan informasi dan data adalah metode studi literatur, yaitu dengan mempelajari literatur yang terkait dengan penelitian, antara lain mengenai Algoritma Levenshtein Distanse dan penerapannya pada sistem pengecekan ejaan berbahasa Indonesia, bahasa pemrograman PHP, HTML dan Javascript.

Pengecekan dilakukan per kata, kalimat masukan akan masuk ke dalam tahap preprocessing terlebih dahulu, sebelum diproses lebih lanjut. Proses preprocessing-nya meliputi penghilangan tanda baca, tokenisasi terhadap masing-masing kata. Kemudian setiap token akan dicocokkan ke basis data menggunakan Algoritma Dynamic Programming berupa algoritma Levenshtein Distance. Setelah dilakukan perhitungan maka sistem akan menampilkan kata saran yang mendekati kesalahan penulisan. Diagram alir Sistem pengecekan ejaan kata adalah sebagai berikut.

Gambar 3.1 Flowchart Sistem Pengecekan Ejaan

3.2 Perancangan Basis DataPerancangan basis data meliputi perancangan tabel yang

akan digunakan untuk menyimpan data kata Dasar bahasa Indonesia yang dapat diunduh dari http://indodic.com/ IndoWordList. zip. Referensi kata yang tersedia cukup banyak yaitu 41,057 kata Berbahasa Indonesia.

4. IMPLEMENTASI

Pada implementasi ini sistem yang dibangun akan memberikan saran kata kunci baru yang merupakan pembetulan dari ejaan kata kunci sebelumnya. Saran kata kunci baru yang diberikan adalah: universitas yang merupakan pengkoreksian dari kata unverstas. Prosesnya dapat dijelaskan sebagai berikut:

Kata kunci = unverstas

- Langkah 1Kata kunci = unverstas, dipecah ke dalam array sehingga:

Array ( [0] => unverstas).

- Langkah 2Untuk setiap isi array lakukan pencarian pada table CRAWL. Apabila pencarian bernilai false maka lakukan proses saranKata. Pada kondisi ini kata unverstas bernilai false sehingga proses saran Kata akan dilakukan terhadap kata unverstas.

- Langkah 3Filter semua kata pada tabel KATA yang memiliki panjang karakter (P) antara Pkatakunci-3 sampai Pkatakunci+3. Sehingga untuk kata unverstas dengan panjang 9 maka kata-kata yang terpilih adalah yang memiliki panjang antara 6 sampai 12.

- Langkah 4Untuk setiap kata terfilter dari tabel KATA lakukan penghitungan jarak terhadap kata unverstas dengan metode Levenshtein Distance. Misalkan tiga kata dari tabel kata yang akan dibandingkan adalah investasi (panjang kata = 9), universitas (panjang kata = 11) dan integritas (panjang kata = 10).

U N V E R S T A S0 1 2 3 4 5 6 7 8 9

I 1 1 2 3 4 5 6 7 8 9N 2 1 1 2 3 4 5 6 7 8V 3 2 2 1 2 3 4 5 6 7E 4 3 3 2 1 2 3 4 5 6S 5 4 4 3 2 2 2 3 4 4T 6 5 5 4 3 3 3 2 3 4A 7 6 6 5 4 4 4 3 2 3S 8 7 7 6 5 5 4 4 3 2I 9 8 8 7 6 6 5 5 4 3

Tabel 4.1 Menghitung nilai jarak untuk kata investasi

Page 7: Algoritma Dynamic Programming

U N V E R S T A S0 1 2 3 4 5 6 7 8 9

U 1 0 1 2 3 4 5 6 7 8N 2 1 0 1 2 3 4 5 6 7I 3 2 1 1 2 3 4 5 6 7V 4 3 2 1 2 3 4 5 6 7E 5 4 3 2 1 2 3 4 5 6R 6 5 4 3 2 1 2 3 4 5S 7 6 5 4 3 2 1 2 3 3I 8 7 6 5 4 3 2 2 3 4T 9 8 7 6 5 4 3 2 3 4A 10 9 8 7 6 5 4 3 2 3S 11 10 9 8 7 6 4 4 3 2

Tabel 4.2 Menghitung nilai jarak untuk kata universitas

U N V E R S T A S0 1 2 3 4 5 6 7 8 9

I 1 1 2 3 4 5 6 7 8 9N 2 2 1 2 3 4 5 6 7 8T 3 3 2 2 3 4 5 5 6 7E 4 4 3 3 2 3 4 5 6 7G 5 5 4 4 3 3 4 5 6 7R 6 6 5 5 4 3 4 5 6 7I 7 7 6 6 5 4 4 5 6 7T 8 8 7 7 6 5 5 4 5 6A 9 9 8 8 7 6 6 5 4 5S 10 10 9 9 8 7 7 6 5 4

Tabel 4.3 Menghitung nilai jarak untuk kata integritas

Dari perhitungan yang dilakukan melalui Tabel 4.1, Tabel 4.2 dan Tabel 4.3 di peroleh nilai jarak untuk setiap kata yang dibandingkan sebagai berikut:

LD(unverstas, investasi) = 3LD(unverstas, universitas) = 2LD(unverstas, integritas) = 4

- Langkah 5Update nilai jarak dari semua kata di tabel KATA terfilter yang memiliki nilai jarak antara 1 sampai 3. Oleh karena sistem hanya menyimpan nilai jarak antara 1 sampai 3 maka hanya kata universitas dan investasi yang terupdate nilai jaraknya pada table KATA.

- Langkah 6Urutkan isi tabel kata berdasarkan kriteria jarak terendah. Kata pada urutan teratas merupakan kata saran terpilih. Sehingga pada kasus ini kata universitas terpilih sebagai kata saran bagi kata unverstas. [4]

5. HASIL RUNNINGBerikut merupakan hasil running program untuk

menerapkan rancangan sistem tersebut.

Gambar 2 Hasil Running Program

6. KESIMPULAN

Berdasarkan hasil pengujian yang dilakukan dapat kita ketahui bahwa algoritma dynamic programming dapat diterapkan pada text mining, hal tersebut dibuktikan dengan pengujian koreksi ejaan kata dengan mencari nilai terdekat dari kemungkinan perubahan kata yang ada di database kamus kata yang tersimpan.

7. DAFTAR PUSTAKA

[1] Andhika, Fatardhi Rizky. 2010. “Penerapan String Suggestion dengan Algoritma Levenshtein Distance dan Alternatif Algoritma Lain dalam Aplikasi”. Bandung : Institut Teknologi Bandung.

[2] Adriyani, N. M. M. 2012. “Implementasi algoritma levenshtein distance dan metode empiris untuk menampilkan saran perbaikan kesalahan pengetikan dokumen berbahasa Indonesia”. Universitas Udayana.

[3] Ghifary, Muhammad. 2007. “Penerapan Algoritma Dynamic Programming untuk Mencari Solusi Masalah String Edit Distance”. Bandung : Institut Teknologi Bandung.

[4] Benisius. “Sistem Pengkoreksian Kata Kunci dengan Menggunakan Metode Levenshtein Distance”. Maluku : Universitas Halmahera.

[5] http://jurnal.untad.ac.id/jurnal/index.php/JIMT/article/ view/135/107 diakses tanggal 17 Mei 2015 jam 21.30