对simhash算法的一些思考】的更多相关文章

http://2588084.blog.51cto.com/2578084/558873…
搜集了快一个月的资料,虽然不完全懂,但还是先慢慢写着吧,说不定就有思路了呢. 开源的最大好处是会让作者对脏乱臭的代码有羞耻感. 当一个做推荐系统的部门开始重视[数据清理,数据标柱,效果评测,数据统计,数据分析]这些所谓的脏活累活,这样的推荐系统才会有救. 求教GitHub的使用. 简单不等于傻逼. 我为什么说累:我又是一个习惯在聊天中思考前因后果的人,所以整个大脑高负荷运转.不过这样真不好,学习学成傻逼了. 研一的最大收获是让我明白原来以前仰慕的各种国家自然基金项目,原来都是可以浑水摸鱼忽悠过去…
SimHash算法 由于实验室和互联网基本没啥关系,也就从来没有关注过数据挖掘相关的东西.在实际工作中,第一次接触到匹配和聚类等工作,虽然用一些简单的匹配算法可以做小数据的聚类,但数据量达到一定的时候就束手无策了. 所以,趁着周末把这方面的东西看了看,做个笔记. 来历 google的论文“detecting near-duplicates for web crawling”--------simhash. Google采用这种算法来解决万亿级别的网页的去重任务. 基本思想 simhash算法的主…
这篇文章主要讲simHash算法.这是一种LSH(Locality-Sensitive Hashing,局部敏感哈希)的简单实现.它是广泛用于数据去重的算法,可以用于相似网站.图片的检索.而且当两个样本差别并不大时,算法仍能起效.值得一提的是,该算法的时空复杂度不存在与维度有关的项,所以不会遭遇维度灾难,也可以在维数较高时优化kNN算法. 特征 此算法(LSH)具有双重性,它们似乎是相悖的: 对于几组不同的特征,hash相同(即冲突)的可能性要尽可能小.这也是hash基本的特征. 对于几组相似的…
马克·吐温曾经说过,所谓经典小说,就是指很多人希望读过,但很少人真正花时间去读的小说.这种说法同样适用于“经典”的计算机书籍. 最近一直在看LSH,不过由于matlab基础比较差,一直没搞懂.最近看的论文里几乎都是用simHash来实现LSH,从而进行ANN. 有空看看基于滑动窗口的论文相似性检测. 如何用matlab画出一个数列(函数)的收敛过程(菱形收敛.圆形收敛)? 学完分布式了,我打算自己学WordPress,建立自己的独立博客,放在云平台或者服务器空间,然后学着分析流量和负载均衡这一类…
xsank的快餐 » Python simhash算法解决字符串相似问题 Python simhash算法解决字符串相似问题…
短文本合并重复(去重)的简单有效做法 - 旁观者 - 博客园 短文本合并重复(去重)的简单有效做法 SimHash算法 - ACdreamer - 博客频道 - CSDN.NET SimHash算法…
文本去重之SimHash算法 - pathenon的个人页面 - 开源中国社区 文本去重之SimHash算法…
simhash是google用来处理海量文本去重的算法. google出品,你懂的. simhash最牛逼的一点就是将一个文档,最后转换成一个64位的字节,暂且称之为特征字,然后判断重复只需要判断他们的特征字的距离是不是<n(根据经验这个n一般取值为3),就可以判断两个文档是否相似. 原理 simhash值的生成图解如下: 大概花三分钟看懂这个图就差不多怎么实现这个simhash算法了.特别简单.谷歌出品嘛,简单实用. 算法过程大概如下: 将Doc进行关键词抽取(其中包括分词和计算权重),抽取出…
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- <数据挖掘之道>摘录话语:虽然我比较执着于Rwordseg,并不代表各位看管执着于我的执着,推荐结巴分词包,小巧玲珑,没有那么多幺蛾子,而且R版本和python版本都有,除了词性标注等分词包必备功能以外,jiebaR还加入了一些基础的文本分析算法,比如提取关键字(TFIDF).分析文本相似性等等,真是老少咸宜. 同时官网也有一个在线jieba…
simhash进行文本查重http://blog.csdn.net/lgnlgn/article/details/6008498 Simhash算法原理和网页查重应用http://blog.jobbole.com/21928/…
SimHash是什么 SimHash是Google在2007年发表的论文<Detecting Near-Duplicates for Web Crawling >中提到的一种指纹生成算法或者叫指纹提取算法,被Google广泛应用在亿级的网页去重的Job中,作为locality sensitive hash(局部敏感哈希)的一种,其主要思想是降维,什么是降维? 举个通俗点的例子,一篇若干数量的文本内容,经过simhash降维后,可能仅仅得到一个长度为32或64位的二进制由01组成的字符串,这一点…
Simhash算法是Google应用在网页去重中的一个常用算法,在开始讲解Simhash之前,先了解——什么是网页去重?为什么要进行网页去重?如何进行网页去重,其基本框架是什么?   网页去重,顾名思义,就是过滤掉重复的网页.统计结果表明,近似重复网页的数量占网页总数量的比例较高,即互联网上有很多的页面内容是完全一样的或是相近的(这个不难理解,比如对于某一事件的新闻报道,很多是大同小异的).基于这一实际情况,所以要进行网页去重.   那么如何进行网页去重呢?这就用到了Simhash算法. 去重算…
SimHash原理 1.SimHash背景 SimHash算法来自于 GoogleMoses Charikar发表的一篇论文"detecting near-duplicates for web crawling" ,其主要思想是降维, 将高维的特征向量映射成低维的特征向量,通过两个向量的Hamming Distance(汉明距离)来确定文章是否重复或者高度近似. Hamming Distance: 又称汉明距离,在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个…
simhash算法:海量千万级的数据去重 simhash算法及原理参考: 简单易懂讲解simhash算法 hash 哈希:https://blog.csdn.net/le_le_name/article/details/51615931 simhash算法及原理简介:https://blog.csdn.net/lengye7/article/details/79789206 使用SimHash进行海量文本去重:https://www.cnblogs.com/maybe2030/p/5203186…
Simhash算法: Simhash算法由Google的Charikar提出,是将一篇文档转化为n位的签名,通过比较签名的相似度来计算原文档的相似度.签名越相近,则文档越相近.因此,整个过程就不会涉及到原文档文本内容的两两比较,就不需要存储这些海量文档的内容. simhash算法的输入是一个向量,输出是一个 f 位的签名值.为了陈述方便,假设输入的是一个文档的特征集合,每个特征有一定的权重.比如特征可以是文档中的词,其权重可以是这个词出现的次数. simhash 算法如下:1,将一个 f 维的向…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题的第45篇文章,我们一起来看看LeetCode的76题,最小窗口子串Minimum Window Substring. 这题的官方难度是Hard,通过了也是34.2%,4202人点赞,299人反对.从通过率以及点赞比来看,这题的质量很高,稍稍有些偏难,所以小伙伴们请做好准备,这是一道有点挑战的问题. 题意和样例 我们一起来看下题意,这题的题意很短,给定两个字符串S和T.要求设计一个复杂度为的算法,在S串当中找到…
更多的关于k近邻算法的思考 KNN(K- Nearest Neighbor)法即K最邻近法,数据挖掘分类技术中最简单的方法之一 对k近邻算法的总结: 优点部分 其可以解决分类问题,同时可以天然的解决多分类问题 其具备着思想简单,效果强大优点 同时,还可以使用k近邻算法来解决回归问题 对于我们要预测的k个节点,可以根据这k个样本的情况来解决,sklearn已经封装好了一个用来解决回归问题 缺点部分 最大的缺点就是效率低下 如果训练集有m个样本,n个特征,则预测每一个新的数据,需要o(m*n)的时间…
LIS(Longest Increasing Subsequence)是一类典型的动态规划类问题,简化描述如下: 给定$N(n) = \{1,2...,n\}$的一个排列$P(n)$,求$P(n)$中最长上升子列的长度. 譬如令$n = 6$, $N(6) = \{1,2,3,4,5,6\}$,$P(n) = \{1,4,2,5,3,6\}$. 容易发现$LIS(P(n)) = \{1,2,3,6\} or \{1,4,5,6\}...$. 起初我们拿到问题的思路是这样的,我们试着先分析序列的前…
一个牛人分享的,放在github上,用java实现,网络上还有很多用ruby写的   https://github.com/commoncrawl/commoncrawl/blob/master/src/org/commoncrawl/util/shared/SimHash.java…
传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法.产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的:如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节,所产生的签名也很可能差别极大.从这个意义 上来 说,要设计一个 hash 算法,对相似的内容产生的签名也相近,是更为艰难的任务,因为它的签名值除了提供原始内容是否相等的信息外,还能额外提供不相等的 原始内容的差异程度的信息. 而 Google 的…
传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法.产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的:如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节,所产生的签名也很可能差别极大.从这个意义 上来 说,要设计一个 hash 算法,对相似的内容产生的签名也相近,是更为艰难的任务,因为它的签名值除了提供原始内容是否相等的信息外,还能额外提供不相等的 原始内容的差异程度的信息.而 Google 的 s…
使用场景:Google 的 simhash 算法 //通过大量测试,simhash用于比较大文本,比如500字以上效果都还蛮好,距离小于3的基本都是相似,误判率也比较低. //从我的经验,如果我们假定N是每个块的大小,M是重叠的字符的数目,N = 4和M = 3是最好的选择 public class SimHashAnalyser : IAnalyser { private const int HashSize = 32; public float GetLikenessValue(string…
记得以前有人问过我,网页去重算法有哪些,我不假思索的说出了余弦向量相似度匹配,但如果是数十亿级别的网页去重呢?这下糟糕了,因为每两个网页都需要计算一次向量内积,查重效率太低了!我当时就想:论查找效率肯定是要考虑hash算法,相同字符串的hashcode肯定相同,不同字符串的hashcode却是大不相同,这也不符合要求啊,会不会存在一种算法能够使相似字符串的code值也相同或相似呢,于是就找到了Google的网页去重算法-SimHash.我们在使用SimHash算法前需要根据文档量级选择SimHa…
1.介绍 爬虫采集了大量的文本数据,如何进行去重?可以使用文本计算MD5,然后与已经抓取下来的MD5集合进行比较,但这种做法有个问题,文本稍有不同MD5值都会大相径庭, 无法处理文本相似问题.另一种方式是本文要介绍的SimHash,这是谷歌提出的一种局部敏感哈希算法,在吴军老师的<数学之美>里也有介绍,这种算法可以将文本降维成一个 数字,极大地减少了去重操作的计算量.SimHash算法主要分为以下几个步骤: 1.分词,并为每个词加上权重,代表这个词在这句话中的重要程度(可以考虑使用TF-IDF…
参考文档: simhash算法原理及实现:https://blog.csdn.net/chenguolinblog/article/details/50830948…
引入 随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地识别它们是一个很有意义的课题. 例如,对于搜索引擎的爬虫系统来说,收录重复的网页是毫无意义的,只会造成存储和计算资源的浪费: 同时,展示重复的信息对于用户来说也并不是最好的体验.造成网页近重复的可能原因主要包括: 镜像网站 内容复制 嵌入广告 计数改变 少量修改 一个简化的爬虫系统架构如下图所示: 事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离.海明距离或者余弦角度等等…
//2019.08.03晚#k-近邻算法的拓展思考与总结1.k-近邻算法是一种非常典型的分类监督学习算法,它可以解决多分类的问题:另外,它的整体思想简单,效果强大.它也可以用来解决回归问题,使用的库函数为KNeighborsRegressor 2.k-近邻算法虽然可以很好地解决多分类问题,但是它也有很多的缺点,具体主要有以下几个方面:(1)效率低下:对于每一个预测数据都需要O(mxn)的时间复杂度,可以对其利用树结构进行优化,不过即使优化之后其效率也是比较低下的:(2)高度数据相关:一旦数据中存…
1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据的相似性,从数据集中寻找与目标数据最相似的项目,而这种相似性通常会被量化到空间上数据之间的距离,例如欧几里得距离(Euclidean distance),NN认为数据在空间中的距离越近,则数据之间的相似性越高. 当需要查找离目标数据最近的前k个数据项时,就是k最近邻检索(K-NN). 0x2:NN的…
在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(Locality Sensitive Hashing)),本文介绍的SimHash是一种局部敏感hash,它也是Google公司进行海量网页去重使用的主要算法. 1. SimHash与传统hash函数的区别 传统的Hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上仅相当于伪随机数产生算法.传统…