我正在研究字符串匹配算法。我遇到的最有用的是我的手机使用的一个(SE xPeria neo v上的android 2.3.4)。
如屏幕截图中所示,我按下附近的字符jiw
,我想要的是正确的。
似乎算法类似于levenstein distance(输入和字典之间的距离)。不知何故,近字符在字符串匹配中具有某些值。
有关正在使用的算法的任何想法吗?
答案 0 :(得分:3)
我拉了Android source code并寻找拼写检查。我发现这个目录似乎包含了你要找的来源:
packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/
文件spellcheck/AndroidSpellCheckerService.java
看起来像是做了所有繁重工作的人,但Suggest.java
似乎也在某种程度上有所涉及。
答案 1 :(得分:2)
此excellent information retrieval book有一个关于Levenstein distance的详细部分,包括加权变体。然后可以将权重视为键盘上按键之间的距离。