Levenshtein Distance 算法

因为想要得到两个字串的相似度,所以试用了这个Levenshtein Distance算法。
编辑距离就是用来计算从原串(s)转换到目标串(t)所需要的最少的插入,删除和替换的数目,在NLP中应用比较广泛,如一些评测方法中就用到了(wer,mWer等),同时也常用来计算你对原文本所作的改动数。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。
代码如下(网上找来的):

算法说明如下: string1 长度为 i=3 string2 长度为 j=4; 建立矩阵 D[i+1,j+1]=D[4,5]

            1. 赋值 D[0,0]=0; D[0,1]=1; D[0,2]=2; D[0,3]=3; D[0,4]=4; D[1,0]=1; D[2,0]=2; D[3,0]=3

 

0

1

2

3

0

0

1

2

3

1

1

 

 

 

2

2

 

 

 

3

3

 

 

 

4

4

 

 

 

 

          2 .设置 string1=abc;string2=defg; 比对 a b

        = (?上面的值 +1 ),(?左边的值 +1 ),(对角的值 +a b 的比对值,同为 0 ,不同为 1 )三值中的最小值。一次类推,得到的 End 值为两词之间的差距。

 

 

a

b

c

 

0

1

2

3

d

1

 

 

e

2

 

 

 

f

3

 

 

 

g

4

 

 

End

           3 .比如,比对黄花鱼与黄花菜

 

 

 

0

1

2

3

1

Min(2,2,0)

0

Min(3,1,2)

1

Min(4,2,3)

2

2

Min(1,3,2)

1

Min(2,2,0)

0

Min(3,1,2)

1

3

Min(2,4,3)

2

Min(1,3,2)

1

Min(2,2,1)

1

两词之间的差距为 1

 

4 .比如,比对猪蹄汤与海鲜汤

 

 

 

0

1

2

3

1

1

2

3

2

2

2

3

3

3

3

2

两词之间的差距为 2

5 .比如,比对上汤料与海鲜汤

 

 

 

0

1

2

3

1

1

2

3

2

2

2

3

3

3

2

3

两词之间的差距为 3 ,也就是讲没有相似度。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值