python中是否有用于计算两个字符串相似度的函数

Python015

python中是否有用于计算两个字符串相似度的函数,第1张

linux环境下,没有首先安装python_Levenshtein,用法如下:

重点介绍几个该包中的几个计算字串相似度的几个函数实现。

1. Levenshtein.hamming(str1, str2)

计算汉明距离。要求str1和str2必须长度一致。是描述两个等长字串之间对应位置上不同字符的个数。如

2. Levenshtein.distance(str1, str2)

计算编辑距离(也成Levenshtein距离)。是描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括插入、删除、替换。如

算法实现 参考动态规划整理:http://www.cnblogs.com/kaituorensheng/archive/2013/05/15/3080990.html。

3. Levenshtein.ratio(str1, str2)

计算莱文斯坦比。计算公式 r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的长度总和,ldist是类编辑距离

注意:这里的类编辑距离不是2中所说的编辑距离,2中三种操作中每个操作+1,而在此处,删除、插入依然+1,但是替换+2

这样设计的目的:ratio('a', 'c'),sum=2,按2中计算为(2-1)/2 = 0.5,’a','c'没有重合,显然不合算,但是替换操作+2,就可以解决这个问题。

4. Levenshtein.jaro(s1, s2)

计算jaro距离,

其中的m为s1, s2的匹配长度,当某位置的认为匹配 当该位置字符相同,或者在不超过

t是调换次数的一半

5. Levenshtein.jaro_winkler(s1, s2)

计算Jaro–Winkler距离

#/usr/bin/env python3

s1='中国石油销售有限公司'.strip()

s2='中国石油金属有限公司'.strip()

similar=sum([i==j for i,j in zip(s1,s2)])/len(s1)

print('相似度{:.2f}%'.format(similar*100))

[willie@bogon pys]$ python3 similar.py

相似度80.00%

就是给出以下几个function的def 越多越好:

1、 red_average(Picture) 算出pic众pixels的平均红值 。

2、scale_red(Picture, int) 调整图片红值 并确保其不超过255 。

3、expand_width(Picture, int)  。

4、reduce_width(Picture, int) 放大和缩小宽值 都是乘或者除的 ,distance(Pixel, Pixel) 以红蓝绿值为标准 计算两个pixel之间的距离(类似于xyz坐标轴中两点距离)。

5、simple_difference(Picture,Picture) 简单计算两张图片有多相似 不必考虑长宽。

6、smart_difference(Picture,Picture) 这个方程的步骤需为: 判断图片大小 。如必要 乘除高度 。 如必要 乘除宽度。 调整图片颜色使之相同平均红蓝绿值 。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。