文献翻译PageLevel Web Data Extraction from Template Pages.docx

上传人:b****5 文档编号:27663885 上传时间:2023-07-03 格式:DOCX 页数:36 大小:1.50MB
下载 相关 举报
文献翻译PageLevel Web Data Extraction from Template Pages.docx_第1页
第1页 / 共36页
文献翻译PageLevel Web Data Extraction from Template Pages.docx_第2页
第2页 / 共36页
文献翻译PageLevel Web Data Extraction from Template Pages.docx_第3页
第3页 / 共36页
文献翻译PageLevel Web Data Extraction from Template Pages.docx_第4页
第4页 / 共36页
文献翻译PageLevel Web Data Extraction from Template Pages.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

文献翻译PageLevel Web Data Extraction from Template Pages.docx

《文献翻译PageLevel Web Data Extraction from Template Pages.docx》由会员分享,可在线阅读,更多相关《文献翻译PageLevel Web Data Extraction from Template Pages.docx(36页珍藏版)》请在冰豆网上搜索。

文献翻译PageLevel Web Data Extraction from Template Pages.docx

文献翻译PageLevelWebDataExtractionfromTemplatePages

CENTRALSOUTHUNIVERSITY

本科毕业英文文献翻译

题目:

基于模板页面的页面级网络数据提取

学生姓名:

颜希萍

指导教师:

刘献如张祖平

学院:

信息科学与工程学院

专业班级:

电子信息工程1002班

完成时间:

2014.3.5

 

基于模板页面的页面级网络数据提取

摘要:

Web数据提取一直是许多Web数据分析应用程序的一个重要组成部分。

在本文中,基于结构化数据和树,我们为页面生成的解码过程制定了数据提取问题的模板。

提出了一个非监督的、页面级数据提取的方法来为包含单或多个数据记录的每个单独网站推导出模式和模板。

FiVaTech把树匹配、树对齐、挖掘技术用来实现具有挑战性的任务。

在实验中,比起EXALG,FiVaTech具有更高的精度,并可以与其他记录级萃取系统相比较,例如ViPER和MSE。

实验中,用于许多先进的Web数据提取工作的测试页面显示了一个令人鼓舞的结果。

关键词——半结构化数据、网络数据提取、多树合并,包装器归纳。

一、引言

众所周知,深层网络包含比表面网站更大的数量级和更多有价值的信息。

然而,由于这些页面的生成是为了可视化而不是数据交换,使得利用这些综合信息需要大量的努力。

因此,从用于网页搜索的网站提取信息成为网络信息集成的一个关键步骤。

为一个给定的搜索形式生成一个提取程序相当于包装一个数据源,这样提取器或包装器程序就能返回数据信息集成的相同的格式。

页面属于同一网站的一个重要特点是,此类页面共享相同的模板,因为他们所有页面都是以一致的方式进行编码的。

换句话说,这些页面是用的同一个预定义的模板插入数据值生成的。

在实践中,模板页面也可以(以静态超链接的形式)存在于表层网站。

例如,商业网站经常有一个模板用于显示公司logo、浏览菜单和版权声明,这样相同的网站的所有页面看起来一致并且是有规划的。

此外,还可以使用模板来呈现一个用来显示相同类型的对象的记录列表。

因此,从模板页面的信息提取可以应用在许多情况下。

模板页面的特别之处在于,对模板网页提取目标几乎是等于在页面生成时的数据值嵌入。

因此,不需要标注非模板页面信息提取的提取目标(如Softmealy[5],Stalker[9],WIEN[6]等),自动提取的关键取决于我们是否可以自动推断模板。

一般来说,模板作为所有页面的公共模型,存在相当固定,这与页面数据值的多样化截然相反。

找到这样的一个共同的模板需要多个页面或一个页面包含多个记录作为输入。

当多个页面被给定了,提取目标就针对的是页面范围信息(例如RoadRunner[4],EXALG[1])。

给定单个页面时,提取目标通常是限制在记录信息范围内(如IEPAD[2],DeLa[11],和DEPTA[14]),其中包括添加记录边界的检测问题。

虽然不涉及添加边界检测问题,但由于页面级提取任务有更多的数据需要关心,使得它成为比记录级萃取更复杂的任务。

