前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【NLP】ACL2020表格预训练工作速览

【NLP】ACL2020表格预训练工作速览

作者头像
yuquanle
发布2020-08-27 16:46:22
5.6K0
发布2020-08-27 16:46:22
举报
文章被收录于专栏:AI小白入门AI小白入门

作者:哈工大SCIR 潘名扬、窦隆绪

1. 简介

近年来预训练语言模型(BERT、ERNIE、GPT-3)迅速发展,促进了NLP领域各种任务上的进步,例如阅读理解、命名实体识别等任务。但是目前的这些预训练模型基本上都是在通用文本上进行训练的,在需要一些需要对结构化数据进行编码的任务上(如Text-to-SQL、Table-to-Text),需要同时对结构化的表格数据进行编码,如果直接采用现有的BERT等模型,就面临着编码文本与预训练文本形式不一致的问题。

本文将详细介绍两个表格预训练模型:TaBert和TaPas。他们分别是FAIR&CMU和Google在ACL2020上提出的,通过对结构化的表格数据和与之相关的自然语言句子进行的预训练,增强‘文本’与‘表格’两种多模态数据的对齐。在相关的表格语义解析任务上取得了显著的实验效果。

2. 下游任务介绍与分析:Text-to-SQL

在这里,我们给出Text-to-SQL任务一个相对正式的定义:在给定关系型数据库(或表)的前提下,由用户的提问生成相应的SQL查询语句。下图是一个具体的实例,问题为:有哪些系的教员平均工资高于总体平均值,请返回这些系的名字以及他们的平均工资值。可以看到该问题对应的SQL语句是很复杂的,并且有嵌套关系。

图1 Spider数据集的样例

面向表格的语义解析(如Text-to-SQL)不同于一般的问答任务,不仅需要编码通用文本(如:“哪个国家的GDP最高”),还需要编码结构化的数据(如:有关各国经济情况的若干表格)。其中一个关键的挑战是,如何理解数据库表格中的结构信息(如:数据库名称、数据类型、列名以及数据库中存储的值等),以及自然语言表达和数据库结构的关系(如:GDP可能指的是表中的“国民生产总值”一列)。

因此,有关这一任务的语义解析尝试学习自然语言描述和数据库的(半)结构化信息的联合表示。但是,在应用预训练模型时存在一些问题:1)数据库中的信息存在很强的结构关系,而预训练模型是用于编码自由形式的文本;2)数据库中可能包含大量的行和列,使用简单的语言模型对其进行编码是很困难的;3)语义解析是和特定领域相关的,解析器的结构和底层数据库的结构高度耦合。

3. TaBert(FAIR&CMU)

Pengcheng Yin等人提出了TaBert模型,它是一个用于联合理解自然语言描述和(半)结构化表格数据的与训练方法。TaBert在BERT之上进行构建,能够将表格结构线性化以适配基于Transformer的BERT模型。

图2 TaBert原理概览

3.1 自然语言描述和表格结构的表示

图2给出了TaBert的原理概览,给定自然语言描述u和表格T,模型首先从表中选取与描述最相关的几行作为数据库内容的快照,之后对其中的每一行进行线性化,并将线性化的表格和自然语言描述输入到Transformer中,输出编码后的单词向量和列值向量。随后编码后的每一所有行被送入垂直自注意力编码层(Vertical Self-Attention),一个列值(一个单词)通过计算同一列的值(同一单词)的垂直排列向量的自注意力得到。最终经过池化层得到单词和列的表示。

3.1.1 数据库内容的快照

由于表格可能包含大量的行,但是只有少数的几行与输入描述相关,对所有的行进行编码是没必要的同时也是难以计算的。因此TaBert使用只包含几行预描述最相关的“内容快照”,它提供了一个有效的方法,能够从列值计算出列的表示。

TaBert使用一个简单的策略来得到一个K行的内容快照。如果K>1,对表中的每一行与输入描述计算n-gram覆盖率,选取前K行作为快照。如果K=1,为了尽可能多的获得表中的信息,TaBert构建了一个合成行,每一列都是从对应列选取n-gram覆盖率最高的一个值,作为合成行这一列的值。这样做的动机是,与描述相关的值可能存在于多行中。

