文本生成

文本生成是自然语言处理中一个重要的研究领域,具有广阔的应用前景。国内外已经有诸如Automated Insights、Narrative Science以及“小南”机器人和“小明”机器人等文本生成系统投入使用。这些系统根据格式化数据或自然语言文本生成新闻、财报或者其他解释性文本。例如,Automated Insights的WordSmith技术已经被美联社等机构使用,帮助美联社报道大学橄榄球赛事、公司财报等新闻。这使得美联社不仅新闻更新速度更快,而且在人力资源不变的情况下扩大了其在公司财报方面报道的覆盖面。

任务定义

接受非语言形式的信息作为输入,生成可读的文字表述。数据到文本的生成适用于这个定义,后续研究人员将这个概念拓展为包括了文本到文本的生成、数据到文本的生成以及图像到文本的生成的文本生成技术。

任务分类

按照输入数据的区别,可以将文本生成任务大致分为以下三类:

  • 1)文本到文本的生成;
  • 2)数据到文本的生成;
  • 3)图像到文本的生成。

1)文本到文本的生成又可根据不同的任务分为(包括但不限于):文本摘要、 古诗生成、文本复述等。文本摘要又可以分为抽取式摘要和生成式摘要。
抽取式摘要通常包含信息抽取和规划等主要步骤。近期,在这方面有许多有趣的工作:

  • 在为论文自动生成相关工作部分文本的任务上使用主题模型PLSA将句子按照主题进行聚类,使用SVR(Support Vector Regression)计算句子的相似度,最后使用线性规划生成相关工作文本。
  • 在基于短语级别为学术论文生成演示文件的研究中采用了四个步骤。首先从论文中抽取名词短语、动词短语作为候选短语, 利用人工设计的特征和基于随机森林的分类器决定短语是否应出现在演示文件中,再训练一个基于随机森林的分类器判断两个短语是否存在一级、二级标题的关系,最后使用贪心策略选择句子构成一个演示文件。Zhang[5]在根据体育赛事直播文字生成赛事报道的任务上,主要采用了Learning to Rank的方法结合人工设计的特征模版对句子进行打分,进而采用行列式点过程(DPP, Determinantal Point Process)进行句子选择。
  • 最近ACL 2017上发表了多篇生成式摘要的论文。
  • 如See等人提出了解决生成事实性错误文本和重复性文本问题的方法[6],Zhou等人加入选择门网络(selective gate network)进行摘要生成[7]。
  • 古诗生成方面,Zhang等人[8]使用循环神经网络进行生成,Wang等人[9]将古诗生成划分为规划模型和生成模型两部份。
  • Zhang等人[10]在Seq2Seq模型的基础上加入记忆模块。文本复述方面,Quirk等人[11]使用机器翻译的方法生成复述文本,Max等人
  • [12]采用基于枢轴(pivot)的复述生成方法,以另一种语言作为中间媒介,将源语言翻译成另一种语言后再翻译为原来的语言。

2)结构化数据生成文本的任务上,Reiter等人[13]将数据到文本的系统分为了信号处理(视输入数据类型可选)、数据分析、文档规划和文本实现四个步骤。Mei等人[14]基于encoder-decoder模型加入了aligner选择重要信息,基于深度学习提出了一个端到端的根据数据生成文本的模型。比如 语义解析 (Text-to-SQL)

3)图像到文本的生成方面也有不同的任务,如image-caption、故事生成、基于图像的问答等。在为图像生成解释性文本(image-caption)的任务上,Vinyals等人[15]使用类似encoder-decoder的模型进行生成。Xu等人[16]则进一步加入Attention机制。Huang等人[17]提出针对图片序列生成故事的任务,并且提供了单张图片的描述性文本、单张图片的故事以及图片序列的故事三个层级的数据集。在第三个数据集上,他们拓展之前的模型并加入一些技巧提供了该任务的一些baseline。并通过对自动化评价指标以及人工评价相关度的衡量,确定使用METEOR作为自动化评价指标。基于图像的问答任务上,Shih等人[18]提出了使用基于Attention机制的模型用VGGnet编码图片,用词向量求均值表示问题,最后经过两层网络生成答案 、Wu等人[19]提出了整合image-caption模型和外部知识库等生成答案。

