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