3.1.2 行的线性化

TaBert对内容快照中的每一行进行线性化,作为Transformer的输入。每一个值表示成三部分:列名、类型和单元值,中间使用“|”分割。如上图的B,R2行的2005就可以表示为:

对于一行来说,其线性化即为将所有的值进行连接,中间使用”[SEP]“进行分割。之后在前面链接自然语言描述,作为Transformer的输入序列。

3.1.3 垂直自注意力机制(Vertical Self-Attention)

TaBert中Transformer输出了每一行的编码结果,但是每一行是单独计算的,因此是相互独立的。为了使信息在不同行的表示中流动,TaBert给出了垂直自注意力,可以在不同行的相互对齐的向量中进行计算。

如图2(C)所示,TaBert有V个垂直堆叠的自注意力层。为了生成垂直注意力的对齐输入,首先对每个单元值计算固定长度的初始向量(对Transformer的输出向量进行平均池化)。接下来将自然语言描述的向量序列与初始化后的单元值向量进行连接。

垂直注意力与Transformer拥有相同的参数,但是是对垂直对齐的元素(自然语言描述中的同一个单词,同一列中的单元值)进行操作。这种垂直注意力机制能够聚合不同行中的信息,允许模型捕获单元值的跨行依赖关系。

3.1.4 自然语言描述和列的表示

每一列的表示:在最后一个垂直层中,将对齐的单元值向量进行平均池化,得到该列的表示。描述中每一个单词的表示也采用类似的方式进行计算。

3.2 预训练过程

3.2.1 训练数据

TaBert使用了从英文维基百科和WDC WebTable语料库中收集的表格和与其相邻的文本作为训练数据。预处理后的语料包含26.6M个表和自然语言句子。

3.2.2 无监督学习目标

TaBert使用不同的目标来学习上下文和结构化表的表示。对于自然语言上下文,使用遮蔽语言模型(MLM)目标,在句子中遮蔽15%的token。

对于列的表示,TaBert设计了两个学习目标

  1. 遮蔽列预测(Masked Column Prediction,MCP)目标使模型能够恢复被遮蔽的列名和数据类型。具体来说就是从输入表中随机选取20%的列,在每一行的线性化过程中遮蔽掉它们的名称和数据类型。给定一列的表示,训练模型使用多标签分类目标来预测其名称和类型。直观来说,MCP使模型能够从上下文中恢复列的信息。
  2. 单元值恢复(Cell Value Recovery,CVR)目标能够确保单元值信息能够在增加垂直注意力层之后能够得以保留。具体而言,在MCP目标中,列ci被遮蔽之后(单元值未被遮蔽),CVR通过这一列某一单元值的向量表示s<i, j>来恢复这一单元值的原始值。由于一个单元值可能包含多个token,TaBert使用了基于范围(span)的预测目标,即使用位置向量e_k和单元的表示s<i, j>作为一个两层网络的输入,来预测一个单元值的token。

3.3 应用示例:基于表格的语义解析

3.3.1 有监督的语义解析

基准数据集:Spider是一个Text-to-SQL数据集,包含10181条数据和超过200个数据库。每一条数据包括:一条描述、一个数据库(包含一个或多个表)、和一条标注的SQL语句。SQL语句通常需要连接多个表进行查询,比如:SELECT COUNT(*) FROM Country JOIN Lang ON Country.Code = Lang.CountryCode WHERE Name = 'Aruba' 。

语义解析器:TranX是一个开源的通用语义解析器,根据用户定义的语法,将自然语言描述翻译成中间表示,中间表示可以转换为特定领域的查询语言(如SQL)。作者使用TaBert作为编码部分,并且使用IRNet中的SemQL(可以理解为SQL的简化版本)作为底层的语法表示。

3.3.2 弱监督的语义解析

弱监督语义解析是指从其执行结果中推断出正确查询的强化学习任务。与有监督的语义解析相比,弱监督语义解析更具有挑战性。因为解析器无法直接获取正确的查询,必须在执行结果的奖励信号的指导下,在指数级的空间中进行搜索。

