文本指纹算法和内容指纹系统介绍.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
⽂本指纹算法和内容指纹系统介绍 1. ⽂本指纹介绍 Web⼤量上的⽹页集合⾥存在⼤量的重 内容⽹页,⽆论对于搜索引擎的⽹页去重和过滤、新闻⼩说等内容⽹站的内容反盗版和追踪、还是 社交媒体等⽂本去重和聚类,都需要对⽹页或者⽂本进⾏去重和过滤。 最简单的⽂本相似性计算⽅法可以利⽤空间向量模型,计算分词后的⽂本的特征向量的相似性,这种⽅法存在效率的严重弊端,⽆法针对海 量的⽂本进⾏两两的相似性判断。模仿⽣物学指纹的特点,对每个⽂本构造⼀个指纹,来作为该⽂本的标识,从形式上来看指纹⼀般为固定 长度较短的字符串,相同指纹的⽂本可以认为是相同⽂本。 最简单的指纹构造⽅式就是计算⽂本的md5或者sha哈希值,除⾮输⼊相同的⽂本,否则会发⽣ “雪崩效应”,极⼩的⽂本差异通过md5或 者sha计算出来的指纹就会不同 (发⽣冲撞的概率极低),那么对于稍加改动的⽂本,计算出来的指纹也是不⼀样。 因此,⼀个好的指纹应该具备如下特点 : 1. 指纹是确定性的,相同的⽂本的指纹是相同的; 2. 指纹越相似,⽂本相似性就越⾼; 3. 指纹⽣成和匹配效率⾼。 业界关于⽂本指纹去重的算法众多,如k-shingle算法、google提出的simhash算法、Minhash算法、top k最长句⼦签名算法等等,本⽂ 接下来将简单介绍各个算法以及指纹系统的基本架构和思路。 2. 常⽤的指纹算法 2.1 k-shingle算法 shingle在英⽂中表⽰相互覆盖的⽡⽚。对于⼀段⽂本,分词向量为[w 1,w2, w3, w4, … wn] , 设k=3,那么该⽂本的shingle向量表⽰为 [(w 1,w2,w3),(w2,w3,w4), (w3,w4,w5), …… (wn-2,wn- 1,wn)] ,计算两个⽂本的shingle向量的相似度 (j arccard系数)来判断⽂本是否 重 。由于k-shingle算法的shingle向量空间巨⼤ (特别是k特别⼤时),相⽐vsm更加耗费资源,⼀般业界很少采⽤这类算法。 2.2 Simhash算法 Simhash是google⽤来处理海量⽂本去重的算法,同时也是⼀种基于LSH(localitysensitive hashing)的算法。简答来说,和md5和sha 哈希算法所不同,局部敏感哈希可以将相似的字符串hash得到相似的hash值,使得相似项会⽐不相似项更可能的hash到⼀个桶中,hash 到同⼀个桶中的⽂档间成为候选对。这样就可以以接近线性的时间去解决相似性判断和去重问题。 simhash算法通过计算每个特征 (关键词)的哈希值,并最终合并成⼀个特征值即指纹。 simhash算法流程 1. ⾸先基于传统的IR⽅法,将⽂章转换为⼀组加权的特征值构成的向量。 2. 初始化⼀个f维的向量V ,其中每⼀个元素初始值为0。 3. 对于⽂章的特征向量集中的每⼀个特征,做如下计算 : a) 利⽤传统的hash算法映射到⼀个f-bit (⼀般设成32位或者64位)的签名。对于这个f- bit的签名,如果签名的第i位上为 1,则对向 量V 中第i维加上这个特征的权值,否则对向量的第i维减去该特征的权值 ; b) 整个特征向量集合迭代上述运算后,根据V 中每⼀维向量的符号来确定⽣成的f-bit指纹的值,如果V的第i维为正数,则⽣成f-bit指纹 的第i维为 1,否则为0。 图1 simhash算法⽰意图 Simhash指纹匹配过程 经过simhash指纹⽣成算法⽣成的指纹是⼀个f位的⼆进制字符串,如⼀个32位的指 纹, ‘10 100110 10 1000 110 110 11’。对于两个⽂本的f位0- 1字符串,simhash算法采⽤hammingdistance来计算两 个指纹之间的相似度,但是对于海量⽂本,如何从千万级别 (甚⾄更多)的指纹集合中,找出最多只有k位不同的指纹呢? ⼀个简单的思想就是以空间换时间,对于⼀个32位的指纹来说,将该指纹划分成4段,即4个区间,每个区间8位,如果两个指纹⾄多存在 3 (设k=3)位差异,那么⾄少有⼀段的8位是完全相同的,因此可以考虑利⽤分段来建⽴索引,来减少需要匹配的候选指纹数量。 Simhash指纹匹配算法 1. ⾸先对于指纹集合Q构建多个表T 1,T2…Tt,每⼀个表都是采⽤对应的置换函数 π(i)将

文档评论(0)

159****8201 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档