自然語言處理學習篇02——Edit Distance

第二章 Edit Distance


本篇內容將講述Edit Distance(編輯距離的定義詳見正文),具體又包含5個方面的內容:
  1. Defining Minimum Edit Distance 
  2. Computing Minimum Edit Distance
  3. Backtrace for Computing Alignments
  4. Weighted Minimum Edit Distance
  5. Minimum Edit Distance in Computational Biololgy

1. Definition of  Minimum Edit Distance 

Edit Distance用於衡量兩個strings之間的相似性。
兩個strings之間的Minimum edit distance是指把其中一個string通過編輯(包括插入,刪除,替換操作)轉換爲另一個string的最小操作數。
如上圖所示,d(deletion)代表刪除操作,s(substitution)代表替換操作,i(insertion)代表插入操作。
(爲了簡單起見,後面的Edit Distance 簡寫爲ED)
如果每種操作的cost(成本)爲1,那麼ED = 5.
如果s操作的cost爲2(即所謂的Levenshtein Distance),ED = 8.

2. Computing Minimum Edit Distance

那麼如何找到兩個strings的minimun edit distance呢?要知道把一個string轉換爲另一個string可以有很多種方法(或者說“路徑“)。我們所知道起始狀態(第一個string)、終止狀態(另一個string)、基本操作(插入、刪除、替換),要求的是最短路徑。
對於如下兩個strings:
X的長度爲n
Y的長度爲m
我們定義D(i,j)爲 X 的前i個字符 X[1...i] 與 Y 的前j個字符 Y[1...j] 之間的距離,其中0<i<n, 0<j<m,因此X與Y的距離可以用D(n,m)來表示。
假如我們想要計算最終的D(n,m),那麼可以從頭開始,先計算D(i, j) (i和j從1開始)的值,然後基於前面的結果計算更大的D(i, j),直到最終求得D(n,m)。
算法過程如下圖所示:

上圖中使用的是”Levenshtein Distance“即替換的成本爲2.
請讀者深入理解一下上圖中的循環體部分: D(i,j)可能的取值爲:
1. D(i-1, j) +1 ;
2. D(i, j-1) +1 ;
3. D(i-1, j-1) + 2 (當X新增加的字符和Y新增加的字符不同時,需要替換)或者 + 0(即兩個字符串新增加的字符相同)
下圖即對字符串 INTENTION 和 EXECUTION 一步步求ED形成的表。左上角畫紅圈的8就是兩個字符串間的最小ED。


3. Backtrace for Computing Alignments


上一節課我們求得了Edit distance,但是僅有Edit distance也是是不夠的,有時我們也需要把兩個strings中的每個字符都一一對應起來(有的字母會與“空白”對應),這可以通過Backtrace(追蹤)ED的計算過程得到。
通過上一節我們知道,D(i, j)的取值來源有三種,D(i-1, j)、D(i, j-1)或者D(i-1, j-1),下表通過添加箭頭的方式顯而易見地給出來整個表格的計算過程(下面的陰影表示的只是一種路徑,你會發現得到最後結果的路徑不是惟一的,因爲每個單元格數字可能由左邊、下邊或者左下邊的得到)。

從表格右上角開始,沿着追蹤的剪頭,就可以拎出一條路徑出來(不惟一),這條路徑的剪頭可以輕易的展現是通過哪種方法(插入、刪除、替換)完成的。
表格右上角陰影部分四個格子,路徑只有一條,我們也可以很輕易地看出最後四個字母是相同的,但這種情況並不絕對,比如中間的陰影6格也只有一種路徑,可是卻分別對應於字母e和c。
算法實現“尋找路徑”的思想很簡單——就是給每個單元格定義一個指針,指針的值爲LEFT/DOWN/DIAG(不明白爲什麼他爲什麼說是指針),如下圖所示。


想一下普通的情況,如下圖,從(0,0)到(M,N)的任何一條非下降路徑都對應於兩個strings間的一個排列,而最佳的排列由最佳的子排列組成。

簡單思考一下算法的性能
Time:    O(nm)
Space:  O(nm)
Backtrace: O(n+m)


4. Weighted Minimum Edit Distance

ED也可以添加權重,因爲在拼寫中,某些字母更容易寫錯。如下圖顯示的混淆矩陣,數值越大就代表被誤寫的可能性越高。如a就很可能被誤寫爲e,i,o,u

衆所周知,鍵盤排佈會對誤寫產生影響。

Weighted Min Edit Distance的算法如下圖所示

這幅圖將del、ins、sub三種操作都定義了不同的權重,在“萊溫斯基距離“中,del和ins的cost都是1,sub是2。

5. Minimum Edit Distance in Computational Biology

本段講述Minimum Edit Distance在計算生物學中的應用。比如比較如下圖(上班部分)兩個基因組序列,我們希望最後能把兩個序列對齊(下半部分),進而研究不同的基因片段的功能等。

在Natural Language Processing我們討論了最小distance和weight,而在Computational Biology中我們將要介紹最大Similarity(相似性)和scores。
在Computational Biology中有個重要算法——Needleman-Wunsch算法。
(未完待續)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章