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

posted on 2016-12-19 00:40  Arkenstone  阅读(2940)  评论(0编辑  收藏  举报