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

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

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

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

最佳答案

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

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

这是您可以尝试的实现 Algorithm Implementation/Strings/Levenshtein distance

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

关于string-comparison - 如何简单地检查两个单词的接近程度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13837275/

10-14 12:24