基准数据集:WikiTableQuestions是一个弱监督语义解析数据集,包含来自维基百科的22033条句子和2108个半结构化的网络表格。与Spider数据集相比,WikiTableQuestions并不涉及夺标的连接,但是需要对表中的一系列条目进行组合、多步推理。

语义解析器:MAPO是一个弱监督的语义解析模型,它将查询的搜索偏向于模型已经发现的高回报的查询,提高了增强算法的效率。MAPO使用一种专门针对单个表回答组合问题的特定于领域的查询语言。作者使用TaBert替换了其中的LSTM编码器部分。

3.4 实验

作者基于BERT_large和BERT_base训练了两个不同的版本:TaBert_large和TaBert_base。并且对比了不同内容快照大小的情况(K=1和K=3),同时与只使用BERT的情况进行对比(可以看作是没有进行与训练的K=1的情况)。

表1和表2展示了在WikiTableQuestion和Spider数据集上的端到端评价结果。可以看到,与现有的语义解析系统相比,使用TaBert作为问句和表格编码器的解析器更具有竞争力。

在WikiTableSQL数据集上,使用K=3的TaBert_large模型使MAPO得到增强,完全匹配准确率达到了52.3%,超过了之前最好的模型(46.9%)。

表1 WikiTableQuestion上的执行准确率

在Spider数据集上,解析器基于TranX构建,并使用和IRNet模型类似的SemQL语法,而TaBert具有更简单的解码器。有趣的是,可以观察到,只使用Bert_base的性能(61.8)与使用Bert增强的IRNet模型(61.9)性能相当。这说明了TaBert的基本解析器是一个有效的baseline。使用TaBert_large(K=3)/进行编码时,模型的准确率达到了65.2,比使用基本模型提升了2.8%,虽然排行榜上其他的系统拥有更复杂的模型,但是TaBert在开发集上的结果已经接近最佳提交(RyanSQL+Bert)的结果。这说明使用TaBert作为表示层可以得到更好的效果。

表2 Spider开发集上的精确匹配准确率

3.4.1 内容快照(content snapshot)的影响

TaBert使用内容快照来从数据库表格中获取与自然语言描述最相关的信息。因此作者实验了内容快照对数据库结构表示的影响(结果已包含在表1和表2中)。在不包含内容快照的设置下,列被表示为“列名 | 类型”而不包含单元值。可以看出,内容快照对于Bert和TaBert都是有效的,说明对列值进行编码有助于模型推断出描述中的实体和对应列之间的对齐。

此外,比较只用一个合成行的TaBert(K=1)和使用输入表中的多行的TaBert(K=3),后者的性能要更好一些。这表明,编码更多与输入句子相关的表的内容更有助于回答涉及多行信息推理的问题。

3.4.2 行线性化的影响

TaBert对表格进行线性化作为Transformer的输入,表3(上半部分)给出了不同线性化方法的效果,作者发现,添加类型信息和内容快照可以提高模型性能,因为他们提供了更多列的信息。

同时作者比较了现有的其他线性化方法(表3下半部分):Hwang等人使用Bert对连接的列名进行编码以学习列的表示,但是不编码单元值产生的性能较差。Chen等人提出了一种“自然”的线性化方法,来判断一个自然语言描述是否包含了表中列出的信息。

表3 不同线性化方式的性能

3.4.3 预训练目标的影响

TaBert使用了两个预训练目标:遮蔽列预测(MCP)和单元值恢复(CVR)。表4给出了不同的预训练目标下TaBert的性能。可以看出,使用CVR来辅助MCP得到了略微的提升,这表明CVR可以使列的表示在附加单元值的情况下更具有代表性。

表4 TaBert_base(K=3) 在不同与训练目标下的性能

3.5 小结与未来工作

TaBert是一个用于联合理解文本和表格数据的与训练编码器。实验结果显示,使用TaBert作为特征表示在两个数据集上取得了较好的结果。这也为未来的工作开辟了道路。

首先作者计划在其他涉及对文本和表格联合推理的相关任务上添加TaBert。其次,探索其他的表线性化策略,提升与训练语料库的质量,提出新的无监督目标。最后,将TaBert扩展到跨语言的设置下(使用外语的描述和英语的结构数据),并且使用更高级的语义相似性度量来创建内容快照。

