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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 六彩神龙指标
- 下一篇: 原创:周杰伦被疑江郎才尽,圣诞新歌旋律“