编辑距离问题(python实现)
文章目录
- 前言
- 一、编辑距离是什么?
- 二、问题分析
- python代码
前言
对于给定的字符串A和字符串B,计算其编辑距离d(A,B),编辑距离经常用来表示两个字符串的相似度。
一、编辑距离是什么?
编辑距离是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。
编辑距离可以用在自然语言处理中,例如拼写检查可以根据一个拼错的字和其他正确的字的编辑距离,判断哪一个(或哪几个)是比较可能的字。
DNA也可以视为用A、C、G和T组成的字符串,因此编辑距离也用在生物信息学中,判断二个DNA的类似程度。
二、问题分析
设待比较的两个字符分别为A[i],B[j],其中i,j分别表示A,B的第i,j个字符。
用d[i][j]表示A字串前i位与B字串前j位的编辑距离。
1、初始化:当A、B中有一个字串长度为0时,编辑距离d(A,B)等于另一个字符的长度。即,
d[i][j] = max{i,j} (min{i,j} = 0时)
2、计算剩余距离
删除操作:相当于d[i-i][j]+1
插入操作:相当于d[i][j-1]+1
替换操作:
当A[i] = B[j]时,相当于d[i-][j-1]+0
当A[i]≠B[j]时,相当于d[i-1][j-1]+1
即有,
d[i][j] = min{d[i-i][j]+1,d[i][j-1]+1,d[i-][j-1]+1} (A[i]≠B[j])
以上即为对问题的分析。
python代码
以coffee和coffe作为例子:
#编辑距离问题
def EditDist(a,b):m,n = len(a)+1,len(b)+1d = [[0]*n for i in range(m)]d[0][0]=0for i in range(1,m):d[i][0] = d[i-1][0] + 1for j in range(1,n):d[0][j] = d[0][j-1]+1temp = 0for i in range(1,m):for j in range(1,n):if a[i-1]==b[j-1]:temp = 0else:temp = 1d[i][j]=min(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+temp)#输出d[i][j]矩阵for i in range(m):print (d[i])return d[m-1][n-1]ed=EditDist("coffee","coffe")
print ('编辑距离为:',ed)
运行结果如图:
编辑距离问题(python实现)相关推荐
- 时间序列:五种编辑距离和Python实现
一.什么叫编辑距离? 在计算语言学和计算机科学中,编辑距离是一种通过计算将一个字符串转换为另一个字符串所需的最小操作数来量化两个字符串(例如单词)之间的不同程度的方法. 按照维基百科,编辑距离有五种, ...
- 最小编辑距离 动态规划 python
m和n的两个字符串,设有以下几种操作:替换(R),插入(I)和删除(D)且都是相同的操作.求转换一个字符串到另一个需要的最少操作数量.这个数量就可以被视为最小编辑距离.如:acd与ace的Editio ...
- 如何用python读取文本中指定行的内容
如何用python读取文本中指定行的内容 搜索资料 我来答 分享 新浪微博 QQ空间 浏览 5284 次 查看全文 http://www.taodudu.cc/news/show-64036.ht ...
- python codecs.open()及文件操作-文本处理 with open
20210810 以二进制并追加的形式写入文件 20210731 f.write('\n') 换行写入 20210625 https://blog.csdn.net/a543402496/articl ...
- 文件句柄和文件描述符的区别和理解指针
句柄是Windows用来标识被应用程序所建立或使用的对象的唯一整数,Windows使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等.Windows句柄有点象C语言中的文件句柄. ...
- 算法65----字符串
题目: 判断两个字符串是否互为变形词 字符串中数字子串的求和 去掉字符串中连续出现k个0的子串 判断两个字符串是否互为旋转词 将整数字符串转成整数值 替换字符串中连续出现的指定字符串 字符串的统计字符 ...
- Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离
Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...
- python 编辑距离_最小编辑距离python
1 什么是编辑距离 在计算文本的相似性时,经常会用到编辑距离(Levenshtein距离),其指两个字符串之间,由一个字符串转成另一个所需的最少编辑操作次数.在字符串形式上来说,编辑距离越小,那么两个 ...
- python实现编辑距离,最长公共子序列,最长公共子串
python实现编辑距离 python实现最大公共子序列 python实现最长公共子串
- python 编辑距离 2组匹配_Python文本相似性计算之编辑距离详解
编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一 ...
最新文章
- JavaScript引擎大战:Google提出StrongMode和SoundScript议案,增强V8性能
- 如何知道当前像素的顶点坐标_GT 大神 | 如何高效渲染流体效果(绝对干货)
- 利用JS提交表单的几种方法和验证
- Java时间日期格式转换
- width:100vh与min-height:calc(100vh + 51px)
- COCOS CREATOR(TS)之按钮事件
- cNode------路由设置以及项目基本框架搭建
- unix文件中i节点
- 基于Android的太阳方位角计算工具
- ibm服务器维修检测报告,启创云小机(IBM POWER7)测试报告
- 74HC595工作原理及FPGA实现数码管驱动方法
- 使用VGG模型自定义图像分类任务
- Hive常用函数(日期函数,取整函数,字符串操作函数,集合操作函数)
- Windows phone 8 学习笔记(8) 定位地图导航(转)
- 请别再问我什么是分布式事务
- 解决ifconfig 只显示lo
- 系统分析师真题2019试卷相关概念二
- 小学计算机知识课件,科普知识:计算机是我们的小助手(适用于小学生)课件.ppt...
- Mac:都是过期证书惹的祸
- idea如何更改编辑器字体大小和框字体大小
热门文章
- 网络安全宣传周丨世平信息在西湖网安云展等你
- (c语言)设计一个程序,输入一个给定的范围,输出该范围内本身是素数,反序后仍然是素数的所有素数
- 我的世界java1.14刷铁机_我的世界:谁说1.14版本的刷铁机用不了?只要做好这个细节即可!...
- 祝我最亲爱的老婆生日快乐^_^
- 企业做网站建设有哪些好处
- w10 启动mysql 出现“本地计算机上的MYSQL服务启动后停止xxxxx“
- jsqlparser:实现基于SQL语法分析的SQL注入攻击检查
- Linux 系统安全相关
- MISC 刷新过的图片
- python散点图与条形图,【Python|matplotlib】简单作图:散点图,条形图,频数分布直方图...