信息截取及网页信息结构化

2019-12-11 15:50:34  浏览:140  作者:老王

  对于分析系统来说,基础和首要的工作是分门别类地从半结构化网页( semistructured page)中抽取( extract)出有价值的能够代表网页的属性,例如锚文本、标题和正文等。并将这些属性结合起来组成一个网页对象,这种处理称为“网页结构化"。

  网页结构化的目标


  网页结构化的目标是针对搜索的需要,将半结构化的HTML网页中的数据按照如下几个基本属性依次抽取,最后打包(wrap)出一个网页对象。

  (1)锚文本( anchor text

  (2)标题(itle)

  (3)正文标题( content title)

  (4)正文( content)

  (5)正向链接(link)

  网页的这5个基本属性对于检索来说至关重要,下面一一介绍

  (1)锚文本除了网页标题可以描述网页以外,还会有一些锚文本来描述它。例如清华大学主页可能被另外一些网页中存在锚( anchor)所指向,其锚文本就是该网页的最佳描述。特别是对于某些没有标题的网页,锚文本是有益的补充。

  (2)标题这里的标题特指HTML标识语言中< title></title中间的文字部分,这部分文字表达了网页的基本含义。和锚文本相同的是,都是用来描述网页的内容的属性;和锚文本不同的是,这个标题是由该网页制作者本人编写的。

  (3)正文标题:在HTML网页中,网页的标题由< ttitle>标签标识。实际的情况是由于网页编写者的疏忽,或者其他原因< titley>标签中的文字没有任何网页描述能力。因而并不是合格的标题,为此需要抽取正文中的适当文字作为正文标题。

  (4)正文:锚文本、标题和正文标题都是网页的简短描述,而正文是一个网页的主体内容它完整地表述了网页的主体内容,般出现在<DIV>、< TABLE>和<P>等HTML标签中。

  (5)正向链接:正向链接是网页制作者编写的引导用户继续在网上冲浪的链接,这些链接的文字也是其他网页的锚文本。

  因此一个网页对象( Page Object)简单说来至少包含5个属性,其含义如表4-1所示。

信息截取及网页信息结构化

  在不失完整性的前提下,不妨对问题进行简化,通过结构化网页中标题和正文两种网页对象的属性来理解网页结构化的基本原理。

  假定下面这个简单HTML网页的文件名为“ book. html

  <HTML>

  <HEAD>< TITLE>走进搜索引擎</T工TLE></HEAD>

  < BODY>

  <TABLE>

  <TR><TD>走进搜索引擎:第一章</TD></TR>

  <TR><TD>走进搜索引擎:第二章</TD></TR>

  <TR><TD>走进搜索引擎:第三章</TD></TR>

  </TABLE>

  </BODY>

  </HTML>

  将以上内容写入文件 index. html,用IE浏览器打开,显示如图4-1所示。

信息截取及网页信息结构化

  圆角矩形框表示该网页的文件名;椭圆框表示网页的标题( TITLE);矩形框表示该网页正文,其中包含几段文字。

  网页结构化的过程可以直观地理解为如图4-2所示的过程。

  在理解结构化网页的目标后,加上对HTML语法的特点,以及搜索引擎的实际需要,为这种分析原始网页的过程制定了如下两步走”的方法。

  1)建立HTML标签树( tag-tree)

  (2)通过投票方法识别正文的文本块,并按照深度优先遍历的规则组织为正文。

信息截取及网页信息结构化

  建立HTML标签树


  万维网上大多数的静态网页都以HTML网页形式存在HTML是一种标识语言( Markup Language),它把其描述的全部内容都按照HTML语法存放在标签之中。为了更清楚地描述网页内容的组织结构,将网页中的标签按照出现顺序依次整理出来并用适当的结构记录。由于标签之间的嵌套关系,因此整理结果自然是一个树状结构,我们把整理一个网页中的标签得到的树状结构称为该网页的“标签树”。

  很明显,浏览该网页的用户看到的是相当友好的信息。而实际源文件中的那些HTML标记,如<HTML>和< TABLE>(可以理解为用来帮助IE浏览器理解网页)等都不会实际地展示给用户。因此分析系统需要学习IE浏览器理解网页的方式来理解网页在理解过程中需要建立一个HTML标签树的树型结构,如图4-3所

