欢迎来到东莞企信网络公司官方网站!
打开客服菜单
东莞网站建设
网站建设 > 技术支持 > 企信分享几种网页抽取技术和算法
企信分享几种网页抽取技术和算法
时间 : 2021-05-22 10:17 浏览量 : 112

实现基于分类器的网页抽取算法(第二类算法),大致流程如下:


找几千个网页作为训练集,对网页的正文和非正文(即需要抽取和不需要抽取的部分)进行人工标注。


设计特征。例如一些算法将DOM树的标签类型(div,p,body等)作为特征之一(当然这是一个不推荐使用的特征)。


选择合适的分类器,利用特征进行训练。


对于网页抽取,特征的设计是第一位的,具体使用什么分类器有时候并不是那么重要。在使用相同特征的情况下,使用决策树、SVM、神经网络等不同的分类器不一定对抽取效果造成太大的影响。


从工程的角度来说,流程中的第一步和第二步都是较为困难的。训练集的选择也很有讲究,要保证在选取的数据集中网页结构的多样性。例如现在比较流行的正文结构为:


<div>


<p>xxxx</p>


<p>xxxxxxxx</p>


<span>xxx</span>


<p>xxxxx</p>


<p>xxxx</p>


</div>


如果训练集中只有五六个网站的页面,很有可能这些网站的正文都是上面这种结构,而恰好在特征设计中,有两个特征是:


节点标签类型(div,p,body等)


孩子节点标签类型频数(即孩子节点中,div有几个,p有几个…)


假设使用决策树作为分类器,最后的训练出的模型很可能是:


如果一个节点的标签类型为div,且其孩子节点中标签为p的节点超过3个,则这个节点对应网页的正文

虽然这个模型在训练数据集上可以达到较好的抽取效果,但显而易见,有很多网站不满足这个规则。因此训练集的选择,对抽取算法的效果有很大的影响。


网页设计的风格一致在变,早期的网页往往利用表格(table)构建整个网页的框架,现在的网页喜欢用div构建网页的框架。如果希望抽取算法能够覆盖较长的时间段,在特征设计时,就要尽量选用那些不易变化的特征。标签类型是一个很容易变化的特征,随着网页设计风格的变化而变化,因此前面提到,非常不建议使用标签类型作为训练特征。


上面说的基于分类器的网页抽取算法,属于eager learning,即算法通过训练集产生了模型(如决策树模型、神经网络模型等)。与之对应的lazy learning,即事先不通过训练集产生模型的算法,比较有名的KNN就是属于lazy learning。


一些抽取算法借助KNN来选择抽取算法,可能听起来有些绕,这里解释一下。假设有2种抽取算法A、B,有3个网站site1,site2,site3。2种算法在3个网站上的抽取效果(这里用0%-100%的一个数表示,越大说明越好)如下:


网站 A算法抽取效果 B算法抽取效果

site1 90% 70%

site2 80% 85%

site3 60% 87%

可以看出来,在site1上,A算法的抽取效果比B好,在site2和site3上,B算法的抽取效果较好。在实际中,这种情况很常见。所以有些人就希望设计一个分类器,这个分类器不是用来分类正文和非正文,而是用来帮助选择抽取算法。例如在这个例子中,分类器在我们对site1中网页进行抽取时,应该告诉我们使用A算法可以获得更好的效果。


举个形象的例子,A算法在政府类网站上抽取效果较好,B算法在互联网新闻网站上抽取效果较好。那么当我对政府类网站进行抽取时,分类器应该帮我选择A算法。


这个分类器的实现,可以借助KNN算法。事先需要准备一个数据集,数据集中有多个站点的网页,同时需要维护一张表,表中告诉我们在每个站点上,不同抽取算法的抽取效果(实际上只要知道在每个站点上,哪个算法抽取效果最好即可)。当遇到一个待抽取的网页,我们将网页和数据集中所有网页对比(效率很低),找出最相似的K个网页,然后看着K个网页中,哪个站点的网页最多(例如k=7,其中有6个网页都是来自CSDN新闻),那么我们就选择这个站点上效果最好的算法,对这个未知网页进行抽取。


3 .基于网页模板自动生成的网页抽取算法

基于网页模板自动生成的网页抽取算法(第三类算法)有很多种。这里例举一种。在《URL Tree: Efficient Unsupervised Content Extraction from Streams of Web Documents》中,用多个相同结构页面(通过URL判断)的对比,找出其中异同,页面间的共性的部分是非正文,页面间差别较大的部分有可能是正文。这个很好理解,例如在一些网站中,所有的网页页脚都相同,都是备案信息或者版权申明之类的,这是页面之间的共性,因此算法认为这部分是非正文。而不同网页的正文往往是不同的,因此算法识别出正文页较容易。这种算法往往并不是针对单个网页作正文抽取,而是收集大量同构网页后,对多个网页同时进行抽取。也就是说,并不是输入一个网页就可以实时进行抽取。


标签:
cache
Processed in 0.008288 Second.