Giter VIP home page Giter VIP logo

logicnlg's Introduction

基于类型控制的三阶段逻辑Table-to-Text生成

Abstract

Table-to-Text生成是希望将表格中的信息用文字进行表述。考虑到陈述的精简性以及逻辑性,衍生出逻辑Table-to-Text生成这一任务。逻辑Table-to-Text生成是希望基于表格生成逻辑忠实且流畅的文本。但是目前针对该任务的研究较少,相关生成模型的效果也不理想,这就使得该任务仍然具有很大的挑战性。在本文中,我们提出了一种符合人类生成逻辑文本思维的三阶段生成模型,在由表格生成表面事实文本的基础上,先生成粗模板,再生成逻辑文本。同时为了增强由相同表格输入生成不同逻辑类型文本的合理性,我们提出了将参考文本的逻辑类型作为已知前提,同表格及表格标题一起进行输入,以生成相似度更高的文本。在LogicNLG数据集上的实验表明,这两种**都有其有效性,模型在整体上优于基线模型。将两种**结合起来进行实验,模型整体效果更好,特别是在文本相似度方面有较大的提升。

1 Introduction

Table-to-text (T2T) 生成是自然语言生成(NLG)任务中的其中一个分支,是希望将表格中的信息用文字进行表述。该任务在现实场景中有诸多应用,包括生成NBA比赛结果解说、生成天气预报、生成人物介绍等。

目前大多数针对Table-to-text的数据集,其生成的参考文本比较简单,一般只是陈述表面事实,并没有关注逻辑推理方面,比如WeatherGOV[1]、WikiBio[2]、RotoWire[3]数据集。同时大多数数据集只针对某一特定领域,比如WeatherGOV针对天气领域,WikiBio针对人物传记领域,而RotoWire针对NBA领域。针对这一现象,chen等人[4]提出了一个新的开领域数据集LogicNLG。伴随着这个数据集还提出了一个新的自然语言生成任务逻辑Table-to-Text,旨在从表格中捕获复杂的逻辑推理和数值操作,生成逻辑忠实且流畅的文本。但是由于表格中没有显式地展示出参考文本的逻辑信息,这也就使得该任务需要模型学习表格中隐藏的逻辑信息,从而让逻辑Table-to-Text生成面临着极大的挑战。

针对这一任务,数据集作者提出了由粗到细生成的方法,即先生成一个决定全局逻辑结构的句子,再根据这个模板生成最终的句子。这种方法减轻了序列顺序与逻辑顺序之间不匹配的问题。但是对于一个人来说,要从一个表中获得逻辑信息,并不是直接由表得到最终的句子,而是首先得到表面事实信息,之后再由这些信息进行逻辑推理才得到最终的句子。就比如图1 中,我们会先得到“Canada obtained 3 gold medals”以及“Mexico obtained 2 gold medals”这样的表面事实信息,再进行比较推理得到句子“ Canada obtained 1 more gold medal than Mexico”。所以表面事实信息应该被利用起来,为后续的生成提供更多的依据。基于这种想法,本文提出了一个三阶段生成的模型,先由表格生成表面事实,再通过生成粗模板,最终生成逻辑文本,使模型更加符合人类思维。

这里还要考虑一个问题,针对相同的输入,我们如何确定要生成哪种逻辑类型的句子呢?比如说图1逻辑自然语言生成中的两个句子,同样给出了表格中的前两列信息,第一个句子生成的是“Canada obtained 1 more gold medal than Mexico”,是进行比较推理的,第二个句子生成的是“Canada obtained the most gold medals in the game”,是进行最高级推理的。这两个句子的逻辑类型完全不同。在没有其他提示的情况下,由相同的输入生成两个完全不同的句子就有点勉强。而chen等人[4]在论文中并没有考虑到这一点。所以本文进一步提出了增加逻辑类型前提的**,希望模型能够在逻辑类型的指引下生成对应的句子。

总结,我们的贡献在两个方面:

  • 我们首先提出了一个三阶段生成的思路。模仿人类思维,基于表格的表面事实,通过粗模板生成逻辑文本。并验证了其的有效性。
  • 我们提出将句子逻辑类型作为已知前提,增强由表格生成对应逻辑类型句子的合理性,从而让模型学习更多知识,以生成相似度更高的句子。并通过实验验证了其的有效性。

图1:Table-to-Text生成示例。包含表面事实生成以及逻辑自然语言生成。逻辑自然语言生成中的第一个句子可以由表面事实生成中的第一和第二个句子推理得到;而第二个句子可以由第一和第三个句子推理得到。

2 Related Work

表面事实生成:

目前table-to-text任务大部分工作集中在生成表面事实的文本上,所以也衍生出一些针对表面生成的NLG数据集。比如WeatherGOV[1]、WikiBio[2]、RotoWire[3]、ToTTo[5]等数据集。为解决表面事实生成,一些论文引入了内容选择和文本规划来改进生成句子的效果。比如针对RotoWire数据集,Li等人[6]提出了两个辅助任务,帮助捕获记录之间的大小关系以及相对重要性关系,以此来选择表格中更加重要的信息进行文本生成。而Stent等人[7]关注的是文本规划方法,通过生成多种句子计划树,(使用RankBoost算法进行排名,)选择排名更高的计划树来生成更加连贯的句子。除此之外,一些论文为了能够更好的捕获表格相关单元格之间的关系,将表格的结构通过建图等方式显式地表示出来。比如部分论文[8-10]从行级别和列级别对表格结构进行表示,最后利用双重注意力解码器来生成最终的句子。Li等人[6]延续了这种**,不同的是行级别的重要性关系与列级别的大小关系相关。而Gong等人[11]在此基础上引入表格的历史数据,从行、列和时间三个维度对表格进行表示。

逻辑文本生成:

表面事实生成得到的句子大多是表面事实,不含有逻辑推理。最近便衍生出逻辑文本生成的任务。针对这一任务的数据集包括LogicNLG[4]、Logic2Text[12]。(其中LogicNLG数据集完成基于表格生成逻辑文本的任务,而Logic2Text数据集是基于表格以及逻辑形式生成逻辑形式对应的描述句子。)伴随着LogicNLG数据集,Chen等人提出了由粗到细生成的方法,即先生成一个决定全局逻辑结构的模板,再根据这个模板生成最终的句子。之后Chen等人[13]又提出了一种去混淆的基于条件变分的编码解码器。而Perlitz等人[14]专注于生成逻辑文本的多样性(,通过逻辑类型控制来增强句子的多样性)。目前针对Logic2Text数据集的研究[16-17]主要集中在将逻辑形式转化为文本上。而Liu等人[18]提出了一个预先训练的逻辑形式生成器,通过表-逻辑对学习逻辑推理知识,从而生成更加忠实的文本。

3 Method

3.1 三阶段生成模型

3.1.1 陈述分解

这一部分主要是对数据集中的陈述进行分解,使其成为一些描述表格中表面事实的句子,并用最终的结果扩充数据集。最终这些结果会像数据集中的粗模板一样,在训练期间被使用。具体分解步骤如下所示。

**分解类型检测。**我们首先使用Yang等人[19]在论文中给出的分解数据集对基于BERT[20]的五路分类器进行微调。之后对LogicNLG数据集中的陈述,使用已训练的分类器来判断陈述属于四种分解类型(conjunction, comparative, superlative, uniqueness)中的哪一种。由于部分陈述无法分解,所以在四种分解类型之外又添加了一个类别,表示该陈述无法分解。这样只有没有被赋予该类别的陈述才会继续进行下面的步骤。

**陈述分解模型。**我们使用Yang等人[19]提出的分解数据集微调T5[21]模型(,使其用于陈述分解)。具体来说,给定陈述S,分解类型t以及分解后的句子D,我们训练T5模型使$$log\ p_\theta(D|S,t)$$最大化。对于分解类型,在训练时提供的是实际的分解类型t,而在测试时提供的是模型预测的分解类型$$\hat{t}$$。如果本次分解得到的子语句还不是表面事实,即还可以进一步分解,可以将该子语句重新输入到分解模型中。

**解决子问题。**按照Yang等人给出的分解模板可以看出,经过上述步骤得到的子语句有一部分是问题,因为问题的具体答案不可能只通过陈述分解就可以得到。为了得到子问题的答案,我们可以将该任务转化为表格问答任务。我们使用用于表格事实验证及表格问答任务的表格预训练模型TAPAS[22],来获取子问题的答案。为了方便,我们直接使用在WikiTableQuestions数据集[23]上已经微调好的TAPAS模型。得到子问题答案后,将子问题与答案进行组合,得到最终的分解语句。

**扩充数据集。**经过上面三个步骤后得到的分解语句,我们将其扩充到原有数据集中,方便后续三阶段生成模型训练时进行提取使用。

3.1.2 三阶段生成模型

在数据集作者提出的由粗到细生成方法的基础上,我们模仿人类思维,提出三阶段生成模型。首先由表格得到表面事实信息,再由这些信息进行逻辑推理,通过先生成粗模板,得到最终的句子。具体每阶段的任务如下所示。