信息截取及网页信息结构化

  HTML语法中每种标签都是成对出现的,这有助于标记一个标签的始末,因此需要一种能够记忆历史的数据结构来协助标签树创建和分析过程。下面通过一个例子来理解这个标签树建立的过程。

  首先,该过程需要一个标签分析栈的数据结构。栈结构是一种先进后出的线性表结构,栈结构的这种特性为分析工作提供了可能。通过简单的图形可以把实际的标签抽取工作容易地表达出来,如图4-4所示。

信息截取及网页信息结构化

  文本读取程序将网页源文件中的<HTML>、<HEAD>和< TITLE>依次投入分析栈中,在右边依次建立一个标签树,栈底元素<HTML>为树根。当读取到“走进搜索引擎”时发现该文本不是标签,于是将其保留。由于栈顶标签为 TITLE,因此该字符串为正文标题,如图4-5所示。

信息截取及网页信息结构化

  文本读取程序继续读出< TITLE>这个标签,并将其放入标签分析栈中。此时,标签栈顶的标签为< TITLE>,因此这两个成对标签同时退栈,如图4-6所示。同时也确认了“走进搜索引擎”这一字符串为正文标题,在标签树上的 TITLE标签存放一个指向该字符串的指针,这样 TITLE标签的文字被正确地抽取出来。

信息截取及网页信息结构化

  接下来继续读入<HEAD>标签后,两对标签同时退栈。下面的过程依次类推,直到<HTML></HTML>标签对退栈为止,整个分析过程结束后形成如图4-7所示的形态。

  进一步了解HTML标签的含义及其分析容错的有关细节需要阅读相关文献以及深入理解HTML语法并积累大量的实际经验,为了便于理解,在此略去了这些过程。

信息截取及网页信息结构化

  通过建立标签树,并且识别标签所描述的文字,网页结构化的进程走出了重要的一步,如图4-8所示。

信息截取及网页信息结构化

  通过上面这个过程已经能够提取出标题,很明显 TITLE标签下的文字即为标题。进展令人振奋,然而离目标还有很大距离。在实际的网页中,正文、广告及其他各种信息都可能出现在< table>和<td>等标签中,哪一个才是真正的正文?由于正文可能分片,例如上面这个例子中的正文分别位于3个<TD>标签上,如何将其组合起来?

  已通过投票方法得到正文


  由于网页半结构化的特性,一方面, TITLE很容易地通过第1步标签分析得到;另一方面,得到完整的正文却非常复杂。首先,网页中没有明显的标签标识出正文;其次正文可能分散在多个HTML标签中,问题在于如何组合出完整的正文。首先来解决第1个难点,即识别正文。

  正文具有分块保存的特性,因此我们引入文本块的概念,对于那些诸如<P></P>等标签间的文本认为是一个文本块。例如,<TD>走进搜索引擎:第一章</TD>”称为一个文本块。

  一般来说,网页会出现3种类型的文本块。

  (1)主题型文本块( topic)

  (2)目录型文本块(hub)

  (3)图片型文本块(pic)

  主题型文本块是大段文字的文本块,例如:"<TD>走进搜索引擎:第一章<TD>"。

  目录型文本块是描述链接的文本块,例如:"< a href=">走进搜索引擎:第一章</a>"。

  图片型文本块是描述图片的文本块,例如:“< Img src=">走进搜索引擎:第一章<himg>"。

  目录型文本块和图片型文本块相对容易被区分;而主题型文本块中可能包含广告等其他内容,必须与正文相区别。

  判断哪个文本块是正文采用称为“投票算法”的计算方法,这种方法在搜索引擎中特别常用。

  在日常生活中几乎所有人都会有投票或者选举的经历,例如选举干部和通过决议需要投票,以及运动员的一套动作需要裁判员打分等。其基本原理在于认为大多数人的意见往往是正确的,大多数人的统一主观意见就会变得较为客观。例如在体操运动员结束一套动作之后多个裁判根据自己主观意见给出独立的评判。然后去掉一个最高分和一个最低分,这时的分数尽管是主观产生的,但是这种评判的方法和结果被认为是相对客观和可信的

  正文抽取的投票算法的过程如何呢?首先我们会定义一系列规则,然后通过这些规则为每一个文本块打分。得分最高的被认为是正文的可能性足够大,并且可以接受。

  我们来举这样一个例子,假定一个规则集合中包含以下3条规则。

  (1)如果文本块文本的长度少于10个字,得分为0;介于个-50个字得分为5分;介于50个~250个字,得分为8分;超过250个字,得分为10分。

  (2)如果文本块文本位置在右侧,得分为0分;在顶部,得分为3分;在左侧,得分为5分;在中间,得分为10分。

  实际的规则往往更加繁多和复杂,为了介绍该方法,我们定义文本长度和文本位置规则。投票算法的过程是依据不同的规则从不同的角度依次打分,文本块得分高的是正文的一部分。投票算法的一般模型如图4-9所示。

