斯坦福NLP笔记6 —— Defining Minimum Edit Distance

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

编辑距离

完全是常识了,不用多说,看看视频中给出的例子:

斯坦福NLP笔记6 —— Defining Minimum Edit Distance_第1张图片

星号×被称为一个gap,就是空。d表示delete,s表示substitute,i表示insert,于是序列 INTENTUON 和序列 EXECUTION的最小编辑距离就是5


Levenshtein distance

如上所说,这个距离的算法是替换算两个,插入和删除算一个,所以上述序列的Levenshtein distance是8


编辑距离在NLP中的应用

检查自动翻译的准确率、命名实体抽取等

然后重头戏来了,如何编写算法寻找编辑距离呢?


计算编辑距离

CS的课程讲座里面常常用到intuition这个词,教授说,我们用intuition可以想到一个naive的做法,就是列举出所有的情况,对字符串中的每一个字符都进行三种操作,一棵庞大的树一次延展下来,然后选出能匹配上的那个,对他的操作次数就是编辑距离。

斯坦福NLP笔记6 —— Defining Minimum Edit Distance_第2张图片

显然这样工作量是巨大的,而且做了很多无用功,而且显然这样的问题用动态规划是最好不过了。

先定义动态规划的问题:

设有长度为n的字符串X,和长度为m的字符串Y

斯坦福NLP笔记6 —— Defining Minimum Edit Distance_第3张图片

D(i,j)是一个n×m的矩阵,D(i,j)则代表了X的前i个字符和Y的前j歌字符的编辑距离。算法具体过程,请看下节。

转载于:https://my.oschina.net/silverhammer/blog/292631

你可能感兴趣的:(人工智能,数据结构与算法,python)