我对Levenshtein距离和三角不等式感到困惑。维基百科和其他文章说,Levenshtein距离遵循三角不等式。
三角不等式表示x+y>z
,但对于Levenshtein距离,在我看来x+y
可以等于z
。例如,kitten-> sitting=3
,kitten->sittin=2
和sittin->sitting=1
。我在这里缺少什么?
修改
三角形不等式不在eucledian空间,而是度量空间。在度量空间中,三角不等式为d(x,z)<= d(x,y)+d(y,z)
答案 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/