编辑距离
完全是常识了,不用多说,看看视频中给出的例子:
星号×被称为一个gap,就是空。d表示delete,s表示substitute,i表示insert,于是序列 INTENTUON 和序列 EXECUTION的最小编辑距离就是5
Levenshtein distance
如上所说,这个距离的算法是替换算两个,插入和删除算一个,所以上述序列的Levenshtein distance是8
编辑距离在NLP中的应用
检查自动翻译的准确率、命名实体抽取等
然后重头戏来了,如何编写算法寻找编辑距离呢?
计算编辑距离
CS的课程讲座里面常常用到intuition这个词,教授说,我们用intuition可以想到一个naive的做法,就是列举出所有的情况,对字符串中的每一个字符都进行三种操作,一棵庞大的树一次延展下来,然后选出能匹配上的那个,对他的操作次数就是编辑距离。
显然这样工作量是巨大的,而且做了很多无用功,而且显然这样的问题用动态规划是最好不过了。
先定义动态规划的问题:
设有长度为n的字符串X,和长度为m的字符串Y
D(i,j)是一个n×m的矩阵,D(i,j)则代表了X的前i个字符和Y的前j歌字符的编辑距离。算法具体过程,请看下节。