Damerau-Levenshtein距离为单词

时间:2009-09-06 15:21:01

标签: sql-server algorithm levenshtein-distance

我正在寻找这样一种算法,但是在单词之间而不是字母之间进行替换。有这样的算法吗?

我正在寻找使用SQL Server的实现,但算法的名称将足够好。

2 个答案:

答案 0 :(得分:1)

据我所知,没有理由你不能只使用现有的Levenshtein算法 - 只使用单词作为符号而不是字母。

答案 1 :(得分:0)

  1. 按空格分割两个字符串
  2. 通过遍历两个字符串中的单词来创建单词哈希表(如果需要,将从分割操作中获得的数组连接成一个),每个新单词都会获得一个递增的新数字
  3. 使用Levenshtein算法得到2个数字的数字(但是没有将它们转换回字符串,因为11,12 - >“1112” - > 1,1,1,2
  4. 如果你需要在重新排列单词的同时找到拼写错误,我发现用最少空格的单词并将其拆分数组排列成不同顺序重新排列的相同单词的字符串,然后在新单词和第二单词上运行Levenshtein短语效果很好!

    哈沃德医学院(2个学位,6个排列) 哈佛医学院(3个学位,24个排列) Levenshtein距离 - 17 比较说,“斯坦福医学院”(Levenshtein距离5)

    Harward School Medical vs. Harward School of Medicine拥有6的LD。仍然允许斯坦福的错误,但是排名很高,所以你可以建立像丢弃的话这样的东西(在这种情况下丢弃“ LD只有3)

    按空格排列单词的性能为O(n!),丢弃单词为O(n + m),其中n,m为每个短语中的单词数,除非您想要删除多个单词,反之亦然,您只能选择删除少于4个字母的单词,或介词/形容词列表中的单词等。

    Levenshtein的表现在其维基百科页面上有解释。