vb excel提取网页中特定数据_使用预测性程序合成的自动数据提取方法

1a5c94df8c07ba72578ce95031ef14b0.png

引用

Raza, M. , & Gulwani, S. . (2017). Automated Data Extraction using Predictive Program Synthesis. AAAI 2017.

一、摘要

近年来,人们对使用实例编程技术来帮助用户完成数据处理任务的兴趣越来越大。这种技术依靠用户明确的输入输出实例规范来自动合成程序。然而,在广泛的数据提取任务中,人类观察者只需观察输入数据本身,就很容易预测出所需的提取结果。这样的预测智能在程序合成研究中还没有被探索出来,这也是我们在这项工作中要解决的问题。我们描述了一种预测性的程序合成算法,该算法可以在只给定输入实例的情况下,以提取 DSL(领域特定语言)的一般形式推导程序。我们描述了这种 DSLs 的具体实例和在文本提取和网络提取这两个实际应用领域中的合成算法,并介绍了我们的技术在一系列实践中遇到的提取任务上的评估。

二、介绍

随着世界上数据的不断增长,近年来,学术界和工业界对使用自动编程技术来解决数据纠缠问题的兴趣越来越大:数据科学家面临的挑战是如何处理来自不同来源的多种格式的数据,并将这些原始数据转化为适合其分析工具的形式。这种数据预处理是一项耗时的活动(在某些情况下,耗时高达 80%(Kandel 等人于 2011 年发现)),而且往往需要编程技能,以便编写强大的提取或转换脚本。

这也是自动生成这类程序极为有利的地方--既能加快数据整理过程,又能让广大非熟练程序员的数据分析人员和知识工作者也能使用。相比于数据处理中更不透明的自动推理技术,用户对推断出来的转换理解甚少,自动程序合成具有可重用性(一次性学习轻量级脚本,可以存储并在未来应用于类似的数据集),以及透明性和可编辑性的优势:转换是受经典编程语言启发的程序,如果需要可以被手动编辑。

为了实现这一目标,许多工作探索了各种按实例编程(PBE)方法。在 PBE 中,用户可以通过给出一些输入输出示例来指定他们的预期任务,系统试图从中自动生成一个满足给定示例的某种特定领域语言(DSL)的程序。在这一领域取得显著商业成功的是微软 Excel 中的 Flash Fill 功能,它是基于 PBE 技术的。

然而,PBE 方法依赖于用户对他们想要执行的任务的明确意图规范,这往往需要用户正确理解例子,以帮助系统推断出正确的程序,并且在许多类型的任务中也可能需要用户付出大量的人工努力。在这项工作中,我们发现并解决了多种数据提取任务,系统可以在没有明确的例子规范的情况下进行操作,仅根据输入数据的属性,以纯预测的方式生成提取脚本。因此,这可以看作是只从输入实例而不是输入输出实例进行推理。我们首先在这里研究的两个具体的应用领域中说明这样的提取场景,然后再更详细地讨论预测性的方法及其好处。

文本提取

图 1 显示了一个文本提取场景,其中输入数据集(如上图所示)包含来自 Web 服务器日志的条目。每一行都是一个文本字符串,其中包含客户端 IP 地址、日期等值,这些值由这种日志格式特有的各种分隔区域分隔。我们的目标是将这些值提取到单独的列中,如图底部的表格所示,其中代表分隔区域的列被突出显示。

c897afff176d0f4f7d93f1b8e2bc33f4.png

在 CSV 等简单的文本格式中,这样的提取任务相对简单,因为通常有一个固定的单字符定界符用来分隔数据值。但是在一般情况下,如图 1 所示,在同一个数据集中可以使用任意数量的字符串定界符,一个特定的字符串甚至可能在某些地方被用作定界符,而在其他地方则不被使用。例如,在图 1 中,"/"字符是分隔 HTTP 协议版本的定界符,但不应该作为 URLs 中的定界符。因此,不可能简单地按某一特定字符串的所有出现次数进行分割。事实上,在很多情况下两个数据值之间其实是没有定界符的。例如,图 2 显示了一个 Excel 帮助论坛上的用户的提取任务,该用户正在努力将一个具有很大变化的数据集中的数值和计量单位分开。在这种情况下,显然没有分隔字符,所以我们的目标实际上是找到零长度的分隔区域,这些区域是字符串中的单点,由左边有一个数字和右边有一个字母的上下文定义。

b638a0465b228b052f44ef9393eead6e.png

Web 提取

