编辑距离,又被称为Levenshtein距离,是指两个字符串之间,由其中一个转变成另一个所需的最小编辑操作次数。
比如:"sea" 转变为 "eat" 需要2次操作:
1、将 s 删除
2、在末尾添加 t
所以"sea"和"eat"两个字串的编辑距离为2。
这里需要注意的是:所谓的操作只包含 (1) 插入 (2) 删除 (3) 替换 ,并不包括字符的交换操作!
编辑距离的应用:
编辑距离可以表示两个字串的相似程度,编辑距离越小,两个字串相似度就越高。
1、DNA序列分析
2、拼写纠错
3、机器翻译
机器翻译通常使用的是Seq2seq模型。编辑距离可以作为Seq2seq的损失函数,即度量标记值和输出值之间的相似程度。
4、网址归类
性质相近的网站,它们的url地址通常也相似,比如csdn不同用户的网址。根据编辑距离可以有效地对网址进行大规模处理。
......
Levenshtein算法:
Levenshtein算法的本质其实是动态规划。以 "holiday" 和 "today" 为例,它的具体步骤是:
1、建立一个二维数组,大小为 (word1.length+1)*(word2.length+1)
t | o | d | a | y | ||
h | ||||||
o | ||||||
l | ||||||
i | ||||||
d |