介绍
结构化数据自然语言生成在很多应用中都是重要的研究领域,最近的数据驱动方法在自然语言生成领域已经取得了很好的表现。然而,大多数研究都关注于简单记录的浅层描述,比如,非常有限或固定模式下的属性值对,比如E2E。在真实世界的多行表格场景中,更需要的是从数据记录中推理出更高级别的逻辑并生成描述。例如,在下图中,人类读者会从中提取总结性的信息,而不是仅仅简单的陈述。为了实现如此具有高保真度的逻辑层面的文本生成,基于以下原因,只提供一个表格给真实世界的NLG系统不太合适:
- 低保真度。只提供表格,现如今的NLG系统很难生成带有正确逻辑的符号运算,如最大、最小、计数、平均等。
- 不可控制的内容选择。一个表可以生成的逻辑运算空间是指数级庞大的,因为各种运算可以进行组合。由于在成分生成过程中强加高级语义约束的困难,神经模型很难仅基于表来决定一个有效的、有利的逻辑选择。
为了解决上述问题,我们认为必须要利用中间的语义表达来达到可信的和可控的逻辑生成。为了这个目的,我们将逻辑层面的NLG任务形式化为logical form to text(逻辑化形式到文本)问题。特别地,我们还提供一个表达目标文本的语法的逻辑形式给NLG系统。通过分离逻辑形式和语言认识,我们保证了中间逻辑表的正确性,并且认知模块的挑战就转变为了语义理解问题。
为了利用这个方向的研究工作,我们提出了一个新的数据集Logic2Text,包含5.6k开放域的表格,10.8k人工标注的(逻辑表格,描述)对。我们的数据集就以下几个方面有很高的质量:(1) 自然流畅的表述。(2) 逻辑表格100%的执行准确率。在我们的数据集中,逻辑运算可以大致分为7类:计数(count)、最(superlative)、比较(comparative)、聚合(aggregation)、大多数(majority)、去重(unique)和排序(ordinal)。我们实现了一个python样式的程序作为逻辑表格,它可以轻松转换为其他类型的逻辑表格。相比于之前的浅层NLG数据集,我们的一个主要特色就是*灵活的逻辑表格模式,可以表达成多样的图结构。新数据产生了一个对模型能力的挑战:理解图表示的结构语义。
我们用一系列的流行的生成模型作为基线。(1)我们用全量数据训练模型并分析它们的效果。(2)我们在真实的用例中模拟低资源场景。实验结果表明,逻辑形式是获得高保真的关键。预训练模型表现超过了其他的基线(pointer-generator,graph2seq,transformer等),但是依然会产生事实和逻辑上的错误。
总的来说,我们的工作可以概括如下:
- 我们提出了一个新的大规模数据集,Logic2Text,其中的逻辑形式完善了文本描述,它还可以表现多样的图结构,也提高了语义理解的挑战性。
- 我们研究了若干种基线生成模型作为基线,在完全监督和zero-shot设置,也分析了它们的表现。
我们的数据集也可以反过来用,即从文本生成逻辑表格。
相关工作
从结构化数据或者知识中生成自然语言已经研究了很多年,也有很多应用,比如自动生成天气预报,体育报道,医学和健康报告,任务导向对话系统中的回答生成等。
传统方法通常使用一个管道基于包括内容选择、计划和表层认识的方法。最近的数据驱动方法趋向于将管道模块合并为一个端到端的神经网络。现在,大规模预训练模型已经在多种生成任务上达到了新的历史最好的成绩。陈等人表示,基于预训练模型的简单方法可以在WikiBio数据集上达到非常合理的表现。更近的一些工作开始关注于生成语言的保真度,他们的工作在浅层NLG上得到很好的效果。相反,我们的研究更关注于逻辑层面的保真语言生成。
一些流行的NLG数据集都是浅层生成。比如WeatherGov,WikiBio,ToTTo.RotoWire是一个更有挑战性的通过多行数据表格生成篮球比赛报告的数据集。但是报告依然局限于表面的表格记录描述,涉及到逻辑表述的非常少。Korn等人探索了通过有趣的superlative wikipedia表格生成有趣的琐事的任务。陈等人提出了一个从表格中推理生成任意句子的任务,他们的任务主要是为了探索目的,即测试神经模型仅基于表产生任何逻辑上正确的描述的能力。然而,正如我们在介绍中讨论的那样,由于低保真度,这样的任务公式还不适合构建真实世界的NLG系统。现在表现最好的模型仅获得了超过20%的基于人类评估的事实正确率,这与现实世界系统的可接受水平明显相去太远。
与我们相关的另一项工作是从句法或语义句子结构生成文本,如从CCG语法、UCG语法、AMR生成文本。我们的工作重点是在数据库样式表上执行的逻辑公式,以及表上的通用符号操作,如计数、最、比较。由于现在很多生产数据存储在基于表的数据库中,我们相信这样的数据集应该有助于构建基于表的数据的系统。
数据集构建
数据集Logic2Text来自于WikiTables,这是一个从*爬取的开放域表格数据集。我们筛选掉了过于复杂的表格,并且选取了有少于20行10列的表格子集。
在这个数据集中,我们开始用7中基础的逻辑运算来描述多行表格:计数、最、比较、聚合、主要、去重和排序。比如,对于计数运算定义是:基于表格中的某一列计算某些行的数量。所有运算的定义参考附录A。比较容易晕的一个特征我觉得是unique,它表示的是某一行的一个列的独特性,如“in opec 2012, angolawas the only country to join after 2000.”对于逻辑形式,我们使用python程序,函数集是(Chen et al., 2019a)的扩展。所有函数的定义请参见附录B。
我们的数据集用了三个阶段来构建:
- 描述构成和验证。
- 逻辑表格注释和派生。
- 逻辑表格执行和验证。
我们采用了先合成描述再衍生逻辑表格的工作流程,因为在这样的顺序下,注释者可以根据表格中有趣的事实合成自然描述,而这是通过自动枚举逻辑表格再重写模板难以实现的。
数据集统计与分析
我们粗略地按照8:1:1分割训练(8566)验证(1095)和测试(1095),三者没有交集表格。每个表格有1-3个不同逻辑类型的描述,因为逻辑表格表现了图结构,我们基于节点数量分析了逻辑表格的复杂度,逻辑表格最少有5个节点,最多超过14个节点,在不同的逻辑类型中,比较运算有最多的节点,因为它涉及到两个表格行的选择和操作。*操作、排序和unique大多数只关注于一行。计数、主体和聚合操作是最多行进行的总结操作,就逻辑表结构来说,他们三个是最相似的。
实验
基线模型
除了让逻辑表作为生成模型主要的输入,表格信息也对提供内容信息很关键。遵循着人类理解表格并生成句子的顺序,输入\(C\)被形式化为一个包含表格标题、表格头部、表格内容和逻辑表的序列。目标是预测一个序列\(w\)去最大化\(P(w | C)\):
\[w = \arg\max \prod P(w_t | w_{0:t-1},C) \]我们使用下列模型作为基线:
- 模板。我们对于每种逻辑操作都手动生成了基于逻辑表的模板。
- Seq2Seq+注意力。我们使用了一个包含注意力的seq2seq模型,输入句子是前几部分输入的拼接(逻辑表换成线性形式)。
- 指针生成器。为有注意力机制的seq2seq模型添加一个拷贝机制,允许解码器直接从输入复制单词,当输入中包含一些特定机构名或数字时,这种机制被证实对保真有相当大的重要性。
- Graph2seq+复制机制。用graph2seq模型来编码逻辑表,表格标题和表头首先传入seq2seq模型,然后图编码器编码逻辑表。同时我们也添加了复制机制。
- Transformer+复制机制。除了原始的Transformer结构,我们还添加了复制机制,其中最后一层隐藏层用于计算注意力分数和复制开关。我们还为不同的输入组件添加了分段嵌入。
- GPT-2。使用预先训练的模型作为初始化,然后根据特定任务的数据对模型进行微调。在这项工作中,我们使用生成预训练模型GPT-2作为我们的基线之一。
所有的极限模型我们都使用BPE编码。
全监督
我们使用BLEU-4(B-4), ROUGE-1, 2, 4, 和 L (F measure),在下表中显示结果。
通过比较指针生成器和seq2seq,没有预训练的模型中,复制机制有很大作用。这是因为我们数据集的表格和逻辑表中涉及到了很多事实信息,如实体名和数字。然而,没有复制机制的预训练模型GPT-2也可以准确预测事实项,阐释了大规模预训练的威力。
指针生成器的逻辑表输入是线性格式,相比于指针生成器,graph2seq+复制机制相对有一个微小的提升。transformer+复制机制表现更好,因为transformer架构本身就是一个将输入堪称全联通图且用自注意力机制聚合所有的邻居的图神经架构。最近的工作也表明了基于transformer的结构可以捕获层次语法结构和图形表示。
GPT-2模型在所有模型中性能最好,改进明显更大。作为一个带有Transformer结构的预训练语言模型,它结合了结构建模和语言建模的优势。
人工评估
最后,我们还进行了人工评估,结果如表所示。
逻辑表的重要性
在没有逻辑表的情况下,最佳表现模型获得的BLEU-4得分为20.17,基于人类对500个样本的评价,事实正确率为20.2%,然而我们的方法最好的模型成绩为82.4%。
部分组件的重要性
这一项实验删掉一部分输入,比较模型下降程度。
few-shot
实验结果表明,即使减少训练数据,预训练模型也能得到比一些其他模型在全部数据上训练更好的效果。