4. TaPas(Google)

Jonathan Herzig等人提出的TaPas,是一种不需要生成逻辑表达式,直接通过表格回答问题的方法。TaPas从弱监督中得到训练,并通过选择表格单元格和选择性地应用相应的聚合运算符来预测结果。TaPas扩展了BERT的结构,使用从Wikipedia爬取的表格和文本片段进行预训练,并且是TaPas端到端的模型。

4.1 TaPas模型

TaPas的结构(如图3)基于BERT编码器,并添加了额外的位置embedding用于编码表的结构。该模型首先将表格平铺成单词序列,并将单词分割成wordpiece(token),并将其连接到问题token之后。此外模型还添加了两个分类层,用于选择单元格和对单元格进行操作的聚合操作符。

图3 TaPas模型(下)、单元值预测(右上)和集合操作预测(左上)

4.1.1 附加的Embedding

在被送入模型之前,token embedding需要与位置embedding进行结合,模型试用了一下位置embedding:

  • 位置ID:token在序列中的索引(与BERT相同)
  • 片段ID:有两个值:0表示描述,1表示表头和单元值
  • 列、行ID:列、行的索引值。0表示自然语言描述
  • 序数ID:如果一列的值可以被转换为浮点数或日期,就将它们进行排序,基于它们的叙述给定对应的embedding(0表示无法比较,1表示最小,以此类推)
  • 历史答案:在多轮对话的设置中,当前问题可能指示了之前问题或者其答案,于是添加了一个特殊标记:如果该token为前一问题的答案则为1,否则为0。

图4 TaPas编码示例

4.1.2 单元格选取

分类层选取表中单元值的一个子集。由于还可能存在聚合操作,这些单元值可以是最终答案,也可以是用于计算最终答案的输入。每个单元值被建模为伯努利分布,首先计算每个token的logit值,随后计算单元内所有token的logit的平均值作为当前单元的logit值。然后选取所有概率大于0.5的单元格。

此外作者发现,在单一列中选取单元值可以起到一定作用。模型添加了一个分类变量来选取正确的列,通过计算一列中所有单元值的平均值embedding,经过一个线性层得到该列的logit值。此外还添加了一个单独的列,表示不选取任何单元格。

4.1.3 聚合操作预测

语义解析任务通常需要对表格进行推理,如求和、计算平均值等。为了在不生成逻辑形式的情况下处理这些情况,TaPas需要对预测的单元值给定一个聚合操作符。操作符由一个线性层选择,在第一个token的最后一层应用softmax得到选取每一中操作符的概率。

4.2 预训练

作者从维基百科中提取了620万条表格和文本数据,包括330万个infobox和290万个WikiTable。并且只考虑少于500个单元格的表。类似于TaBert,TaPas也采用了MLM(masked language model)作为预训练目标。同时还尝试添加了另一个训练目标:判断表格是否符合文本描述,但是发现对于我们的任务并没有提升。

为了提升训练效率,TaPas将序列的长度控制在一定范围以内。为了适应这一点作者在进行预训练时,从描述中随机选取8~16个单词的文本片段。对于表,首先添加每个列和单元格的第一个单词,然后逐渐添加单词知道达到最大序列长度。为每个表生成10个这样的序列。

图5 一个表格(左)和与之相关的问题示例(右,最后一个问题是上下文关联的)

4.3 Fine-tuning

首先给出弱监督语义解析的形式化定义:对于训练集

\left\{\left(x_{i}, T_{i}, y_{i}\right)\right\}_{i=1}^{N}

,其中

x_i

表示自然语言描述,

T_i

表示表格,

y_i

表示与之相关的正确答案。模型的目标是从自然语言描述

x

映射到一段程序

z

,可以在表格

T

上执行,并得到正确答案

y

。其中,

z

包括表中单元格的子集和一个可选的聚合操作符,表T将单元格映射到它对应的值。

在预处理过程中,y被表示为一个元组(C, s)其中C表示单元格的集合,s为一个数值。如果正确答案答案是直接选取单元格,那么s不会出现,此时训练模型去选择对应的单元格;否则,C就为空,s出现,此时训练模型预测聚合操作得到s。