表格线性化 我们遵循Chen等人[24]提出的表格线性化的方法,使用模板将表格线性化为自然语言。具体来说,如图2左方所示,按$$T_{1,1}\to T_{1,C_T}\to T_{R_T,C_T}$$顺序对表格各单元格进行水平扫描,其中$$C_T$$表示表格的列数,$$R_T$$表示表格的行数。然后按照模板将表格标题及各单元格连接为一段文本$$P_T=\alpha_1,\cdots,\alpha_{|T|}$$。其中$$\alpha_i$$表示表格线性化为文本$$P_T$$中的第i个单词,其为表格中的单词或者模板中的固定单词,而$$|T|$$表示文本$$P_T$$的总长度。

Stage 1:生成表面事实 如图2所示,在这一阶段,我们使用表格线性化后的文本$$P_T$$作为输入,训练GPT-2模型[25],使其生成简单语句$$Y_1$$,即3.1.1得到的分解语句。在该过程中我们最大化$$p(Y_1|P_T;\beta)$$,其中$$\beta$$表示GPT-2模型的参数。

Stage 2:生成粗模板 如图2所示,在这一阶段,我们继续使用表格线性化后的文本$$P_T$$作为输入,在第一阶段已训练的GPT-2模型的基础上继续训练,使其在生成简单语句$$Y_1$$的基础上生成粗模板$$Y_2$$。在该过程中最大化$$p(Y_2|P_T;\beta)$$。

Stage 3:生成逻辑文本 如图2所示,在这一阶段,我们继续使用表格线性化后的文本$$P_T$$作为输入,在第二阶段已训练的GPT-2模型的基础上继续训练,使其在生成粗模板$$Y_2$$的基础上生成最终的逻辑语句$$Y$$。在该过程中最大化$$p(\widetilde Y|P_T;\beta)$$,其中$$\widetilde Y=[Y_2;[\rm SEP];Y]$$。

图2:三阶段生成模型,其中表格的细节展示在图1中。

3.2 逻辑类型控制的文本生成

3.2.1 文本逻辑类型分类器

为了使用LogicNLG数据集进行逻辑类型控制的文本生成,我们需要让逻辑类型信息作为像表格标题一样的已知信息输入生成模型中,所以我们要将逻辑类型信息扩充到数据集中。因此,我们使用基于BERT[20]的七路分类器对LogicNLG数据集中的陈述进行逻辑类型的分类,判断陈述属于七种逻辑类型( count, superlative, comparative, aggregation, majority, unique, and ordinal)中的哪一种,并将结果扩充到原本的数据集中。该分类器需要在Logic2Text训练集提取出的(sent,action)对上进行微调。

3.2.2 逻辑类型控制的文本生成模型

如图3所示,在模型的输入表示中,我们使用上面已经扩充好的数据集,将表格、表格标题以及逻辑类型进行连接。具体表示如下:“Given the table title of {} . In row {} , the {} is {} , ... . Given the logic type : {} .”。然后对基于GPT-2的生成模型进行训练,使生成的文本与数据集中的参考文本之间的交叉熵最小。

图3:逻辑类型控制的文本生成模型。根据表格、表格标题及逻辑类型分类器预测的逻辑类型生成逻辑文本。

4 Experiments

4.1 Datasets

在实验中我们使用的数据集为LogicNLG数据集[4],在三阶段生成模型中还用到了Yang等人[19]在论文中给出的分解数据集,而在逻辑类型控制的文本生成中用到了Logic2Text数据集[12]。LogicNLG数据集是选取Tabfact数据集[24]中的较为复杂的肯定陈述作为目标文本。(得到的数据集中一个表格对应了多个逻辑推理文本。)由于Tabfact数据集中的复杂陈述包含了丰富的逻辑推理,所以由其得到的LogicNLG数据集也包含了丰富的逻辑推理。分解数据集是Yang等人基于陈述的程序结构通过分解模板手动得到的伪数据集。而Logic2Text数据集则是提供了陈述的逻辑形式,在本实验中只用到了数据集中的陈述及其对应的逻辑类型。

4.2 评估指标

在本实验中,我们遵循Chen等人[4]的工作,对模型的语句相似性和逻辑保真度进行评估。针对语句相似性评估,我们使用句子水平的BLEU-1,2,3分数进行评估。针对逻辑保真度评估,我们依然采用三个度量标准,包括基于语义解析的评估标准SP-Acc,基于Chen等人[24]提出的NLI模型的评估标准NLI-Acc,以及对抗性评估标准Adv-Acc。具体的评估分数是使用Chen等人[4]发布的代码计算得到的。

4.3 实验设置

我们在逻辑类型分类的实验中使用BERT的基础模型,设置学习率为1e-5,模型被训练了20个epoch。在语句分解实验中,分类器的设置与上述相同,而生成模型使用的是基础的T5模型,学习率设置为2e-5,模型训练的epoch为5。在表格生成文本实验中使用了与Chen等人[4]实验中相同的参数设置,最终的模型对比只进行了基础GPT-2模型的对比,不再对medium大小的GPT-2模型进行训练对比。

