怎么查重python文本相似性计算simhash源码
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,今天小编给大家分享一下怎么查重python文本相似性计算simhash源码的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后
千家信息网最后更新 2025年01月19日怎么查重python文本相似性计算simhash源码
今天小编给大家分享一下怎么查重python文本相似性计算simhash源码的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
场景:
1.计算SimHash值,及Hamming距离。
2.SimHash适用于较长文本(大于三五百字)的相似性比较,文本越短误判率越高。
Python实现:
代码如下
# -*- encoding:utf-8 -*-import mathimport jiebaimport jieba.analyseclass SimHash(object): def getBinStr(self, source): if source == "": return 0 else: 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 getWeight(self, source): return ord(source) def unwrap_weight(self, arr): ret = "" for item in arr: tmp = 0 if int(item) > 0: tmp = 1 ret += str(tmp) return ret def sim_hash(self, rawstr): seg = jieba.cut(rawstr) keywords = jieba.analyse.extract_tags("|".join(seg), topK=100, withWeight=True) ret = [] for keyword, weight in keywords: binstr = self.getBinStr(keyword) keylist = [] for c in binstr: weight = math.ceil(weight) if c == "1": keylist.append(int(weight)) else: keylist.append(-int(weight)) ret.append(keylist) # 降维 rows = len(ret) cols = len(ret[0]) result = [] for i in range(cols): tmp = 0 for j in range(rows): tmp += int(ret[j][i]) if tmp > 0: tmp = "1" elif tmp <= 0: tmp = "0" result.append(tmp) return "".join(result) def distince(self, hashstr1, hashstr2): length = 0 for index, char in enumerate(hashstr1): if char == hashstr2[index]: continue else: length += 1 return lengthif __name__ == "__main__": simhash = SimHash() str1 = '咱哥俩谁跟谁啊' str2 = '咱们俩谁跟谁啊' hash2 = simhash.sim_hash(str1) print(hash2) hash3 = simhash.sim_hash(str2) distince = simhash.distince(hash2, hash3) value = 5 print("simhash", distince, "距离:", value, "是否相似:", distince<=value)
以上就是"怎么查重python文本相似性计算simhash源码"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
相似
文本
知识
篇文章
相似性
源码
内容
不同
很大
代码
哥俩
场景
大部分
就是
更多
知识点
行业
资讯
资讯频道
逻辑
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖北网络安全第一课
我的世界服务器怎么调相机
cf现在四个服务器能容纳多少人
软件开发和实施行业哪个好
涿州市云朵软件开发
erp系统上云服务器配置
阿里巴巴的网络安全天才
服务器机柜 深度
网络安全学会征文
服务器巡检规范
软件开发提供什么文档
网络安全易购
数据库的数据和关系
山东直播软件开发外包公司
计算机软件开发的认证范围
oppo软件开发面经
腾讯服务器和域名如何建站
浙江顺联网络技术福利待遇
南昌新手招聘软件开发程序员
网络安全信息工作上讲话
没有无线网络安全设置
软件开发考研满分多少
电商软件开发方案
阿里云服务器注销
网络安全管理现状
旧的表格如何导入数据库
软件开发cpu选择酷睿和锐龙
上海上门软件开发定制价钱
关于网络安全的策划书
宿州网络安全培训