我需要比較類似於50358c591cef4d76的大量字符串。我可以使用海明距離功能(使用pHash)。我如何有效地做到這一點?我的僞代碼將是:高效地使用python來計算海明距離
For each string
currentstring= string
For each string other than currentstring
Calculate Hamming distance
我想輸出結果作爲矩陣,並能夠檢索值。我也想通過Hadoop Streaming來運行它!
任何指針感激地收到。
這是我已經試過,但它是緩慢:
import glob
path = lotsdir + '*.*'
files = glob.glob(path)
files.sort()
setOfFiles = set(files)
print len(setOfFiles)
i=0
j=0
for fname in files:
print 'fname',fname, 'setOfFiles', len(setOfFiles)
oneLessSetOfFiles=setOfFiles
oneLessSetOfFiles.remove(fname)
i+=1
for compareFile in oneLessSetOfFiles:
j+=1
hash1 = pHash.imagehash(fname)
hash2 = pHash.imagehash(compareFile)
print ...
如果你想比較每個字符串與每個字符串,你將有兩個嵌套循環。那是你想要做的嗎? –