MEMBANGUN APLIKASI PENCOCOKAN STRING BERDASARKAN PENULISAN DAN KEMIRIPAN PENGUCAPAN
Naskah Publikasi
diajukan oleh Tryas Ayu Purnamasari 08.11.2339
kepada SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AMIKOM YOGYAKARTA 2012
BUILDING THE APLICATION STRING MATCHING BASED ON WRITING AND THE SIMILARITY OF PRONOUNCIATION
MEMBANGUN APLIKASI PENCOCOKAN STRING BERDASARKAN PENULISAN DAN KEMIRIPAN PENGUCAPAN Tryas Ayu Purnamasari Emha Taufiq Luthfi Jurusan Teknik Informatika STMIK AMIKOM YOGYAKARTA ABSTRACT In string matching, the use of algorithms that can provide accurate search results that are appropriate and in accordance with user preferences. Even possible to use the task of merging several algoritma. In this final task, the author will analyze and menimplementasikan algorithm Soundex and Approximate (writing). In addition, the author will also analyze and implement algorithm is merging the two. Soundex algorithm is based on algorithms that similarity speech. There is a difference between speech and spelling make a Soundex Indonesia to become more complex, so normalization is required. This is the difference that allows a Soundex Indonesia. This difference can be a barrier in the string-matching based on Soundex in Bahasa Indonesia. And in the end of this task, soundex have used 3 soundex, namely 1 soundex and without normalization with the normalization 2 soundex but different phonetic code. Shown in this final task, that in all the vocal Soundex algorithm which is coded as a string-matching will not make a 100% optimal. For the case of spelling and dialect, normalization is very helpful. Other algorithms, the algorithm is to compare the writing. This algorithm can help in a letter vocal problems. However, the accuracy of this algorithm in handling the problem of vowel letter, not the means to make the results match the string. Results of analysis and implementation of the merging algorithm with the Soundex algorithm is shown in the writing of this final task, consisting of 3 parts that is satisfactory, unsatisfactory, and not satisfactory. Keywords: string matching, a Soundex Indonesia, compare the Approximate (any posts).
1. Pendahuluan Dalam kehidupan sehari-haripun banyak terdapat proses yang digambarkan dalam suatu algoritma. Misalnya kesamaan nama-nama orang di Indonesia. Kesamaan nama-nama ini tidak hanya terdapat di negara Indonesia, melainkan di seluruh dunia. Maksud kata nama Indonesia dalam judul skripsi ini adalah objek analisis dan implementasi untuk algoritma yang berdasarkan penulisan dan kemiripan pengucapan adalah nama-nama orang yang menggunakan ejaan Bahasa Indonesia yang disempurnakan. Bukan hanya menggunakan ejaan Bahasa Indonesia, tapi juga menggunakan logat Bahasa Indonesia. Hal ini dikarenakan adanya beberapa nama yang terpengaruh budaya asing. Jadi walaupun terdengar seperti nama asing, namun nama tersebut dikategorikan sebagai nama Indonesia berdasarkan logatnya. Dalam Bahasa Indonesia, soundex sama halnya dengan homofon. Soundex merupakan salah satu algoritma yang mencocokan string berdasarkan kemiripan pengucapan (phoenic string matching). Pemilihan algoritma soundex dilatarbelakangi karena adanya sejarah soundex yang menyebutkan bahwa algoritma soundex juga merupakan algoritma yang mengatasi masalah pengejaan nama orang. Selain itu, belum banyaknya riset pencocokan string menggunakan algoritma soundex untuk Bahasa Indonesia, membuat adanya keinginan untuk mengulas lebih dalam topik ini. 2. Landasan Teori 2.1
Konsep Dasar Sistem Menurut Jerry FitzGerald, suatu sistem adalah suatu jaringan kerja dari prosedur-prosedur yang saling berhubungan, berkumpul bersama-sama untuk melakukan suatu kegiatan atau untuk menyelesaikan suatu sasaran yang tertentu. Untuk membedakan dan mengembangkan suatu sistem, maka membedakan unsur-unsur dari sistem yang di bentuknya.
2.2
Konsep Pemodelan Sistem 2.2.1 Definisi Use Use case class digunakan untuk memodelkan dan menyatakan unit fungsi/layanan yang disediakan oleh sistem (or bagian sistem: subsistem atau class) ke pemakai. Use case dapat dilingkupi dengan batasan sistem yang diberi label nama sistem.
2.2.2 Class Diagram Sedangkan Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti hubungan dinamis, pewarisan, asosiasi, dan agregasi. 2.3
Pencocokan String 1
Pencocokan string menurut Dictionary of Algorithms and Data Structures,
National Institute of Standards and Technology (NIST), pencocokan string (string matching) diartikan sebagai sebuah permasalahan untuk menemukan pola susunan karakter string di dalam string lain atau bagian dari isi teks. Pencocokan string merupakan bagian penting dari sebuah proses pencarian string (string searching) dalam sebuah dokumen. Hasil dari pencarian sebuah string alam dokumen tergantung dari teknik atau cara pencocokan string yang digunakan. 2.4
Approximate String Matching Merupakan pencocokan string dengan membedakan susunan karakter dalam string yang dicocokkan, memiliki jumlah, maupun urutan karakter dalam suatu string. Banyak algoritma bisa digunakan untuk pencocokan string dengan metode ini. Misalnya algoritma Brute Force, Backtracking, Greedy, dan lain-lain.
2.5
Phonetic String Matching 2
Fonetik (phonetics) adalah ilmu yang menyelidiki bunyi bahasa tanpa
melihat fungsi bunyi itu sebagai pembeda makna dalam suatu bahasa (language). Kata sifat fonetik adalah fonetis (phonetic). Phonetic String Matching merupakan suatu teknik pencocokan string yang membandingkan suatu string dengan string yang lain berdasarkan kode fonetis masing-masing. Beberapa contoh algoritma phonetic string matching yaitu : 1. Algoritma soundex, merupakan algoritma phonetic yang mendeteksi string nama yang mempunyai kemiripan dalam ucapan yang menghasilkan 4 digit kode
fonetis.
Dimana
huruf-huruf
yang
mirip
dalam
pengucapan
dikelompokkan menjadi satu kelompok dengan ditandai kode fonetis yang sama. 2. Algoritma metaphone, merupakan algoritma yang melakukan penangan khusus terhadap setiap fonem (satuan bunyi bahasa) dalam kata.
1
Binstock & Rex. 1995. “Practical Algorithmsfor Programmers”. Addison Wesley. Syaroni, Mukhamad dkk, 2004, “Pencocokan String Berdasakan Kemiripan Ucapan (Phonetic String Matching) dalam Bahasa Inggris”. Departemen Teknik Informatika ITB Bandung. 2
3. Algoritma caverphone, merupakan algoritma yang mempunyai langkahlangkah yang panjang dan rinci dan tidak menangani khusus untuk huruf-huruf tertentu dalam satu kelompok langkah, tetapi sudah digabung untuk beberapa huruf. 4. Algoritma doublemetaphone, merupakan salah satu algoritma phonetic yang mendeteksi string nama yang mempunyai kemiripan dalam ucapan yang menghasilkan dua buah kode fonetis, yaitu kode fonetis primer dan sekunder. Dalam skripsi ini, akan dipilih algoritma soundex. Pemilihan algoritma soundex dilatarbelakangi karena adanya sejarah soundex yang menyebutkan bahwa algoritma soundex juga merupakan algoritma yang mengatasi masalah pengejaan nama orang. Selain itu adanya versi penulisan kode fonetis yang berbeda, juga melatarbelakangi pemilihan algoritma soundex. Algoritma Soundex diciptakan oleh Robert Russell dan Margaret Odell yang kemudian dipatenkan pada tahun 1918 dan 1922. Sebuah variasi yang disebut American Soundex telah digunakan pada tahun 1930-an untuk mendukung dan menganalisa sensus Amerika dari tahun 1890 sampai 1920. 2.5.1 Soundex 1 Langkah-langkah untuk pencocokan string dengan metode Soundex 1 : a. Pertahankan huruf pertama dari suatu kata tersebut. b. Ubah abjad sisanya sesuai nilai Tabel 2-1 berikut : Tabel 2-1 : Kode Fonetis Soundex 1
c.
Huruf A, I, U, E, O
Kode Fonetis 1
P, G, B, D
2
L, M, N, R, X, H
3
V, F, S, T, J, Z
4
Q, C, K
5
W, Y
6
Hapus semua pasangan dari urutan angka.
d. Tulis empat posisi pertama, yang akan mengikuti pola:
. 2.5.2 Soundex 2 Langkah-langkah untuk pencocokan string dengan metode Soundex 2 :
a. Sebuah string nama dimasukkan, huruf pertama akan diambil. b. Berikan kode fonetis untuk masing-masing huruf, berdasarkan Tabel 2-2 Tabel 2-2 : Kode Fonetis Soundex 2
c.
Huruf A,E,I,O,U,H,Y
Kode Fonetis /
B,P C,J,S,X,Z D F (V) G, K (Q) L M N
0 1 2 3 4 5 6 7
R
8
T
9
W Karakter Khusus
w *
Jika terdapat dua atau lebih huruf berurutan dengan nomor (kode fonetis) yang sama, maka ambil salah satunya saja.
d. Jika ada huruf-huruf yang tergolong dalam tabel normalisasi maka, huruf-huruf tersebut dinormalisasikan dan kemudian baru dikodekan e. Abaikan semua huruf berikut a, e, h, i, o, u, dan y dengan kode fonetis / f.
Outputkan 4 digit pertama termasuk huruf awal ( ), jika hasilnya kurang dari 4 digit maka digit sisa diisi dengan karater khusus (*).
2.5.3 Soundex 3 Langkah-langkah untuk pencocokan string dengan metode Soundex 3 : a. Sebuah string nama dimasukkan, huruf pertama akan diambil. b. Berikan kode fonetis untuk masing-masing huruf, berdasarkan Tabel 2-3: Tabel 2-3 : Kode Fonetis Soundex 3 Huruf
Kode Fonetis
A,E,I,O,U,Y
/
B
0
C,J,S,X,Z
1
c.
D, T
2
F, P, V
3
G, K (Q)
4
L, R
5
M
6
N
7
W
8
H
9
Karakter Khusus
*
Jika terdapat dua atau lebih huruf berurutan dengan nomor (kode fonetis) yang sama, maka ambil salah satunya saja.
d. Jika ada huruf-huruf yang tergolong dalam tabel normalisasi maka, huruf-huruf tersebut dinormalisasikan dan kemudian baru dikodekan. e. Abaikan semua huruf berikut a, e, h, i, o, u, dan y dengan kode fonetis / f.
Outputkan 4 digit pertama termasuk huruf awal ( ), jika hasilnya kurang dari 4 digit maka digit sisa diisi dengan karater khusus (*).
g. Dalam soundex hanya ada keputusan sama (jika kode dari nama keyword dan nama pembanding sama) atau tidak sama (jika kode dari nama keyword dan nama pembanding berbeda). 2.6
Pengirisan Algoritma Penulisan Dengan Algoritma Soundex Pengirisan algoritma penulisan dengan algoritma soundex dilakukan selain untuk memenuhi tujuan ke-2, juga untuk mem-filter seluruh keluaran. Hal ini dimaksudkan untuk menjaga agar keluaran yang muncul hanya nama yang benarbenar mirip dengan nama keyword. Dengan begitu hanya nama-nama yang sama dari algoritma Soundex1 dan Soundex2 dan Soundex3 dan penulisan saja yang muncul.
2.7
Sistem Perangkat Lunak Yang Digunakan Visual basic adalah
salah satu bahasa pemrograman yang berorientasi
object (Object Oriented Programming : OOP). Pemrograman berorientasi obyek menawarkan konsep yang sederhana, dimana seorang programmer tidak dituntut untuk membuat aplikasi dengan membangun seluruh komponennya sendiri.
Program aplikasi dapat dibuat dengan memanfaatkan obyek-obyek yang sudah ada. Setiap obyek harus memiliki atribut/property dan event. 3. Analisis 3.1
Gambaran Umum 3
Model pendekatan pengembangan perangkat lunak yang digunakan
adalah model Waterfall. Model ini melakukan pendekatan secara sistematis dan urut mulai dari level kebutuhan sistem lalu menuju ke tahap analisis, desain, coding, testing / verification, dan maintenance. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan. Sebagai contoh tahap desain harus menunggu selesainya tahap sebelumnya yaitu tahap requirement. Aplikasi ini menggunakan model waterfall karena lebih mudah, kelebihan dari model ini adalah ketika semua kebutuhan sistem dapat didefinisikan secara utuh, eksplisit, dan benar di awal project, maka dapat berjalan dengan baik dan tanpa masalah. Meskipun seringkali kebutuhan sistem tidak dapat didefinisikan seeksplisit yang diinginkan, tetapi problem pada kebutuhan sistem di awal project lebih ekonomis, usaha dan waktu yang terbuang lebih sedikit jika dibandingkan problem yang muncul pada tahap-tahap selanjutnya. 3.2
Analisis Kebutuhan dan Spesifikasi Sistem ini berbentuk aplikasi, yang mana aplikasi ini digunakan bukan oleh seorang admin dan atau seseorang yang berkewenangan dengan hak tertentu, melainkan user biasa. Kebutuhan fungsional dari sistem ini hanya membutuhkan inputan data berupa string nama sebagai keyword. String nama ini merupakan kumpulan huruf dari a sampai z dan membentuk sebuah nama. Inputan nama tidak diperkenankan mengandung singkatan. Inputan ini akan diproses oleh sistem menggunakan kedua algoritma, tanpa meminta user memilih diantara kedua algoritma tersebut. Output pada sistem ini mengeluarkan keluaran berupa daftar namanama yang mirip dengan keyword yang berasal dari database, yang datanya adalah nama siswa SMA Negeri 1 Pemalang angkatan 2011/2012, nama tokoh Indonesia, serta nama orang terkenal Indonesia, berdasarkan kedua algoritma.
3
Roger S. Pressman. 2005. “Software Engineering : A Practitioner’s Approach
Selain itu
sistem
juga memberikan informasi mengenai kode fonetis yang
muncul. 3.3
Perancangan Sistem Untuk menspesifikasikan mengenai analisis proses dari perangkat lunak akan digunakan UML (Unified Modeling Language) karena sifatnya yang menjamin kejelasan sistem
yang
digambarkan
dan
kelengkapan
penggambarannya. 3.3.1 Use Case Diagram Gambar 3-1 di bawah ini adalah use case dari sistem yang dibangun untuk menganalisa
dan
mengimplementasi
algoritma Soundex
dan
penulisan :
String Matching
Cek nama Gambar 3-1 : Use Case Diagram(a)
Cek nama
String Matching
Gambar 3-2 : Use Case Diagram (b) 3.3.2 Class Diagram Merupakan alat bantu pengembangan sistem yang menjelaskan level terendah dari perilaku-perilaku proses yang terdapat dalam diagram aliran data secara rinci.
Gambar 3-3 : Class Diagram
3.3.3 Sequence Diagram : GUI.Input Nama
: Cek Nama
: Approximate String Matching
: Soundex
: DataNama
: Pencocokan String
: GUI.HasilStringMatching
: user
text1_KeyPress( )
klikTombolProses( )
cek_char( ) huruf( )
posisi( )
per_huruf( )
total_huruf( ) setNamaApp( ) getNamaApp( ) Soundex1( ) setKodeFonetis1( )
sama( )
getNamaS1( )
soundex1( )
Soundex2( ) setKodeFonetis2( ) getNamaS2( ) soundex2( )
Soundex3( ) setKodeFonetis3( ) getNamaS3( )
soundex3( ) mirip( )
Form_Load( )
klikTombolInputNamaLagi( )
klikTombolKeluar( )
Gambar 3-4 : Sequence Diagram
4. Hasil Penelitian dan Pembahasan 4.1
Implementasi Implementasi sistem (system implementation) merupakan tahap meletakkan sistem yang baru dikembangkan supaya nantinya sistem tersebut siap untuk dioperasikan sesuai dengan yang diharapkan. Tujuan dari tahap implementasi adalah menyiapkan semua kegiatan sistem sesuai dengan rancangan yang telah ditentukan. 4.1.1 Implementasi Program Program Pencocokan String ini mempunyai 2 form yaitu form input dan form keluaran. 4.1.2 Implementasi Database Database merupakan sekumpulan data yang saling berintegrasi satu sama lain dan terorganisasi berdasarkan sebuah skema atau stuktur tertentu dan tersimpan pada sebuah hardware computer.
4.2
Pemeliharaan Siistem Untuk membuat system yang baik dan bebas dari masalah maka perlu dilakukan pemeliharaan sistem. Pemeliharaan pada sistem yaitu pemiharaan pada software.
4.3
Pengujian Untuk melakukan pengujian dengan Soundex digunakan sample nama. Langkah pengujiannya adalah mencari kode fonetis nama keyword. Kemudian dicocokkan dengan kode fonetis dari nama-nama yang ada dalam data apakah ada kode fonetis yang sama. Setiap nama yang mempunyai kode fonetis yang sama akan dikelompokkan menjadi satu. Dalam tiap kelompok tersebut, tidak menutup kemungkinan adanya nama yang tidak sesuai. Artinya dalam satu kelompok tertentu, terdapat nama yang seharusnya tidak termasuk kelompok tersebut karena tidak satu suara dengan nama lain dalam kelompok tersebut. Kelompok tersebut diberi nama kelompok yang tidak sesuai. Pengujiannya adalah dari 5170 nama yang ada dalam database, akan diuji satu persatu. Setelah itu keluaran yang ada akan dicek secara manual, maka terbentuk 3 kelompok jenis keluaran. Yaitu keluaran memuasakan, kurang memuaskan, atau tidak memuaskan.
Banyaknya jumlah keluaran yang tidak memuaskan menunjukkan bahwa pengirisan algoritma penulisan dengan algoritma soundex kurang optimal. Namun bukan berarti pengirisan algoritma ini tidak berhasil. Karena kalau dilihat sisi positif dari pengirisan algoritma adalah filter yang menyebabkan keluaran tidak sebanyak jika algoritma tidak diiriskan. 4.4
Hasil
Gambar 4-1 : Tampilan Awal Aplikasi Form pencoccokan string di atas merupakan form yang pertama kali muncul ketika program dijalankan. Form ini digunakan untuk menginputkan nama yang akan diproses kemiripannya bedasarkan ejaan. Dibawah ini akan ditunjukkan contoh ketika program dijalankan.
Gambar 4-2 : Contoh Input Keyword “abdul”
Gambar 4-3 : Hasil Keluaran Keyword “abdul”
Aplikasi ini akan muncul sebuah peringatan jika tidak menginputkan nama atau nama kosong tetapi tetap meminta untuk memproses atau mengklik tombol “proses” maka akan muncul gambar seperti dibawah ini :
Gambar 4-4 : Peringatan
Gambar 4-5 : Validasi Dan jika menginputkan nama yang tidak ada pada database maka akan muncul message box atau validasi seperti diatas. Dalam message box tersebut ada 2 pilihan yaitu pilihan “ok” dan “cancel”. Jika memilh “Ok” maka akan menutup jendela validasi tersebut. Tetapi jika memilih “cancel” maka akan muncul gambar 4-6 seperti dibawah ini dan inputan tetap diproses namun hsilnya tidak sama persis karena sesuai dengan yang ada di database. Misalnya dengan menginputkan nama “abde”. Nama tersebut tidak ada didalam database. Dan hasilnya seperti pada gambar 4-7.
Gambar 4-6 : Informasi
Gambar 4-15 : Keyword “abde” 5. Kesimpulan Ketiga Algoritma Soundex dapat digunakan, hanya saja harus disesuaikan dengan kebutuhan. Misalnya, jika data yang digunakan sebagai acuan berskala kecil dan tidak menghiraukan Ejaan Yang Disempurnakan maka dapat menggunakan algoritma Soundex1. Sebaliknya, jika data acuan berskala besar dan memperhitungkan Ejaan Yang Disempurnakan serta ingin menghasilkan keluaran yang lebih akurat, maka dapat menggunakan algoritma Soundex2 maupun Soundex3. Kelemahan dari Soundex1 adalah tidak adanya normalisasi yang menyebabkan ketidaksempurnaan pengkodean untuk ejaan tertentu. Namun kelebihan Soundex ini yaitu jika nama yang dicocokan sederhana tanpa mengandung huruf-huruf yang harus dinormalisasi. Kelemahan Soundex2 dapat dilihat dari huruf H yang tidak dikodekan akan tidak tepat penggunaanya jika huruf H terdapat bukan di tengah dan atau di sebelah konsonan lain melainkan di belakan dari sebuah nama. Kelebihan Soundex2 ini yaitu pembagian kode fonetis yang cermat berdasar aturan baku berbahasa Indonesia membuat jumlah kelompok yang sesuai paling banyak, itu berarti algoritma Soundex ini paling mudah dan berhasil. Kelemahan dari Soundex3 justru jika huruf H dikodekan dan terdapat di tengah nama maka terdapat nama yang harusnya dikodekan sama namun tidak dikodekan sama. Kelebihan Soundex3 ini terlihat jika nama yang ingin dicocokan mengandung huruf yang “ cadel “.
Keluaran pengirisan algoritma penulisan dengan algoritma soundex kurang optimal. Namun bukan berarti pengirisan algoritma penulisan dengan algoritma soundex ini tidak berhasil. Karena kalau dilihat sisi positif dari pengirisan algoritma penulisan dengan algoritma soundex adalah filter yang menyebabkan keluaran tidak sebanyak jika algoritma tidak diiriskan.
DAFTAR PUSTAKA
Binstock & Rex. 1995. Practical Algorithmsfor Programmers. Addison Wesley.
Hanif Al Fatta. 2007. Analisis & Perancangan Sistem Informasi Untuk Keunggulan Bersaing Perusahaan & Organisasi Modern. Penerbit ANDI. HM, Jogiyanto. 1999. Analisis dan Desain Sistem Informasi : Pendekatan Terstruktur Teori dan Praktik Aplikasi Bisnis. Yogyakarta : Andi Offset.
Rahadian, Sukma. 2007. Tugas Akhir Perbandingan Pencocokan String Nama Dalam Bahasa Indonesia Berdasarkan Kemiripan Ucapan. Departemen Teknik Informatika Sekolah Tinggi Teknologi Telekomunikasi Bandung. Roger S. Pressman. 2005. Software Engineering : A Practitioner’s Approach Syaroni, Mukhamad dkk, 2004. Pencocokan String Berdasakan Kemiripan Ucapan (Phonetic String Matching) dalam Bahasa Inggris. Departemen Teknik Informatika ITB Bandung.