接下来对这两种境况分别进行讨论:

4.3.1 单元值选取 (无聚合操作)

这种只选取单元格的情况下,y就是单元格的集合C。模型首先预测一个单独的列,然后只从该列中选取单元值。在训练时,列选取的是正确答案中单元值出现次数最多的列。对于模型所采用的数据集来说,C都是包含在同一列中的,因此这起到了很好的效果。

训练模型去选取某一列中的值,loss的计算分为3部分:

  1. 选择列的平均交叉熵损失:
\mathcal{J}_{\text {columns }}=\frac{1}{\mid \text { Columns } \mid} \sum\limits_{\text {co}\in\text{Columns }} \operatorname{CE}\left(p_{\text {col }}^{(\text {co })}, \mathbb{1}_{\text {co=col }}\right)
\operatorname{CE}

为交叉熵loss,

\mathbb{1}

为指示函数

  1. 列中单元格选择的平均交叉熵损失:
\mathcal{J}_{\text {cells }}=\frac{1}{|\operatorname{Cells}(\operatorname{col})|} \sum_{c \in \text { Cells }(\text { col })} \operatorname{CE}\left(p_{\mathrm{s}}^{(c)}, \mathbb{1}_{c \in C}\right)
\text { Cells }(\text { col })

表示col列中的所有单元格

  1. 对于不适用聚合操作的情况,定义聚合操作为None(赋值给
op_0

),集合操作loss为:

\mathcal{J}_{\mathrm{aggr}}=-\log p_{\mathrm{a}}\left(o p_{0}\right)

最终求和得到总的loss:

\mathcal{J}_{\mathrm{CS}}=\mathcal{J}_{\text {columns }}+\mathcal{J}_{\text {cells }}+\alpha \mathcal{J}_{\text {aggr }}

,

\alpha

为标准化超参数。

4.3.2 数值型答案(带聚合操作)

这种情况下,y是没有出现在表格中的一个单独的数值。这通常需要对一个或多个单元格进行聚合操作得到。但是我们无法直接从答案中推断出要选取的单元格和聚合操作。

模型的训练可以采用直接搜索程序(单元格集合和聚合操作)的方式,但是随着表中单元格数量的增多,伪程序(选取的单元格和聚合操作不符合描述但是得到的结果与正确答案一致)的数量也会随之增加。

表5 聚合操作符的概率估计实现

TaPas采用了一种训练策略,无须对正确的单元格和聚合操作进行搜索。模型为每一个操作符实现了一个软可微的估计(如表5所示,给定token选取的概率和单元格的值就可以计算得到)。得到所有可能的聚合操作的估计之后,就可以计算出预测的结果:

s_{\text {pred }}=\sum_{i=1} \hat{p}_{\mathrm{a}}\left(o p_{i}\right) \cdot \operatorname{compute}\left(o p_{i}, p_{\mathrm{s}}, T\right)

其中

\hat{p}_{\mathrm{a}}\left(o p_{i}\right)=\frac{p_{\mathrm{a}}\left(o p_{i}\right)}{\sum_{i=1} p_{\mathrm{a}}\left(o p_{i}\right)}

是除了None之外的聚合操作的概率分布。

数值型答案的loss可以由以下公式给出:

\mathcal{J}_{\text {scalar }}=\left\{\begin{array}{ll}0.5 \cdot a^{2} & a \leq \delta \\ \delta \cdot a-0.5 \cdot \delta^{2} & \text { otherwise }\end{array}\right.

其中,

a=\left|s_{\text {pred }}-s\right|

\delta

是超参数。作者发现这个损失函数比平方损失函数更稳定。此外,对于没有选取聚合操作的情况也给出了一个惩罚项:

\mathcal{J}_{\mathrm{aggr}}=-\log \left(\sum_{i=1} p_{\mathrm{a}}\left(o p_{i}\right)\right)

最终得到数值型答案的总loss:

\mathcal{J}_{\mathrm{SA}}=\mathcal{J}_{\mathrm{aggr}}+\beta \mathcal{J}_{\mathrm{scalar}}

,其中

\beta

为标准化超参数。

4.3.3 有歧义的答案

如果一个答案是数值型的,并且同时存在于表格中,则以上两种情况是都有可能出现的。这种情况下模型动态的选择使用哪一种策略。具体而言就是设定一个超参数阈值

S

0 < S < 1

,当

p_{\mathrm{a}}\left(o p_{0}\right) \geq S

时就选择第一种策略,反之就选择第二种。对于伪程序,模型选择可能性最大的一个作为正确结果。

4.4 实验

4.4.1 数据集

实验中使用了一下三种单表推理的语义解析数据集(如表6):

表6 数据集信息

4.4.2 实验配置

作者使用标准的BERT tokenizer对问题、单元格、表头进行分词。并且使用相同的包含32k word piece 单词表。模型在BERT-large基础上进行预训练,使用了32个云TPU核心进行预训练(最大序列长度为512)和微调,在这种配置下预训练大约需要3天,微调需要10小时(WikiTQ、WikiSQL)或20小时(SQA)左右。

在微调阶段,在WIkiTQ、WikiSQL数据集上作者使用了黑盒贝叶斯优化器,SQA数据集上则使用网格搜索(grid-search)。

4.4.3 实验结果

所有结果报告了弱监督训练下的denotation准确率,为5此独立运行的中位数。

表7和表8显示了WikiSQL和WikiTQ的结果。表6表明,在弱监督的设置中,TaPas为WikiSQL实现了最接近最优模型的性能(83.6 vs 83.9)。给定标准的聚合操作和单元格(从SQL语句中提取)后,使之成为有监督的训练,性能可以达到86.4。与SQL语句相比,这种监督信号可以由非专业人士给出。

表7 WikiSQL的准确率

对于WikiTQ,仅使用原始数据就达到了42.6的准确率。在使用WikiSQL或SQA进行预训练之后,准确率可以达到48.7和48.8。

表8 WikiTQ的准确率

对于SQA,表9显示了TaPas在所有的指标上都有了实质性的改进,所有指标提高了至少11个百分点。序列准确率从28.1提高到40.4,平均问题准确率从55.1提高到了67.2。

表9 SQA测试集结果(ALL为平均问题的准确率,SEQ为序列准确率、QX为第X问题的准确率)

表10展示了删除不同embedding之后在不同数据集上的效果。可以看出,在所有的数据集上,表、行、列的embedding都起到了重要的作用,位置和序数embedding也起到了一定作用但是效果提升较小。

表10 删除不同的embedding后,在开发集上的准确率(模型未进行预训练,使用了原始的BERT模型,没有聚合操作的模型只训练了单元格选择损失)

此外作者发现,当删除掉聚合loss之后,TaPas在每个数据集上效果都有所下降。WikiTQ准确率从29.0降到23.1,WikiSQL从84.7降到82.6。由于WikiSQL中大部分用不到聚合操作,所以效果下降的不是很明显。大概有17%的数据包含聚合操作,但是超过98%的聚合操作都是应用在0个或1个单元格上的。这意味着SUM和AVERAGE操作,可以通过直接选择一个单元格来作为回答。对于COUNT操作来说,去掉聚合操作准确率从66.5下降到了28.2。

4.4.4 WikiTQ上的定性分析

通过手动分析WikiTQ上的预测发现,聚合操作预测正确的情况下,有96%的单元格预测也是正确的。预测正确的聚合操作中有14%是只选取一个单元格,并且可以直接从表中选取而不进行聚合。

通过错误分析发现了以下的特殊现象:

  • 12%左右的数据存在多个答案(“Name at least two labels that released the group’s albums.”)、标签错误或信息缺失
  • 10%的数据需要进行复杂的时间比较,而且也复发通过SQL语句等形式进行解析(“what country had the most cities founded in the 1830’s ?”)
  • 16%的标准答案中的文本类型的值未出现在表格中,需要对其执行字符串操作。
  • 10%的表格过大,超过了512的序列长度限制
  • 13%的数据没有选择任何单元格,需要对这种行为进行惩罚
  • 2%的情况,答案是两个数值之间的差,是模型所处理不了的(“how long did anne churchill/spencer live?”))

