Какой алгоритм используется в программе проверки орфографии Android?
Я изучаю алгоритмы сопоставления строк. Один из самых полезных для использования, с которым я столкнулся, - это тот, который использует мой мобильный телефон (андроид 2.3.4 на SE xPeria neo v).
![enter image description here]()
Как видно на скриншоте, я нажал символы jiw
, которые рядом те, которые я хотел, и предложили правильно.
Кажется, что алгоритм похож на levenstein distance (расстояние между моим входом и словарем). Так или иначе близкие символы имеют некоторые значения в сопоставлении строк.
Любая идея об использовании алгоритма?
Ответы
Ответ 1
Я вытащил исходный код Android и искал проверку орфографии. Я нашел этот каталог, который, как представляется, содержит источники, которые вы ищете:
packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/
Файл spellcheck/AndroidSpellCheckerService.java
похож на тот, который выполняет всю тяжелую работу, но Suggest.java
также, по-видимому, участвует каким-то образом.
Ответ 2
Эта отличная книга поиска информации содержит подробный раздел расстояние Левенштейна, включая взвешенные вариации. Тогда весами можно считать расстояние между клавишами на клавиатуре.