编辑距离
1. 定义
编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。
许可的编辑操作包括:将一个字符替换成另一个字符,插入一个字符,删除一个字符。
python里有专门的包实现python-Levenshtein
|
|
2. python实现
2.1 python-Levenshtein
python里有专门的包实现python-Levenshtein
|
|
Levenshtein.hamming(str1,str2)
计算两个长度一致的字符串的hamming距离,返回值是对应位置上不同字符的个数
Levenshtein.distance(str1,str2)
计算编辑距离,描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括插入、删除、替换
Levenshtein.ratio(str1,str2)
计算公式 r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的长度总和,ldist是类编辑距离
注意:这里的类编辑距离不是编辑距离,在此处,删除、插入依然+1,但是替换+2
这样设计的目的:ratio(‘a’, ‘c’),sum=2,按2中计算为(2-1)/2 = 0.5,’a’,’c’没有重合,显然不合算,但是替换操作+2,就可以解决这个问题。
2.2 如何用python实现编辑距离
(引自http://biansutao.iteye.com/blog/326008)
|
|
参考文献:
http://biansutao.iteye.com/blog/326008)
http://www.coli.uni-saarland.de/courses/LT1/2011/slides/Python-Levenshtein.html#Levenshtein-inverse