I. 最小编辑距离的定义

最小编辑距离旨在定义两个字符串之间的相似度(word similarity)。定义相似度可以用于拼写纠错,计算生物学上的序列比对,机器翻译,信息提取,语音识别等。

编辑距离就是指将一个字符串通过的包括插入(insertion),删除(deletion),替换(substitution)的编辑操作转变为另一个字符串所需的最少编辑次数。比如:

如果将编辑操作从字符放大到词,那就可以用于评估集齐翻译和语音识别的效果。比如:

还可以用于实体名称识别(named entity recognition)和实体共指(entity corefernce)

如何寻找最短的编辑路径(所有寻找所有编辑结果的可能星代价太大也没必要):动态编程法
若字符串X长度为n,字符串Y长度为m,定义X和Y之间的编辑距离为D(n,m)。计算原理很简单:利用从底向顶的方式,计算D(n,m)可以建立在D(n-1,m-1)的基础上,并一次类推向上直至D(0,0)。初始和迭代条件入下:D(i, 0)就是将X中所有i个字符删除即可,因此其值就是i。同理D(0, j)为插入j个字符。

计算Intention和execution之间距离的距离矩阵如下:

PS:关于编辑距离的实现代码可以看码农场大神的这篇博客

II. 回溯比对(backtrace)

很多情况下只是记录编辑距离是不够的,需要将两列字符串的进行一一对应的具体位置信息(比如拼写纠错)。因此会用一个指针来记录位置信息用于回溯。由于需要求的是最短编辑距离,在每一次编辑操作的格子将其指向前一次操作时的最小的编辑距离的格子即可,最终变可以获得比对的具体对应信息。


该算法的复杂度:很明显时间和空间复杂度为O(nm);而做多需要(m+n)个backtrace指针来记录。

III. 加权编辑距离(weighted edit distance)

加入加权的原因是是由于不同情况的插入,替换,删除的可能性是不同的。比如在拼写纠错的时候有些位置的字母打错成某个字母的可能性比其他字母要高;在DNA序列中,有些碱基的缺失和替换可能性也要比其他的高。如下就是各字母间打错的次数:

具体计算而言,在上述原理的基础上加入每一步编辑操作具体的权值即可。

IV. 计算生物学中的最短编辑距离

由于当代计算生物学主要数据就是各种DNA和RNA序列的碱基信息,且比对是大部分分析的基础,因此最短编辑距离对计算生物学而言意义十分重要。
计算生物学在比对的时候通常用相似度(similarity)来代替距离来作为评估标准,因此对之前的算法稍做调整使之最大化相似度:Needleman-wunsch algorithm

变体. 由于测序特性,对序列头和尾的gap序列的比对不做惩罚是相当合理的,即在初始状态,for all i,j; F(i, 0)=0; F(0, j)=0。 终止状态,Fopt = MAX(MAXi F(i,N), MAXj F(M,j))。

局部比对
寻找X,Y的相似度最高的子序列,因此可以不光是开头结尾的gap,序列前后部的差异很大的序列也可以不用管。这个算法叫做Smith-Waterman algorithm,目标就是舍弃那些比对相似度很差的区域,关注于高度相似的区域。

如果当前位置之前的序列比对得分低于0了,说明前面的序列比对情况很糟糕,那么就从这个位置开始重新开始比对,前面的序列就放弃不管了。
终止情况:

局部比对实例
X=ATCAT, Y=ATTATC, m=1(匹配得分),d=-1(发生替换/删除/插入的得分)

传送门:https://www.youtube.com/watch?v=Q0TGn4wkuoE

转载于:https://www.cnblogs.com/arkenstone/p/6196111.html

stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)相关推荐

  1. 最小编辑距离(Minimum Edit Distance)

    概念 编辑距离的概念: 给定两个字符串oppa和apple,如何把前者变成后者?你可以使用的操作有:1.增加字符2.删除字符3.更新字符. 一种可能的做法是: oppa->appa->ap ...

  2. 最小编辑距离算法 Edit Distance(经典DP)

    最小编辑距离算法 Edit Distance(经典DP) 转载baodream 最后发布于2018-05-23 11:36:32 阅读数 22226  收藏 展开 编辑距离(Edit Distance ...

  3. mysql 编辑距离 搜索_最小编辑距离(Minimum Edit Distance)

    最小编辑距离 1)定义 编辑距离(Minimum Edit Distance,MED),又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需要的最少编辑操作次数.允许的编辑操作包括 ...

  4. Minimum edit distance(levenshtein distance)(最小编辑距离)初探

    最小编辑距离的定义:编辑距离(Edit Distance),又称Levenshtein距离.是指两个字串之间,由一个转成还有一个所需的最少编辑操作次数.许可的编辑操作包含将一个字符替换成还有一个字符. ...

  5. 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...

    前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...

  6. 字符串编辑距离(Edit Distance)

    一.问题描述 定义 字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符 ...

  7. NLP学习笔记41-递归神经网络

    一 序 本文属于贪心NLP训练营学习笔记系列.    为什么需要递归神经网络? 类似天气.股票.语音这种数据,是时序数据,对于语音:同一个单词不同人说对应时长不同. 之前学习的多层感知器,假设输入是一 ...

  8. NLP学习笔记30-SVM 对偶、KTT,核函数

    一 序 本文属于贪心NLP训练营学习笔记系列. 二 Mapping Feature to High Dimensional Space 如图所示,转换是包含两部分的工作的,第一步是从低维特征向量转换为 ...

  9. NLP学习笔记(一)

    这是一个学习笔记,会有一些学习记录和自己的规划.一些想法...... 一.贪心学院第十期豆瓣电影预测评分项目 1.文本转化成向量,将使用三种方式,分别为tf-idf, word2vec以及BERT向量 ...

最新文章

  1. 某程序员求助:喜欢上漂亮的产品经理却不敢追,追不上太尴尬,公司也不允许办公室恋情!网友:别怂!...
  2. maya骨骼显示_干货 | 如何删除maya中绑定好的骨骼,只留下一个干净的模型
  3. LeetCode 922 Sort Array By Parity II 解题报告
  4. supervisor配置文件中如何添加多个环境变量
  5. liferay 定时调度器用法
  6. BinaryStar代码分析前言
  7. 线性同余法求伪随机数序列
  8. 数据结构与算法(总结)
  9. From Nand to Tetris Week1 超详细2021
  10. LaTex(PART IV) 各级标题
  11. Ubuntu 20.04安装GTX 1060显卡驱动+cuda 11.4 + cudnn 8,nvidia-smi 报错:NVIDIA-SMI has failed
  12. 设置vscode背景图片
  13. 最简单DIY基于STM32单片机的蓝牙智能小车设计方案
  14. GPS接收机(四)--基于STM32和GU620的GPS接收机搭建
  15. 【已解决】Java “错误:编码GBK 的不可映射字符”
  16. 7-3 sdut-C语言实验- 对称矩阵的判定
  17. 小米4 刷入魔趣教程
  18. 【unity中运行HTC VIVE的案例场景时一直不显示在头盔上,VR其他都正常】
  19. Linux第二周学习笔记(13)
  20. oracle 闪回空间爆满,基于ORA-19815闪回空间爆满问题的处理方法

热门文章

  1. godaddy mysql 乱码_Godaddy主机乱码的解决方法 | Godaddy美国主机中文指南
  2. mysql打开闪退 ini_解决MySql客户端秒退(找不到my.ini)
  3. 肺结节目标检测_有肺结节就代表离肺癌不远了?别吓自己,简单几问解答你的困惑...
  4. deque stack java_一文弄懂java中的Queue家族
  5. mysql5.0中索引的设计和使用_MySQL 5.0中索引的正确设计和使用
  6. oracle中脚本是什么意思,ORACLE常用脚本命令
  7. 安装linux可是c盘文件夹失败,硬盘安装linux失败,进不去以前的windows怎么处理?
  8. mysql怎么用sb文件_初识mysql数据库
  9. 使用Jackson解析JSON
  10. 如何去除360浏览器“网页走丢了”页面广告