導航:首頁 > 編程語言 > pythonbitmask

pythonbitmask

發布時間:2022-12-29 07:35:43

1. python中simhash包怎麼用

#!/usr/bin/python
#coding=utf-8
classsimhash:

#構造函數
def__init__(self,tokens='',hashbits=128):
self.hashbits=hashbits
self.hash=self.simhash(tokens);

#toString函數
def__str__(self):
returnstr(self.hash)

#生成simhash值
defsimhash(self,tokens):
v=[0]*self.hashbits
fortin[self._string_hash(x)forxintokens]:#t為token的普通hash值
foriinrange(self.hashbits):
bitmask=1<<i
ift&bitmask:
v[i]+=1#查看當前bit位是否為1,是的話將該位+1
else:
v[i]-=1#否則的話,該位-1
fingerprint=0
foriinrange(self.hashbits):
ifv[i]>=0:
fingerprint+=1<<i
returnfingerprint#整個文檔的fingerprint為最終各個位>=0的和

#求海明距離
defhamming_distance(self,other):
x=(self.hash^other.hash)&((1<<self.hashbits)-1)
tot=0;
whilex:
tot+=1
x&=x-1
returntot

#求相似度
defsimilarity(self,other):
a=float(self.hash)
b=float(other.hash)
ifa>b:returnb/a
else:returna/b

#針對source生成hash值(一個可變長度版本的Python的內置散列)
def_string_hash(self,source):
ifsource=="":
return0
else:
x=ord(source[0])<<7
m=1000003
mask=2**self.hashbits-1
forcinsource:
x=((x*m)^ord(c))&mask
x^=len(source)
ifx==-1:
x=-2
returnx
if__name__=='__main__':
s='Thisisateststringfortesting'
hash1=simhash(s.split())

s=''
hash2=simhash(s.split())

s='nainaigexiongcao'
hash3=simhash(s.split())

print(hash1.hamming_distance(hash2),"",hash1.similarity(hash2))
print(hash1.hamming_distance(hash3),"",hash1.similarity(hash3))

閱讀全文

與pythonbitmask相關的資料

熱點內容
壓縮機型號v代表什麼 瀏覽:49
旅遊類源碼 瀏覽:859
電腦伺服器類型怎麼設置 瀏覽:227
pdf炒股 瀏覽:783
伺服器地址缺少埠號什麼意思 瀏覽:527
下載需要解壓的小說用哪個軟體 瀏覽:531
廣東分布式伺服器雲主機 瀏覽:580
伺服器忙打不開怎麼辦 瀏覽:12
tif壓縮軟體 瀏覽:410
程序員那麼可愛陸漓上班第1天 瀏覽:950
macbookair自帶什麼app 瀏覽:698
如何關了加密的軟體 瀏覽:579
程序員p2p待遇 瀏覽:920
ipd編譯要求 瀏覽:935
壓縮解壓王怎麼用 瀏覽:33
伺服器共享文件如何備份 瀏覽:757
買安卓手機怎麼在官網買 瀏覽:125
詩詞入門PDF 瀏覽:364
毒app是什麼單位 瀏覽:66
如何自己編譯android系統 瀏覽:795