另一个自动数据提取领域是从网页中提取表格信息,特别是在网页中没有明确的可视化(按行按列)表格存在的情况下。例如,图 3 显示了提取 Amazon 产品搜索结果的任务,每个结果项都有许多字段,如标题、日期、各种价格等,这些字段没有以明确的逐行逐列表的形式排列。这些字段,有些项目是缺失的,在网页的 DOM(文档对象模型)树结构中,使用不同的格式属性来表示,而不是简单的 HTML 表格标签。而有些字段,如 "新 "和 "二手 "的价格,其实在格式上并没有区别,只能通过检查文本内容来区分。

因此,由于每个这样的网站都使用不同的表格信息表示方式,因此在每种情况下都需要专门的提取脚本。虽然已经有很多基于特定标签或视觉属性的自动检测表格的工作,但对任意非视觉表格的提取大多是在用户提供的例子的帮助下进行探索的。

预测性程序合成

上述的提取场景已经被各种 PBE 方法所解决,这些方法要求用户通过明确的所需提取的例子来说明他们的意图。然而,在所有这些场景中,人只需观察输入数据本身就可以很容易地预测出所需的提取,而不需要被告知要提取什么。这样的预测智能在程序综合研究中还没有被探索过,这也是我们在这项工作中要解决的问题:从仅有输入的例子中自动学习提取程序。我们在这里提出的预测方法与之前基于 PBE 的技术相比有很多优势。

  • 减少用户举例的工作量。在图 1 和图 3 的场景中,提取的字段超过 10 个,而在实践中,一些日志文件有 50 个左右的字段是正常的。PBE 系统,如 Flash Fill 和 Flash Extract,通常每个字段可能需要 2 到 3 个例子,因此会导致用户在完成一个提取任务时需要花费大量的人工精力。
  • -少依赖用户对系统需求的理解。在 PBE 方法中,考虑到数据中的所有变化,用户并不知道哪些例子对学习系统最有用。例如,在 Flash Fill 中,用户通常会在前几行给出例子,系统往往可以从这些例子中学习到一个对给定例子过于特殊的程序,因此在数据集中的某一行后来就失败了。
  • 使用所有的输入数据进行学习。PBE 方法从非常少的输入输出例子中工作,以减少用户的手工劳动。相比之下,我们在这里描述的预测方法可以利用数据中更多的输入来推断数据中存在的共同模式以及差异性。
  • 允许批量处理。在 PBE 方法中需要用户的手动干预,这就阻止了数据处理任务的大规模自动化的可能性。例如,如果用户需要处理大量不同格式的数据集或来自不同网站的网页,那么他们就需要为每一种新的格式手动提供例子。

我们首先定义了一种用于执行数据提取的 DSL 的一般形式,在这种形式中,程序被结构化为不同数据字段的独立子程序的组合。我们用我们为文本和网络提取领域设计的具体 DSL 来说明这一点,这些 DSL 基于正则表达式和 CSS(层叠样式表)选择器等经典语言,可以表达上述场景中所说明的一系列转换。然后,我们描述了我们新颖的预测性合成算法,用于在给定输入数据集的提取 DSL 中推断程序。这是一个领域不可知的算法,它以一种高效的自下而上的方式,通过生成语义等价的程序进行操作,并使用子程序之间的对应关系概念作为中心排序原则。我们描述了该算法的具体实例以及文本和网络领域的排名关系,并描述了我们的技术在从日志文件、真实用户和网络上获得的实际测试场景上的评估。最后,我们对结论和未来工作进行了讨论。

三、评估

对 ColumnSplit 的评估

为了在文本领域进行评估,我们从产品团队、帮助论坛以及组织中的真实用户那里收集了一组 20 个基准案例,这些用户向我们提供了他们希望对其进行提取的数据集。这些数据集很多来自各种日志文件,比如来自 Web 服务器,但也包括其他基于文本的数据集。我们评估的目标是测量我们的系统能够提取的最大字段数。

34a341a8126d845704258e70a5a9b3b6.png

我们系统在这些基准上的平均性能结果如图 9 所示。每个数据集平均有 13.95 个字段,其中 10.3 个字段是在第一次尝试时检测到的,3.45 个字段是通过对部分列的进一步拆分提取出来的(在任何测试用例中要求拆分不超过三层),0.2 个字段根本无法提取。所有未提取的字段都在一个测试用例中,这是一个涉及不同输入上不同数量字段的任务。对于这种可能遗漏的字段,一般情况下不可能确定所需的字段对齐方式,因为有不同的选择,所以这样的任务可能最好由用户的某种输出规范来处理,比如例子。每个任务的平均执行时间为 4.2 秒,有 16 个任务在 2 秒内完成。据观察,在合成算法的每次迭代时,内存使用量大约增加了一倍,这仍然是在可承受的范围内,因为该算法在给定的输入状态上只维持程序的状态空间到语义等价。

