2.7 文章类网页提取和判断的原理讲解

  由于互联网的网页具有内容的多样性和结构的复杂性,采用一个通用的算法对其进行处理有着重要的意义。除了正文,大多数网页还包含许多噪音信息,比如导航栏、侧边栏和广告。网页正文提取的目标就是要去掉噪音信息提取出正文信息。在本文中,要说明的是我自己提出的P值算法。P值的公式基于全概率公式,非常简洁,并且P值描述了标签是正文的概率和网页是文章类网页的概率。

 

一、正文提取

  假设。首先,提出两个假设。

  • 准确的正文区域恰好被包含在了一个标签中(比如<div></div>)。

  • 存在一个P值,可以代表一个标签是正文标签的概率。

  算法流程。在先前的假设下,P值算法的流程设计如下:

  步骤1. 去除一定不是正文区域的内容,这些内容包括:

    • 注释。

    • <script>, <noscript>, <style>, <embed>, <label>, <form>, <input>, <iframe>, <head>, <meta>, <link>, <object>, <aside>,<channel>, <img> 标签。

    • 其他标签的“id”,“class”和“style”等属性。

  步骤2. 计算每个标签的P值,选定P值最大的标签作为正文区域。

  步骤3. 去掉选定标签的标签头和标签尾,以及该标签内容的标签头和标签尾,比如<div>、</div>。剩下的内容就是正文区域。

  以上步骤都可以很容易的用beautifulsoup实现。

  计算P值的方法。首先有三个定义:

  定义1:标签的长度。标签的字符串长度包括标签头和标签尾以及它们之间的所有字符。

  定义2:标签的文本长度。删除标签中所有标签头和标签尾以后的标签字符串长度。

  定义3:标签的有效文本长度。标签的文字长度减去此标签中所有<a>标签的文字长度。

  因为<a>标签的内容大多是噪音信息。

       一个标签的P值计算公式:

         (1)

 

  公式(1)的解释。这个公式可以从概率论的角度来诠释。

  设事件A表示“标签中的文本能代表这个标签主要信息”,事件B表示“这个标签是网页正文区域”。

  如果不考虑语义的因素,就代表了P(A),就代表了P(B|A)。(可以把汉字分别代入事件和变量更容易理解)此外,我们认为P(B|~A)很小,因为~A意味着标签中的文本不能代表标签的主要信 息,所以能代表正文页面信息的概率就更小了。所以我们认为 。

  这样,我们就可以从全概率公式得到P(B)了。

         (2)

  当我们用P值提取一个网页正文的时候,我们只关注每个标签P值的相对大小,而 对于一个特定的网页是一个常数,所以我们可以用下面的P’来等价替换P。

      (3)

二、网页判断和分类

  一个定义:

  定义4:网页的P值。网页中所有标签的最大P值是网页的P值。

  方法:

  经过大量测试,我们发现网页的P值与网页是否具有主文本区域的概率相关。 我们得出这样的结论:网页的P值等于网页是否具有主文本区域的概率。

  因此,如果页面的P值不小于0.5,我们认为网页有一个主文本区域,这意味着页面中有一篇文章。 否则,如果页面的P值小于0.5,我们认为网页上没有文章。

posted @ 2017-05-10 18:52  lvmememe  阅读(532)  评论(0编辑  收藏  举报