内容页面 当然很明显是 内容区块最重要
栏目页面 列表区块很重要
问题是:
首页呢? 首页怎么识别?
首先百度肯定是能识别一般网站常有的页面内容,比如导航,面包屑等、估计会对整站其他页面有个对比,然后去除掉这些通用区域,剩余的就是重要区块了吧.
首页亦然,无论是聚合页还是内容页的正文(重要区块)提取,“基于行块分布函数的通用网页正文抽取算法”是通用的,原理是根据网页里行块密度来确定哪个区块最重要。
首先将网页 HTML 去净标签,只留所有正文,同时留下标签去除后的所有空白位置信息,留下的正文称为 Ctext.
定义 1. 行块:
以 Ctext 中的行号为轴,取其周围 K 行(上下文均可,K<5,这里取 K=3,方向向下, K称为行块厚度),合起来称为一个行块 Cblock,行块 i 是以 Ctext 中行号 i 为轴的行块;
定义 2. 行块长度:
一个 Cblock,去掉其中的所有空白符(\n,\r,\t 等)后的字符总数称为该行块的长度;
定义 3. 行块分布函数:
以 Ctext 每行为轴,共有 LinesNum(Ctext)‐K 个 Cblock,做出以[1, LinesNum(Ctext)‐K]为横轴,以其各自的行块长度为纵轴的分布函数;
行块分布函数可以在 O(N)时间求得,在行块分布函数图上可以直观的看出正文所在区域。以新浪新闻选择一篇网页,求出行块分布函数如下图所示:
由上述行块分布函数图可明显看出,正确的文本区域全都是分布函数图上含有最值且连续的一个区域,这个区域往往含有一个骤升点和一个骤降点。
于是,网页正文抽取问题转化为了求行块分布函数上的骤升骤降两个边界点,这两个边界点所含的区域包含了当前网页的行块长度最大值并且是连续的。