我想检查两个词是否彼此非常接近。我的需求非常简单:我们允许用户通过回复电子邮件来执行操作,并且用户应该用一个词( APPROVED
、 REFUSED
等)来回答。可能采取的行动 list 非常短。现在,我必须解析这个答案,但我的比较必须是“错别字安全”,即如果用户输入是 aproved
或 apporved
例如,它应该没问题。
当然,我可以创建自己的几乎可以的单词( ["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/