4

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

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

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

有没有小型图书馆可以做到这一点?

4

1 回答 1

5

您可以使用琴弦的Levenshtein 距离来指示它们的距离。

我想还有更多的字符串距离算法,但我以前用过这个,它对我有用。

这是一个您可以尝试的实现算法实现/字符串/Levenshtein distance

此外,您可以使用来自Apache Commons-Lang 的StringUtils#getLevenshteinDistance()

于 2012-12-12T10:08:48.463 回答