【问题标题】:How Similar Are Two Words两个词有多相似
【发布时间】:2012-01-14 13:42:33
【问题描述】:

有没有比“Levenshtein distance”算法更精确的算法?? http://en.wikipedia.org/wiki/Levenshtein_distance

【问题讨论】:

  • 这取决于你如何定义准确性。
  • 为什么 Levenshtein 不适合您?
  • 你追求什么样的相似性?不知道自己想要什么,就不可能提出其他措施。
  • @DanielFischer Levenshtein 返回带有短单词的错误结果
    例如,我正在文件中搜索与给定单词相似的单词
    ,我检查了文件中每个单词的算法,如果它返回的 int 小于 3 它是相似的,它适用于大词,但对于小词,当我搜索单词“one”时它不会类似的词是“core , line ,open ,move, long ,code”跨度>
  • 嗯,就编辑距离而言,所有的短词都比较相似,没有办法。根据长度进行缩放,正如 Regexident 建议的那样,可能会得到令人满意的结果,否则你需要找到你想要的相似度的明确规范。

标签: string algorithm


【解决方案1】:

Damerau–Levenshtein distance,它增加了对字符转置的支持并为常见的拼写错误提供了更多的覆盖。

要获得 LevenshteinDamerau-Levenshtein 的相似度百分比,请执行以下操作:

int relative_similarity = 1.0 - 1.0 / ((len(x) + len(y)) / 2) * lev(x, y); //untested

或者,您可能想查看longest common subsequence 作为相似度指标。

接下来有

语音匹配算法。

虽然 Smith 和它的德国对应 Schmidt 在使用编辑距离(又名 Levenshtein)时会出现完全不同的情况,但 Soundex 和 MEtaphone 会认为它们在语音上相似甚至等效。


但如果没有您告诉我们关于纯 Levenshtein 距离的问题错误,很难猜出更好的算法。

【讨论】:

  • Damerau-Levenshtein 距离比(经典)Levenshtein 更准确
    Levenshtein 使用排序词返回错误结果
  • @AymanJitan:Damerau-Levenshtein 也不是真正的文本度量(因为它不满足三角形不等式),在 BKTrees 的情况下,例如可能是一件相当糟糕的事情。如果您不向我们提供有关常见算法问题的更多信息,就不可能提供有用的建议。 “相似”可能意味着任何东西:字长、字形、语音、语义……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
相关资源
最近更新 更多