導航:首頁 > 編程語言 > 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相關的資料

熱點內容
在線充值平台源碼 瀏覽:527
數字圖像處理岡pdf 瀏覽:380
榮耀v6怎麼隱藏桌面文件夾 瀏覽:798
程序員有女的嗎 瀏覽:504
通訊伺服器中斷是為什麼 瀏覽:644
itextpdf亂碼 瀏覽:641
哪個app製作書法壁紙 瀏覽:196
暗梁支坐是否加密 瀏覽:341
51單片pdf 瀏覽:688
matlab編程習題 瀏覽:64
騰達wifi加密方式 瀏覽:121
ug平移命令 瀏覽:768
釘釘語音通話安全加密有什麼特徵 瀏覽:609
網購領券app哪個好靠譜 瀏覽:618
人民幣數字加密幣轉賬支付貨幣 瀏覽:634
怎麼用cat命令創建mm 瀏覽:689
當今社會程序員好做嗎 瀏覽:222
程序員那麼可愛梓童第幾集求婚 瀏覽:708
程序員大廠指南 瀏覽:777
ubuntupdf閱讀器 瀏覽:4