一种常见的技术,用于发现模板对齐:

字符串排列(如。

、IEPADRoadRunner)或树对齐(例如DEPTA)。

至于区分模板和数据的问题,大多数方法是假设HTML标记是模板的一部分,而EXALG认为一个一般模型,单词标记也可以是模板的一部分,标签标记也可以数据。

然而,EXALG的方法,没有明确使用对齐,产生许多偶然的等价类,使重建的模式不完整。

在本文中,我们关注于页面级提取任务和提出一种新方法,称为FiVaTech,用它来自动检测一个网站的模式。

拟议的技术呈现了一种新的结构,称为固定/变异模式树,它是一棵携带所需的所有必要的信息来识别模板和检测数据模式的树。

我们结合几个技术:

对齐、模式挖掘,以及树模板的想法来解决页面级模板建设中更困难的问题。

在实验中,FiVaTech比EXALG具有更高的精度,EXALG是为数不多的页面级萃取系统,可以与其他记录级萃取系统如ViPER和MSE相比。

本文接下来的内容组织如下:

第二节定义了数据提取问题。

第三节提供了系统框架以及FiVaTech的详细算法,构建固定/变异模式树的一个例子。

第四节描述模板和网站模式推导的细节。

第五节描述了我们的实验。

第六节比较FiVaTech与相关网络数据提取技术。

最后,第七节总结了本文。

二、问题公式化

在本节中,我们制定页面创建的模型,它描述了怎样使用一个模板将数据嵌入。

正如我们所知,一个网页是由嵌入数据实例x(取自数据库)到一个预定义的模板生成的。

通常一个CGI程序执行编码函数,结合数据实例和模板来形成网页,在这个网页中所有数据库的实例数据符合共同的模式,可以定义如下(类似的定义也可以在EXALG[1]中发现):

定义2.1(结构化数据)

一个数据模式可以是以下类型:

1、一个基本类型β代表一个字符串的符号,符号是一些文本的基本单位。

2、如果τ1,τ2,…,τk是类型,那么他们的有序列表<τ1,τ2,…,τk>也形成了一个类型τ。

我们说类型τ是由类型τ1,τ2,…,τk使用k阶类型构造函数构造成的。

一个k序列实例τ是的形式,其中x1,x2,…,xk分别是类型τ1,τ2,…,τk的实例。

这就是类型τ。

a、一个元组,记作τ,如果每一个实例体基数(实体中实例的个数)均为1。

b、一个可选,记作?

τ,如果每一个实例体的基数为0或1。

c、一个集合,记作{k}τ,如果某一些实例体基数大于1。

d、一个析取,记作(τ1|τ2|、、、|τk),如果所有的τi(i=1,2...k)都是可选并且基数其k个可选(τ1、τ2...τk)之和相当于实例体τ的基数1。

例2.1

图1显示了一个虚构的网页来显示一个列表的产品。

对于每个产品给出了产品名称,价格,折扣百分比(可选),和一个特性列表(阴影图中的节点)。

这里的数据实例是{<”产品1,”“现在3.79美元,”“节省5%,””特性11”>,<“产品2、”“现在7.88美元,”ε,{”特性21”、“特性22”}>},其中ε表示空字符串,在第二个产品中他是空的。

这个页面中嵌入的数据实例图1可以通过两种不同的模式S和S’表达,分别如图1b和图1c。

图1b显示了一个集合w1的四个顺序(表示图1a中的产品列表):

前两个属性是基本类型(产品的名称和价格),第三个属性是一个可选w2(折扣百分比),最后一个属性是一个集合w3(产品)的特性列表。

除了这种简洁的表示,相同的数据也可以由他们的父节点的DOM(文档对象类型)树来表示。

也就是说,我们可以重新组织上面的数据实例为{<<产品1,“<”现在3.79美元,”“折扣5%”>>,{”特性11”}>,<<“产品2,”<“现在7.88美元,”ε>>,{”特性2_1”,“特性2_2”}>},可以表达成模式S’。

第二种基本数据类型和可选数据(τ4)构成一个二元组τ3(由于每种产品的价格和折扣的可选被嵌入到了网页中同一个父节点下),进一步与第一种基本数据(产品名称)构成另一个二元组(τ2)。

