在Windows下,python-Lev
(1)首先下载python-Levenshtein 网址:https://pypi.Python.org/pypi/python-Levenshtein/0.10.2
(2)在切换到第三方包所在目录下,执行pip setup.py install 的命令后,报错“microsoft visual c++ 9.0 is required“,这是因为:windows下使用pip安装包的时候,需要机器装有VS2008或VS2010才行, 如果不想装VS,可以安装一个Micorsoft Visual C++ Compiler for Python 2.7的包。下载网址:Https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266
(3)然后再cd /d +文件目录 执行pip setup.py install 命令。
(4)验证Levenshtein是否安装成功。from Levenshtein import*;看是否报错。
(5)简单的实现代码
注意若使用”from Levenshtein import*“导入,则在调用函数时,不用加Levenshtein;
Levenshtein.distance(str1,str2)函数
计算编辑距离是描述一个字符串转化成另一个字符串最少的操作次数,在其中的操作包括插入、删除、替换。
>>>distance('abc','ac')
>1 由abc删除b得到ac操作一次
>distance('kitten','sitting')
>3 kitten(k先替换为s)sitten(e替换为i)sittin(最后添加g)sitting
>>>ratio('abc','ac')
>0.8
Levenshtein.hamming(str1,str2)函数
计算汉明距离。要求str1和str2必须长度一致。是描述两个等长字符串之间对应位置上不同字符的个数。
>>>hamming('abc','cba')
>2
>>>hamming('abc','cam')
>3
Levenshtein.distance(str1,str2)
计算莱文斯坦比。计算公式r = (sum-Idist)/sum, 其中sum是指str1和str2字串的长度总和,Idist是类编辑距离:这里的类编辑距离不是1中所说的编辑距离,1中三种操作中每个操作+1,而此处,删除,插入依然+1,但是替换+2
这样设计的目的:ratio(‘a’,’c’), sum = 2,按1中的计算为(2-1)/2 = 0.5, 但是‘a’,’c’显然没有重合,不合算,但是替换操作+2,就可以解决这个问题。
>>>ratio('abc','abc') (6-0)/6=1
>1.0
>>>ratio('abc','ab') (6-1)/6=0.8
>0.8
>>>ratio('abc','abd') (6-2)/6=0.6666666666
>0.66666666666
(6)编辑距离实现要动态规划:参考:https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266
相关文章