Contenu connexe
Similaire à 网页结构化数据的定制抽取 (20)
网页结构化数据的定制抽取
- 2. 问题背景
• 若网页中的无结构数据经过wrapper抽取成为结构
化数据,能以服务的形式支持应用程序的构造
– 本报告探讨实现网页数据抽取的wrapper的关键技术
• 同一张网页,不同的用户根据各自的需求,构造
的wrapper可能会
– 抽取出不同的数据部分
– 组织为不同的数据结构
• 例如,右图所示的网页
– 共3个category (A~C)
– 每个category下有多个title
(A1~C2)
- 3. 同一张网页,不同的数据表
用户1的需求(ES-1) 用户2的需求(ES-2) 用户3的需求(ES-3)
• 需要所有数据 • 只需要category A,B • 需要所有数据
• 以category-title组织 • 以category-title组织 • 将category A和BC分开组织
category title category title categoryA titleA categoryBC titleBC
title-A1 title-A1 title-A1 title-B1
title-A2 title-A2 category-B title-B2
category-A category-A title-A2
title-A3 title-A3 category-A title-B3
title-A3
title-A4 title-A4 title-C1
category-C
title-B1 title-B1 title-A4 title-C2
category-B title-B2 category-B title-B2
title-B3 title-B3 数据表是对抽取结果的结构化表示
title-C1
每行代表一个记录(record)
category-C 每列代表一个属性。其中:
title-C2
• 列名被称作属性名(property name)
• 列中的值被称作属性值(property
value)
- 4. 用户定制需求的表达
• 用户如何表达定制需求?
– 通过对网页的标注(labeling),即使用属性名标出网页中的属性值
• 例如对于ES-1,用户在样本页面(sample page)上的标注
如下
所有的category 所有的title
• 系统据此生成包装器(wrapper),用于从新鲜页面(fresh
page)中抽取数据
- 5. 问题定义
• 问题定义
– 输入
• 样本页面
• 用户在样本页面上的标注
– 输出
• 可以在新鲜页面上实现定制抽取的包装器
• 评价方法
– 包装器在新鲜页面上的数据抽取性能
- 6. 问题求解
• 将该问题分解为三个小问题
– 问题一:先不考虑抽取结果的结构化,而是首
先考虑:如何提取各属性的属性值?
– 问题二:然后,如何利用样本页面的属性值,
归纳出属性模式(即数据表的表头)?
– 问题三:最后,为了完成结构化,如何将属性
值填充到数据表中?
- 7. 问题一:提取属性值
特征打分法
• 对某个属性,已知用户标注的少量样本值,如何
提取其他相似的值
• 一种高效的属性值提取方法:特征打分法
– 用样本值的XPath选出候选元素集合
– 用户标注的每个样本值,作为DOM元素,都有其多个
特征(features);把样本值的公共特征作为打分特征集
合(scoring feature set)
– 检查候选元素是否符合打分特征集合中的各项特征,
并按符合数量打分
– 取得最高分的候选作为结果
- 8. 提取属性值:一个例子
候选:title-A1~title-A4
/HTML
├/HEAD
│└/TITLE
title-A1的特征
└/BODY
├/STYLE
用户标注 • 含class属性
├/DIV[1] #1
│├/<DIV class="category">category‐A</DIV>[1]
│└/DIV[2]
• class=“blueTitle”
│ ├/<DIV class="bluTitle">title‐A1</DIV>[1]
│ ├/<DIV class="bluTitle">title‐A2</DIV>[2] • XPath序号为1
│ ├/<DIV class="redTitle">title‐A3</DIV>[3]
│ └/<DIV class="bluTitle">title‐A4</DIV>[4]
└/DIV[2] #2 • 祖先节点的其他特征
├/DIV[1] #2‐1
│├/<DIV class="category">category‐B</DIV>[1]
│└/DIV[2]
title-A1与title-A3的共同特征
│ ├/<DIV class="bluTitle">title‐B1</DIV>[1]
│ ├/<DIV class="redTitle">title‐B2</DIV>[2] • 含class属性
│ └/<DIV class="bluTitle">title‐B3</DIV>[3]
└/DIV[2] #2‐2
├/<DIV class="category">category‐C</DIV>[1]
• XPath序号为1
└/DIV[2]
├/<DIV class="redTitle">title‐C1</DIV>[1] • 祖先节点的其他特征
└/<DIV class="bluTitle">title‐C2</DIV>[2]
打分结果:A1~A4均被选中
- 9. 提取属性值:关于特征打分法的讨
论
• 特征打分法的优点
– 避免使用难以确定的单一阈值,使用离散、可
清晰区分的分数作为筛选依据
• 相关工作Grubber选取了类似的特征集,但是又将
特征集转换为阈值,实验表明其效果不太理想
– 用户可以边标注边查看提取结果,并且
• 用户标注的值一定会在结果中选中,避免用户困惑
• 对选中的值进行多余标注不会改变结果。因此,一
旦符合需要,用户可以立即停止标注
• 用户标注的次序不影响结果
- 10. 问题二:归纳属性模式
• 属性模式是指属性值的组 category-A title-A1 title-A2 title-A3 title-A4
category-B title-B1 title-B2 title-B3
织结构模式,可以用正则 category-C title-C1 title-C2
表达式予以表达 category[1]title[4]
– 例如,ES-1的属性模式为 category[1]title[3]
category[1]title[2]
(category[1]title[+])[3]
– 复杂情况下,属性模式难以 (category[1]title[+])[3]
用简单的归约方法获得
• 网页上的属性模式具有“模
式隔离”性质
– 独立的子树的属性模式可以
通过简单归约得到
– 通过进一步归纳,可以得到
更高级子树,直到整棵树上
的属性模式
- 11. 归纳属性模式的难点问题
• 属性归纳中的两难问题
– DOM树并不完全适合直接用于属性归纳,需要进行变
换。原因在于:
• 含有大量的无用节点
• 含有冗余的层次结构
– 如果将所有属性值从DOM树中提取出来,化为无层次
结构的线性序列,则破坏了模式隔离特性
• 因此,需要一种既能去除DOM树中的无用节点和
冗余层次结构,又能保持模式隔离特性的中间结
构:属性树(Property Tree, 简称PT)
- 15. 通过类型树(TT)归纳属性模式(2/2)
• 归纳过程中的两个基本操作
– 合并(merging):将兼容的正则表达式合并为更通用的正则表达式
• 例如:title title --merge--> (title[2])
– 编组(grouping):将不兼容的正则表达式编为一组
• 例如:category (title[2]) --group--> (category[1], (title[2])[1])
• 树根上的类型即属性模式
- 16. 问题三:填充数据表
• 根据属性模式,可以生成数据表的
表头(即数据schema) (category[1], title[+])[+]
– 将属性模式进行正规化,消除连续的数
量限定符(quantifier) title[+]
category
• 例如,(((category[1], (title[+])[1])[+])[2]) title
可化为((category[1], title[+])[+])
– 对于带有重复数据限定符([+]和[*])的类 1 #2
1 #1
型,生成嵌套列;否则生成简单列 * #3
• 例如, ((category[1], title[+])[+])对应的
表头如右表所示 1 #5
* #4
– 将属性值按从左向右的逐行次序填充到 * #6
数据表中,并保证属性名与列名的对应
关系
• 例如,右表的填充次序已用蓝色序号标
明
- 17. 最后一步:从新鲜页面抽取数据
• 综上,对于样本页面,生成数据表包含3个步骤
– 1. 提取属性值
– 2. 归纳属性模式
– 3. 填充数据表
• 如果新鲜页面和样本页面具有同一结构,则两者具有相同的属性模式
和属性特征集合
• 因此,对于新鲜页面,只需要步骤1和3
– 免去了步骤2;沿用样本页面的属性模式
– 提取属性值时,沿用样本页面的属性特征集合
• 对于新鲜页面,只要属性值得到了正确提取,则数据表就能得到正确
提取。这使得算法健壮而高效
Sample Page Sample Sample
(DOM) Property Values Structured Result
Sample Sample
User Labeling
Features Property Pattern
Fresh Page Fresh Fresh
(DOM) Property Values Structured Result
- 18. 实验与评价(1/2)
• 由于现有的测试集较为陈旧,本实验建立了新的测试集,共55个网站
– 从网页类型上,覆盖了列表页和详细页
– 从网页内容上,覆盖了搜索、新闻、购物、娱乐、论坛、公司等日常浏
览的网站
– 从网页开发技术上,覆盖了使用JavaEE,.NET和PHP等技术开发的网站
• 每个网站取5张网页,1张作为样本页,其余4张作为新鲜页;评估新
鲜页上的提取性能
– 通过两次定制化标注,每个网站生成两个包装器
• 第一次(scheme1)只标注页面中的同构数据,难度较小
• 第二次(scheme2)标注页面中的异构数据和具有特征的数据,难度较大
– 与相关工作Grubber进行对比实验
• 通过Grubber对网页进行相同的标注
– 评价度量
• 准确率(Precision):正确提取的属性值数量/提取的属性值数量
• 召回率(Recall):正确提取的属性值数量/页面的属性值数量
• 结构化准确率(Structural Precision, SP):正确提取的记录数量/提取的记录数
量
- 19. 实验与评价(2/2)
Precision Recall SP
• 实验结果 Webclips 95.29% 97.83% 93.95%
Scheme 1
– Scheme1两者的效果 Grubber 92.02% 80.45% 75.58%
均较好,但Grubber Scheme 2
Webclips 96.84% 93.32% 92.60%
Grubber 69.59% 67.17% 51.93%
的召回率稍低
100.00%
– 有难度的Scheme2 90.00%
80.00%
70.00%
中,Grubber准确率 60.00%
50.00%
Webclips
Grubber
Scheme1 40.00%
和召回率较差;而 30.00%
20.00%
10.00%
Webclips仍保持良好 0.00%
Precision Recall SP
效果
100.00%
90.00%
80.00%
70.00%
60.00%
Webclips
Scheme2 50.00%
40.00%
Grubber
30.00%
实验的详细结果,见: 20.00%
10.00%
0.00%
http://shinig365.homedns.org/webclips-paper Precision Recall SP
- 20. 结论与展望
• 在定制抽取环境下,Webclips体现了良好的性能
• 主要创新点
– 提出特征打分法,用于高效地提取属性值
– 提出不同于DOM树的属性树(Property Tree)的构造方法,利用模
式隔离性质降低了归纳属性模式的难度
• Webclips的不足与改进方法
– 如果新鲜页面的结构较之样本页面发生变化,则难以成功抽取
• 对若干网站的观察表明,即使新鲜页面的结构变化,属性模式一般不
变
• 改进方法:采用更精致的属性值提取方法
– 样本页面必须足够“典型”,才能有良好的抽取效果
• 从测试情况来看,这一问题虽然存在,但并不突出
• 改进方法:用多张页面作为样本页面
- 21. 谢谢
欢迎交流
季光
jiguang@software.ict.ac.cn