新闻内容去重算法simhash实践
前言
一 通用网页去重算法框架
![](/assets/blank.gif)
二 simhash算法
simhash作为locality sensitive hash(局部敏感哈希)的一种
流程
simhash算法分为5个步骤:分词、hash、加权、合并、降维,具体过程如下所述:
- 分词
- 给定一段语句,进行分词,得到有效的特征向量,然后为每一个特征向量设置1-5等5个级别的权重(如果是给定一个文本,那么特征向量可以是文本中的词,其权重可以是这个词出现的次数)。例如给定一段语句:“CSDN博客结构之法算法之道的作者July”,分词后为:“CSDN 博客 结构 之 法 算法 之 道 的 作者 July”,然后为每个特征向量赋予权值:CSDN(4) 博客(5) 结构(3) 之(1) 法(2) 算法(3) 之(1) 道(2) 的(1) 作者(5) July(5),其中括号里的数字代表这个单词在整条语句中的重要程度,数字越大代表越重要。
- hash
- 通过hash函数计算各个特征向量的hash值,hash值为二进制数01组成的n-bit签名。比如“CSDN”的hash值Hash(CSDN)为100101,“博客”的hash值Hash(博客)为“101011”。就这样,字符串就变成了一系列数字。
- 加权
- 在hash值的基础上,给所有特征向量进行加权,即W = Hash * weight,且遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘。例如给“CSDN”的hash值“100101”加权得到:W(CSDN) = 100101 4 = 4 -4 -4 4 -4 4,给“博客”的hash值“101011”加权得到:W(博客)=101011 5 = 5 -5 5 -5 5 5,其余特征向量类似此般操作。
- 合并
- 将上述各个特征向量的加权结果累加,变成只有一个序列串。拿前两个特征向量举例,例如“CSDN”的“4 -4 -4 4 -4 4”和“博客”的“5 -5 5 -5 5 5”进行累加,得到“4+5 -4+-5 -4+5 4+-5 -4+5 4+5”,得到“9 -9 1 -1 1”。
- 降维
- 对于n-bit签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海明距离来判断它们的相似度。例如把上面计算出来的“9 -9 1 -1 1 9”降维(某位大于0记为1,小于0记为0),得到的01串为:“1 0 1 0 1 1”,从而形成它们的simhash签名。
![](/assets/blank.gif)
>>> bin(2305843056189898754)
'0b10000000000000000000000000101011110000000000000000000000000010'
>>> bin(2305843034715062278)
'0b10000000000000000000000000010111110000000000000000000000000110'
>>> 2305843056189898754 & 2305843034715062278
2305843013240225794
>>> bin(2305843013240225794)
'0b10000000000000000000000000000011110000000000000000000000000010'
>>> 所以2305843056189898754和2305843034715062278的海明距离为6
三 建立索引
四 要点说明
fir = hash_bits & 0b11000000000000000000000000111111110000000000000000000000001111sec = hash_bits & 0b00111100000000000000001111000000001111000000000000000011110000thi = hash_bits & 0b00000011110000000011110000000000000000111100000000111100000000fou = hash_bits & 0b00000000001111111100000000000000000000000011111111000000000000
实际应用中,因为使用了数据库的索引,为了可以进一步缩小范围,项目中还另外建立了4段:fir2, sec2, thi2, fou2,这四段使用不同的
五 去重策略------后补充
新闻内容去重算法simhash实践相关推荐
- 基于扩散模型的3D智能创作引擎与内容投放算法最新实践
3D模型在智能设计领域以其可塑性,可编辑性有着属于自己的独特优势,扩展了2D设计的上限.但是其目前存在的局限性也是显而易见的:建模的效率,模型的数量,以及3D设计的成本. 背景 在商品展示侧,围绕人- ...
- 网页去重||SimHash(高效的文本相似度去重算法)——适合大批量文档的相似度计算
网页去重 之前我们对下载的url地址进行了去重操作,避免同样的url下载多次.其实不光url需要去重,我们对下载的内容也需要去重. 在网上我们可以找到许多内容相似的文章.但是实际我们只需要其中一个即可 ...
- 海量数据去重之SimHash算法简介和应用
SimHash是什么 SimHash是Google在2007年发表的论文<Detecting Near-Duplicates for Web Crawling >中提到的一种指纹生成算法或 ...
- [转] 文本相似性算法Simhash原理及实践
simhash(局部敏感哈希)的原理 simhash的背景 simhash广泛的用于搜索领域中,也许在面试时你会经常遇到这样的问题,如果对抓取的网页进行排重,如何对搜索结果进行排重等等.随着信息膨胀时 ...
- [转]文档去重算法:SimHash和MinHash
simhash与重复信息识别 来源: http://grunt1223.iteye.com/blog/964564 在工作学习中,我往往感叹数学奇迹般的解决一些貌似不可能完成的任务,并且十分希望将这种 ...
- 移动端的人脸检测及去重算法实践
由于移动嵌入式设备本身硬件的性能的限制,在运行上需要优化检测.去重等算法,保证APP运行流畅.影响人脸检测运行速度因素主要在输入图片大小,神经网络模型选择和训练模型的数据量等. 人脸检测中使用caff ...
- python知网查重_用Python写了个检测抄袭/文章去重算法(nshash)
中国人有句话叫"天下文章一大抄",但是在正规场合下"抄"是要付出代价的,比如考试.写论文是不能抄的,一旦被发现后果相当严重.在互联网出现之前,"抄&q ...
- python文章抄袭检测_用Python写了个检测文章抄袭,详谈去重算法原理
在互联网出现之前,"抄"很不方便,一是"源"少,而是发布渠道少:而在互联网出现之后,"抄"变得很简单,铺天盖地的"源"源 ...
- Python检测文章抄袭,谈谈去重算法原理
中文内容新闻网站的"转载"(其实就是抄)现象非常严重,这种"转载"几乎是全文照抄,或改下标题,或是改下编辑姓名,或是文字个别字修改.所以,对新闻网页的去重很有必 ...
最新文章
- 关于Javascript的内存泄漏问题的整理稿
- 解决GET请求时中文乱码的问题
- 开发日记:接口开发设计
- Acey.ExcelX4.2版本发布
- servlet容器开发要点
- 快、准、狠!秒杀Excel的报表工具,十分钟教你做好数据填报
- Fiddler使用AutoResponder进行本地文件和线上文件的映射
- Oracle安装基本步骤
- python入侵个人电脑的步骤图解台式_入侵渗透专用的python小脚本脚本安全 -电脑资料...
- 惠普打印机驱动下载安装后不能使用,驱动人生解决方案
- 无线局域网和蜂窝移动网络_干货!无线AP覆盖系统解决方案
- 电脑重装系统后c盘数据能恢复吗?
- 历年数学界菲尔兹奖及其得主简介
- R语言McSpatial_R语言天气可视化应用
- 利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标
- 几行代码解决百度云视频变成 8秒净网公告问题(滑稽)
- 程序员最新面试谈薪指南
- 铁道部正在研究高铁月票 重申上座率120%准确可靠
- Vue-过滤器的使用
- BZOJ 1116 [POI2008]CLO 并查集