Tugas pemeriksaan ejaan adalah untuk mengetahui kata-kata yang salah eja dalam teks, dan juga untuk memberikan daftar pengganti dieja dengan benar.
Sebuah fasilitas pemeriksaan ejaan dapat menjadi aplikasi yang berdiri sendiri, atau terintegrasi dengan aplikasi lain pengolahan teks.
Kosakata biasanya berupa kamus. Kamus yang memungkinkan untuk digunakan dapat berupa kamus statik (dengan kosakata yang tetap) dan kamus dinamik (memungkinkan melakukan operasi mikro seperti menyisipkan atau menghapus elemen dari sebuah kata).
Struktur data yang sepertinya cocok untuk penggunaan ini adalah balanced binary tree, B-tree, Hash table and bloom filter.
Untuk kamus statis diperlukan metode pencarian yang efisien, daftar kata yang diurutkan menggunakan pencarian biner dapat menjadi alternatif yang baik untuk kemudahan pemrograman.
Sejumlah pemeriksa ejaan ada yang sama sekali tidak menggunakan kamus. Biasanya bergantung pada metode ekstraksi kata dari corpus yang sangat besar dan melakukan pemetaan kata (biasanya berupa trigram, 3 kata yang tersusun berurutan). Beberapa kelemahan dari metode ini adalah tidak dilakukannya pemberian label sebagai anomali dan adanya kesalahan ejaan pada corpus.
Untuk pengguna yang tidak pandai mengeja kata, fitur tambahan menyarankan kata alternatif yang benar sangatlah membantu. Pertanyaannya adalah bagaimana membangun suatu daftar alternatif kata-kata yang mirip satu sama lain dalam morfologi atau pengucapan.
Umum ditemukan bahwa kesalahan ejaan terjadi karena substitusi/penyisipan/penghapusan 1 huruf dan transposisi dari 2 huruf yang berdekatan. Jadi dengan membalik karakter dalam kata yang salah eja dan mencari kata pada kamus, kita dapat menemukan alternatif kata yang benar.
Sangat mungkin untuk menyusun kata yang memiliki kesamaan pengucapan (soundex code). Kemudian kata salah eja diubah menjadi kode soundex, dan kata-kata dengan fitur fonetik serupa diekstrak. Kata-kata serupa pengucapannya dapat ditemukan menggunakan algoritma kesamaan string (seperti algoritma Levenshtein) dan algoritma pencocokan fonetik (seperti algoritma soundex atau algoritma metaphone). Dan ketika memberikan alternatif, algoritma Levenshtein distance dapat digunakan untuk mengurutkan kata-kata alternatif.
Masalah dalam penggunaan sehari-hari pemeriksa kata yang menggunakan dua metode di atas adalah ketika kata yang ditemukan terdapat dalam kamus dan benar menurut pengucapannya namun tidak sesuai penempatannya. Lihat contoh-contoh kasus di bagian berikut untuk lebih jelasnya.
Penyelesaiannya bisa memanfaatkan daftar tatabahasa (grammar) dan melakukan POS-Tagging (memberikan label jenis kata). Namun sampai saat ini belum ada yang melakukan penyusunan daftar tatabahasa yang umum digunakan.
Salah ketik yang seharusnya dapat dideteksi dengan mudah menggunakan kamus.
Contoh
tidr
→tidur
Deteksi
Menggunakan kamus.
Catatan
Lihat:
- implementasi
aspell
,ispell
, dll. - implementasi algoritma pemeriksa ejaan dari Peter Norvig, "How to Write a Spelling Corrector"
Salah ketik yang dapat dideteksi dengan merujuk ke daftar frasa yang umum digunakan. Teknik ini seharusnya dapat mendeteksi penggunaan kata yang salah pada konteks namun benar menurut kamus.
Contoh
pertandingan semak bola
→pertandingan sepak bola
perselisihannya semakan seru
→perselisihannya semakin seru
Deteksi
Menggunakan ngram
sebagai dasar data.
Catatan
- Untuk ragam tulis, bisa menggunakan
ngram
dari corpus Kompas dan Wikipedia Indonesia. - Untuk ragam lisan, bisa menggunakan
ngram
dari corpus Twitter, namun masih harus dibersihkan secara manual.
Salah menempatkan kata, biasanya karena diterjemahkan dari bahasa asing.
Contoh
sosial media
→media sosial
Deteksi
belum ada ide
Catatan
Bisa menggunakan ngram
, namun kecenderungan salah mengidentifikasi (false positive) cukup tinggi. Seperti balap mobil
dan mobil balap
, keduanya benar dan merujuk ke dua konsep yang berbeda.
Kesalahan yang biasa terjadi karena menggunakan ragam lisan untuk tulisan yang seharusnya menggunakan ragam tulis.
Contoh
males banget makenya
→malas sekali menggunakannya
Deteksi
belum ada ide
Catatan
Mungkin perlu dibuat daftar tatabahasa yang biasa digunakan menurut ragamnya. Lihat implementasi Link Grammar Parser.
Biasanya digunakan pada ragam percakapan. Lihat makalah Perbandingan distribusi frekuensi kata bahasa Indonesia di Kompas, Wikipedia, Twitter, dan Kaskus.
Contoh
ia
→ya
mao
→mau
gw
→gue
wa
→gua
gokil
→gila
(istilah slang tahun 80an)pa amin
→Pak Amin
akika mawar makan
→aku mau makan
(umum digunakan banci/wadam)
atau yang cukup ekstrim.
QmO dLaM iDopQhO. q tWo… qMo mANk cLiDwAd cYanK m qHo.
tPhE qMo pLu tHwO„ mYLuPi”… aLwaYs 4’U.
cO’nA cMa qMo YaNk CoWaD qHo cYuM.
k’tHwA,, n cNeNk tHanKzb’4„ yOz aLaWAiCe d bEzT,, iN meYe heArD.
tHo_tHo..LupHz yOu„ bU_bU....
I’mReGrEeEeeEEeeEet nOw...
naFaZ..bNcHi
qOhnGmBAnK... hOeKkkKKk
Deteksi
belum ada ide
Catatan
Ini isu yang cukup kompleks. Namun sepertinya gabungan penggunaan trigram
dan kamus bisa menjadi solusi.
Contoh
mereka dari penyalahgunaan narkotika
→mereka [bersih] dari penyalahgunaan narkotika
Deteksi
belum ada ide
Catatan
Besar kemungkinan kesalahan deteksi terjadi.