4.4 实验结果

表1展示了逻辑类型控制的文本生成模型的性能,而表2展示了在LogicNLG数据集上不同模型的性能,两者都比较了模型在语句相似性与逻辑保真度两个方面的性能。

从表1中可以看出,分别在基线模型GPT和GPT-Coarse-to-Fine的基础上进行逻辑类型控制生成的实验,均在一些评估标准上得到了提升。具体而言,与GPT基线模型相比,添加逻辑类型控制使得模型将BLEU-1、BLEU-2、BLEU-3、NLI-Acc和Adv-Acc的得分提高了2.2、3.0、2.7、5.0和1.0分。而与GPT-Coarse-to-Fine基线模型相比,也将BLEU-1、BLEU-2和BLEU-3的得分提高了2.4、2.7和2.0分。结果表明,对模型进行逻辑类型控制生成是有一定效果的,可能是添加了逻辑类型的提示,使得模型学习到的知识更多,从而让模型在生成句子时更倾向于生成对应逻辑类型的句子,提高BLEU分数。

在表2中,我们在GPT-Coarse-to-Fine基线模型的基础上进行三阶段生成,然后在三阶段生成模型的基础上进行逻辑类型控制生成,然后对这几个模型的效果进行对比。从表中可以看出,三阶段生成模型在GPT-Coarse-to-Fine模型的基础上有一定的提升,而加入了逻辑类型控制的三阶段生成模型提升幅度更大。具体而言,GPT-type-3Stage模型比GPT-Coarse-to-Fine模型分别在BLEU-1、BLEU-2、BLEU-3和SP-Acc分数上高出了3.7、3.6、2.7和1.2分,同时在NLI-Acc和Adv-Acc分数上降低不超过0.6分。结果表明,基于表面事实的三阶段生成模型有一定的效果,而对模型同时进行逻辑类型控制以及三阶段生成,提升的效果更好。由于三阶段生成模型在原有的两阶段生成上又增加了一个阶段,相当于将逻辑生成的过程进一步细分。这也就使得在第一个阶段模型生成句子偏差较大的情况下,能够通过后面两个阶段对模型进行一定的纠正。所以模型整体上能够提高生成句子的相似度。但是考虑到模型纠正的幅度不会很大,所以模型提升的不会很多。同时由于第一个阶段参考生成的表面事实句子不是人工操作的,其保真度会有一定的折损,所以以此得到的逻辑句子的保真度也会有一定的影响。

表1:在LogicNLG数据集上的逻辑类型控制的文本生成模型与基线模型的实验结果,比较了原文中的基线模型GPT和GPT-Coarse-to-Fine分别进行逻辑类型控制生成的实验结果,其中所有的预训练均基于基础GPT-2模型。

Model BLEU-1 BLEU-2 BLEU-3 SP-Acc NLI-Acc Adv-Acc
GPT 48.8 27.1 12.6 42.1 68.7 62.3
GPT-type 51.0 30.1 15.3 40.8 73.7 63.3
GPT-Coarse-to-Fine 46.6 26.8 13.3 42.7 72.2 64.9
GPT-type-Coarse-to-Fine 49.0 29.5 15.3 41.0 72.1 64.2

表2:在LogicNLG数据集上的不同模型的实验结果,其中所有的预训练均基于基础GPT-2模型。

Model BLEU-1 BLEU-2 BLEU-3 SP-Acc NLI-Acc Adv-Acc
GPT-Coarse-to-Fine 46.6 26.8 13.3 42.7 72.2 64.9
GPT-type-Coarse-to-Fine 49.0 29.5 15.3 41.0 72.1 64.2
GPT-3Stage 47.2 27.4 13.9 44.6 69.6 64.7
GPT-type-3Stage 50.3 30.4 16.0 43.9 71.6 64.7

5 Conclusions

在本文中,我们提出了一种基于逻辑类型控制的三阶段逻辑Table-to-Text生成。我们考虑模仿人类思维,将生成过程分为三个阶段,在由表格生成表面事实文本的基础上,先生成粗模板,再生成逻辑文本。进而将句子逻辑类型作为已知前提,增强由表格生成对应逻辑类型句子的合理性。我们的模型在LogicNLG数据集上进行验证,实验结果表明,我们的模型效果要优于GPT-Coarse-to-Fine模型。未来,我们将在三阶段生成模型的基础上继续探索,希望能够将逻辑生成的过程进一步细分,同时保证中间过程的逻辑保真度。期望能够在多方面提升模型的效果。

logicnlg's People

Contributors

weiwei-shi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.