因此,这种新模板S’的根源是一个二元集合(τ1),τ1由τ2和τ5(一元集合)两个部分构成,如图1c所示。

如前所述,模板页面是由在通过CGI程序在一个预定义的模板中嵌入数据实例来生成的。

因此,找寻给定输入网页的模板和数据模式的逆向工程应该建立在一些页面生成模型中,这个我们接下来将会进行描述。

在本文中,我们提出一种基于树的页面生成模型,它由子树连接来编码数据,而不是字符串连接。

这是因为数据模式和网页都是树状结构。

也因此,我们考虑模板树结构。

基于树的页面生成模型的优点是在模板中它不会涉及结束标签(如,等),如同在EXALG应用基于字符串的页面生成模型。

图.1.(a)一个网页和它的两个不同模板(b)S,(c)S’

由于子项的数据必须与模板编码形成结果,所以在页面生成模型中连接是一个必需的操作。

例如,用实例x编码一个k阶类型构造函数τ,应该涉及模板树T与x的所有编码树的子项的连接。

然而,树连接更为复杂,因为有多个点附加一个现有树的子树最右边的路径。

因此,我们需要考虑连接树的插入位置。

定义2.2

假设T1和T2是两棵树,我们定义操作

$T_1\oplus_iT_2$,来添加T2到树T1的从叶子节点到第i个节点(位置)的最右路径的一棵新的树。

例如,在图2的上半部分给定树的模板C,E和数据内容P,S(分别为“产品1”和“折扣5%”的内容),---------------图的下半部分我们展示了树连接

$C\oplus_0P$和

$E\oplus_1S$。

这些树的虚线圈是虚拟节点,帮助树的表示(比如多个路径连接到树),可以被忽视。

插入点标记为蓝色实线圈。

对于子树C,插入点是节点,子树P(单节点)被插入在了这里。

对于子树E,插入点是节点
的上一个虚拟节点,子树S(也是单节点)也被插入到了这里。

图中也显示两个子树N(内容数据“现在3:

79美元”)和

$E\oplus_1S$作为兄弟节点插入在插入点0的模板D下,我们通过

$D\oplus_0\{N,E\oplus_1S\}$表示该操作。

图2.树连接的例子

树连接操作后,我们现在可以定义k序列类型构造函数的编码类似于EXALG。

基本上,这个想法是为了允许k+1模板放置在k条目前面,中间,或者最后,如下:

定义2.3(Level-aware编码)

我们为类型构造函数τ定义的模板以及它的编码实例x(在x的子值编码方面)如下所述。

1、如果τ是一种基本类型,β,那么编码λ(T,x)被定义为包含字符串x本身的一个节点。

2、如果τ是一个K序列类型构造函数,那么这个模板定义如:

$T(\tau)=[P,(C_1,\ldots,C_{k+1}),(i_1,\ldots,i_k)]$,其中P,C1,....,Ck+1均为模板树。

a、对于单一实例x的形式(x1,....,xk),λ(Tτ,x)是一棵由连接k+1序列子生成的树,

${C_1}\oplus_{i_1}\lambda(T,x_1),$$C_2\oplus_{i_2}\lambda(T,x_2),\ldots,C_k\oplus_{i_k}\lambda(T,x_k)$,和

在模板P最右路径的叶子节点上。

见图3一个单一实例图编码。

$C_{k+1}$

b、对于多个实例

,它的每一个

都是类型τ的一个实例,

编码是作为兄弟节点插入子树m

到父模板P的最右路径上。

每一棵子树

是通过[

$\phi$,(

$C_1,\ldots,C_{k+1}$),(

$i_1,\ldots,i_k$)]模板使用单一实例的程序编码

$e_i$,如上所述;φ是空模板(或一个虚拟节点)。

参见图3b编码多个实例说明。

c、析取不需要模板,因为一个实例x的编码将使用一些

$\tau_i$(

$1\lei\lek$)模板,其中x是

的$\tau_i$的的一个实例。

dddccccc$\lambda(T,e_1),\lambda(T,e_2),\ldots,\lambda(T,e_m)$$\lambda(T,{e_1,e_2,\ldots,e_m})$$e_i$都是

例2.2

我们现在为输入DOM树考虑模式

