stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)
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
stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)的更多相关文章
- Stanford NLP学习笔记:7. 情感分析(Sentiment)
1. 什么是情感分析(别名:观点提取,主题分析,情感挖掘...) 应用: 1)正面VS负面的影评(影片分类问题) 2)产品/品牌评价: Google产品搜索 3)twitter情感预测股票市场行情/消 ...
- Stanford NLP学习笔记1:课程介绍
Stanford NLP课程简介 1. NLP应用例子 问答系统: IBM Watson 信息提取(information extraction) 情感分析 机器翻译 2. NLP应用当前进展 很成熟 ...
- Stanford NLP 学习笔记2:文本处理基础(text processing)
I. 正则表达式(regular expression) 正则表达式是专门处理文本字符串的正式语言(这个是基础中的基础,就不再详细叙述,不了解的可以看这里). ^(在字符前): 负选择,匹配除括号以外 ...
- Minimum edit distance(levenshtein distance)(最小编辑距离)初探
最小编辑距离的定义:编辑距离(Edit Distance),又称Levenshtein距离.是指两个字串之间,由一个转成还有一个所需的最少编辑操作次数.许可的编辑操作包含将一个字符替换成还有一个字符. ...
- 编辑距离(Minimum Edit Distance)
编辑距离(Minimum Edit Distance,MED),也叫 Levenshtein Distance.他的含义是计算字符串a转换为字符串b的最少单字符编辑次数.编辑操作有:插入.删除.替换( ...
- 字符串编辑距离(Edit Distance)
一.问题描述定义字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之 ...
- Leetcode之动态规划(DP)专题-72. 编辑距离(Edit Distance)
Leetcode之动态规划(DP)专题-72. 编辑距离(Edit Distance) 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可 ...
- Stanford NLP 课程笔记之计算字符串距离
在自然语言处理任务中,有时候需要计算两个字符串之间的相似度,也可以称作是两者之间的距离,用最小编辑距离表示. 最小编辑距离用{Insertion,Deletion,Substitution}这三种操作 ...
- Stanford Corenlp学习笔记——词性标注
使用Stanford Corenlp对中文进行词性标注 语言为Scala,使用的jar的版本是3.6.0,而且是手动添加jar包,使用sbt添加其他版本的时候出现了各种各样的问题 添加的jar包有5个 ...
随机推荐
- 深入理解Javascript中this, prototype, constructor
在Javascript面向对象编程中经常需要使用到this,prototype和constructor这3个关键字. 1.首先介绍一下this的使用:this表示当前对象;如果在全局中使用this,则 ...
- dede currentstyle属性完美解决方案
问题一.dede让channelartlist标签支持currentstyle属性 完美解决 打开include\taglib\channelartlist.lib.php找到$pv->Fiel ...
- 一次 surface pro 3 的售后保修 黑色三月维权(HSD)
已更新结束....原创 半根毛线 博文原址 http://www.cnblogs.com/hsd-/ 发现大量转载 转载请与作者联系 drizzle1996@outlook.com或注明转载 ---- ...
- linux 64位调用
linux系统中64位汇编和32位汇编的系统调用主要有以下不同:(1)系统调用号不同.比如x86中sys_write是4,sys_exit是1:而x86_64中sys_write是1, sys_exi ...
- Android深度探索HAL与驱动开发 第三章 Git入门
Git功能十分复杂,简单来说它使你的开发更为快捷和可控,尤其是在开源项目上展现的友好的交互和回馈. 熟悉一些git指令操作对开发者的帮助可以避免开发者受到一些外在因素打断开发进度,甚至延误项目的che ...
- ✡ leetcode 174. Dungeon Game 地牢游戏 --------- java
The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...
- a标签与click的关系
当点击浏览器a标签的时候,浏览器的默认机制如下: 1.触发a的click事件2.读取href属性的值3.如果是URI则跳转4.如果是javascript代码则执行该代码 下面我们一起来做一个实验: 我 ...
- UVA 101
题意:四种操作把a和b所在的数字移动. lrj的思想很好.首先找到共同点.然后不必写四种操作.其次理解vector的方便. #include<iostream> #include<c ...
- 如何将自己的windows设置为mysql服务器
1.安装mysql 服务器 2.创建超级用户,即 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; ...
- kbengine里如何使用git快速下载项目?
项目有两个镜像,github[https://github.com/kbengine/kbengine.git] ,osc开源中国[https://git.oschina.net/likecg/kbe ...