python相似度
A. python中是否有用于计算两个字符串相似度的函数
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距离
B. 如何使用python来判断图片相似度
from PIL import Imageimport os#import hashlib def getGray(image_file): tmpls=[] for h in range(0, image_file.size[1]):#h for w in range(0, image_file.size[0]):#w tmpls.append( image_file.getpixel((w,h)) ) return tmpls def getAvg(ls):#获取平均灰度值 return sum(ls)/len(ls) def getMH(a,b):#比较100个字符有几个字符相同 dist = 0; for i in range(0,len(a)): if a[i]==b[i]: dist=dist+1 return dist def getImgHash(fne): image_file = Image.open(fne) # 打开 image_file=image_file.resize((12, 12))#重置图片大小我12px X 12px image_file=image_file.convert("L")#转256灰度图 Grayls=getGray(image_file)#灰度集合 avg=getAvg(Grayls)#灰度平均值 bitls=''#接收获取0或1 #除去变宽1px遍历像素 for h in range(1, image_file.size[1]-1):#h for w in range(1, image_file.size[0]-1):#w if image_file.getpixel((w,h))>=avg:#像素的值比较平均值 大于记为1 小于记为0 bitls=bitls+'1' else: bitls=bitls+'0' return bitls''' m2 = hashlib.md5() m2.update(bitls) print m2.hexdigest(),bitls return m2.hexdigest()''' a=getImgHash("./Test/测试图片.jpg")#图片地址自行替换files = os.listdir("./Test")#图片文件夹地址自行替换for file in files: b=getImgHash("./Test/"+str(file)) compare=getMH(a,b) print file,u'相似度',str(compare)+'%'
C. python中怎么实现相似度的计算,比如:中国石油销售有限公司--中国石油金属有限公司,计算他们的相似度
#/usr/bin/envpython3
s1='中国石油销售有限公司'.strip()
s2='中国石油金属有限公司'.strip()
similar=sum([i==jfori,jinzip(s1,s2)])/len(s1)
print('相似度{:.2f}%'.format(similar*100))
[willie@bogon pys]$ python3 similar.py
相似度80.00%
D. 使用Python 制作对比图片相似度的程序怎么比较
就是给出以下几个function的def 越多越好:
1、 red_average(Picture) 算出pic众pixels的平均红值 。
2、scale_red(Picture, int) 调整图片红值 并确保其不超过255 。
3、expand_width(Picture, int) 。
4、rece_width(Picture, int) 放大和缩小宽值 都是乘或者除的 ,distance(Pixel, Pixel) 以红蓝绿值为标准 计算两个pixel之间的距离(类似于xyz坐标轴中两点距离)。
5、simple_difference(Picture,Picture) 简单计算两张图片有多相似 不必考虑长宽。
6、smart_difference(Picture,Picture) 这个方程的步骤需为: 判断图片大小 。如必要 乘除高度 。 如必要 乘除宽度。 调整图片颜色使之相同平均红蓝绿值 。
E. 如何使用python计算两张图片的相似度
图片在计算机里都是三维数组,你可以转化为比较这两个数组的相似度,方法就比较多了
F. python 计算每行之间的余弦相似性
比如你在a.py的文件中定义了一个test(x,y)函数,在shell中调用的时候from a import testtest(x,y)
G. Python 字符串相似性的几种度量方法
split([sep]) 将字符串分割为列表,默认用空白符分割,给出字符串参数,用参数字符串分割
'a b c'.split() 返回 ['a','b','c']
join 将可迭代对象中的字符串连接在一起
'\n'.join(['a','b','c'] )返回字符串 "a\nb\nc"
str.find(substr,[start,[end]]) 从str的下标 start至end之间查找substr,返回substr出现位置的下标,未找到返回-1
str.index 与find相仿,但未找到抛出异常
其余还要通用的下标 ,切片操作等
H. python difflib 相似度多大就算相似
这里是类(class)的用法。在类的定义当中,所有的变量都要用成self.xxx这样的,xxx是变量名称。这个意思就是,在vector这个类当中的diff这个变量。这个的作用就跟一个变量的作用是一样的,不过这是在类里面。
I. python有包能判断图片相似度吗
安装python-Levenshtein模块
pip install python-Levenshtein
使用python-Levenshtein模块
import Levenshtein!
J. python有什么比较好的图像颜色相似度对比的库么
需要使用Python Imaging Library,下代是python2.x的代码:
from itertools import izip
import Image
i1 = Image.open("image1.jpg")
i2 = Image.open("image2.jpg")
assert i1.mode == i2.mode, "Different kinds of images."
assert i1.size == i2.size, "Different sizes."
pairs = izip(i1.getdata(), i2.getdata())
if len(i1.getbands()) == 1:
# for gray-scale jpegs
dif = sum(abs(p1-p2) for p1,p2 in pairs)
else:
dif = sum(abs(c1-c2) for p1,p2 in pairs for c1,c2 in zip(p1,p2))
ncomponents = i1.size[0] * i1.size[1] * 3
print "Difference (percentage):", (dif / 255.0 * 100) / ncomponents