导航:首页 > 编程语言 > 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相关的资料

热点内容
单片机拼搭 浏览:151
程序员没必要穿冲锋衣 浏览:403
nova隐藏app怎么用 浏览:678
单片机程序中ret 浏览:223
爱奇艺上海算法团队 浏览:138
程序员颜值高的人 浏览:362
西数硬件加密和闪迪软件加密 浏览:716
声控足球解压黏土教程 浏览:639
linux下的嵌入式开发 浏览:173
电脑3d加速命令 浏览:105
加密手机号码是怎么回事 浏览:921
女程序员真实图片 浏览:696
pic单片机烧写 浏览:814
linuxping结果 浏览:196
单片机采集负电压 浏览:407
服务器收件什么意思 浏览:893
单片机发数组 浏览:884
魔方虚拟主机销售系统源码 浏览:709
rsa验签php源码 浏览:514
github怎么直接打开源码 浏览:529