文本生成方法

1 基于语言模型的自然语言生成

基于马尔可夫的语言模型在数据驱动的自然语言生成中有着重要的应用。它利用数据和文字间的对齐语料,主要采用两个步骤:内容规划和内容实现为数据生成对应的文本。Oh等人[21]在搭建面向旅行领域的对话系统时,在内容规划部分使用bigram作特征根据近期的对话历史,选取待生成文本中需要出现的属性,内容实现部分使用n-gram语言模型生成对话。Ratnaparkhi等人[22]经过实验对比发现在语言模型上加入依存语法关系有助于改善生成效果。Angeli等人[23]则将文本生成的过程分为三种决策(以生成天气报道为例):1)宏观的内容选择,如选择温度等方面进行报道。2)微观内容选择,如选择最低温度或者最高温度进行报道。3)模版选择。这三个决策步骤交替进行。每次决策的时候会考虑到历史决策信息,这有助于处理需要考虑长距离的依赖关系的情况,如语义连贯性。

2 使用深度学习方法的自然语言生成

  • 在文本到文本的生成方面,Zhang等人[8]使用RNN进行中文古诗生成,用户输入关键词后首先拓展为短语,并用来生成诗的第一行。接下来的每一行结合当时所有已生成的诗句进行生成。Wang[9]则将古诗生成分为规划模型和生成模型两部份。规划模型部分得到用户的输入,在使用TextRank进行关键词抽取和使用RNN语言模型和基于知识库的方法进行拓展后,获得一个主题词序列,作为写作大纲,每一个主题词在下一个部分生成一行诗。生成模型部分基于encoder-decoder模型,增加一个encoder为主题词获得一个向量表示。
  • 另一 个encoder编码已经生成的句子。使用attention-based的模型,decoder综合主题词和已经生成的句子,生成下一句的内容。通过这两个模型,在更好的控制每一行诗的主题的同时保持诗词的流畅性。最近,在ACL 2017上发表了多篇生成式摘要的论文。如See等人[6]为了解决生成一些与事实不符的内容,在标准的基于attention的Seq2Seq模型上结合Pointer Network,使其既可以生成词,也可以从原文中直接把一些词放入生成的文本中。为了解决重复的问题,加入coverage模型。Zhou等人[7]则通过在encoder和decoder之间加入一个选择门网络(selective gate network)作为输入句子的第二层表示,提高编码的有效性,降低decoder的负担。
  • 在数据到文本的生成方面,Mei[14]提出了encoder-aligner-decoder的端到端模型。主要特点是在标准的encoder和进行了改进的decoder之间加入用于选择将要描述的重要信息的aligner。它对每条记录生成的权重分为两个部分。第一部分是针对每条记录的向量表示单独计算一个权重。 第二部分是在decoder的第t步时,根据decoder已经生成的内容及对应记录的向量表示计算权重。 在两个数据集上取得比较好的效果提升。它的优势在于同步训练内容选择和生成部分且不需要针对任务人工设置特征,普适性较好。
  • 在图像到文本的生成方面,Vinyals[15]使用Seq2Seq的模型,首先利用深层卷积神经网络DCNN 对图像建模,然后由一个LSTM网络进行解码生成最终的文本。与传统的机器学习方法相比,无需进行图像和文本中词的对齐、调整顺序等步骤。Xu[16]则进一步提出利用Attention机制来加强词语和图像块之间的对齐,在生成文字的时候,模拟人看东西时关注点逐渐转移的过程,以生成更符合人习惯的文本。

推荐资料:

seq2seq结构:nmt_with_attention

【深度学习和自然语言处理】Seq2seq 中文文本生成

模型评价

