• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    手机版
  • 关注官方公众号
    微信扫一扫关注
    程序侠公众号

搜索引擎的指纹算法

0
回复
81
查看
[复制链接]
金钱
437
贡献
0

146

主题

153

帖子

590

积分

VIP

积分
590
发表于 2018-9-5 11:13:25 | 显示全部楼层 |阅读模式
我想,凡是做SEO的朋友都知道。搜索引擎对于原创文章是非常喜欢的,即使那些价值不是很高的文章,只要是原创的那就有一定的加分。那各位朋友有没有思考过,搜索引擎是如何判断一篇文章是否原创呢?这里就要用到搜索引擎的信息指纹算法了,通过对比两篇文章的信息指纹,得出文章的重复度。当重复率低于某个数值,则被判断为原创。那究竟指纹算法是怎样的一种算法呢,今天悦豆网络营销网给大家解说下!

        1.1信息指纹算法
  判断重复网页的思想:为每个网页计算出一组信息指纹(Fingerprint),若两个网页有一定数量相同的信息指纹,则认为这两个网页的内容重叠性很高,也就是说两个网页是内容复制的。

  判断内容复制的方法中最关键的两点:

  1、计算信息指纹(Fingerprint)的算法;

  2、判断信息指纹的相似程度的参数。

  信息指纹就是提取网页正文信息的特征,通常是一组词或者一组词+权重,然后根据这组词调用特别的算法,例如MD5,将之转化为一组代码,这组代码就成为标识这个信息的指纹。从理论上讲,每两个不同文本的特征信息是不同的,那么得到的代码也应该是不一样的,就象人的指纹。

  得到预处理后的网页,然后对网页进行向量化处理,简单的讲就是分词,统计,并按照词频生成一个列表.

  例如:

  网页12

  搜索10

  引擎7

  ...

  ...

  然后取前N个关键词作为信息的矢量,例如:[网页12搜索10引擎7]这是可以直接进行MD5哈系,或者按照其它规则进行重排后进行MD5哈系。例如本例,取前3个关键词,在进行哈系,得到的信息指纹就是:a7eb9d92a83cf438881915e0bc2df70b。

  这样a7eb9d92a83cf438881915e0bc2df70b就作为本文档的指纹和以往的文档进行比较,如果有相同的,就说明指纹上看是一样的,就可以进入消重处理。至于关键词的权重,因为有众多的提取算法,比较常用的是nf/df。

  1.2分段签名算法
  这种算法是按照一定的规则把网页切成N段,对每一段进行签名,形成每一段的信息指纹。如果这N个信息指纹里面有M个相同时(M是系统定义的阈值),则认为两者是复制网页。

  这种算法对于小规模的判断复制网页是很好的一种算法,但是对于像google这样海量的搜索引擎来说,算法的复杂度相当高。

  1.3基于关键词的复制网页算法
  像google这类搜索引擎,他在抓取网页的时候都会记下以下网页信息:

  1、网页中出现的关键词(中文分词技术)以及每个关键词的权重(关键词密度TF)详见TF-IDF算法

  2、提取metadescrīption或者每个网页的512个字节的有效文字。

  关于第2点,baidu和google有所不同,google是提取metadescrīption,没有查询关键字相关的512个字节,而百度是直接提取后者(检索关键词周边的文字信息)。

  在以下算法描述中,首先约定几个信息指纹变量:

  Pi表示第i个网页;

  该网页权重最高的N个关键词构成集合Ti={t1,t2,...tn},其对应的权重为Wi={w1,w2,...wn}

  摘要信息用Des(Pi)表示,前n个关键词拼成的字符串用Con(Ti)表示,对这n个关键词排序后形成的字符串用Sort(Ti)表示。

  以上信息指纹都用MD5函数进行加密。

  基于关键词的复制网页算法有以下5种:

  1、MD5(Des(Pi))=MD5(Des(Pj)),就是说摘要信息完全一样,i和j两个网页就认为是复制网页;

  2、MD5(Con(Ti))=MD5(Con(Tj)),两个网页前n个关键词及其权重的排序一样,就认为是复制网页(关键词相同并且重复率相同);

  3、MD5(Sort(Ti))=MD5(Sort(Tj)),两个网页前n个关键词一样,权重可以不一样,也认为是复制网页(关键词相同,重复率不同)。

  4、MD5(Con(Ti))=MD5(Con(Tj))并且Wi-Wj的平方除以Wi和Wj的平方之和小于某个阙值a,则认为两者是复制网页。

  5、MD5(Sort(Ti))=MD5(Sort(Tj))并且Wi-Wj的平方除以Wi和Wj的平方之和小于某个阙值a,则认为两者是复制网页。

  关于第4和第5的那个阈值a,主要是因为前一个判断条件下,还是会有很多内容部分相同的网页被认为相同而被排除掉,因此要根据权重的分布比例调节a的大小。

  以上5种算法运行的时候,算法的效果取决于N,就是关键词数目的选取。选的数量越多,判断就会越精确,但是随之而来的计算速度也会减慢下来。所以必须考虑一个计算速度和去重准确率的平衡。据悦豆试验结果,10个左右关键词最恰当。


  而我所考虑的是从句子的角度,但如果单个句子的特征,特征未免单一,而不具有代表性,句子多了又可能,造成特征过于复杂和容错性能的下降,毕竟我们通过自动抽取的网页正文不能保证100%无任何噪音和抽取失误带来的原文缺失。在这个角度上我们进一步考虑是否能有更好的方法呢?传统中文断句,我们主要依赖于标点符号,那我的想法就是标点符号左右的汉字已经能有很强的代表性来作为句子的特征,而句子又能作为文本的特征,因此尝试了取逗号句号感叹问号左右2边各2个汉字或英文作为特征,来进行文本表示。

  全文按照标点符号取出汉字后构成了1个比较长的串,但为了信息指纹的需要,我们必须考虑容错性的问题,这个串如果直接HASH,有可能因为噪音的加入产生巨大的偏差,因此我对这个长串做了截断的处理,同时考虑一般标题的信息含量很高,单独认为标题也成为1个字串,指纹特征就变成了1个标题的HASH码3个截断后的子串HASH码同时标题的权重为1.5其他子串权重为1.0阀值设定为3这样如果有标题相同并有2个字串相同的文章我们就认为是重复,或者标题不相同3个字串完全相同的是重复。具体消重特征判别,是使用数据库的内存表还是BLOOMFILTER之类的算法就随便你了。

  当然以上算法的前提是正文和标题抽取的准确如果噪音过多,这个算法可能降低到一个完全无法应用的程度,怎么提高该算法的在噪音比较高情况下的容错性,该是自己考虑的问题了。
内容来源于优秀的除甲醛公司绿萝侠,新房除甲醛就找绿萝侠!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫描微信二维码

关注程序侠公众号

随时了解程序新功能动态

在线客服(服务时间 9:30~20:00)

在线QQ客服
邮件:chengxuxia@vip.qq.com

Powered by Discuz! X3.4© 2015-2017 Comsenz Inc.( 鲁ICP备14026715号-3 )