我正在寻找这样的算法,但一个可以在单词之间而不是字母之间进行替换的算法。有这样的算法吗?
我正在寻找一个使用SQL Server的实现,但算法的名称将足够好。
发布于 2009-09-06 16:21:48
据我所知,你没有理由不能只使用现有的Levenshtein算法-只使用单词作为符号,而不是字母。
发布于 2011-09-28 00:34:05
如果您需要在重新排列单词时查找拼写错误,我发现将空格最少的单词放回重新排列成不同顺序的相同单词的字符串中,然后对新单词和第二个短语运行Levenshtein非常有效!
哈沃德医学院(2个空间,6个排列)哈沃德医学院(3个空间,24个排列) Levenshtein距离- 17比“斯坦福医学院”(Levenshtein距离5)
哈沃德医学院vs.哈沃德医学院的LD为6。仍然允许斯坦福大学犯一个错误,但排名更接近,所以你可以增加一些东西,比如丢弃单词(在这种情况下,去掉" of“的LD只有3)。
按空格排列单词的性能是O(n!),丢弃单词的性能是O(n+m),其中n,m是每个短语中的单词数量,除非您想丢弃一个以上的单词,或者反之亦然,您只能选择丢弃少于4个字母的单词,或者从介词/形容词列表中删除单词,等等。
Levenshtein的性能在其维基百科页面上进行了解释。
https://stackoverflow.com/questions/1385909
复制相似问题