Saya mencoba menulis pemeriksa ejaan yang harusnya berfungsi dengan kamus yang cukup besar. Saya benar-benar ingin cara yang efisien untuk mengindeks data kamus saya untuk digunakan menggunakan jarak Damerau-Levenshtein untuk menentukan kata mana yang paling dekat dengan kata yang salah eja.
Saya mencari struktur data yang akan memberi saya kompromi terbaik antara kompleksitas ruang dan kompleksitas runtime.
Berdasarkan apa yang saya temukan di internet, saya memiliki beberapa petunjuk tentang jenis struktur data yang akan digunakan:
Trie
Ini adalah pemikiran pertama saya dan terlihat cukup mudah diimplementasikan dan harus menyediakan pencarian cepat / penyisipan. Perkiraan pencarian menggunakan Damerau-Levenshtein juga harus mudah diterapkan di sini. Tapi itu tidak terlihat sangat efisien dalam hal kompleksitas ruang karena Anda kemungkinan besar memiliki banyak overhead dengan penyimpanan pointer.
Patricia Trie
Ini sepertinya menghabiskan lebih sedikit ruang daripada Trie biasa karena pada dasarnya Anda menghindari biaya penyimpanan pointer, tapi saya agak khawatir tentang fragmentasi data jika kamus sangat besar seperti yang saya miliki.
Pohon Sufiks
Saya tidak yakin tentang ini, sepertinya beberapa orang merasa berguna dalam penambangan teks, tetapi saya tidak begitu yakin apa yang akan diberikannya dalam hal kinerja untuk pemeriksa ejaan.
Pohon Pencarian Ternary
Ini terlihat cukup bagus dan dalam hal kompleksitas harus dekat (lebih baik?) Dengan Patricia Tries, tapi saya tidak yakin mengenai fragmentasi jika itu akan lebih baik lebih buruk daripada Patricia Tries.
Burst Tree
Ini sepertinya jenis hibrid dan saya tidak yakin apa kelebihannya daripada Tries dan sejenisnya, tapi saya sudah membaca beberapa kali bahwa ini sangat efisien untuk penambangan teks.
Saya ingin mendapatkan umpan balik mengenai struktur data mana yang terbaik untuk digunakan dalam konteks ini dan apa yang membuatnya lebih baik daripada yang lain. Jika saya kehilangan beberapa struktur data yang bahkan lebih cocok untuk pemeriksa ejaan, saya juga sangat tertarik.