$S^{\prime}=\{<\beta,<\beta,(\beta)?

_{\tau4}>_{\tau3}>_{\tau2},\{\beta\}_{\tau5}\}_{\tau1}$。

我们限制相邻的HTML标记进入到模板树A到G中(为矩形框)。

大部分的模板是单一路径,而模板C和D包含两条路径。

因此,我们添加一个虚拟节点作为根组成一个树结构,如图2所示。

用深度优先的顺序遍历这棵树来给这些模板和数据一个顺序,我们可以看到,大多数数据项插入了之前模板的叶节点。

例如,第1项“产品”是附加到模板树C插入位置为0的叶节点上,等同于在图二中进行

操作;同样,“现在3.79美元;”“特性11”附加到模板树D和F在叶节点分别插入位置0。

仍然有不同的位置,例如,“折扣5%”是附加到一个节点在模板树E叶节点上(i=1)的最右路径,相当于如图2所示的

$E\oplus_1S$操作。

现在可以通过对应到各自的DOM树中的节点写下每个S’模式类型构造函数的模板。

例如,τ4的编码与数据实例“折扣5%”可以通过使用

$T(\tau_4)=[\phi$1

$,(E,\phi),1]$模板完成,即,在图2中树连接的例子通过

$E\oplus_1S$删除虚拟节点。

同样,τ3的编码与数据实例“现在:

3.79美元”“折扣5%”可以通过使用模板

$T(\tau_3)=[\phi,(\phi,\phi,\phi),(0,0)]$完成。

这个结果在与树模板D插入位置O串级之前为τ2生成了一棵子树

在图二中。

τ2的另一棵子树是

因此,τ2可以写成

$T(\tau_2)=[\phi,(C,D,\phi){,}$

$(0,0)]$的模板。

正如我们所看到的,除了根类型τ1有

的模板,大多数父模板是空树模板。

最后一个类型构造函数τ5有

$T(\tau_5)=[\phi,(\phi,G),0]$模板。

这个编码模式假设一个固定模板的所有数据类型。

在实践中,我们有时可以有多个模板用于显示相同的数据类型。

例如,在两列显示一组记录的网页需要不同的模板来完成相同类型数据的记录(模板数据记录左边列可能不同于模板的数据记录右边的,虽然都是相同类型的实例)。

然而,假设一个固定模板简化了问题。

这些数据与不同的模板可以检测到后处理的推导模式来识别相同的子树,因此,在本文中我们应当采取固定模板数据编码。

图3.一种类型构造函数的数据编码实例(a)为单例e=(X1,····Xk),(b)为多元实例e1,···em。

与此同时,由于HTML标记本质上是用于展示,我们可以假定基本类型数据始终驻留在生成树的叶节点。

在这个前提下,如果基本类型的数据可以发现,相应类型构造函数可以被认可。

因此,我们应当首先确定对应于基本数据类型的“变种”叶节点。

这还应该包括识别文本节点的任务模板的一部分(参见“Delivery:

“文本节点图13)。

定义2.4(包装器归纳)

给定一个有n个DOM树的集合,

$DOM_i$=

$\lambda(T,x_i)$(

$1\lei\len$),由未知的模板T和X值创建,仅仅从这个集合中就能推导出模板、模式和值。

我们称之为一个页面级信息提取问题。

如果只有一个单页包含元组(n=1)构造函数,推导出模板的问题就在于元组构造函数模式,我们把这个问题称为一个记录级信息提取的任务。

我们把这个问题称为一个记录级信息提取的任务。

三、FiVaTech树合并

该方法(FiVaTech)包含两个模块:

树合并和模式检测(见图4)。

第一个模块同时把所有输入DOM树合并成一种叫做固定/变异模式的结构树,它可以在第二模块中用来检测网站的模板和模式。

在本节中,我们将介绍如何识别和合并成输入DOM树的模式树模式检测。

图4.包装器归纳FiVaTech方法

根据我们的页面生成模型,相同类型的数据实例拥有相同从根输入页面的DOM树的路径。

因此,我们的算法不需要从不同水平合并相似的子树,合并多个树的任务也从树的级别上分解为字符串级别。

