我一直在寻找轻量级库,它允许我输入一堆单词,然后询问给定单词是否有任何接近的匹配项。z
我并不特别关心底层算法(我认为一个简单的汉明距离算法可能就足够了,如果我自己承担这项任务)。
我只是在开发一种小型语言,当检测到“未定义的类”错误(很多时候它只是一个拼写错误的单词)时,我发现向用户提出建议很不错。不过,我不想在这个问题上浪费太多时间。
谢谢
我一直在寻找轻量级库,它允许我输入一堆单词,然后询问给定单词是否有任何接近的匹配项。z
我并不特别关心底层算法(我认为一个简单的汉明距离算法可能就足够了,如果我自己承担这项任务)。
我只是在开发一种小型语言,当检测到“未定义的类”错误(很多时候它只是一个拼写错误的单词)时,我发现向用户提出建议很不错。不过,我不想在这个问题上浪费太多时间。
谢谢
不一定是图书馆,但我认为这篇文章可能真的很有帮助。它主要描述了拼写校正器如何在 python 中工作的一般工作原理,但也有一个 java 实现的链接,如果这是你正在寻找的东西,你可以使用它(请注意,我之前没有专门使用过 java 的) )
Levenshtein 距离是处理它的常用方法。只需将所有单词添加到列表中,然后暴力迭代它并返回最小距离。这是一个具有 Levenschtein 函数的库:http ://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringUtils.html
如果您有大量单词并且希望它快速运行,那么您必须使用 ngrams。将每个单词溢出成双拼,然后将 (bigram, word) 添加到地图中。使用地图查找目标词中的二元组,然后遍历候选词。不过,这可能比您想做的工作还要多。