No evaluation, no research。如何对生成的文本进行评价也是文本生成研究中重要的一环。Gkatzia[24]总结2005年到2014年间的常用的针对文本生成的评价方法,将其分为内在评价和外在评价方法。其中内在评价关注文本的正确性、流畅度和易理解性。常见的内在评价方法又可分为两类:

  • 1)采用BLEU、NIST和ROUGE等进行自动化评价,评估生成文本和参考文本间相似度来衡量生成质量。
  • 2)通过人工评价,从有用性等对文本进行打分。外在评价则关注生成文本在实际应用中的可用性。

根据他们的分析,内在评价方法是最为流行的评价方法。2012-2015年间发表的论文超半数使用自动化评价指标进行评价,但由于它需要有大量的对齐语料,且对于对齐语料的质量很敏感,所以在使用自动化评价指标的同时,研究者常常还会同时使用其它的评价方法,如直观且易于操作(与外在评价方法相比)的人工评价生成文本的正确性、流畅性方法。

基于Seq2Seq的文本生成评价指标解析

基于GPT-2进行文本生成

基于Transformers的语言模型最不可思议的特点之一是它们能够生成与人类所写的文本几乎没有区别的文本。一个著名的例子是OpenAI的GPT-2,它在给出以下提示时:

能够生成一篇关于独角兽的新闻:

这个例子之前是非常有名的,是因为它是在没有任何明确监督的情况下产生的! 通过简单地学习预测数以百万计的网页文本中的下一个词,GPT-2和它更强大的改进版,如GPT-3,能够获得文本学习和模式识别能力,以及能被不同类型的输入提示获得比较不错效果。语言模型在预训练期间有时会接触到一些任务序列,在这些任务中,它们需要仅仅根据上下文来预测下面的标记,如加法、解词和翻译。这使得它们在微调期间或(如果模型足够大)在推理时间有效地转移这些知识。这些任务不是提前选择的,而是在用于训练十亿参数语言模型的巨大语料库中自然出现的。

Transformers生成现实文本的能力导致了多样化的应用,如InferKit、Write With Transformer、AI Dungeon,以及像谷歌的Meena这样的对话代理,它甚至可以讲出老套的笑话,如图5-2所示!

在之前教程里,我们一直专注于通过预训练和监督微调的组合来处理NLP任务。正如我们所看到的,对于像序列或标记分类这样的特定任务,产生预测是相当直接的,比如预测一个文本的情感类别;模型产生一些分数(可以理解为logits),然后我们取最大值来获得预测的类别,或者应用softmax函数来获得每个类别的预测概率。相比之下,将模型的概率输出转换为文本需要一种解码方法,这就引入了一些文本生成所特有的挑战:

  • 解码是反复进行的,因此比简单地将输入通过模型的前向传递一次涉及到更多的计算。
  • 生成文本的质量和多样性取决于解码方法和相关超参数的选择。

为了理解这个解码过程是如何进行的,让我们先来看看GPT-2是如何进行预训练并随后应用于生成文本的。

像其他自回归或因果语言模型一样,给定一些初始提示或语境序列x = x1, x2, ... xk,GPT-2被预训练来估计文本中出现的文本序列y = y1, y2, ... yt的概率P(y|x)。由于训练数据比较大,来直接估计P(y|x)是不切实际的,所以通常使用概率链规则来将其分解为条件概率的乘积。

image.png

其中y<t是序列y1, ..., yt-1的文本字符。从这些条件概率中,我们可以推断出:自回归语言建模相当于在一个句子中给定前面的词来预测每个词;这正是前面方程中右边的概率所描述的。请注意,这个预训练目标与BERT的预训练目标完全不同,BERT利用过去和未来的语境来预测一个被掩盖的标记。

现在你可能已经猜到我们如何调整这个下一个标记的预测任务,以生成任意长度的文本序列。如图5-3所示,我们从 "transformers "这样的流程开始,用模型来预测下一个标记。一旦我们确定了下一个标记,我们就把它附加到提示上,然后用新的输入序列来生成另一个标记。重复这个过程,直到我们达到一个特殊的序列结束符号或预先定义的最大长度。

image.png

致谢

最后修改:2023 年 04 月 27 日
如果觉得我的文章对你有用,请随意赞赏