【发布时间】:2011-08-16 13:48:43
【问题描述】:
我想为 Android 开发一个软键盘,并且已经有了一个自动更正算法,该算法根据输入字符和字典中单词的字符是否在键盘上相邻这一事实提出建议。这与 levenshtein-algorithm 结合使用(如果必须用不同的字符替换一个字符,则检查它们是否是邻居)。这就是为什么这个检查被非常频繁地调用。目前,它消耗了 50% 的时间用于自动更正。
我目前的方法是使用 3 层单独的 trie。第一层:第一个字符。第二层:第二个字符:第三层:布尔值,如果字符是邻居,则保存信息。但我担心尝试是矫枉过正?每个孩子的实习生哈希图也可能会减慢速度?我应该使用自己的 charToNumber 函数构建哈希图吗?
你会怎么做?可以避免哪些瓶颈?每次执行检查时都调用 Character.toLowerCase() 似乎效率低下。
我希望你能帮助我加快任务:)
【问题讨论】:
-
50% 的自动更正时间似乎是一个巨大的数字,但它并没有告诉我们它如何影响用户体验。纠正一个单词需要多长时间,需要多长时间?
-
目前,它是一个普通的java应用程序,因为我想先开发引擎(Android模拟器速度会减慢开发速度;))。平均“搜索”需要 80 毫秒,而检查键是否相邻则需要 40 毫秒。但是我的台式电脑有 4x4 GHz,所以我猜 1 GHZ 智能手机上的用户体验会受到很大影响,但我仍然需要对此进行测试;)
标签: java keyboard levenshtein-distance neighbours