从根节点开始所有输入的DOM树,我们想知道这些树属于哪种类型构造函数,我们的算法的一种新的多个字符串对齐算法适用于一级子节点。

在这个设计中至少有两个优点。

首先,正如父节点下的子节点的数量远远小于在一个网页中整个DOM树中的节点数量或HTML标记的数量,因此,努力为多个字符串对齐在这不是到两个完整的页面对齐RoadRunner[4]。

第二,节点具有相同标记名称(但不同的功能)可以更好的区分他们代表的子树,这是一个重要的功能,是EXALG[1]中没有用到的。

相反,我们的算法将识别这样的节点为对等节点并且表示相同的符号对齐这些子节点,以方便下面的字符串对齐。

字符串校准步骤后,我们对一致的字符串进行模式挖掘发现所有可能的重复(类型数据集)长度1到字符串长度。

之后删除额外的发现模式的出现(如,在DeLa[11]中),然后我们可以决定数据是不是可选或者基于他们发生向量,这是一个类似于EXALG[1]里的想法。

这四个步骤,对等节点识别字符串对齐,模式挖掘,和可选的节点检测,包括典型的思想用于当前Web数据提取研究。

然而,他们重新设计或应用在不同的序列和场景来解决在页面级数据提取中的关键问题。

如图5所示,给定一个DOM树相同的功能和它的根节点的集合,系统从一个矩阵收集所有子节点(一级),其中每个列存放每个对等子树的子节点。

矩阵中的每个节点实际上代表一个子树,为我们承载结构信息来区分其作用。

然后,我们进行四个步骤:

对等节点识别、矩阵排列,模式挖掘和可选的节点依次检测。

●在对等节点识别步骤中(第9行),两个节点使用相同的标记名称进行比较,以检查他们是否为对等子树。

所有对等子树将用相同的符号。

●在矩阵校准步骤中(第10行),系统会尝试对齐(符号)对等节点矩阵以得到一个对等节点子链表的列表。

除了对齐,其他重要的任务是识别变种的叶节点对应于基本类型的数据。

●在模式挖掘步骤中(11行),系统需要对齐子链表作为输入在该列表从长度1开始来检测每一个重复的模式。

对于每个检测到重复的模式,这种模式出现的第一个保留,其他的全部删除然后进一步挖掘不再留重复。

这个挖掘步骤的结果是没有任何重复的模式的修改的节点列表。

●在最后一步中(第12行),如果一个节点消失在一些列的矩阵和向量组节点系统会根据其发生矢量识别可选节点。

上述四个步骤后,系统在修改的子列表中插入节点作为P的子节点。

对于叶没有叶子节点的子节点c,如果c不是一个固定的模板树(在下一节中定义),该算法递归地调用c对等子树的树合并算法(通过调用过程

$peerNode(c,M)$,它返回节点在M中拥有与c相同的标记)来构建模式树(14行)。

接下来的四个部分将详细讨论识别对等子树,多个字符串对齐、频繁模式挖掘,和可选节点的合并都被每个节点应用在构建固定/变异模式树中(9-12行)。

图5,多元树合并算法

3.1对等节点识别

不对等的一个关键问题在多个页面(或多个记录在一个页面)有相同的HTML标记可以有不同的含义(我们不考虑相同含义不同的HTML标记,因为我们假设对于相同的数据来说模板是固定的,如前所述)。

每个标记/节点实际上是用一棵树来表示,我们可以使用2-tree匹配算法计算两个具有相同标签的节点是否相似。

在这之前有几个2-tree匹配算法被提出了。

我们采用杨氏算法[13]它规定越级交叉是不允许的(即两个标签节点在两棵树匹配只有在它们出现在相同的水平),而节点替换只允许在两棵树的根(即两棵树可能匹配尽管他们的根节点是由不同的HTML标记标签)。

为了解决我们的问题,我们修改了算法,在叶子节点允许替换而不是根源。

因此,即使他们有不同的文本值两个叶子节点也可以匹配。

算法的运行时间仍然是

,其中$O(s_1s_2)$其中其中S1和S2是树的节点的数量。

一个更严重的问题是分数归一化。

传统2-tree匹配算法返回最大匹配的数量,需要归一化的比较。

计算归一化分数一个典型的方法是算对映射的数量和两棵树的最大大小之间的比例,这在DEPTA[14]中有涉及到。