信息截取及网页信息结构化

  如图所示,每个规则器打分后,累积总分为文本块1得10分,远大于文本块2得到的4分,因此可以认为文本块1是正文内容的可信度高。

  在实际的程序中,规则器的打分是不断调整的,其个数也可以支持动态添加。如果规则打分计算比较复杂耗时,则可以采用并行打分的方法。这样所需要的时间将由最耗费时间的规则计算代价决定;否则通过串行打分,时间耗费将会是所有规则计算代价的总耗时。为了简化,图49中采用串行打分的方法。

  除此之外,规则的定义还需要通过足够多的网页进行反馈之后才能得到一个公正客观的打分。这类似裁判员在打分前的业务学习,只有在比赛前透彻地理解评分标准,并且很好地观察运动员完成动作的情况通过不断地训练才能区别动作的难易程度达到比赛裁判的水平。此外,有些动作在若干年后由于掌握的运动员很多,因此评分标准就会发生变化。新出现的高难动作将会得到评分上的青睐,规则器也需要类似这样的业务学习过程。如果经常发现某些网页的正文段抽取错误,则要找出是哪一个规则器打分不合理才会导致这个结果。反复这样的过程,最后的打分将会趋于合理。

  最后还需要注意这样的问题,如果规则A打分为0分-1000分,规则B为0分~10分。那么很显然,规则B对最后打分结果的影响力几乎可以不考虑,因此如何平衡规则对最后结果的影响力也需要充分考虑。这是因为规则的重要性不同可以适当拉开距离,但有时需要在可以接受的范围内保持这种距离。

  即便做出了如此多的工作,投票的结果也并不总是正确的。真理也常常会站在少数人的一边,群众的眼睛也不可能总是雪亮的,做到百分之百的判断准确即便对人来说也都是异常困难的。因此采用这种方法永远不可能完全正确,只能是达到某种概率下的正确,而作为投票算法追求的目标是将这种得到正确结果的概率不断地提高。

  剩下的工作就是如何将一个个文本块组织成一个正文?深度优先遍历标签树并依次记录主题类型的文本块,即可得到该网页的正文。为了说明深度优先遍历的方法,我们使用一个略微复杂的例子,如图4-10所示。

信息截取及网页信息结构化

  在图4-10所示例子中的BODY标签下,第1个 TABLE为正文因为其下的文本块通过投票打分均为文本块。而第2个 TABLE标签下通过投票打分,其得分较低,因此可能为广告类信息。这样组织正文只需要从第1个 TABLE开始深度优先遍历,遍历顺序为图中带下划线的数字所示,因此依次提取的文本块并按照顺序组织成如下的正文:"走进搜索引擎第一章第一节:爬虫发展史第二节:万维网分析"。正是由于HTML标签的这种相互嵌套的特性,所以决定了深度优先遍历的顺序恰好能够组织成一个完整的正文。

  对于其他的网页属性抽取,例如正文标题等也大多采用相同或类似的方法。

  锚文本的提取有一些复杂,由于锚文本对网页的描述存在于其它网页中,例如南京大学的主页,被其它网页所链接,这些网页中包含了“南京大学主页”或“南京大学”等这样的锚文本,因此南京大学主页这个网页对象的锚文本就是“南京大学“、“南京大学主页“。锚文本提取,筛选等工作需要在获得足够多的网页后才能进行,采用分块计算的方法,比较复杂,这里不再展开叙述。

  网页结构化过程回顾


  网页结构化的过程首先通过标签树进行分析得到文本对应的标签,然后通过投票算法确定正文及配图等仅从HTML标签无法判断的网页数据。这样就圆满完成了结构化的任务,达到了理想的结构化要求,如图4-11所示为两步走过程。

信息截取及网页信息结构化

  直观地感觉到网页结构化的过程使得网页有价值的信息被保留,例如标题和正文;而网页中无用的信息被丢弃,例如HTML标签。因此网页结构化的过程同时也节约了大量的存储,存储个网页不再是存储原始的网页,而是只需要存储结构化的网页即便是这样,存储和处理大规模网页依然是一项艰巨的任务,解决这个问题首先想到的是应该去掉那些相同或者类似的网页。这样不仅可以大大节约存储,还可以有效地提高检索效果,下一节将介绍有关网页查重的技巧。

评论区

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

【随机新闻】

返回顶部