网络语料正文的识别/抽取规则 标签密度判定法

来源:互联网 发布:生物技术概论淘宝 编辑:程序博客网 时间:2024/06/11 15:40

在确定了对不同的URL进行的不同的操作之后,自然就进入到了本软件的核心部分:如何判定HTML源码中,哪一部分是正文。只有确定了正文部分,才能够确定操作集中的对象,才能够进行抽取。

在各种网络文本中,最容易获得的,就是网络新闻之类。这类文章,甚至包括很多的非新闻类的网上文章,特点都是具有一个标题,这个标题一般会放在正文开头在<h1> </h1>标签中,有些网站也会放在<title> </title>标签中;另外,在一般的网上文章中,正文往往都是用<p> </p>来进行段落划分。同时,正文成分在网页源代码中,分布往往较为集中。因此,本文提出一种正文判定法则,即标签密度判定法,即,首先判断一个<p> </p>代码块中的标签密度,如果低于某一阈值,就认为其标签含量很低,是正文的可能性就比较大。下面举两个例子来论证标签密度是否能成为判定正文的标准:代码片段A是一篇新闻网页的源码中,正文部分的Fragment,而代码片段B,则是非正文部分的Fragment。这两段网页源代码,是随机地从某一搜索引擎结果集中抽取的,因而具有相当的代表性:

 

<P>  对于吉林石化爆炸污染松花江水源的说法,吉林省委宣传部表示目前还没有听说这个情况。吉林市市委宣传处一位人士更是表示,由于哈尔滨处于松花江下游,哈尔滨多年来一直抓住水指标的问题,作水污染的文章,这次停水是否因为吉林石化爆炸所导致还不好说。他告诉记者,自1114下午开始,吉林市松花江江北在恢复供水后一直保持正常。

</P>

<P>  吉林石化方面人士强调,爆炸产生的是二氧化碳和水,绝对不会污染到水源,而吉林石化也有自己的污水处理厂,不合格的污水是不会排放到松花江的。本报记者翟宇许

金晶王婷婷 发自哈尔滨 北京<A href="http://weather.qq.com/preend.htm?dc80.htm"

target=_blank> <IMG alt=点击查看北京及更多城市天气预报

src="http://weather.qq.com/images/endnew/weather_icon.gif"

border=0> </A> </P>

 

3-1 代码片段A,从某HTML页面源文件中摘取的片断

 

 

<DD class="nadlinkB  marginupdown"> <!--广告 -->

  <DD class=focus>

  <DIV class="focustit px14">焦点关注 </DIV>

  <DD class=foucscnt>

  <DIV class=foucscnt1> <A href="http://news.qq.com/a/20051124/000309.htm"

  target=new> <IMG class=marginupdown height=88 alt="交友广告在高校派发 寻伊启事专盯单身美女"

  src="http://img1.qq.com/news/20051124/2719358.jpg" width=130

  border=1> </A> <BR>交友广告专盯单身美女<BR> <BR> <A

  href="http://ent.qq.com/a/20051124/000048.htm" target=new> <IMG

  class= marginupdown height=88 src="http://img1.qq.com/ent/20051124/2720851.jpg"

  width=130 border=0> </A> <BR> 怀孕王菲遭媒体“围堵”<BR> </DIV>

  <DIV class=foucscnt2> · <A href="http://news.qq.com/a/20051120/000704.htm"

  target=_blank> 小泉谈中日关系 称不担心中日交恶() </A> <BR> · <A

  href="http://news.qq.com/a/20051119/000757.htm" target=_blank> 戒毒所警察强奸女生被判10

  不服判决 </A> <BR> · <A href="http://news.qq.com/a/20051118/001595.htm"

  target=_blank> 甘肃省委宣传部原副部长石星光遇害< /A> <BR> · <A

  href="http://news.qq.com/a/20051116/001154.htm" target=_blank> 按下劫警键五分钟获救

  新版GPS救下的姐命 </A> <BR> · <A href="http://news.qq.com/a/20051110/001447.htm"

  target=new>全国中小学后勤工作论坛上鼾声一片(组图) </A> <BR> · <A

  href="http://news.qq.com/a/20051110/000472.htm" target=_blank> 孕妇被打流产索赔81

  被告提异议 </A> <BR> <BR> · <A href="http://news.qq.com/a/20051124/000469.htm"

  target=new> 女子结婚3年未孕 医院检查才知是男儿身 </A> <BR> · <A

  href="http://news.qq.com/a/20051124/000540.htm" target=new> 变性美女返家

  3万乡亲敲锣打鼓迎接() </A> <BR> · <A href="http://news.qq.com/a/20051124/000833.htm"

  target=new> 女教师多次性骚扰14岁男生被判软禁() </A> <BR> · <A

  href="http://news.qq.com/a/20051119/000154.htm"

  target=new> 网络工程师网上散发前女友裸照() </A> <BR> · <A

  href="http://news.qq.com/a/20051110/001756.htm"

  target=new> 丈夫迷网络色情与老婆演淫秽真人秀() </A> <BR> </DIV>

  <DIV class=foucscnt3> <A href="http://sports.qq.com/a/20051124/000243.htm"

  target=new> <IMG class=marginupdown height=88 alt=鲁尼偷腥事件女主角裸照

  src="http://img1.qq.com/sports/20051124/2720121.jpg"

  width=130> </A> <BR> 鲁尼偷腥事件女主角裸照 <BR> <BR> <A

  href="http://news.qq.com/a/20051124/001281.htm" target=new> <IMG

  class=marginupdown height=88 alt="千万富豪驾宝马高校征婚 传单散10所高校"

  src="http://img1.qq.com/news/20051124/2723345.jpg" width=130

