【问题标题】:How to simply check for the proximity of two words?如何简单地检查两个词的接近度?
【发布时间】:2012-11-30 00:15:10
【问题描述】:

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

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

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

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

【问题讨论】:

标签: string-comparison java


【解决方案1】:

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

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

这是一个你可以尝试的实现Algorithm Implementation/Strings/Levenshtein distance

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

【讨论】:

  • StringUtils in Apache commons-lang 有一个实用的方法来计算 Levenshtein 距离。
  • 酷!谢谢。另外,Apache Common StringUtils在v3中提供了getLevenshteinDistance()方法!
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 2015-05-04
相关资源
最近更新 更多