网页结构化数据的定制抽取

429 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
429
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

网页结构化数据的定制抽取

  1. 1. 网页结构化数据的定制抽取 季光 中科院计算所博士生(韩燕波老师指导) 2011.1
  2. 2. 问题背景 • 若网页中的无结构数据经过wrapper抽取成为结构 化数据,能以服务的形式支持应用程序的构造 – 本报告探讨实现网页数据抽取的wrapper的关键技术 • 同一张网页,不同的用户根据各自的需求,构造 的wrapper可能会 – 抽取出不同的数据部分 – 组织为不同的数据结构 • 例如,右图所示的网页 – 共3个category (A~C) – 每个category下有多个title (A1~C2)
  3. 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. 4. 用户定制需求的表达 • 用户如何表达定制需求? – 通过对网页的标注(labeling),即使用属性名标出网页中的属性值 • 例如对于ES-1,用户在样本页面(sample page)上的标注 如下 所有的category 所有的title • 系统据此生成包装器(wrapper),用于从新鲜页面(fresh page)中抽取数据
  5. 5. 问题定义 • 问题定义 – 输入 • 样本页面 • 用户在样本页面上的标注 – 输出 • 可以在新鲜页面上实现定制抽取的包装器 • 评价方法 – 包装器在新鲜页面上的数据抽取性能
  6. 6. 问题求解 • 将该问题分解为三个小问题 – 问题一:先不考虑抽取结果的结构化,而是首 先考虑:如何提取各属性的属性值? – 问题二:然后,如何利用样本页面的属性值, 归纳出属性模式(即数据表的表头)? – 问题三:最后,为了完成结构化,如何将属性 值填充到数据表中?
  7. 7. 问题一:提取属性值 特征打分法 • 对某个属性,已知用户标注的少量样本值,如何 提取其他相似的值 • 一种高效的属性值提取方法:特征打分法 – 用样本值的XPath选出候选元素集合 – 用户标注的每个样本值,作为DOM元素,都有其多个 特征(features);把样本值的公共特征作为打分特征集 合(scoring feature set) – 检查候选元素是否符合打分特征集合中的各项特征, 并按符合数量打分 – 取得最高分的候选作为结果
  8. 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. 9. 提取属性值:关于特征打分法的讨 论 • 特征打分法的优点 – 避免使用难以确定的单一阈值,使用离散、可 清晰区分的分数作为筛选依据 • 相关工作Grubber选取了类似的特征集,但是又将 特征集转换为阈值,实验表明其效果不太理想 – 用户可以边标注边查看提取结果,并且 • 用户标注的值一定会在结果中选中,避免用户困惑 • 对选中的值进行多余标注不会改变结果。因此,一 旦符合需要,用户可以立即停止标注 • 用户标注的次序不影响结果
  10. 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. 11. 归纳属性模式的难点问题 • 属性归纳中的两难问题 – DOM树并不完全适合直接用于属性归纳,需要进行变 换。原因在于: • 含有大量的无用节点 • 含有冗余的层次结构 – 如果将所有属性值从DOM树中提取出来,化为无层次 结构的线性序列,则破坏了模式隔离特性 • 因此,需要一种既能去除DOM树中的无用节点和 冗余层次结构,又能保持模式隔离特性的中间结 构:属性树(Property Tree, 简称PT)
  12. 12. 归纳属性模式:构建PT (构建RPT/PT的算法细节见论文3.1节)
  13. 13. PT集中体现了用户的定制结果 • 通过用户定制,从同一个 DOM树可以得到不同的属 性树(PT)
  14. 14. 通过类型树(TT)归纳属性模式(1/2) • 属性树集中体现了经过用户定制的DOM树 的属性结构 • 通过对各个子树自下而上的归纳,即可得 到整棵树的模式 – 在属性树之上进行归纳,得到的树称为类型树 (type tree, 简称TT) – 每个节点上的标注都表示该节点下的子树类型
  15. 15. 通过类型树(TT)归纳属性模式(2/2) • 归纳过程中的两个基本操作 – 合并(merging):将兼容的正则表达式合并为更通用的正则表达式 • 例如:title title --merge--> (title[2]) – 编组(grouping):将不兼容的正则表达式编为一组 • 例如:category (title[2]) --group--> (category[1], (title[2])[1]) • 树根上的类型即属性模式
  16. 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. 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. 18. 实验与评价(1/2) • 由于现有的测试集较为陈旧,本实验建立了新的测试集,共55个网站 – 从网页类型上,覆盖了列表页和详细页 – 从网页内容上,覆盖了搜索、新闻、购物、娱乐、论坛、公司等日常浏 览的网站 – 从网页开发技术上,覆盖了使用JavaEE,.NET和PHP等技术开发的网站 • 每个网站取5张网页,1张作为样本页,其余4张作为新鲜页;评估新 鲜页上的提取性能 – 通过两次定制化标注,每个网站生成两个包装器 • 第一次(scheme1)只标注页面中的同构数据,难度较小 • 第二次(scheme2)标注页面中的异构数据和具有特征的数据,难度较大 – 与相关工作Grubber进行对比实验 • 通过Grubber对网页进行相同的标注 – 评价度量 • 准确率(Precision):正确提取的属性值数量/提取的属性值数量 • 召回率(Recall):正确提取的属性值数量/页面的属性值数量 • 结构化准确率(Structural Precision, SP):正确提取的记录数量/提取的记录数 量
  19. 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. 20. 结论与展望 • 在定制抽取环境下,Webclips体现了良好的性能 • 主要创新点 – 提出特征打分法,用于高效地提取属性值 – 提出不同于DOM树的属性树(Property Tree)的构造方法,利用模 式隔离性质降低了归纳属性模式的难度 • Webclips的不足与改进方法 – 如果新鲜页面的结构较之样本页面发生变化,则难以成功抽取 • 对若干网站的观察表明,即使新鲜页面的结构变化,属性模式一般不 变 • 改进方法:采用更精致的属性值提取方法 – 样本页面必须足够“典型”,才能有良好的抽取效果 • 从测试情况来看,这一问题虽然存在,但并不突出 • 改进方法:用多张页面作为样本页面
  21. 21. 谢谢 欢迎交流 季光 jiguang@software.ict.ac.cn

×