世界上许多信息都是以表格形式存储的,这些表格见诸于网络、数据库或文件中。它们包括消费产品的技术规格、金融和国家发展统计数据、体育赛事结果等等。目前,要想找到问题的答案,人们仍需以人工方式查找这些表格,或使用能提供特定问题(比如关于体育赛事结果的问题)的答案的服务。如果可通过自然语言来查询这些信息,那么取用这些信息会容易很多。
表格问答就是针对一个自然语言问题,基于表格内容给出答案。 问题的答案既可以是表格中包含的一个或多个表格单元,也可以是表格中推理出来的、并未出现的值。
狭义上的表格问答是仅针对表格的问答,但随着相关研究的进行,出现了许多表格+文本的、类似文档形式的混合数据集。这些数据集依赖对表格的理解,也因此,广义上的表格问答可看做是包含表格数据的问答。
表格可分为结构化表格和半结构化表格。
结构化表格以数据库形式的表格为主。这类表格由M行N列数据组成。每一行由N个表格单元构成,表示一条信息记录;每一列由M个表格单元构成,同一列中的所有表格单元具有相同的类型。这类表格具有规范化的格式,在表格研究中较为简单。
半结构化的表格不如结构化表格规范,其往往包含了单元格合并、层次化表头等复杂结构形式,在代码层面也有特定的书写格式。常见的半结构化表格来源有:HTML、Latex、Excel、Word。
对于表格问答,参考相关研究和综述,我们可以将任务按以下角度进行细分。
角度 | 分类 | 解释 |
问题类别 | 事实(Factoid) | 询问一个特定的事实,答案来自于表格中的一个片段或由聚合操作得到的值 |
自由形式(Free Form) | 回答无固定格式,通常较长,类似于对话,如ChatGPT一样 | |
多项选择(Multiple Choice) | 问题要求从多个选项中选择一个作为答案 | |
数据类别 | 仅包含表格(Table Only) | 数据集里仅包含表格这一种数据形式 |
表格+其他数据形式(Non Table Only) | 除了表格本体,还包含表格附近的文本或其他文本信息,甚至是其他数据模态 | |
表格类别 | 普通表格(Flat) | 表格较为规整,一般只有一级的列表头 |
层次化表格(Hierarchical) | 表格可能包含行表头和列表头,同时表格不止一级,具有层次化的结构 | |
Domain Type | 开放域(Open Domain) | 面向真实场景,需要先从大量数据中检索得到候选表格及其他文本,再从中推理出答案 |
封闭域(Close Domain) | 面向有限数量的表格或文本,一般仅包含一个表格或少量的文本片段,从中推理得到答案 |
表格问答的发展趋势是真实化,其逐步向真实的场景靠拢。近两年的研究不止局限于单纯的表格,还有许多复杂表格、表格文本混合数据、专有领域等方面的研究。在方法层面,基于语义解析的方法逐渐减少,取而代之的是基于transformer、预训练等的模型方法。
目前,与表格相关的自然语言处理研究发展迅速,数据集大幅增加,学术界已有许多成熟的方法。此处我们按照MSRA的相关工作,将与表格问答相关的任务定义为以下五类(未包含大部分的表格任务)。
- 表格检索:从表格集合中找到与输入问题最相关的表格
- 语义解析:将自然语言问题转换成可被机器理解的语义表示(meaning representation,一般指SQL语句),在表格中执行该表示即可获得答案
- 问题生成:可看作语义解析的逆过程,能减轻语义解析器对大量标注训练数据的依赖
- 对话:主要用于多轮对话场景的语义解析任务,需有效解决上下文中的省略和指代现象
- 文本生成:使用自然语言描述表格中(如给定的一行)的内容
对于给定的自然语言q和给定的表格全集T={T1, T2, .., Tn},表格检索任务的目的是从T中找到与q内容最相关的表格,如下图所示。每个表格通常由三部分构成:表头/列名(table header)、表格单元(table cell)和表格标题(table caption)。广义上的表格问答有时也会面对包含表格一个或多个文档,在面向开放域或混合数据问答时,需要依赖表格检索模块得到候选的表格或其他文本。
在方法实现上,表格检索往往会经历表格候选检索和表格候选打分两个步骤。
从表格全集中快速筛选得到一个表格子集T={T1, T2, .., Tn},并尽量保证与Q最相关的表格包含在T之中。
- 表格全集相对有限:可以将每个表格的结构打散并将内容顺序连接构成一个“文档”,然后基于现有文本检索技术找到与输入问题Q最相关的表格子集T
- 表格全集为互联网所有表格:需要先基于搜索引擎找到与问题最相关的结果页面集合。然后抽取该结果网页集合中包含的全部表格作为表格子集T。这一过程无法保证排名靠前网页中包含的表格和输入问题之间也存在较高的相关性,这也就引入了下一个任务。
表格候选打分负责计算表格子集T中每个表格和问题Q的相关度,并选择与Q相关度最高的表格作为表格检索的结果:
其中表示N个特征函数,每个特征函数用来衡量Q和的某种相关性。是特征函数集合对应的特征权重集合,它通过在标注数据上使用机器学习算法训练得到。
-
如果将表格看作文档,可以采用文本检索中最常见的BM25作为一个表格候选打分特征。
-
如果将表格看作字符串,忽略表格结构,最长公共子串、编辑距离在内的多种字符串匹配方法都可以用来设计匹配特征。
-
Cafarella等人介绍Google搜索引擎中表格检索模块所使用的部分特征,包括表格的行数,列数,内容为空的表格单元数,表格所在网页在网页搜索结果中的排序,问题和表头的匹配度、问题和表格标题的匹配度、问题和表格单元集合的匹配度、问题和最左边第一列表格单元集合的匹配度等。
-
Balakrishnan等人基于知识图谱对表格单元进行实体匹配,根据表格单元匹配实体的类型标记表格单元和对应表头,并使用该信息设计问题和表格之间的相关度特征。
-
Yan等人提出基于神经网络的表格检索模型,通过将输入问题和表格转化为向量表示,计算二者之间的相似度。
最初的数据集通常只包含表格,但随着相关研究发展,出现了许多包含的表格+文本的数据。依据上述任务细分,我们将表格问答相关数据集进行分类汇总,如下表所示:
- 相关论文:Compositional semantic parsing on semi-structured tables
- 下载链接:链接
- 说明:该数据集由斯坦福在2015年发布,主要针对表格问答任务。该数据集总共包含22033条人工标注的<问题,表格,答案>三元组,任务的目标是基于给定表格和问题,生成问题对应的答案。 该数据集中的表格来自英文维基百科,共2108个。Amazon Mechanical Turk上的标注人员针对每个表格编写问题,并基于该表格标注问题对应的答案。
Method | ACC(DEV) | ACC(TEST) | P@1(TEST) | 论文 | 年份 | Code |
---|---|---|---|---|---|---|
Iterative Search | 85.4 | 82.4 | Iterative Search for Weakly Supervised Semantic Parsing | 2019 | https://github.com/allenai/iterative-search-semparse | |
MeRL | 46.9 | Learning to Generalize from Sparse and Underspecified Rewards | 2019 | https://github.com/google-research/google-research/tree/master/meta_reward_learning | ||
CNN-FC-BILIN (15 ensemble models) | 38.7 | Neural Multi-step Reasoning for Question Answering on Semi-structured Tables | 2018 | https://github.com/dalab/neural_qa | ||
Ensemble of 15 Neural Programmer models | 37.5 | 37.7 | Learning a natural language interface with neural programmer | 2017 | https://github.com/saraswat/NeuralProgrammerAsProbProg |
- 相关论文:Seq2sql: Generating structured queries from natural language using reinforcement learning
- 下载链接:链接
- 说明:该数据集使用从Wikipedia中提取的表,并带有程序(SQL)注释。数据集中共有24,241个表和80,654个问题程序对,分为训练/开发/测试集。与WIKITABLEQUESTIONS相比,语义更简单,因为其中的SQL使用较少的运算符(列选择,聚合和条件)。
Method | ACC | 论文 | 年份 | Code |
---|---|---|---|---|
NL2SQL-BERT | 97.0 | Content Enhanced BERT-based Text-to-SQL Generation | 2019 | https://github.com/guotong1988/NL2SQL-RULE |
SQLNet | 90.3 | SQLNet: Generating Structured Queries From Natural Language Without Reinforcement Learning | 2017 | https://github.com/xiaojunxu/SQLNet |
TAPAS (fully-supervised) | 86.4 | TaPas: Weakly Supervised Table Parsing via Pre-training | 2020 | https://github.com/google-research/tapas |
-
相关论文:Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Task
-
下载链接:链接
-
说明:该数据集是一个人工注释的大规模,复杂且跨领域的文本到SQL数据集。它还是唯一具有多张表格的TB-QA数据集,其中的Schema可以建模为图结构。其中的数据来自六个基础数据集:
- Restaurants (Tang and Mooney,2001; Popescu et al., 2003b)
- GeoQuery (Zelle and Mooney, 1996)
- Scholar (Iyer et al., 2017)
- Academic (Li and Jagadish, 2014)
- Yelp (Yaghmazadeh et al., 2017)
- IMDB (Yaghmazadeh et al., 2017)
共有11840个问题,6445个复杂SQL查询和206个包含多张表的数据库。
Method | ACC(DEV) | ACC(TEST) | 论文 | 年份 | Code |
---|---|---|---|---|---|
RATSQL + GraPPa (DB content used) | 73.4 | 69.6 | GraPPa: Grammar-Augmented Pre-Training for Table Semantic Parsing | 2020 | https://yale-lily.github.io//spider |
RYANSQL v2 + BERT | 70.6 | 60.6 | RYANSQL: Recursively Applying Sketch-based Slot Fillings for Complex Text-to-SQL in Cross-Domain Databases | 2020 | |
MASmBoP + BART | 64.5 | TaBERT: Pretraining for Joint Understanding of Textual and Tabular Data | 2020 | https://github.com/facebookresearch/tabert | |
GNN | 40.7 | 39.4 | Representing Schema Structure with Graph Neural Networks for Text-to-SQL Parsing | 2019 | https://github.com/benbogin/spider-schema-gnn |
- 相关论文:Tables as Semi-structured Knowledge for Question Answering
- 下载链接:链接
- 说明:该数据集包含9092个手动注释的多项选择题(MCQ)及其答案,需要63个表格内容中查询答案。而这些表格是半结构化表,每个表中的行都是带有定义明确的重复填充模式的句子。
- 相关论文:Search-based neural structured learning for sequential question answering
- 下载链接:链接
- 说明:该数据集根据WikiTableQuestions的表格和答案组成序列,每个序列包含较简单但相互关联的问题 。设计数据集时,每个问题都可以由一个或多个表格单元格回答。它由6066个问题序列组成,总计17553个问题(每个序列平均2.9个问题)。
- 相关论文:Tabfact: A large-scale dataset for table-based fact verification
- 下载链接:链接
- 说明:该数据集由针对16573个Wikipedia表格的117854条手动注释的语句组成,它们的关系分为ENTAILED和REFUTED。这是第一个对结构化数据进行语言推理的数据集,其中涉及符号和语言方面的混合推理技能。
参考相关论文和综述,我们可以将学术界的表格问答相关方法分为基于语义解析的方法和非语义解析的方法。
基于语义分析的方法通过两步完成任务。第一步,基于表格T对问题Q进行语义分析,将其转化为对应的语义表示LF(Logical Form);第二步,将LF作为结构化查询,通过在T上执行得到问题对应的答案。和KBQA类似,基于表格的语义分析方法既可以基于<问题,答案>标注间接训练语义分析模型,也可以基于<问题,语义表示>标注直接训练语义分析模型。
以下所示的是基于语义分析的方法的一个示例。
该类方法在问答时不会生成LF,而是直接由模型得到答案。此类方法省去了设计模板的成本,一般只需要答案、答案所在的一个或多个单元格、聚合操作等少量信息即可完成训练。参考[综述](A Survey on Table Question Answering: Recent Advances),非语义解析的方法主要可分为生成式方法、提取式方法和匹配式的方法。
生成式方法类似于Encoder-Decoder的结构,通过Encoder对问题和表格编码,得到问题和表格的语义表示,在通过Decoder从中解码出答案。自由形式的问答往往需要依赖Decoder来生成自由形式的答案。
提取式方法类似于Encoder-Classification Layer的结构,其不依赖Decoder生成答案,而是通过分类等方式,从表格中选取token spans作为答案或答案依据。一个典型的提取式方法是TaPas模型。TaPas模型基于Bert模型实现,将问题与线性化的表格作为模型的输入。输出包含了对表格的每一个单元格的预测,判断该单元格是答案或答案依据的可能性。起始的[CLS]对应的输出预测聚合操作,用于在候选单元格上推理得到答案。
匹配式方法类似于KBQA里的向量建模的方法,对问题和表格的片段(如特定的行、列)进行编码,再通过特定方法得到与问题相似度较高的表格片段,从表格片段中推理出答案。一个典型的匹配式方法是RCI模型,将问题与表格的所有行列进行匹配,选择得到相似度最高的行列,行列相交即得到答案所在的单元格。
综述
论文 | 备注 |
---|---|
A Survey on Table Question Answering: Recent Advances | 表格问答 |
Table Pre-training: A Survey on Model Architectures, Pre-training Objectives, and Downstream Tasks | 表格预训练(开拓思路) |
2020年以来的有关表格问答的论文(已排除数据集),收集包含表格作为问答数据源的相关论文(即包含部分混合数据)。
2020年之前的表格问答相关论文(已排除数据集)