border=1> </A> <BR> 千万富豪驾宝马高校征婚 <BR> </DIV>

 

3-2 代码片段B,从同一HTML页面源文件中摘取的片断

 

 

这代码片段A指示的就是我们要提取的正文。如何把这样的代码,与代码段B这样的代码区分开呢?首先从语言内容角度是行不通的,目前电脑很难理解自然语言;也不能从是否是超级链接入手,前面已经说了,正文中有时也会出现不能随意整个去除的超级链接,必须判断出哪里是正文,才能对正文中的超级链接进行处理。笔者在这个问题上也曾徘徊很久,最后的突破在于寻找到了这样一个规律:正文部分的HTML标签密度,远远大于非正文部分。为了验证这个规律,我们统计分析一下上面的两个例子(HTML标签:这里指所有在HTML源代码中出现的,尖括号(<>)中的内容,每对尖括号,连同其内容,算作一个标签,每个类似于<html> </html>的两个标签,其中一个标示标签内容开始,另一个标志标签内容结束的,称为一个标签对。):

代码片段A的统计分析:

 

正文字数:242字(正文字数: 指的是非标签的文本字数,标点符号计在内。)

标签数:7个(标签数:只计算标签的个数,忽略标签内文本的多少。)

标签密度:28.93/千字(标签密度:指的是前面定义的标签数与正文数的商,单位规定为“个/千字”,计算公式为“标签密度=1000*标签数/字数”。)

代码片段B的统计分析:

 

正文字数(非标签文本):221

标签数:69

标签密度:312.22/千字

从上面的两组统计数据可以看出,网络文本源代码中,正文部分的HTML标签密度远远小于非正文部分,同时,对于更多的网络文本的统计数据分析可以知道,按照上文的方法所算出的标签密度,正文部分与非正文部分,存在着极大的差异。从而我们可以得出初步结论:可以依据对HTML标签密度的统计分析来指出在一份HTML源代码中,文章正文的位置。

于是,在对更多的文本进行类似的统计后,笔者得出一个正式的统计的结论,正文部分的HTML标签密度大于50/千字的概率接近于零,而非正文部分的标签密度小于200/千字的机率也几乎为零。所以,理论上,在50/千字和200/千字这个统计得出标签密度数据的“真空区”中选择任何一个数值作为正文与非正文部分的分界线都是可以的。但是,为了保证不遗漏正文(不遗漏正文:对于标注对象来说,正文的缺失是难以接受的,而少量的冗余资料则被认为是对工作无害的。所以,在提取正文时,宁可放行一些无用的资料,也不能把丝毫的正文过滤掉),笔者建议选择的分界值是150/千字(150/千字:这是针对网络新闻资料得出的建议分界值,可能并不适用于其他类型的资料)。当然,在其后的设计分析中,我们可以知道,对于不同网站的文本语料,存在不同的设计风格差异,体现在源码上,就是正文部分与非正文部分的标签密度存在一定的波动。我们可以通过对这个阈值进行调整,来达到最适合的抽取精度。当然,在软件中,会存在一个Scroll Bar,对这个阈值进行调整。