我想检查两个单词非常接近。我的需求非常简单:我们允许用户通过回复电子邮件来执行操作,用户应该回答一个单词(APPROVED
,REFUSED
等)。可能的行动清单非常简短。现在,我必须解析这个答案,但我的比较必须是“错字安全”,例如,如果用户输入是aproved
或apporved
,它应该好的。
当然我可以创建自己的几乎正确的单词(["Approved", "Aproved", "Apporved", ...]
)并将用户输入与此数组的每个元素进行比较,但定义所有可能的拼写错误真的很无聊..
我知道我可以用Lucene做到这一点,但对我的需求来说似乎有点太多了,理想情况下我希望有一个类似WordUtils.proximity("Approved", userInput)
的方法。另外,在我的情况下,语音比较不是强制性的。
是否有一个可以做到这一点的小型图书馆?
答案 0 :(得分:5)
您可以使用字符串的Levenshtein distance来表示它们的接近程度。
我想有更多的字符串距离算法,但之前我使用过它,它对我有用。
以下是您可以尝试Algorithm Implementation/Strings/Levenshtein distance
的实现此外,您可以使用StringUtils#getLevenshteinDistance()
中的Apache Commons-Lang