Google 开源了表格解析器(简称:TAPAS),它是一个使用表格数据回答自然语言问题的深度学习系统。TAPAS 接受了从维基百科提取的 620 万个表格数据的训练,在几个基准环境上其性能都达到甚至超过当下最先进的其他系统。
Google 的联合创始人 Thomas Müller 最近在一篇博客中对 TAPAS 的工作原理做了简单概述。提供一份数字形式的表格数据,如运动比赛结果数据或者财务统计数据,那么 TAPAS 就可以使用这个表格数据推断出自然语言问题的答案。举个例子,如果提供一份运动锦标赛的数据列表,那么可能 TAPAS 就能回答“哪个队获得的冠军数最多?”问题。过去解决类似问题的方式,是将自然语言的查询直接转换为类似SQL这样的软件查询语言,然后运行在数据库中。而 TAPAS 可以直接在数据上进行操作,且在常见问题基准测试中,其性能都超过了之前的模型。在 Microsoft 的顺序问答(SQA)数据集测试中,其性能相比于之前的模型提高了 12 个百分点以上;在标准的维基表格问题(WTQ)数据集的测试中,其性能也提高了 4 个百分点以上。
对于如何使用表格数据回答自然语言问题,早期很多 AI 系统都是通过一种被称为语义解析的方式解决的。这种方式是将自然语言的问题转换成一种“逻辑形态”——其本质上是将人类语言转换成编程语言。而对于表格数据的问题,这种逻辑形态通常就是诸如 SQL 之类的查询语言了。不管是Microsoft还是Salesforce都开发过类似的系统。但是根据 Google 团队的说法,语义解析的一个缺点是,它和所有的监督式学习一样,需要一个手工标记的数据集; 只有在这种情况下,才能将自然语言问题映射成逻辑形态。谷歌团队发现这一步骤完全是可以跳过的,因此 TAPAS 是直接输出“一个表格单元格的子集和一个可能的数据聚合操作(译者注:如求和、求平均,为空等)”。
图片来源:https://ai.googleblog.com/2020/04/using-neural-networks-to-find-answers.html
TAPAS 是基于BERT(谷歌的 NLP 系统)的。经过训练,该系统可以使用自然语言回答自然语言的问题。在这种情况下,BERT系统训练时的输入数据同时包含了问题和答案。但对于使用数字数据回答问题的 TAPAS 来说,训练的输入数据同时包括问题和表的数字数据,这些数据会被平铺成长长的一个序列。由于数据被平铺了,所以表格就丢掉了与数据结构相关的信息。因此,训练的输入数据还要包含一个嵌入层,该嵌入层是每个单元格的行号、列号以及在列中的排序信息的编码。该模型会输出两组数据集合:一组是表中每个单元可能是答案的概率值,任何概率大于 0.5 的单元格都将包含在最终结果中;另一组则是可选择的操作集合,例如:求和、求平均(如果需要的话,为空的操作也可以在集合里面)。
TAPAS 接受了从维基百科中提取的 620 万个数据表的预训练,这批数据表包含了从文章标题、文章描述、表格标题以及其他相关文本片段中提取的问题。然后,使用特定的基准数据集对该模型进行微调。Google 团队使用了三个基准数据集: SQA、WTQ 和 Salesforce 的WikiSQL。在 SQA 上,TAPAS 达到了 67.2% 的准确率,比之前最高水平提高了 12 个百分点;在 WTQ 上它达到了 48.8%的准确率,比之前的系统提高了 4 个百分点;在 WikiSQL 上 TAPAS 的得分为 83.6%,和最高的 83.9%非常接近。
Google 的训练代码和预训练模型都托管在Github上,同时还提供了一个Colab 教程。
原文链接:
https://www.infoq.com/news/2020/05/google-natural-language-tables/
评论