最小编辑距离算法

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 最小编辑距离算法 Minimum Edit Distance 詹卫东 北京大学中文系
2. 编辑距离 编 编辑前字符串 字符串 s 编辑后字符串 t p 编辑操作p:插入、删除、替换 “编辑距离”定义为 “编辑操作的次数” 源文 Sh is 源文:She i a star t with ith the th theatre th t company. 机器译文:她 是 与 剧院 公司 的 一 颗 星。 参考译文:她 是 剧团 的 明星。 编辑距离:6 删除次数(4次): 替换次数(2次): 计算机器译文 跟正确答案之 间的距离 与 公司 一 颗 剧院 剧团 星 明星 2
3. 最小编辑距离 原始串 s o t 目标串 s t o p s o t 编辑操作1  s t o t  s t o p (2 (2.替换,2分,累计3分) 替换 2分 累计3分) 编辑距离:3 • 插入操作 (insertCost权值) : 1 • 删除操作 (deleteCost权值) : 1 s o t 编辑操作2  s t t  s t o • 替换操作 (substituteCost) (1.插入,1分,累计1分) : 2 (1 (1.替换,2分,累计2分) 替换 2分 累计2分) (2.替换,2分,累计4分)  s t o p (3 (3.插入,1分,累计5分) 插入 1分 累计5分) 编辑距离:5 3
4. 最小编辑距离计算:动态规划 ( (1) ) D(0, ( , 0) ) = 0 /* 空串变换成空串的编辑距离 (2) D(i, 0) = insertCost * i /* 空串变换成长度为 i 的串的编辑距离 */ (3) D(0, j) = deleteCost * j /* 长度为 j 的串变换成空串的编辑距离 */ D(i-1, j) (4) D(i, j) = min deleteCost + insertCost( target i ) D(i-1, j-1) + substituteCost( source j , target i ) D(i, j-1) insertCost */ + deleteCost( source j ) i :目标串字符位置序号 = 1 j :原始串字符位置序号 = 1 = 0 if target[i] = source[j] = 2 otherwise substituteCost D(i j) :从 j 变化到 i 的距离值 D(i,j) source j :j 位置的字符 target i :i 位置的字符 4
5. 最小编辑距离算法描述 function Min-Edit _ Distance ( (target, g , source) ) n = length(target); m = length(source); create distance matrix d[n, m]; d[0,0]=0; d[0 1]=1 d[0,m]=m; d[0,1]=1,… d[0 m]=m; d[1,0]=1,…d[n,0]=n; for each i from 1 to n do for each j from 1 to m do d[i, j] = min( d[i-1, j] + insertCost(target i ), d[i-1, j-1] + substituteCost(source j , target i ), d[i, j-1] + deleteCost(source j )); return d[n, d[n m]; 5
6. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 o 1 s 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=0 j=0 d[0,0] = 0; d[0,1] = 1; … ; d[0,m] = m; d[1,0] = 1; … ; d[n,0] = n; 6
7. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 o 1 s 0 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=1 j=1 d[1,1] = min d[0,1]+insert(t[1]) = 2 d[0 0] d[0,0]+substitute(s[1],t[1]) b ( [ ] [ ]) =0 0 = 0 d[1,0]+delete(s[1]) = 2 7
8. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 o 1 1 s 0 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=1 j=2 d[1,2] = min d[0,2]+insert(t[1]) = 3 d[0 ] d[0,1]+substitute(s[2],t[1]) b ( [2] [ ]) =3 3 = 1 d[1,1]+delete(s[2]) = 1 8
9. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 2 o 1 1 s 0 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=1 j=3 d[1,3] = min d[0,3]+insert(t[1]) = 4 d[0 2] d[0,2]+substitute(s[3],t[1]) b ( [3] [ ]) =4 d[1,2]+delete(s[3]) = 2 = 2 9
10. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 2 o 1 1 s 0 1 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=2 j=1 d[2,1] = min d[1,1]+insert(t[2]) = 1 d[ 0] d[1,0]+substitute(s[1],t[2]) b ( [ ] [2]) =3 3 = 1 d[2,0]+delete(s[1]) = 3 10
11. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 2 o 1 2 1 s 0 1 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=2 j=2 d[2,2] = min d[1,2]+insert(t[2]) = 2 d[1 1] d[1,1]+substitute(s[2],t[2]) b i ( [2] [2]) =2 2 d[2,1]+delete(s[2]) = 2 = 2 11
12. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 1 2 o 1 2 1 s 0 1 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=2 j=3 d[2,3] = min d[1,3]+insert(t[2])=3 d[1 2] d[1,2]+substitute(s[3],t[2])=1 b i ( [3] [2]) 1 d[2,2]+delete(s[3])=3 = 1 12
13. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 1 2 o 1 2 1 s 0 1 2 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=3 j=1 d[3,1] = min d[2,1]+insert(t[3])=2 d[2 0] d[2,0]+substitute(s[1],t[3])=4 b i ( [1] [3]) 4 d[3,0]+delete(s[1])=4 = 2 13
14. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 1 2 o 1 2 1 1 s 0 1 2 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=3 j=2 d[3,2] = min d[2,2]+insert(t[3])=3 d[2 1] d[2,1]+substitute(s[2],t[3])=1 b i ( [2] [3]) 1 d[3,1]+delete(s[2])=3 = 1 14
15. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 1 2 2 o 1 2 1 1 s 0 1 2 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=3 j=3 d[3,3] = min d[2,3]+insert(t[3])=2 d[2 2] d[2,2]+substitute(s[3],t[3])=4 b i ( [3] [3]) 4 d[3,2]+delete(s[3])=2 = 2 15
16. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 1 2 2 o 1 2 1 1 s 0 1 2 3 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=4 j=1 d[4,1] = min d[3,1]+insert(t[4])=3 d[3 0] d[3,0]+substitute(s[1],t[4])=5 b i ( [1] [4]) d[4,0]+delete(s[1])=5 = 3 16
17. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 1 2 2 o 1 2 1 2 1 s 0 1 2 3 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=4 j=2 d[4,2] = min d[3,2]+insert(t[4])=2 d[3 1] d[3,1]+substitute(s[2],t[4])=4 b i ( [2] [4]) 4 d[4,1]+delete(s[2])=4 = 2 17
18. 最小编辑距离计算示例 source j source : s o t target : s t o p n = length (target) = 4 m = length (source) = 3 3 t 2 1 2 3 2 o 1 2 1 2 1 s 0 1 2 3 0 # s t o p # 0 1 2 3 4 Create matrix d [n, m]; target i i=4 j=3 d[4,3] = min d[3,3]+insert(t[4])=3 d[3 2] d[3,2]+substitute(s[3],t[4])=3 b i ( [3] [4]) 3 d[4,2]+delete(s[3])=3 = 3 18
19. 最小编辑距离计算示例 s o t s t o t 编辑操作① (1. 插入t,1分,累计1分) s t o p (2. t替换p,2分,累计3分) s o t s t o t (1. 插入t,1分,累计1分) s t o p t (2. 插入p,1分,累计2分) s t o p s o t 编辑操作③ (3. 删除t,1分,累计3分) 编辑操作② s o t 编辑操作④ s t (1. 删除o,1分,累计1分) s t o t (1. 插入t,1分,累计1分) s to (2 (2. 插入o,1分,累计2分) 插入o 1分 累计2分) s to (2 (2. 删除t,1分,累计2分) 删除t 1分 累计2分) s t o p (3. 插入p,1分,累计3分) s t o p (3. 插入p,1分,累计3分) 19
20. 最小编辑距离计算示例 j 3 t 2 1 2 3 ① 2 o 1 2 1 2 ② 1 s 0 1 2 3 ③ 0 # s t o p ④ # 0 1 2 3 4 i 20
21. 最小编辑距离计算练习 • intention i t ti  execution ti 编辑操作① 编辑操作② i n t e n t i o n i n t e n * t i o n e x e c u t i o n * e x e c u t i o n 操作 s s s s s 代价 2 2 2 2 2 = 10 s 替换操作 s: 操作 d s s s i 代价 1 2 2 2 1 d 删除操作 d:删除操作 = 8 i 插入操作 i:插入操作 21
22. 最小编辑距离计算练习 source n 9 8 9 10 11 12 11 10 9 8 o 8 7 8 9 10 11 10 9 8 9 i 7 6 7 8 9 10 9 8 9 10 t 6 5 6 7 8 9 8 9 10 11 n 5 4 5 6 7 8 9 10 11 10 e 4 3 4 5 6 7 8 9 10 9 t 3 4 5 6 7 8 7 8 9 8 n 2 3 4 5 6 7 8 7 8 7 i 1 2 3 4 5 6 7 6 7 8 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n target
23. 最小编辑距离计算练习 source n 9 8 9 10 11 12 11 10 9 8 o 8 7 8 9 10 11 10 9 8 9 i 7 6 7 8 9 10 9 8 9 10 t 6 5 6 7 8 9 8 9 10 11 n 5 4 5 6 7 8 9 10 11 10 e 4 3 4 5 6 7 8 9 10 9 t 3 4 5 6 7 8 7 8 9 8 n 2 3 4 5 6 7 8 7 8 7 i 1 2 3 4 5 6 7 6 7 8 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n target
24. 参考文献 • Daniel Jurafsky & James H. Martin, 2000, p and Language g g Processing: g An Speech Introduction to Natural Language Processing Computational Linguistics Processing, Linguistics, and Speech Recognition, Chapter 5, section 5 5.6, 6 pp153-156, pp153 156 Prentice-Hall Prentice Hall Inc Inc.. 24

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-27 01:44
浙ICP备14020137号-1 $Carte des visiteurs$