如何简单地检查两个单词的接近程度?

时间:2012-12-12 10:05:00

标签: string-comparison java

我想检查两个单词非常接近。我的需求非常简单:我们允许用户通过回复电子邮件来执行操作,用户应该回答一个单词(APPROVEDREFUSED等)。可能的行动清单非常简短。现在,我必须解析这个答案,但我的比较必须是“错字安全”,例如,如果用户输入是aprovedapporved,它应该好的。

当然我可以创建自己的几乎正确的单词(["Approved", "Aproved", "Apporved", ...])并将用户输入与此数组的每个元素进行比较,但定义所有可能的拼写错误真的很无聊..

我知道我可以用Lucene做到这一点,但对我的需求来说似乎有点太多了,理想情况下我希望有一个类似WordUtils.proximity("Approved", userInput)的方法。另外,在我的情况下,语音比较不是强制性的。

是否有一个可以做到这一点的小型图书馆?

1 个答案:

答案 0 :(得分:5)

您可以使用字符串的Levenshtein distance来表示它们的接近程度。

我想有更多的字符串距离算法,但之前我使用过它,它对我有用。

以下是您可以尝试Algorithm Implementation/Strings/Levenshtein distance

的实现

此外,您可以使用StringUtils#getLevenshteinDistance()

中的Apache Commons-Lang