为了比较,我们还评估了我们的系统,没有使用原文第 3 节中描述的操作者特定的提升函数,并观察到执行时间急剧增加到平均每个任务 210 秒。我们还研究了我们的系统对提供给 DSL Lt 的标准数据类型标记的依赖性,只用 5 个基本的正则表达式标记(数字、小写字母、大写字母、字母数字和特殊字符)重新进行实验,我们发现在 20 个测试案例中,有 14 个案例中的所有字段都被提取出来,其他案例中的大部分字段也是如此。

c5786707ad4a11d4ee53843b9747cb5e.png

对 WebExtract 的评估

在网页提取的情况下,我们在 20 个网页的集合上对我们的系统进行了评估,这些网页包含的表格数据没有使用明确的 HTML 表格标签来表示。评估结果如图 10 所示。我们的系统平均每页提取了 5.85 个字段。然而,页面上的一些(0.9)字段并不是作为单独的字段提取的,而是 "归入 "其他字段中(例如,一个父节点包含两个不同字段的子节点,却被提取为一个字段)。平均有 0.25 个字段完全没有被提取,这只发生在 4 个网页中。每个任务的平均执行时间为 6.41 秒,尽管有 15 个任务在 2 秒内完成。在不使用过滤器操作符的提升函数的情况下,执行时间增加到 27 秒,再次显示出显著的性能下降,以及为什么以前的自下而上的合成方法不能用于我们的预测环境中,无论是文本还是网页领域。

我们所有的评估案例都涉及到从单个网页中提取(从单个输入中学习提取程序),尽管我们的算法可以像在文本提取的情况下一样使用多个输入。如果网站上有大量格式相似的网页,而这些网页的格式又略有不同,那么提供多个网页作为输入可能会有帮助。我们的算法可以将它们作为多个输入来学习适用于所有网页的通用程序,但我们在这项工作中没有探讨这种情况。

四、结论

我们描述了一种新颖的数据提取任务的预测性程序合成技术。这包括一个一般形式的提取 DSL,一个以领域参数方式设计的合成算法,以及在文本和网络提取的实际应用领域的具体 DSL 和算法实例。我们的评估显示了我们的方法在实际提取场景中的有效性,以及与之前的 PBE 方法相比的优势,PBE 方法需要人工提供实例以及用户对系统需求的正确理解。

除了 PBE 技术,最近的工作中还探索了各种自然交互范式,如自然语言(PBNL)系统和各种混合主导实现方法。然而,所有这些方法都依赖于用户的某种明确的意图规范,例如,PBNL 方法经常受到不准确或模糊的用户描述和词汇不匹配的影响。我们在这里提出的预测方法的关键区别是不依赖于用户明确的意图说明,这对提取任务很有效。在这方面,预测方法可以被看作是针对不同类型任务的广泛方法的一部分:预测方法可能对提取有效,而示例可能对转换任务有用,自然语言接口可能对查询有用。

在另一个方面,我们还没有探索将预测方法与用户给出的输出例子结合在一起的方法,这将类似于 PBE 环境下的半监督学习,而不是传统 PBE 系统中的完全监督学习和我们提出的纯无监督学习。PBE 技术虽然能够解决提取之外的转换问题,但一般都是依靠用户提供的少量输入输出实例,而没有利用数据集中的所有额外输入。只有在最近的工作中,额外输入的信号才被证明可以提高 PBE 系统的排名。然而,目前还不清楚这些额外的输入信号本身有多强,特别是与我们的预测方法相比,我们的预测方法可以在不需要任何输出实例的情况下以纯无监督的方式发挥作用。因此探索如何利用我们的预测分析来推断输入数据的全局排列和变化,并利用这些信息来改善以前的 PBE 系统的排名将是非常有趣的。例如,如果预测分析的结果是某个定界符在所有输入数据中经常出现,那么使用该定界符的程序可能会被 PBE 系统排在较高的位置,即使用户只提供了一个单一的输出示例,而该示例并没有在不同的候选定界符之间进行区分。

致谢

本文由南京大学软件学院 2020 级硕士研究生唐昊杰翻译转述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值