Levenshtein距离和三角不等式

时间:2013-09-20 06:49:23

标签: string algorithm levenshtein-distance

我对Levenshtein距离和三角不等式感到困惑。维基百科和其他文章说,Levenshtein距离遵循三角不等式。

三角不等式表示x+y>z,但对于Levenshtein距离,在我看来x+y可以等于z。例如,kitten-> sitting=3kitten->sittin=2sittin->sitting=1。我在这里缺少什么?

修改

三角形不等式不在eucledian空间,而是度量空间。在度量空间中,三角不等式为d(x,z)<= d(x,y)+d(y,z)

2 个答案:

答案 0 :(得分:3)

三角形不等式表明x+y>=z

答案 1 :(得分:1)

我想提一下,很多任务都是使用标准化的Levenshtein距离,反之亦然。类似于长度为4和10的单词之间的距离2意味着更多50%和80%的相似性。在许多情况下,归一化的Levenshtein距离不满足三角不等式。因此,从数学的角度来看,它不是指标。

然而,可以通过Levenshtein距离的正确归一化来实现三角不等式。

让通用Levenshtein距离(GLD)归一化Levenshtein距离。 GLD是[0,1]中的度量。给定两个字符串X和Y,其中有限字母表的长度为| X |和| Y |。标准化的等式如下:

GLD(X,Y)= 1 - d(X,Y)/ MAX(| X |,| Y |)

其中d(X,Y)是Levenshtein距离。

这种归一化满足了三角不等式作为文章[1]的结果。

我在创建的Nuget包中使用了这种方法 - BlueSimilarity [2]。

您的示例

X =&#34;小猫&#34;,Y =&#34;坐着&#34;,Z =&#34; sittin&#34;

GLD(X,Z)&lt; = GLD(X,Y)+ GLD(Y,Z)

1 - d(X,Z)/ MAX(| X |,| Z |)&lt; = 1 - d(X,Y)/ MAX(| X |,| Y |)+ 1 - d(Y ,Z)/ MAX(| Y |,| Z |)

1 - 2 / MAX(6,6)&lt; = 1 - 3 / MAX(6,7)+ 1 - 1 / MAX(6,7)

0.67 <= 1.43

参考文献:

[1]李玉坚,刘波;归一化Levenshtein距离度量; IEEE      模式分析和机器智能交易,2007

[2] Rozinek,Ondrej; BlueSimilarity;     https://www.nuget.org/packages/BlueSimilarity/