Я только что закончил реализацию средства проверки орфографии и использовал комбинацию из следующего для получения списка «предлагаемых» слов
- Фонетическое хеширование слова с ошибкой для поиска хэша идентичных словарных хэшей реальных слов (для java посмотрите кодек Apache Commons для подходящей библиотеки). Фонетический хеш вашего словарного файла может быть предварительно вычислен.
- Редактировать расстояние между входом и потенциалами (это достаточно дорого, поэтому вам нужно сначала сократить список с помощью фонетического хэша, предполагая более высокую загрузку объема - в моем случае, проверку орфографии на сервере)
- Известный список распространенных орфографических ошибок, например получай против получай.
- Упорядоченный список наиболее распространенных слов в английском языке
По сути, я взвешивал каждое потенциальное слово в основном на основе расстояния редактирования и общности. например если вероятность слова в процентах, то
weight = edit-distance * 100 / probability
(чем меньше вес, тем лучше)
Но тогда я также переопределяю любой результат с помощью известных общих орфографических ошибок (т. Е. Они всегда плавают в верхнем предложенном результате).
Возможно, есть лучшие способы, но это сработало довольно хорошо.
Вы также можете игнорировать ВСЕ слова CAPS, инициалы и т. Д., Поэтому выбор того, что игнорировать, также является предметом размышлений.