Android 的拼写检查器中使用了哪种算法?
Posted
技术标签:
【中文标题】Android 的拼写检查器中使用了哪种算法?【英文标题】:Which algorithm is being used in Android's spell checker? 【发布时间】:2012-06-19 10:35:55 【问题描述】:我正在研究字符串匹配算法。我遇到的最有用的一个是我的手机使用的那个(SE xPeria neo v 上的 android 2.3.4)。
如屏幕截图所示,我按下了字符jiw
,它们接近我想要的字符并且它正确建议。
该算法似乎类似于levenstein distance(我的输入和字典之间的距离)。不知何故,附近的字符在字符串匹配中具有 some 值。
对所使用的算法有任何想法吗?
【问题讨论】:
能否解释一下为什么他们认为这不具建设性?这个问题非常精确(“使用什么算法?”),并且系统的源代码是公开的,所以这个问题可能有答案。 +1 表示简洁、可回答、有趣的问题。 非常有趣的编程问题,+1 投票,祝你的项目好运 【参考方案1】:我拉出Android source code 并寻找拼写检查。我发现这个目录似乎包含您正在寻找的来源:
packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/
文件spellcheck/AndroidSpellCheckerService.java
看起来像是负责所有繁重工作的文件,但Suggest.java
似乎也以某种方式参与其中。
【讨论】:
【参考方案2】:这个excellent information retrieval book 有一个关于Levenstein distance 的详细部分,包括加权变化。然后可以将权重作为键盘上按键之间的距离。
【讨论】:
谢谢@phs。这篇文章提供了很多信息,并指出我最初怀疑 Levenstein 距离是 Android 中字符串比较的度量标准。但只是怀疑..以上是关于Android 的拼写检查器中使用了哪种算法?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio / IntelliJ Idea 中添加字典进行拼写检查