基于SimHash的微博去重
一、需求:对微博数据进行去重,数据量比较小,几十万条左右。
二、解决方案
1、采用SimHash的指纹信息去重方法。
三、实现方案
1、对每一条微博使用tf-idf与特征词
2、使用每条微博的特征词,通过SimHash方法生成信息指纹。
3、对生成的信息指纹统计计算海明距离,距离小于等于1判为相似文档。(由于使用的是tf-idf关键词,所以此处的阈值比较小)
四、具体细节
1、SimHash的计算
a) 对一条微博的每个关键词通过Hash函数取hash值(此处假如hash函数用的32位的,一般情况下,hash值最少也要64位,位数越多,能够保留的信息相对较多一些,具体使用多少位的,视具体情况而论)
b) 生成一个包含32个元素,且元素均为0的数组(记做simhashValue)
c) 取上述Hash值中的一个Hash值转化成二进制,使之各位与simhashValue的各元素对应(对应到数据下标),如果此hash值的某一位为1/0,则在simHashValue的对应位上加/减 此hash值对应的tf-idf关键词的权重。
d)对此条微博生成的所有关键词的hash值进行c)步骤的操作
e)取simhashValue,把32个数组元素有序的映射成一个32位数。如果数组元素的值天于0,则映射为1,否则映射为0。从而得到了一个32位SimHash值。
2、计算simHash的海明距离
根据鸽巢原理(抽屉原理),对原始数据进行分组计算。此处计算参考了《编程之美》中“求二进制中1的个数”小节中给出的方法,有效提高计算效率。
五、小结
1、simhash是谷歌开源的一个算法,用来网页去重(支持大数据量)。用在短文本去重中,效果也不错。
2、minHash也是个不错的去重、聚类的好方法。理论上支持的数据量不如simhash。但数据量大的话,可以写成mapreduce的。另,mahout提供了minHash的聚类方法。
基于SimHash的微博去重的更多相关文章
- [转载]基于Redis的Bloomfilter去重(附Python代码)
前言: “去重”是日常工作中会经常用到的一项技能,在爬虫领域更是常用,并且规模一般都比较大.去重需要考虑两个点:去重的数据量.去重速度.为了保持较快的去重速度,一般选择在内存中进行去重. 数据量不大时 ...
- 基于Redis的Bloomfilter去重(转载)
转载:http://blog.csdn.net/bone_ace/article/details/53107018 前言 “去重”是日常工作中会经常用到的一项技能,在爬虫领域更是常用,并且规模一般都比 ...
- 网页去重之Simhash算法
Simhash算法是Google应用在网页去重中的一个常用算法,在开始讲解Simhash之前,先了解——什么是网页去重?为什么要进行网页去重?如何进行网页去重,其基本框架是什么? 网页去重,顾名思 ...
- Flink去重统计-基于自定义布隆过滤器
一.背景说明 在Flink中对流数据进行去重计算是常有操作,如流量域对独立访客之类的统计,去重思路一般有三个: 基于Hashset来实现去重 数据存在内存,容量小,服务重启会丢失. 使用状态编程Val ...
- 腾讯微博OAuth2.0认证介绍
腾讯微博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开放数据分享与传播平台. 广大开发者和用户登录平台后,就可以使用平台提供的开放API接口,创建应用从微博系统获取信息,或将新的信息传播到整 ...
- 基于社交网络的情绪化分析IV
基于社交网络的情绪化分析IV By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 前面进行了微博数据的抓取,简单的处理,类似度分析.后面两篇进行学 ...
- 超实用的JS数组去重
一.简单的去重方法,利用数组indexOf方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- 基于Scrapy框架的增量式爬虫
概述 概念:监测 核心技术:去重 基于 redis 的一个去重 适合使用增量式的网站: 基于深度爬取的 对爬取过的页面url进行一个记录(记录表) 基于非深度爬取的 记录表:爬取过的数据对应的数据指纹 ...
- 一款基于SVM算法的分布式法律助手
一. 项目简介 与 使用说明 体验网站(适配手机端): http://www.zhuchangwu.com 项目基于 Spring Cloud .Vue 构建,平台针对需要维权的用户而设计,主要提供如 ...
随机推荐
- apache配置VirtualHost(windows)
以下方式适合原生 Apache, XAMPP 和WAMP 套件. 1. 打开目录 {Apache2 安装目录}\conf\extra\, 找到 httpd-vhosts.conf 文件. 2. 仿照例 ...
- 如何在LINUX VPS上安装VPN详细步骤
在vps上安装vpn是个难点,很多朋友都不会,这儿结合一位朋友的安装经验做下介绍.注意你的vps要安装做vpn使用,一定要注意你的流量限制,使用Vpn上游戏上youtube看视频等都比较耗费资源,否则 ...
- 【狼窝乀野狼】Serializer妙手回春
在我们很多程序中,需要将数据保存到本地,以便于下次打开还能看到原始数据.例如我们Xmind思维导图,例如我们的Power Designer等等,都是有保存一个隶属于自己的工程文件,那么今天我要说的就是 ...
- Android-Empty-Layout:展示不同类型的页面布局,用于视图是空的时候
Android-Empty-Layout:这个布局可以作用在Listview,Gridview,用于显示数据的是空的时候,可以提示友好的页面.这库可以显示页面出错,页面加载,页面是空. 加载的动画页面 ...
- 谈谈php中上传文件的处理
这是一个表单的时代... 我们在浏览器中编辑自己的信息,会遇到上传头像:在文库中,我们会上传文档......到处存在“上传”这个词. php是最好的语言(其他语言的程序猿们不要打我...).php在处 ...
- 【BZOJ】【1272】【BeiJingWC2008】Gate of Babylon
组合数学+容斥原理 Orz zyf-zyf 多重集组合数0.0还带个数限制? ——> <组合数学>第6章 6.2带重复的组合 组合数还要模P 0.0? ——> Lucas ...
- sampler state
昨天遇到一个非常诡异的错误 samplerstate 无法加大括弧定义 编译器非要一个: 而不要{ 去掉吧'''之后的编译似乎又会报某些ss没method 现在想想 也许是 samplerstate要 ...
- GetSurfaceLevel
if( SUCCEEDED( g_pTexture->GetSurfaceLevel( 0, &pSurface) ) ) { pd3dDevice->Se ...
- 字符串匹配--kmp算法原理整理
kmp算法原理:求出P0···Pi的最大相同前后缀长度k: 字符串匹配是计算机的基本任务之一.举例,字符串"BBC ABCDAB ABCDABCDABDE",里面是否包含另一个字符 ...
- java后台生成zip打包文件
/** * * @param zipFile 压缩包文件对象 * @param listKey 压缩的图片物理地址 * @return */ public static boolean package ...