斯坦福NLP笔记7 —— Computing Minimum Edit Distance

动态规划求解最小编辑距离

斯坦福NLP笔记7 —— Computing Minimum Edit Distance

序列 INTENTUON(X)和序列 EXECUTION(Y)为例

初始化:X的前i个字符与Y的前面0个字符的距离,自然是i。同理,X的前0个字符与Y的前面j个字符的距离也是0

递归关系:譬如 INTEN 和 EXEC 的编辑距离,只会由三种情况得到

  1. INTE 和 EXEC的距离加1(因为前者需要在末尾插入一个N才能变成 INTEN

  2. INTEN 和 EXE的距离加1(因为后者需要在末尾插入一个C才能变成 EXEC

  3. 如果已知 INTE 和 EXE 的距离为d,则

    1. 如果X(i)和Y(j)相等,则 INTEN 和 EXEC 的编辑距离也为d

    2. 如果X(i)和Y(j)不等,则 INTEN 和 EXEC 的编辑距离为d+2(这里是Levenshtein distance),事实上此例中X(i)就是N,Y(j)就是C


玩动态规划的方法就是填矩阵,下面来填下这个矩阵

斯坦福NLP笔记7 —— Computing Minimum Edit Distance

井号#表示null,即前0个字符。以左下角为原点,1为坐标起始值,坐标(3,3)那个地方应该是min{1+1,1+1,0+2}=2

(3,4):min{2+1,2+1,1+2}=3

(3,5):min{3+1,3+1,2+2}=4

(3,6):min{4+1,4+1,3+0}=3(因为这里比较的是INTE和E的编辑距离,他们都以E结尾)

以此类推。最后的结果是:

斯坦福NLP笔记7 —— Computing Minimum Edit Distance



你可能感兴趣的:(斯坦福NLP笔记7 —— Computing Minimum Edit Distance)