4.4.5 预训练分析

为了理解TaPas在预训练阶段学到了什么,作者分析了10000条留存数据(hold-out data,这些数据并不出现在训练集当中)的表现。表11显示了遮蔽word piece 在不同位置、不同类型时的准确率。可以发现,跨位置的平均准确率相对较高(71.4),而且预测表头中的token是最容易的(96.6),也许是因为很多维基百科的文章使用了相同类型的表。预测单元格中的token(63.4)要比预测文本中的token(69.8)更困难一些。而且对单词(74.1)和数字(53.9)的预测差别是非常大的。这其实也在预料之内,因为数字是非常具体的,而且很难概括。

表11 Mask LM的准确率

4.4.6 局限性

TaPas将单个表作为上下文进行处理,而且限制了最大序列长度。因此TaPas无法处理非常大的表和多个表的数据库。这就需要对多表进行过滤和压缩,只对相关的内容进行编码,这是后续需要进行的工作。

TaPas尽管可以处理组合的操作(如图5的问题2),但是仅限于对一个表单元格子集上的聚合,无法处理具有多个聚合操作的结构(比如:给出参与者平均分大于4的人数)。尽管存在这一限制,TaPas仍然在3个数据集上取得了不错的效果,而且并没有遇到类似的错误。这说明语义解析数据集在组合性上还是存在局限性。

4.5 小结

TaPas作为一个弱监督的语义解析模型,避免了生成逻辑彪马,并且有效地训练了大规模的“文本-表格”对的数据,成功预测了被遮蔽的词和单元格。模型可以仅使用弱监督的方法,在语义解析数据集上进行微调。实验结果显示,与优秀的语义解析模型相比,TaPas具有更好或更有竞争力的效果。

5. 模型对比与未来工作

TaBert和TaPas虽然在相关任务上取得了很大的进度,但是提供的还都是单表格context,对于一些复杂的任务,需要同时编码多个表格,未来的工作可以1)在multi-table context进行探索 2)提高用于预训练的表格及描述的质量 3)探索更多的无监督预训练目标函数 4)在更多的与表格相关的任务上,如表格描述生成(table-to-text)做探索。

参考资料

[1]

TABERT: Pretraining for Joint Understanding of Textual and Tabular Data.

[2]

TAPAS: Weakly Supervised Table Parsing via Pre-training.

[3]

Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Task.

本期责任编辑:丁 效

本期编辑:顾宇轩

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI小白入门 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作者:哈工大SCIR 潘名扬、窦隆绪
  • 1. 简介
  • 2. 下游任务介绍与分析:Text-to-SQL
  • 3. TaBert(FAIR&CMU)
    • 3.1 自然语言描述和表格结构的表示
      • 3.1.1 数据库内容的快照
      • 3.1.2 行的线性化
      • 3.1.3 垂直自注意力机制(Vertical Self-Attention)
      • 3.1.4 自然语言描述和列的表示
    • 3.2 预训练过程
      • 3.2.1 训练数据
      • 3.2.2 无监督学习目标
    • 3.3 应用示例:基于表格的语义解析
      • 3.3.1 有监督的语义解析
      • 3.3.2 弱监督的语义解析
    • 3.4 实验
      • 3.4.1 内容快照(content snapshot)的影响
      • 3.4.2 行线性化的影响
  • 4. TaPas(Google)
    • 4.1 TaPas模型
      • 4.1.1 附加的Embedding
      • 4.1.2 单元格选取
      • 4.1.3 聚合操作预测
    • 4.2 预训练
      • 4.3 Fine-tuning
        • 4.3.1 单元值选取 (无聚合操作)
        • 4.3.2 数值型答案(带聚合操作)
        • 4.3.3 有歧义的答案
      • 4.4 实验
        • 4.4.1 数据集
        • 4.4.2 实验配置
        • 4.4.3 实验结果
        • 4.4.4 WikiTQ上的定性分析
        • 4.4.5 预训练分析
        • 4.4.6 局限性
      • 4.5 小结
        • 参考资料
    • 5. 模型对比与未来工作
    相关产品与服务
    NLP 服务
    NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档