python如何实现Simhash算法
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍python如何实现Simhash算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、simhash步骤simhash包含分词、hash、加权、合并、降维五大
千家信息网最后更新 2025年01月18日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 length
1.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安全错误
数据库的锁怎样保障安全
软件开发限年龄吗
山东瑞房网络技术有限公司
政务微信设置服务器怎么弄
云视讯注册失败服务器错误
nc后台数据库单据号查询
服务器硬盘怎么看转速
怎么上传图片到数据库服务器
设置数据库数据集
网络技术挑战赛是做什么的
网吧服务器安装教程
网络安全保密开展情况
c 数据库附加
数据库新建命令
数据库用来干嘛的
红黑隔离网络安全标准
软件开发技术总结6
做外国网络安全吗
华为光猫找不到服务器
网络安全很重要作文
kof97怎么设置服务器
云服务器硬盘初始化
nc后台数据库单据号查询
db2数据库日志扩容
35岁+学软件开发
科密 数据库
软件开发适合男生学吗
外文学位论文的数据库
美国法律保护位于美国的服务器
局域网数据库服务器连接
网络安全宣传郑州高新区