数码实验室|使用神经网络在表格中查找答案


数码实验室|使用神经网络在表格中查找答案
文章图片
来源:TensorFlow
【数码实验室|使用神经网络在表格中查找答案】本文约2481字 , 建议阅读6分钟 。
本介绍如何通过自然语言进行查询 , 从表格中找到所需的内容 , 从而提升信息的可用性和实用性 。
数码实验室|使用神经网络在表格中查找答案
文章图片
绝大多数的信息都以表格为形式进行存储 , 并包含于网页、数据库或是文档中 。 从消费类商品的技术规格到金融和国家发展统计数据、体育赛事结果等等 , 都可能使用表格存储 。 目前 , 人们需要通过手动查看这类表格才能找到问题的答案 , 或者需要通过某项服务来获得特定问题的答案(如体育赛事结果) 。 如果可以通过自然语言进行查询 , 这些信息的可用性和实用性都将得到大幅提升 。
例如 , 下图展示了一个表格以及人们可能会询问的一些问题 。 这些问题的答案能在表格的一个或多个单元格内找到(“哪位摔跤手卫冕次数最多?”) , 或者需要结合多个单元格计算得出(“有多少世界冠军仅卫冕过一次?”) 。
数码实验室|使用神经网络在表格中查找答案
文章图片
表格和带有预期答案的问题:答案可以从表格中直接找出(#1,#4) , 或通过计算得出(#2,#3)
最近许多对于此类问题的解决方法都应用了传统的语义分析 , 将自然语言问题转换为类似SQL的数据库查询 , 通过对数据库执行查询来获取答案 。 例如 , 问题“有多少世界冠军仅卫冕过一次?”将映射到类似“selectcount(*)wherecolumn(''No.ofreigns'')==1;”的查询 , 然后执行该查询来生成答案 。 这类方法通常需要大量的工程设计才能生成句法和语义上都有效的查询 , 并且针对性极强 , 很难扩展到任意问题(如体育赛事结果) 。
收录在ACL2020的论文《TAPAS:通过预训练进行弱监督表格解析》(TAPAS:WeaklySupervisedTableParsingviaPre-training)”中 , 我们采用了不同的方法 , 通过对BERT架构进行扩展 , 将问题与表格数据结构一起编码 , 从而生成一个可直接指向答案的模型 。 与创建仅适用于单一表格样式的模型不同 , 这种方法生成的模型可广泛应用于来自各种领域的表格 。 在对数百万个维基百科表格进行预训练之后 , 我们发现 , 此方法在处理3类学术表格问题-答案(QA)数据集时在准确率方面表现出优势 。
另外 , 为促进在这一领域展开更多卓有成效的研究 , 我们已开源了用于训练和测试这些模型的代码 , 以及已用维基百科表格进行预训练的模型 , 相关代码请参阅我们的GitHub代码库 。
如何处理问题
为了处理“排名前两位的摔跤手卫冕冠军的平均时间?”这个问题 , 我们的模型使用BERT模型通过对问题和表格内容合并进行逐行编码 , 并特殊嵌入向量进行扩展 , 以对表格结构进行编码 。
同时 , 利用基于Transformer的BERT模型 , 对关键信息添加的额外嵌入向量可用于对结构化输入进行编码 。 我们依靠已习得的嵌入向量编码列索引、行索引 , 以及一个表示数字列中元素排序的特殊排名进行索引 。 下方图片显示了以上所有内容如何一并在输入端完成添加并返回给Transformer层 。 下方图表通过左侧表格说明问题的编码方式 。 每个单元格的token都有一个特殊的嵌入向量 , 以指明其所在的行、列 , 以及列中的数字排名 。
数码实验室|使用神经网络在表格中查找答案
文章图片
BERT层输入:每个输入token都表示为其单词、绝对位置、句段(无论是属于问题还是表格)、列和行以及数字排名(如果该列按其数字值排序 , 则为单元格所处的位置)的嵌入向量总和
模型有两个输出:


推荐阅读