excel自动抓取网页数据( 智能在程序合成研究中遇到的提取任务上的评估)
优采云 发布时间: 2021-10-01 17:27excel自动抓取网页数据(
智能在程序合成研究中遇到的提取任务上的评估)
引用
Raza, M., & Gulwani, S..(2017)。使用预测程序综合进行自动数据提取。AAAI 2017.
一、总结
近年来,人们对使用实例编程技术帮助用户完成数据处理任务越来越感兴趣。这种技术依赖于用户定义的输入和输出实例规范来自动合成程序。然而,在广泛的数据提取任务中,人类观察者只需观察输入数据本身即可轻松预测所需的提取结果。这样的预测智能在程序合成的研究中还没有被探索过,这也是我们在这项工作中想要解决的问题。我们描述了一种预测程序合成算法,该算法可以在仅给定输入示例的情况下以提取 DSL(领域特定语言)的一般形式导出程序。
二、简介
随着全球数据的不断增长,近年来,学术界和工业界对使用自动编程技术解决数据纠缠问题越来越感兴趣:数据科学家面临的挑战是如何处理来自不同来源的多种格式的数据,并将这些原创数据转换成适合其分析工具的形式。这种数据预处理是一项耗时的活动(在某些情况下高达 80%(Kandel 等人,2011))并且通常需要编程技能才能编写强大的提取或转换脚本。
这也是自动生成此类程序的一个极其有利的地方——它可以加快数据排序过程,也可以被数据分析师和非熟练程序员的知识工作者使用。与数据处理中比较不透明的自动推理技术相比,用户对推断转换的了解很少,自动程序合成具有可重用性(轻量级脚本的一次性学习,可以存储并应用于未来类似的数据集),以及透明性和可编辑性的优点:Conversion是一种受经典编程语言启发的程序,必要时可以手动编辑。
为了实现这一目标,许多作品探索了各种示例编程(PBE)方法。在 PBE 中,用户可以通过给出一些输入和输出示例来指定他们期望的任务,系统会尝试自动生成满足给定示例的领域特定语言(DSL)程序。该领域显着的商业成功是基于 PBE 技术的 Microsoft Excel 中的快速填充功能。
然而,PBE 方法依赖于用户对他们想要执行的任务的明确意图规范。这往往需要用户正确理解示例,以帮助系统推断出正确的程序。在许多类型的任务中,用户可能还需要付出很多努力。人工努力。在这项工作中,我们发现并解决了各种数据提取任务。该系统可以在没有明确示例规范的情况下运行,并且仅基于输入数据的属性以纯粹的预测方式生成提取脚本。因此,这可以看作是仅从输入实例而不是输入和输出实例进行推断。我们首先在此处研究的两个特定应用领域中说明此类提取场景,然后更详细地讨论预测方法及其优势。
文本提取
图 1 显示了一个文本提取场景,其中输入数据集(如上所示)收录来自 Web 服务器日志的条目。每一行都是一个文本字符串,其中收录客户端 IP 地址、日期和其他值,这些值由此日志格式特有的各种分隔区域分隔。我们的目标是将这些值提取到单独的列中,如图底部的表格所示,其中突出显示了表示分隔区域的列。
在 CSV 等简单的文本格式中,这样的提取任务相对简单,因为通常有固定的单字符分隔符用于分隔数据值。但总的来说,如图1所示,在同一个数据集中可以使用任意数量的字符串分隔符,甚至可能在某些地方使用特定的字符串作为分隔符,而在其他地方则没有使用。例如,在图 1 中,“/”字符是分隔 HTTP 协议版本的分隔符,但不应用作 URL 中的分隔符。因此,不可能简单地除以特定字符串的所有出现次数。事实上,在许多情况下,两个数据值之间没有分隔符。例如,图 2 显示了 Excel 帮助论坛上的一位用户的提取任务,该用户试图将变化较大的数据集中的值和度量单位分开。在这种情况下,显然没有定界字符,因此我们的目标实际上是找到零长度定界区域,它们是字符串中的单个点,由左侧数字和右侧字母的上下文定义。
网页提取
自动数据提取的另一个领域是从网页中提取表格信息,特别是当网页中没有显式可视化(逐列)表格时。例如,图 3 显示了提取亚马逊产品搜索结果的任务。每个结果项有很多字段,如标题、日期、各种价格等,这些字段并没有按行和列表的形式清晰排列。其中一些字段缺失。在网页的DOM(文档对象模型)树结构中,使用不同的格式属性来表示它们,而不是简单的HTML表格标签。而有些字段,比如“新”和“旧”的价格,其实格式上没有区别,只能通过查看文字内容来区分。
因此,由于每个这样的 网站 使用不同形式的信息表示,因此在每种情况下都需要一个特殊的提取脚本。尽管基于特定标签或视觉属性的自动表格检测已经有很多工作,但任何非视觉表格的提取主要是在用户提供的示例的帮助下进行探索。
预测程序合成
以上提取场景已经通过各种PBE方法解决,需要用户通过具体的提取示例来说明其意图。然而,在所有这些场景中,人们可以通过观察输入数据本身轻松预测所需的提取,而无需被告知要提取什么。这种预测智能在程序合成研究中还没有被探索过,而这正是我们在这项工作中想要解决的问题:从仅输入的示例中自动学习和提取程序。我们在此提出的预测方法与之前基于 PBE 的技术相比具有许多优势。
我们首先定义了用于执行数据提取的 DSL 的一般形式。在这种形式中,程序被构造为具有不同数据字段的独立子程序的组合。我们用我们为文本和网络提取字段设计的特定 DSL 来说明这一点。这些 DSL 基于经典语言,例如正则表达式和 CSS(级联样式表)选择器,可以表达上述场景中描述的一系列转换。然后,我们描述了我们新颖的预测合成算法,用于在给定输入数据集的提取 DSL 中推断程序。这是一个域不可知算法。它通过生成语义等价的程序以高效自下而上的方式运行,并使用子程序之间的对应概念作为中心排序原则。我们描述了算法的具体例子以及文本域和网络域之间的排序关系,并描述了对我们的技术在从日志文件、真实用户和网络中获得的实际测试场景的评估。最后,我们讨论了结论和未来的工作。
三、评估ColumnSplit的评估
为了在文本领域进行评估,我们从产品团队、帮助论坛和组织中的真实用户采集了一组 20 个基准案例。这些用户向我们提供了他们希望提取的数据集。其中许多数据集来自各种日志文件,例如 Web 服务器,但也包括其他基于文本的数据集。我们评估的目标是衡量我们的系统可以提取的最大字段数。
我们的系统在这些基准测试中的平均性能结果如图 9 所示。 每个数据集平均有 13.95 个字段,其中第一次尝试检测到 10.3 个字段,并且3.45个字段比较部分列得到45个字段经过进一步拆分和提取(在任何测试用例中,要求拆分不超过三层),0.的2个字段在全部。所有未提取的字段都在一个测试用例中,这是一项涉及不同输入上不同数量字段的任务。对于这种可能遗漏的字段,一般无法确定需要的字段对齐方式,因为有不同的选项,所以这样的任务可能最好由用户的某个输出规范来处理,比如一个例子。每个任务平均执行时间4.2秒,2秒内完成16个任务。观察到,在合成算法的每次迭代中,内存使用量大约增加一倍,这仍然在可以容忍的范围内,因为算法仅在给定的输入状态价格上维护程序的状态空间到语义等。
为了进行比较,我们还评估了我们的系统,而不使用原文第 3 节中描述的特定于操作员的提升功能,并观察到执行时间急剧增加,平均每个任务 210 秒。我们还研究了我们的系统对提供给 DSL Lt 的标准数据类型标签的依赖性,并仅使用 5 个基本的正则表达式标签(数字、小写字母、大写字母、字母数字和特殊字符)进行了重新实验。我们发现在 20 个测试用例中,14 个用例中的所有字段都被提取出来,其他情况下的大部分字段也被提取出来。
WebExtract 的评估
在网页提取的情况下,我们在 20 个网页的集合上评估了我们的系统。这些网页中收录的表格数据未由显式 HTML 表格标签表示。评估结果如图 10 所示。平均而言,我们的系统每页提取 5.85 个字段。但是,页面上的一些(0.9) 字段不是作为单独的字段提取出来的,而是“排序”到其他字段中的(例如,一个父节点收录两个字段不同的子节点,这是提取为字段)。平均有25个字段没有提取出来。这只发生在4个网页中。每个任务的平均执行时间为6.41秒,虽然2秒内完成了15个任务. 不使用过滤器操作符的提升功能,执行时间增加到27秒,
我们所有的评估案例都涉及从单个网页中提取(从单个输入中学习提取过程),尽管我们的算法可以像文本提取一样使用多个输入。如果网站上有大量格式相似的网页,并且这些网页的格式略有不同,提供多个网页作为输入可能会有所帮助。我们的算法可以将它们用作多个输入来学习适用于所有网页的通用程序,但我们在这项工作中没有探索这种情况。
四、结论
我们描述了一种用于数据提取任务的新型预测程序合成技术。这包括提取DSL的一般形式,以域参数的方式设计的合成算法,以及在文本和网络提取实际应用中的具体DSL和算法示例。我们的评估显示了我们的方法在实际提取场景中的有效性及其与以前的 PBE 方法相比的优势。PBE 方法需要手动示例和用户对系统要求的正确理解。
除了 PBE 技术,最近的工作还探索了各种自然交互范式,例如自然语言 (PBNL) 系统和各种混合领先的实现方法。然而,所有这些方法都依赖于用户某种明确的意图规范。例如,PBNL 方法经常受到不准确或模糊的用户描述和词汇不匹配的影响。我们这里提出的预测方法的关键区别在于它不依赖于用户明确的意图陈述,这对于提取任务非常有效。在这方面,预测方法可以被视为不同类型任务的广泛方法的一部分:预测方法可能对提取有用,示例可能对转换任务有用,自然语言接口可能对查询有用。
另一方面,我们还没有探索将预测方法与用户给出的输出示例相结合的方法。这将类似于 PBE 环境中的半监督学习,而不是传统 PBE 系统中的全监督学习。纯无监督学习。虽然 PBE 技术可以解决提取以外的转换问题,但它一般依赖于用户提供的少量输入和输出示例,而不是使用数据集中所有额外的输入。只有在最近的工作中才证明额外的输入信号可以提高 PBE 系统的排名。然而,目前尚不清楚这些额外的输入信号本身有多强,尤其是与我们的预测方法相比时,我们的预测方法可以在不需要任何输出实例的情况下以完全无监督的方式运行。因此,探索如何使用我们的预测分析来推断输入数据的全局排列和变化,并利用这些信息来提高之前 PBE 系统的排名将是非常有趣的。例如,如果预测分析的结果是某个定界符频繁出现在所有输入数据中,那么使用该定界符的程序可能会被 PBE 系统排名更高,即使用户只提供一个输出示例,而这个示例不区分不同的候选分隔符。
谢谢
本文由南京大学软件学院2020级*敏*感*词*唐浩杰翻译转载