`
shuofenglxy
  • 浏览: 194601 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ZZ I-Match算法 网页去重-算法篇

 
阅读更多

I-Match算法 网页去重-算法篇

 

 

网页去重-算法篇  
前一篇(网页去重-比较文本的相似度-Near duplication detection )提到了5个解决网页去重的算法,这里我想讨论下这些算法1. I-Match 
2. Shingliing3. SimHashing( locality sensitive hash) 
4. Random Projection5. SpotSig 
6. combinedI-Match算法  
I-Match算法有一个基本的假设说:不经常出现的词和经常出现的词不会影响文档的语义,所以这些词是可以去掉的。  
算法的基本思想是:将文档中有语义的单词用hash的办法表示成一个数字,数字的相似性既能表达文档的相似性  
算法的框架是:  
1. 获取文档(或者是主体内容)  
2. 将文档分解成token流,移除格式化的标签  
3. 使用term的阈值(idf),保留有意义的tokens  
4. 插入tokens到升序排列的排序树中  
5. 计算tokens的SHA1  
6. 将元组(doc_id,SHA hash) 插入到某一词典中,如果词典有冲突,这两个文档相似。 
算法有一个缺点是稳定性差。如果文档的某个词改变了,最终的hash值就会发生显著的变化。对空文档,算法是无效的。  
有一个解决办法是,用随机化的方法,参考Lexicon randomization for near-duplicate detection with I-Match。具体细节这里就不提了 
Shingling算法  
Shingling算法说,I-Match以词为单位做hash显然是不准确的,因为它忽略了文档之间的顺序。另,Shingle指的是连续的若干个单词的串。  
Shingling算法有个简单的数学背景。如果一个shingle的长度为k,那么长度为n的文档就有n-k+1个shingle,每一个shingle可以用MD5或者其他算法表示成一个fingerprint,而两个文档的相似性Jacard相似性来表示,Jarcard公式是指两个集合的相似性=集合之交/集合之并。为了估计两个文档的相似性,有时候n-k+1个fingerprint还是太大了,所以取m个fingerprint函数,对每一个函数fi,都可以计算出n-k+1个fingerprint,取其中的最小的fingerprint,称为i-minvalue. 那么一个文档就有m个i-minvalue。数学上,Broder大师说: 
        平均来讲,两个文档中相同的唯一single的比率和两个文档中相同的i-minvalue的比率是一样的Shingling的算法框架是:  
1. 获取文档(或者是主体内容)  
2. 将文档分解成n-k+1个shingle,取m个fingerprint函数,对每一个fingerpint函数计算i-minvalue值  
3. 将m个i-minvalue值组合成更少m’个surpersingle  
4.计算两个文档相同的surpergingle的个数a。  
5. 如果a大于某一个值b(say:2),那么两个文档Jarcard 相似 
一般的参数设置为:m=84,m’=6,b=2 
SimHash 算法 
locality sensitive hash算法博大精深。基本思想是,如果两个东西相似,我可以用一个hash函数把他们投影到相近的空间中LSH。用到near duplication detection上,算法框架是:  
1. 将文档转换为特征的集合,每一个特征有一个权重  
2. 利用LSH函数把特征向量转换为f位的fingerprint,如:64  
3. 查找fingerprint的海明距离haha,看,多么简单和明朗,这里的几个问题及时寻找正确的LSH 
Random Projection算法  
shingling关注了文档顺序,但是忽略了文档单词出现的频率,random projection说我要讨论文档的频率。Random Projection也是很有意思的一种算法,它是一种随机算法。简单描述为:  
1. 将每一个token映射到b位的空间。每一个维度是由{-1,1}组成。对所有页面投影函数是一样的  
2. 每一个页面的b维度向量,是所有token的投影的简单加和  
3. 最后把b维向量中的正数表示为1,负数和0都写成0  
4. 比较两个page的b维向量一致的个数 
Charikar最牛的地方是,证明,两个b位变量一致的位数的比率就是文档向量的consine相似性。这里的数学基础还是很有意思的,如果感兴趣,可以参考M.S. Charikar. Similarity Estimation Techniques for Rounding Algorithm(May 2002) 
SpotSig算法 
ref:SpotSigs:Robust and Efficient Near Duplicate Detection in Large Web Collection  
SpotSig是个比较有意思的算法,它说,我为什么要关注所有的单词啊,我要关注的单词是有语义的词,哪些是有语义的词呢?哦,想 the a this an 的等虚词后面的就是我要关注的东西罗。Spot就是指这些虚词的后面的词串。然后呢,每一个文档我都有很多很多Spot了,现在一个文档就是一个Spot的集合,两个文档是相似程度就是集合的Jaccard相似度。算法虽然简单,但是我想重点是两个比较有借鉴意义的工程上的性能考虑。 
     1. Optimal Partition 
     Sim(A,B) = | A B交集| / | A B 并集| <= min(A,B)/max(A,B) <= |A|/|B| say: |A|<|B|好了,这是一个很好的枝剪条件,如果文档spot vector的个数比小于某个值(当然是,小 / 大),就可以完全不用求交,并了。Optimal Partition就是说,好啊,我把每一个文档的spot vector的长度都投影到相应的从小到大的bucket中,保证|d1|/|d2| >=r if |d1| < |d2| . 且不存在这样的反例。另一个保证是这个bucket是满足条件的最小的。有了这个partition,我们最多只用关心相邻的三个bucket了 
   2. Inverted Index Pruning   说,两个文档,如果能相似,起码有一个公共的spot。逆向索引说的就是把spot做为index,包含它的所有文档作为其value。有了这两个工具,计算复杂度可以明显下降,因为它不会计算不能是duplication的文档。

分享到:
评论

相关推荐

    MATLAB算法K-means算法代码

    K-means算法是一种非常经典的聚类算法,在数据挖掘、模式识别等领域有着广泛的应用。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级编程语言和交互式环境,其丰富的工具箱使它在工程计算领域...

    刀架溜板ZZ027-A).zip

    《刀架溜板ZZ027-A):深入解析三维设计技术在机械工程中的应用》 在现代工业设计中,三维设计技术已经成为不可或缺的一部分。本文将深入探讨标题为“刀架溜板ZZ027-A)”的压缩包文件,该文件包含的产品三维设计图,...

    中医大夫助理信息系统 zz-doctor

    《中医大夫助理信息系统 zz-doctor 深度解析》 中医大夫助理信息系统“zz-doctor”是一款基于Android平台的应用程序,旨在为中医医生提供智能化、便捷化的诊疗辅助工具。通过深入剖析这款应用的源码,我们可以了解...

    ZZ-2022010 机器人技术应用赛项赛题.zip

    这个赛题,即“ZZ-2022010 机器人技术应用赛项”,是针对这一目标而设立的竞赛项目。 赛题通常涵盖以下几个核心知识点: 1. **机器人基础知识**:参赛者需要了解机器人的基本构成,包括机械结构、电子元件、传感器...

    文档拓扑排序-Kahn算法和字典序最小的拓扑排序

    ### 文档拓扑排序-Kahn算法和字典序最小的拓扑排序 #### 拓扑排序概述 拓扑排序(Topological Sort)是指对于一个有向无环图(Directed Acyclic Graph, DAG),通过某种顺序对图中的所有顶点进行排序的一种方法。...

    中文NLP实体识别任务之ONE-HOT标注数据(BIOES)修复BERT分词数据偏移

    本方法是基于BIOES标注的,如果为其它,请...B-PL E-PL B-ZZ E-ZZ B-SJ I-SJ E-SJ 经过BERT分词器分词后为: 反 复 胸 痛 15 年 这时候label就要重新修复下偏移了,修复后结果如下: B-PL E-PL B-ZZ E-ZZ B-SJ E-SJ

    atguigu_springboot2_zz-master.zip

    本篇文章将深入探讨基于`atguigu_springboot2_zz-master`项目的SpringBoot2核心知识点,帮助读者更好地理解和运用这一强大工具。 1. **SpringBoot简介** SpringBoot是Spring框架的扩展,旨在简化Spring应用的初始...

    机械毕业设计——刀架溜板ZZ027-A).zip

    标题“机械毕业设计——刀架溜板ZZ027-A).zip”暗示了这是一个与机械工程相关的毕业设计项目,重点是刀架溜板ZZ027-A的设计。刀架溜板是机床的重要组成部分,通常在车床或铣床上用于安装和移动刀具,以实现对工件的...

    算法参考资料Introduction-to-algorithms-3rd-edition

    因此,我将根据标题《算法参考资料Introduction-to-algorithms-3rd-edition》提供的信息,假设该文件是一本关于算法的经典教材——《Introduction to Algorithms, Third Edition》(《算法导论 第三版》)的内容,并...

    zz1165935664-BLab-master_zzk3686_pcb_esp8266电路_esp8266电路板_模块pcb_

    zz1165935664-BLab-master_zzk3686_pcb_esp8266电路_esp8266电路板_模块pcb_源码.zip

    ZZ-2021030 网络搭建与应用赛项赛卷《网络环境》.pdf

    ZZ-2021030 网络搭建与应用赛项赛卷《网络环境》.pdf

    ZZ-2022004 建筑CAD赛项赛题.zip

    ZZ-2022004 建筑CAD赛项赛题 中职赛项 适合正在准备技能大赛的人群

    ZZ-2022022 汽车机电维修赛项赛题.zip

    ZZ-2022022 汽车机电维修赛项赛题 中职赛项 适合正在准备技能大赛的人群

    程序员的编辑器——VIM(zz) - 饮水思源

    这篇文章将深入探讨VIM的使用技巧和重要概念,帮助你提升编辑效率。 首先,VIM的操作模式是其独特之处。与大多数编辑器的即时编辑不同,VIM分为正常模式、插入模式和命令行模式。在正常模式下,你可以通过键盘...

    android应用源码zz-doctor中医大夫助理信息系统.rar

    【标题】"android应用源码zz-doctor中医大夫助理信息系统.rar"揭示了这是一份针对Android平台开发的应用程序源代码,专门设计用于辅助中医大夫进行日常工作。这个系统可能集成了病症诊断、处方建议、病例记录等多种...

    ZZ-2021036 电子商务技能赛项规程.pdf

    这一部分考验选手们的网页编辑能力、平面设计能力以及对视觉营销的理解。 网店客户服务是电子商务运营的重要一环,要求参赛选手能够准确分析客户的需求,并提供符合标准的话术服务,确保服务的专业性和效率。这一...

    zz1165935664-BLab-master_zzk3686_pcb_esp8266电路_esp8266电路板_模块pcb.

    标题中的“zz1165935664-BLab-master_zzk3686_pcb_esp8266电路_esp8266电路板_模块pcb”暗示了这是一个关于电子工程项目的资源,特别是与ESP8266微控制器相关的电路板设计。ESP8266是一款经济实惠且功能强大的Wi-Fi...

Global site tag (gtag.js) - Google Analytics