曹 娟,龚隽鹏,张鹏洲
(中国传媒大学,北京 100024)
2016年被公认为“人工智能发展元年”,是人工智能正式提出的60周年,国内各行各业纷纷涌入人工智能领域,尤其是新闻行业,国内科技公司包括行业巨头百度、腾讯、阿里等和各大科研机构各自研发自动化新闻生产,掀起了一股新闻机器人的热潮。机器新闻写作实质上就是一个利用自然语言生成技术进行新闻写作的过程。它是一种自然语言生成引擎,利用算法程序,通过采集大量的各种题材及高质量的数据,建设各种分类的庞大数据库,借助人工智能实现从数据到认识、见解和建议的提升与跨越,最后由机器自动生产新闻[1]。
由此可见,机器新闻写作的核心技术是自然语言生成(natural language generation,NLG),并需要大数据和云计算的支撑。自然语言生成是指基于非语言输入自动生成自然语言文本的过程,是人工智能和计算语言学的分支[2]。自然语言生成中一个典型的问题就是采用结构化的数据例如一张表格作为输入,生成恰当而流畅的文本作为输出来描述数据[3]。解决这一问题的方法被称为数据到文本的生成(data-to-text generation)。
近年来,随着数据到文本生成研究的深入,研究人员将神经网络方法引入该领域,研究成果主要发表在INLG(international natural language generation)、ENLG(European natural language generation)、ACL(ACL home association for computational linguistics)、NAACL(The North American chapter of the association for computational linguistics)和AAAI(American association for artificial intelligence)这几个专业学术会议上,目前已经取得了不错的研究进展。文中将介绍用于数据到文本生成的神经网络模型和近年来该领域的研究成果,然后介绍相关数据集并对比各模型的实验结果,最后分析该领域研究存在的问题并提出未来发展的建议。
目前用于数据到文本生成的神经网络模型大部分都是基于循环神经网络(recurrent neural network,RNN)的神经语言模型和Seq2seq架构,同时使用了注意力模型。下面介绍这几种模型。
文本生成本身是一个序列输出问题,RNN就是一种对序列数据建模的神经网络,可以很好地刻画词汇的前后关联,这也是由RNN自身的特点决定的。RNN可以对前面的信息进行记忆并应用于当前输入的计算中,即隐藏层之间的节点不再是无连接的而是有连接的,并且隐藏层的输入不仅包括当前输入层的输入,还包括上一时刻隐藏层的输出[4]。图1是RNN基本模型的示例图。
图1 RNN基本模型示例
其中xt是t时刻的输入,比如单词对应的one-hot向量(只有一维是1,其他维是0)或者分布式词向量;st是t时刻的隐状态,由上一时刻的隐状态和当前输入得到,如式1所示,f一般是非线性的激活函数,在计算s0时,即第一个单词的隐藏层状态,一般置为0;ot表示t时刻的输出,比如下个单词的向量表示,如式2所示,softmax是激活函数,用于输出层,输出0和1之间的概率值,总和为1,适合于使用概率刻画输出的情况,例如多分类任务;U、V、W是训练时需要学习的参数,在传统的神经网络中,每层网络的参数是不共享的,而在RNN中,所有层次均共享同样的参数,大大降低了网络中需要学习的参数量。
st=f(Uxt+Wst-1)
(1)
ot=softmax(Vst)
(2)
语言模型就是指语言产生的规律,一般用来预测所使用语言语序的概率,或者是当前上下文使用某个词语的概率,也就是用来表示语言产生顺序的建模,比如用某个词是否恰当,这样的语序构造句子是否妥当。因此训练一个语言模型需要相当大的样本数据。语言模型可以分为文法型的语言模型、统计模型和神经网络语言模型。统计类的语言模型包括N-gram、隐马尔可夫链模型和最大熵模型等。
神经语言模型(neural language model,NLM)是一类用来克服维数灾难的语言模型,它使用词的分布式表示对自然语言序列的建模[5]。基于RNN的神经语言模型就是利用循环神经网络(RNN)对语言建模,用来描述语言序列的产生过程。与RNN相比,该模型多了词向量层(embedding)和softmax层。
1.2.1 词向量层
在神经网络的输入层,每一个单词用一个实数向量表示,这个向量被成为“词向量”(word embedding,也称为词嵌入)。词向量可以形象地理解为将词汇表嵌入到一个固定维度的实数空间里。将单词编号转化为词向量主要有两大作用:
(1)降低输入的维度。如果不使用词向量层,而直接将单词以One-hot向量的形式输入循环神经网络,那么输入的维度大小将与词汇表大小相同,通常在1 000以上。而词向量的维度通常在200到1 000之间,这将大大减少循环神经网络的参数数量和计算量。
(2)增加语义信息。简单的单词编号是不包含任何语义信息的。两个单词之间编号相近,并不意味着它们的含义有任何联系。而词向量层将稀疏的编号转化为稠密的向量表示,这使得词向量有可能包含更多丰富的信息。在自然语言应用中学习得到的词向量通常会将含义相似的词赋予取值相近的词向量值,使得上层网络可以更容易抓住相似单词之间的共性。
1.2.2 softmax层
softmax层的作用是将循环神经网络的输出转为一个单词表中每个单词的输出概率。为此需以下两个步骤:
(1)使用一个线性映射将循环神经网络的输出映射为一个维度与词汇表大小相同的向量,这一步叫logits。
(2)调用softmax方法将logits转化为加和为1的概率。
机器翻译中最经典的架构就是Seq2seq,它是RNN的变种,也是Encoder-Decoder的一种[6]。基于RNN的Seq2seq架构包含编码器(encoder)和解码器(decoder),解码部分又分训练(train)和推断(inference)两个过程,如图2所示。
图2 Seq2seq的训练过程(左)和推断过程(右)
其基本思想就是利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder。encoder负责将输入序列压缩成指定长度的向量,这个向量可以看成是这个序列的语义,这个过程称为编码。获取语义向量最简单的方式就是直接将最后一个输入的隐状态作为语义向量。也可以对最后一个隐含状态做变换得到语义向量,还可以将输入序列的所有隐含状态做变换得到语义变量。而decoder负责根据语义向量生成指定的序列,这个过程也称为解码。最简单的方式是将encoder得到的语义变量作为初始状态输入到decoder的RNN中,得到输出序列。
在Encoder-Decoder结构中,encoder把所有的输入序列都编码成一个统一的语义向量再解码,因此,这个语义向量必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。
注意力机制(attention mechanism)在Encoder-Decoder框架内,通过在encoder中加入attention模型,对源数据序列进行数据加权变换,或者在decoder引入attention模型,对目标数据进行加权变化,可以有效提高序列对序列的自然方式下的系统表现[7]。
Attention模型的作用:减小处理高维输入数据的计算负担,通过结构化的选取输入的子集,降低数据维度;“去伪存真”,让任务处理系统更专注于找到输入数据中显著的与当前输出相关的有用信息,从而提高输出的质量。
Mei等在2016年提出一种端到端(end-to-end)的基于编解码(encoder-decoder)框架的神经网络模型(简称MBW)[8],其中用到了基于长短期记忆网络(long short-term memory,LSTM)的循环神经网络。Lebret等在2016年介绍了一种建立在文本生成的条件神经语言模型(conditional neural language models)基础上的神经模型(简称Table NLM),用于根据维基百科人物传记数据集中的事实表格生成人物传记的初始句子[9]。Sha等在2017年提出一种规划顺序(order-planning)的神经网络模型[10];Chisholm等在2017年针对从维基百科数据生成一句话的人物传记设计了一种自编码器seq2seq模型(简称S2SAE)[11];Liu等在2018年提出一种面向结构(structure-aware)的seq2seq模型[12];Bao等在2018年提出一种面向表格(table-aware)的seq2seq模型[13];Nema等在2018年使用双焦点注意力机制和门控正交化生成结构化数据的描述(简称BAMGO)[14];Wiseman等在2018年设计了一种利用神经网络抽取模板生成文本的方式(简称NTemp)[15];Freitag等在2018年使用降噪自编码器(denoising autoencoder)实现了无监督的自然语言生成过程(简称NLGDA)[16];Kaffee等在2018年提出面向维基百科单句的跨领域多语言的神经网络模型(简称UL)[17]。下面具体介绍这些模型和方法。
MBW模型以encoder-aligner-decoder作为框架,使用LSTM-RNN和对准器(coarse-to-fine aligner)来选择数据并将其转化为文本描述。在编码端,模型将数据记录的全集作为输入,使用了双向LSTM-RNN对其编码;然后对准器经过初选和精选决定哪些输入记录出现在描述中;最后由一个LSTM-RNN解码器将挑选出来的数据解码生成自然语言文本输出。在数据到文本生成领域,MBW是首个使用神经网络方法将内容选择和表层实现视作一体,实现端到端(end-to-end)的神经网络模型。该模型分别在WEATHERGOV[18]和ROBOCUP[19]两个数据集上进行测试,并得到了当时最好的结果。但由于这两个数据集中表格结构相对简单,表格内的数据除了数值类数据,其他大多都是提前定义好的几种模式,因此该模型使用了one-hot向量作为输入,适用于这种固定模式表示的数据,从而不适合更复杂的数据表示的数据集,比如WIKIBIO[9]。
Table NLM模型以条件神经语言模型为基础,针对人物传记数据集WIKIBIO进行设计,关注到了数据记录中的属性(field),并分别从全局和局部对结构化数据进行解析。全局条件总结了一个人物的所有信息来获取高层主题,比如这篇传记是关于科学家还是艺术家的;局部条件根据人物传记数据表格(infobox)中词之间的关系来描述之前生成的词组。该模型采用了标准的三层架构,分别是词向量层、线性层和softmax层。词向量层又细分为单词向量(word embedding)、表格向量(table embedding)和聚合向量(aggregating embeddings)。单词向量只包含表格中value部分的词组信息,表格向量体现了局部条件和全局条件,局部条件主要包含表格的属性信息,全局条件则将属性和值二者都考虑在内,聚合向量是将单词向量和表格向量聚合在一起经过线性变换得到。而线性层则是又用了一个线性变换将聚合向量转换为输出词组的分值,同时该模型使用了拷贝机制,通过计算聚合向量与属性和值的关系,选取表格内最可能替代输出文本中未知词的词组。虽然此模型不适合长距离依赖,但也获得了当时实验最好的结果。
Order-planning Model模型使用了encoder-decoder框架、RNN和attention,设计了field linking机制,模拟不同field之间的关系,帮助模型更好地规划文本生成的顺序,同时使用了拷贝机制,解决少见词的问题(rare words)。该模型由编码器、调度器和解码器组成。编码器将field和content结合输入到LSTM中,经过基于内容的attention和基于link的attention混合后得到attention向量,再传送给解码器的LSTM,最终配合拷贝机制输出文本。该模型在WIKIBIO数据集上进行实验,获得了较之前更好的结果。
S2SAE模型是一个基于循环神经网络的seq2seq模型,使用了attention机制,以及自编码器(autoencoder),实现了从维基百科人物传记结构化数据到文本单句的生成。该模型选取了15个频率最高的field,经过三层GRU的编码器和解码器,选取了10万个词作为词库,词向量设定为256维。加入自编码器后,除了向前的编解码,还有一条回路,即向后的编解码,更好地调整误差(loss)。实验证明,加入自编码器的seq2seq比标准的seq2seq模型效果提升很多,BLEU的分值从33提高到41。
Structure-aware Seq2seq模型使用了端到端的encoder-decoder架构,通过本地决策和全局决策来模拟人类选取记录写作的过程,即首先决定哪些记录应该被选取和如何安排它们的顺序,其次考虑表格中的哪些单词应该被关注。本地决策主要完成在生成文本的每一步时关注表格中哪些单词,通过对表格内容进行LSTM编码和使用单词级别的attention来实现;全局决策的目的是在生成文本时决定关注哪些记录,通过对表格的属性进行自定义属性门(field-gating)LSTM编码,以及属性级别的attention来实现。该模型在WIKIBIO上进行实验,得到了不错的结果。
Table-aware Seq2seq模型也使用了encoder-decoder架构和attention机制,不同的是,这里的RNN采用了GRU,实验对象主要是一个开放领域的数据集WIKITABLETEXT。WIKITABLETEXT是第一个针对数据到文本生成的开放领域的数据集,文本中会出现很多不常见的词汇,这些词汇通常存在于表格内。为了解决这种少见词的问题,该模型使用了一个强大的拷贝机制(copying mechanism),极大地提升了模型在该数据集上的效果。该模型在WIKIBIO上也做了实验,但效果不如Structure-aware seq2seq模型,究其原因,该模型的设计主要针对WIKITABLETEXT,来自不同的领域,而WIKIBIO是专门面向人物传记的,且其句子平均长度也比WIKITABLETEXT中的大很多(26.1>13.9),因此拷贝机制对其影响较小。
BAMGO模型在seq2seq基础上做了改进,加入了双焦点注意力机制和正交化门控机制。双焦点注意力机制结合了宏观和微观层的信息,即属性和属性内的值,正交化门控的目的是在生成文本的过程中将已出现的属性在后续生成步骤中被遗忘(never look back)。该模型在英文、法文和德文的WIKIBIO上分别做了实验,在法文和德文上的效果远远不如在英文上的效果好,究其原因,法语和德语的数据集本来就比较小,且其文本长度也比英语的长,格式也不如英文的固定。由此可见,模型对于不同语言的文本,效果也一定相同。
NTemp模型是一个基于隐半马尔可夫(HSMM)解码器的神经类似模板(template-like)生成模型,和Encoder-Decoder这种黑盒模型不同的是,它是可解释和可控的神经网络模型。该模型主要通过HSMM生成类似模板结构,运用一个转移模型判断两种状态,一种代表不在词汇表中,需要表格中的原始词,通过拷贝机制替换模板生成文本,一种可直接生成文本。生成文本的过程也用了RNN来实现。这种方法适合大规模的文本数据集,其效果和Encoder-Decoder模型差不多。
NLGDA模型基于seq2seq,向编码器中添加噪音,再使用降噪自编码器(denoising autoencoder),对生成的语句重新构造,会更好地生成正确的语句。这种无监督的方法适合于包含结构数据全部内容的文本生成,并不适用于所有NLG问题和数据集。该模型被用于E2E数据集[20]。E2E是一个专门为End-to-End设计的描述饭店信息的数据集,其中每组数据包含了饭店的最多8个不同的信息和描述所有信息的一句话,共42 061组数据。
UL模型主要针对不同语言的开放领域的维基百科而设计,基于Encoder-Decoder架构,使用了无序的三元组作为输入,三元组由主题、属性和对象构成,解码器使用了一层GRU,最后生成文本利用了拷贝机制。该模型的实验使用了维基百科中两种不同特点的语言,分别是阿拉伯语和世界语。阿拉伯语具有形态丰富和词汇量大的特点,世界语是一种人工语言,其语法严谨,以更容易掌握著称,但世界语的文本数据量少于阿拉伯语。最终测试结果是阿拉伯语的结果比世界语略好,同时二者皆胜过不使用神经网络方式的结果。
该研究领域可用的数据集本来就不多,使用神经网络模型做过实验的数据集更是少之又少,下面介绍WEATHERGOV、ROBOCUP、WIKIBIO和E2E这几个数据集和前面介绍过的方法在这些数据集上的实验结果。
WEATHERGOV是Liang等在2009年创建的天气预报数据集。他们从www.weather.gov上收集了美国2009年2月7日到9日三天的3 753个城市的本地天气预报,每个城市每天有白天和晚上两个场景。天气预报由选定时间段的气温、风速、云量和降雨可能性指标等构成。数据集共包含29 528个场景,每个场景平均有36条记录和28.7个单词。
ROBOCUP是Chen和Mooney在2008年创建的数据集,包含了2001年到2004年Robocup 决赛的1 919个场景。每个场景由一句话组成,代表比赛评论的一部分,同时配有评论发出前5秒内的一组候选事件记录。每句话最多对应一条记录,Chen和Mooney已经做好了标注。平均每个场景有2.4条记录和5.7个单词。
WEATHERGOV和ROBOCUP在数据量和结构上有类似之处,相对词汇量小,结构简单,在介绍过的神经网络模型里MBW是目前结果最好的,通常与非神经网络模型KL[21]和AKL[22]对比。KL是Konstas等在2013年提出的模型,AKL是Angeli等在2010年提出的模型。表1展示了各模型在这两个数据集上的实验结果,评价指标为F1值和BLEU-4。
表1 WEATHERGOV和ROBOCUP的模型结果
E2E是描述饭店信息的数据集,前面已经介绍过。在上述神经网络模型中,NTemp和NLGDA在其上做过实验。E2E challenge[23]是Dusek提出的监督模型,作为该数据集的基准方法,其结果如表2所示。评价指标有BLEU、ROUGE-L和NIST。
表2 E2E的模型结果
WIKIBIO是Lebret等在2016年介绍的数据集。这个数据集包含了2015年9月从英文维基百科上收集的728 321篇人物传记和对应的表格数据,因其数据量大、词汇量大、属性多、结构相对复杂等,也是目前为止在其上实验最多的数据集。使用该数据集获得的实验结果更具有比较的意义。表3展示了介绍过的神经网络模型的实验结果,评价指标有BLEU-4、ROUGE和NIST。
表3 WIKIBIO的模型结果
目前该领域存在一些问题,需要在未来的研究中解决:
(1)数据集缺乏。目前公开可用的数据集非常缺乏,尤其是能用于训练神经网络模型的数据集,必须保证数据量大。
(2)领域单一。可训练的数据集集中在几个特定领域,一方面需要新开辟其他领域以供研究,另一方面也需要跨领域的研究。
(3)评价方法不统一。研究人员用于各个数据集的评价指标并不完全一致,使用评价方法也不统一,加大了对比的难度。
数据到文本生成在未来的发展中越来越重要,最好能专门针对这一研究领域提供公开数据集和统一的评价方法,以及跨领域、跨语言等不同特点的数据集,供研究人员使用。目前数据到文本生成的神经网络模型虽然比之前监督和半监督的方法提高了不少,但还有进步的空间,需要研究人员大胆尝试不同的方法。比如借鉴相关领域的最新研究如对话系统、机器翻译等,或者加入知识图谱,又或者从模型根本出发,研究结构化数据的特点,等等。
近年来国内新闻行业开始尝试自动撰写新闻,数据到文本生成技术越来越受到重视,加上深度学习的发展,利用神经网络训练数据到文本生成模型的研究也越来越多。当然,一个领域需要其他领域带动着一起发展,只有在神经网络方面的研究不断深入,硬件技术不断提升,存储和处理数据的能力越来越强,数据到文本生成的研究和应用才能有更多的可能性。