首先将网页 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)时间求得,在行块分布函数图上可以直观的看出正文所在区域。以新浪新闻选择一篇网页,求出行块分布函数如下图所示:

由上述行块分布函数图可明显看出,正确的文本区域全都是分布函数图上含有最值且连续的一个区域,这个区域往往含有一个骤升点和一个骤降点。
于是,网页正文抽取问题转化为了求行块分布函数上的骤升骤降两个边界点,这两个边界点所含的区域包含了当前网页的行块长度最大值并且是连续的。 |