最小编辑距离python代码_最小编辑距离算法

最小距离算法用来计算两个字符串之间的相似度,这次主要是因为对搜索结果的ReRank需要用这个算法做一下优化。

一、简介

1.最小编辑距离算法又称 Min Edit Distance,是用来计算两个字符串相似性的比较常用的算法,主要应用场景包括抄袭检测,拼写检查,相似度计算等等方面,这次主要是对搜索结果ReRank时需要用到此算法,Python版的实现已放在我的github上。

2. 此算法是利用source串经过插入,删除,更改三种操作转换为目标串所花费资源的多少来衡量两个字符串的相似度的,插入删除等操作分别有相应的权重,一般我们会将插入和删除设为1,更改设为2。

二、 算法伪码:

数据:

1. m =len(source)2. n =len(target)3. INSERT_COST = 1

4. DELETE_COST = 1

计算过程:

1. distance_matrix =[n][m]2. distance_matrix[0][0] = 0

3. distance_matrix[1~n][0] = INSERT_COST * i ( for i=1to n)4. distance_matrix[0][1~m] = DELETE_COST * i ( for i=1to m)5.for i = 1to n:for j = 1to m:

distance_matrix[i][j]=min(

distance_matrxi[i-1][j] +INSERT_COST,

distance_matrix[i-1][j-1] = (target[i-1] == source[j-1] ? 0 : 2),

distance_matrix[i][j-1] =DELETE_COST)6. result = distance_matrix[n][m]

三、概念,理解

1. 状态转移方程:D(i,j) = min (D(i-1,j) + INSERT_COST(source(i)), D(i-1,j-1)+ SUBSTITLE_COST(source(i),target(j)), D(i,j-1) + DELETE_COST(target(j))

2. 计算过程中3,4步的原理

以INSERT操作来举例,每次*i 的操作相当于在source串上做insert操作来达到与target串相同的目的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值