21 December 2005

Algoritma Fonetik Bahasa Indonesia

Posted under: at 23:48

Algoritma fonetik adalah algoritma untuk mengelompokkan kata-kata berdasarkan cara pengucapannya. Jika fungsi F() adalah sebuah algoritma fonetik, maka F(“andy”) akan memiliki hasil yang sama dengan F(“andi”), karena ‘andy’ dan ‘andi’ memiliki cara pengucapan yang sama. Untuk Bahasa Inggris, algoritma yang populer adalah Soundex dan Metaphone.

Bagaimana dengan Bahasa Indonesia?

Algoritma fonetik untuk Bahasa Indonesia seharusnya jauh lebih sederhana daripada algoritma fonetik untuk Bahasa Inggris karena Bahasa Indonesia adalah bahasa yang fonetik: pengucapannya relatif konsisten dengan penulisan. Algoritma metaphone seharusnya dapat dimodifikasi menjadi jauh lebih sederhana untuk dapat digunakan dalam Bahasa Indonesia.

Tetapi karena saya terlalu malas untuk mempelajarinya, berikut adalah algoritma fonetik Bahasa Indonesia tanpa basisdata hasil rekaan dari saya sendiri:

  1. Ubah ejaan lama menjadi ejaan baru: ubah oe menjadi u, tj menjadi c, dj menjadi j. Untuk menghindari false positive, jangan ubah j menjadi y kecuali jika ada pengubahan ejaan lama menjadi ejaan baru yang lain. Hati-hati dengan urutan pengubahan, jangan sampai dj berubah menjadi y.

  2. Ganti konsonan yang berderet menjadi satu konsonan saja. Misalnya ‘anni’ menjadi ‘ani’.

  3. Normalkan diftong: ubah ai di akhir kata menjadi ay, au di akhir kata menjadi aw dan oi di akhir kata menjadi oy.

  4. Normalkan semivokal: ubah konsonan-y menjadi konsonan-i, iy menjadi i dan uw menjadi u

  5. Normalkan konsonan yang berbunyi nyaris sama: ubah kh dan q menjadi k, sy menjadi s, v menjadi f, z menjadi j, d menjadi t, b menjadi p (mungkin masih ada yang kurang atau salah).

  6. Normalkan ‘x': ubah x menjadi ks

  7. Ubah konsonan compound yang tersisa menjadi satu karakter: ng menjadi d dan ny menjadi b.

  8. Normalkan h diam: ubah konsonan-h-vokal menjadi konsonan-vokal saja.

  9. Hapus semua huruf vokal.

Untuk memuaskan ego saya, maka algoritma yang sama sekali belum pernah dicoba ini saya namakan: Algoritma Priyadi™. Ha! >:)

Khusus untuk nama orang, mungkin akan lebih baik jika algoritma fonetik Bahasa Indonesia (apapun algoritmanya, tentunya bukan Algoritma Priyadiâ„¢) dicampur dengan algoritma fonetik Bahasa Inggris. Hal ini akibat banyaknya nama orang Indonesia yang menganut pengucapan Bahasa Asing.

Selain itu, karena Bahasa Indonesia relatif sangat fonetik, kemiripan pengucapan bisa saja berbanding terbalik dengan jarak Levenshtein. Semakin mirip pengucapan dua buah kata, maka semakin dekat jarak Levenshtein-nya. Hanya saja, metoda ini akan membutuhkan tempat penyimpanan yang jauh lebih besar daripada jika menggunakan algoritma fonetik.

Mungkin saya sedang reinventing the wheel. Mungkin sudah ada algoritma lain yang lebih baik dan tentunya lebih terbukti? Atau mungkin sudah ada yang sudah mempelajari efektivitas algoritma fonetik Bahasa Inggris jika diterapkan pada Bahasa Indonesia? Jika belum ada, mungkin ini topik yang baik untuk tugas akhir mahasiswa S1 teknik atau sastra.

Pesan saya, namakan algoritma anda dengan nama anda sendiri, jangan nama dosen pembimbing anda, kecuali kalau nama anda adalah ‘Priyadi’ :D.

46 Responses

Trackback: Use this URI to trackback this entry. Use your web browser's function to copy it to your blog posting.

Comment RSS: You can track conversation in this page by using this page's Comments RSS (XML)

Gravatar: You can have a picture next to each of your comments by getting a Gravatar.

Leave a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Warning: Comments carrying links to questionable sites will be removed!