然而,公式可能会为树包含的集合类型数据返回一个较低的值。

例如,考虑到两个匹配的A和B树如图6所示,在tr1到tr6是六个相似的数据记录,我们假设任何两个不同的子树之间的映射对tri和trj是6。

因此,树匹配算法将检测一个映射,包括15对:

从tr1和tr2(分别与tr5和tr6匹配)中的6X2对,从b1中的2对,最后一对是一个从A的根到B的根的映射。

同时假定,每个tri大约是10。

根据这样的方法,A和B这两棵树之间的匹配分数将15/43(约为0.35),这个值太低了。

 

图6,集合类型数据实例

对于Web数据提取问题集合类型数据的存在,用最大大小两棵树来计算匹配分数是不公平。

实际上,我们注意到这种多值数据对A和B两棵树的一级子树有很大影响。

因此,我们建议在不增加复杂性的情况下用FiVaTreeMatchingScore(FiVa树匹配分数算法)(图7)来处理这个问题,如下:

如果A和B两个根节点不具有可比性(即有不同的标签并且都不是文本节点),这个算法为两棵树的给出了一个分数0(第2行)。

如果两根节点没有孩子(第3行)或他们是相同的大小,算法通过这两个树的平均大小(第4行)的比例TreeMatching(A,B)计算分数,在TreeMatching(A,B)中返回A和B之间的匹配节点的数量。

如果两个根节点可比并且他们都有孩子,该算法对树A的每个child_a和B树的每个child_b做匹配(6-16行)。

如果两个子树的平均尺寸的TreeMatching(child_a,child_b)的比率大于一个阈值θ(在我们的实验中θ=0.5),那么他们被视为匹配的子树,我们以nodeScore/matchNo.(节点分数/匹配个数)为每个child_a平摊分数。

算法最终返回所有A的孩子和两个树的平均大小(17行)跟1之间的比例的平均节点分数(分数/m)的总和。

因为两个根节点匹配,把最后的比率加起来。

图7,FiVaTech树匹配分数算法

下面说一个例子,两棵树的归一化分数(如图6所示)将计算如下:

第一个孩子b_1只是与第二棵树的孩子b_2匹配,所以b_1的节点分数值是1.0/1=1.0。

树A中每个tr子树与树B的两个tr子树匹配,所以每子树会有一个节点分数值等于(0.6+0.6)/2=0.6。

树A的孩子的平均节点分数会是(1.0+0.6+0.6+0.6+0.6)/5=0.68。

因此,两棵树的分数会是0.68+(1/平均值(43,23))≈0.71。

匹配分数的计算需要O(n^2)调用2-tree为具有相同的根标记的n棵树校正距离。

从理论上讲,我们不需要再为这n棵树的子树计算校正距离,因为当我们在父节点进行对等识别的时候这些树的校正距离已经被计算了。

然而,当前的实现没有利用这样的动态编程技术。

因此,平均执行时间成本较高。

3.2对等矩阵对齐

对对等节点识别后,所有对等子树将得到相同的标记。

对于叶节点,当两个文本有相同的文本值时文本节点采取相同的标记,当两个标签节点有相同的SRC属性值时标签节点作相同的标记。

为了转换成一个对齐的对等矩阵,我们逐行的进行计算,这样每一行(空的列除外)不是有每一列的相同标记就是有一个文本()节点的变体文本(分别为SRC属性)值。

在后一种情况下,变体文本将被标记为基本类型。

从对齐矩阵中,我们获得节点的列表,列表中每个节点对应于对齐矩阵中的一行。

如图8所示,该算法遍历矩阵M的每一行,从第一个开始(第1行),并试图在矩阵M成为一个对齐的对等矩阵(第3行)之前使每一行对齐。

在每一行,函数alignedRow检查是否行对齐(第4行)。

如果是对齐的,该算法接着检查下一个(第8行)。

如果不是,该算法会反复地试图使这一行对齐(4-7行)。

在每个迭代步骤中,列(节点)shiftColumn是从当前行选择的,并且所有本行的节点在矩阵M(第6行通过调用函数makeShift)中下移距离shiftLength,用一个空节点补满空余。

ma

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1