python如何实现Simhash算法
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍python如何实现Simhash算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、simhash步骤simhash包含分词、hash、加权、合并、降维五大
千家信息网最后更新 2026年11月03日python如何实现Simhash算法
这篇文章主要介绍python如何实现Simhash算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1、simhash步骤
simhash包含分词、hash、加权、合并、降维五大步骤
simhash代码如下:
import jiebaimport jieba.analyseimport numpy as npclass SimHash(object): def simHash(self, content): seg = jieba.cut(content) # jieba.analyse.set_stop_words('stopword.txt') # jieba基于TF-IDF提取关键词 keyWords = jieba.analyse.extract_tags("|".join(seg), topK=10, withWeight=True) keyList = [] for feature, weight in keyWords: # print('feature:' + feature) print('weight: {}'.format(weight)) # weight = math.ceil(weight) weight = int(weight) binstr = self.string_hash(feature) print('feature: %s , string_hash %s' % (feature, binstr)) temp = [] for c in binstr: if (c == '1'): temp.append(weight) else: temp.append(-weight) keyList.append(temp) listSum = np.sum(np.array(keyList), axis=0) if (keyList == []): return '00' simhash = '' for i in listSum: if (i > 0): simhash = simhash + '1' else: simhash = simhash + '0' return simhash def string_hash(self, source): if source == "": return 0 else: temp = source[0] temp1 = ord(temp) x = ord(source[0]) << 7 m = 1000003 mask = 2 ** 128 - 1 for c in source: x = ((x * m) ^ ord(c)) & mask x ^= len(source) if x == -1: x = -2 x = bin(x).replace('0b', '').zfill(64)[-64:] return str(x) def getDistance(self, hashstr1, hashstr2): ''' 计算两个simhash的汉明距离 ''' length = 0 for index, char in enumerate(hashstr1): if char == hashstr2[index]: continue else: length += 1 return length1.1分词
分词是将文本文档进行分割成不同的词组,比如词1为:今天星期四,词2为:今天星期五
得出分词结果为【今天,星期四】【今天,星期五】
1.2hash
hash是将分词结果取hash值
星期四hash为:0010001100100000101001101010000000101111011010010001100011011110
今天hash为:0010001111010100010011110001110010100011110111111011001011110101
星期五hash为:0010001100100000101001101010000000101111011010010000000010010001
1.3加权
1.4合并
1.5降维
降维是将合并的结果进行降维,如果值大于0,则置为1小于0 则置为0,因此得到的结果为:

2、simhash比对
一般simhash采用海明距离来进行计算相似度,海明距离计算如下:
对于A,B两个n维二进制数
二者的海明距离为:
其中:
举例:
1000与1111的海明距离为3
以上是"python如何实现Simhash算法"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
星期
结果
海明
算法
两个
内容
步骤
篇文章
不同
相似
二进制
代码
价值
关键
关键词
兴趣
小伙
小伙伴
更多
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网科技公司起名
互联网和科技技术
互联网通讯科技
互联网科技公司税收优惠
金融科技还是互联网
河南真二互联网科技有限公司
互联网科技开发公司
青岛互联网科技公司
互联网 的科技创新
银优互联网科技有限公司
电子科技大学互联网
互联网巨头投资的硬核科技
互联网之后的科技是什么
北京大学互联网科技怎么样
互联网科技中介
团飞科技与伯堂互联网服务平台
互联网科技与大数据专业
如何强化互联网金融科技
颐高云石互联网科技
华服互联网科技怎么样
中国互联网科技工作委员会毛军
互联网科技媒体
奇酷互联网络科技
天津摩尔互联网科技
北京禾田雨橡互联网科技
和信科技工业互联网
翼展科技 首家互联网医院
南博望互联网科技有限公司
济南有互联网科技公司吗