基于结构化数据的文本生成研究初探文献综述

 2022-10-17 10:10

{title}{title}

  1. 文献综述(或调研报告):

摘要

机器文本生成是目前自然语言处理中的热门研究问题之一。其主要目标为根据表格等结构化数据,生成对应的描述性文本。目前已出现的文本生成方法包括使用template生成,使用深度神经网络,使用循环神经网络等方法。本文将主要阐述sequence-to-sequence模型和深度神经网络模型在表格-文本生成任务中的应用。

一 研究背景及进展

目前一种典型的数据-文本生成方法为使用循环神经网络(RNN)。其中LSTM构成的循环神经网络模型已经被广泛地应用于多种形式的任务,包括根据传感器数据生成天气预报(Wen et.al, 2015),根据赛场实时事件生成体育报道等等。

另外,也有论文提出在sequence-to-sequence任务中使用无监督的自动编码任务,例如使用文本分类来作为一个预训练任务(Dai and Le,2015),以及把机器翻译作为一个多任务的目标(Luong et al,2016).

二 使用的数据集

目前在数据-文本生成任务中较热门的数据集是Wikibio,它来自于维基百科的数据和人物介绍。维基百科的人物介绍简洁准确,具有较高的参考价值,同时可以比较容易地迁移到其他不同形式的文本描述(例如从IMDb上下载的影视评论以及亚马逊购物的摘要)。这里我们选用维基百科的人物传记作为数据集。

WikiBio数据集中的表格数据以(fieldname,value)键值对或者以json格式的形式给出,例如:,一条记录的表格可以表示为(name_1:John),(name_2:Stephen),(birthday_1:born),(birthday_2:in),(birthday_3:4th)

(birthday_4:September),(birthday_5:1960)hellip;,等一系列的键值对,其中(birthday_1:born)表示域名birthday对应的第一个值为单词born,以此类推。

三 词向量

词向量(word embedding)在自然语言处理任务中十分重要,它是将任意单词用一个一定维度的实数向量表示的技术。使用词向量是为了体现出不同单词在语义上的联系,例如单词man和woman之间的语义关系就类似于单词king和queen在语义上的关系,如果men,women,king,queen的词向量分别为x1,x2,x3,x4,其中,而d为词向量维数,那么x1-x2x3-x4.一般来说,d越大,词向量所能包含的特征信息就越丰富,学习效果就越好,同时也意味着更长的训练时间。词向量可以通过神经网络进行训练,但为了方便可以直接使用google提供的word2vec工具或现成的词向量包,一个精简版的词向量包包含约299000个词汇,足够覆盖英文语料中的常用单词了。

四:用到的重要模型:
A:神经网络模型

神经网络模型是模仿人类神经元细胞的一种模型结构,如下图所示:

图1:神经网络结构示意图

以单层网络为例,设输入为一个n*1维的向量(,权重矩阵为一个m*n的向量(,则输出向量为:

其中b, 是一个激活函数,表示对向量中的每个元素都作相应的变换。常用的激活函数包括:

(1)

(2)

(3)

容易证明,如果不加上非线性的激活函数,那么无论使用多少层神经网络都等效于一层,所以在每一层的线性变换后施加激励函数是必须的。如果希望输出表示某种概率分布,那么通常

需要对最后一层的输出做一个softmax映射,即第i个分量成为:
在机器文本生成的任务中,Reacute;mi Lebret 等人提出使用两个神经网络来分别学习文本输出的单词在常见单词集合和表格中词汇集合上的概率分布。损失函数则为综合正样本和负样本的对数似然,考虑负样本损失时需要取遍常见单词集合和表格中词汇集合的并集。

B 循环神经网络

循环神经网络(RNN)源自于霍普菲尔德网络,它可以看作一个神经网络结构在时间上展开,且前后时间单元间通过状态变量沟通。循环神经网络能够充分挖掘输入数据中的时间序列信息,实现语义信息的深度表达,因而在语言模型中实现了突破。基本的RNN单元展开后如右图所示:

图2:循环神经网络示意图

其中为t时刻的输出,为t时刻的状态变量,表示t时刻的输入。在每个时刻t,模型会针对当前时刻的状态和当前时刻的输入来给出一个输出;而当前时刻的状态变量通过一个关于前一时刻状态变量和当前输入的函数来更新。即;

如果对的表达式不断进行迭代,容易得到和t时刻之前所有时刻的输入,以及初状态有关。

所以RNN能够记忆之前时刻的信息。容易看出,RNN处理的是序列信息,因此特别适用于和文本生成有关的任务。Vinyals and Le的论文[1]使用RNN来实现交互式会话系统,Rush等人的论文[2]使用RNN进行自动摘要提取。在Andrew Chisholm等人的论文中,他们提出了使用seq-to-seq模型来实现经过变形后的表格数据到摘要文本的对应关系。Seq-to-seq是RNN的一个变种,它采用了两个循环神经网络,分别作为“编码器”和“解码器”。输入的句子首先通过编码器被压缩为一个固定维度的向量,而编码器各个时刻的状态通过一个函数映射到解码器的初始状态(最简单的方式可以取解码器的最后一个时刻的状态为编码器的初始状态),以lt;SOSgt;符号(start of sentence)作为初始输入,依次计算每个时刻的状态变量及输出,同时将每个时刻输出的维向量中选取概率最大的一个单词作为下一时刻的输入,依次计算直到输出一个lt;EOSgt;符号为止。另外,为了减少训练参数,在解码器输出上所加的全连接层(维度为hidden*,其参数可以与词向量矩阵共享。在选取预测得到的句子时,可以采取两种不同的策略:一是直接采取贪心的策略,即每次选取最大的概率所对应的单词,二是集束搜索(beam search)算法,即第一个时刻我们选取最大的k个概率,那么第加上第二个时刻的单词一共有种情况,采用集束搜索算法可以获得相对更优的全局解。如上提到,在生成文本内容时还需考虑结果对原文本的忠实程度,即尽可能包含了原数据表格中的关键信息,因此通常可采用注意力机制,即在解码器计算每个步骤的状态变量时,引入一个与编码器各个时刻状态有关的参数。朴素的RNN存在梯度消失等重要缺陷,目前在自然语言处理研究中广为采用的是改进后的RNN模型,包括长短时记忆模型(LSTM)等,与朴素RNN模型相比,这些RNN改进模型通常可以获得更好的效果。

使用带有注意力机制(attention mechanism)的seq-to-seq模型,可以在wikibio数据集上获得较好的BLEU指标得分,几乎是简单语言模型的两倍,而人工辨识的接受度也已经接近于维基百科给出的标准文本。

方案(设计方案、或研究方案、研制方案)论证:

方案一:使用前馈神经网络进行生成

根据David Grangier[3] 在论文中给出的方案,我们需要分别考虑表格给出的信息和文本给出的信息来组织输入向量。使用维基百科wikibio数据集,可以获得728321个样本数据,在github平台上数据集按照如下方式给出:包括4个文件:id文件给出了article的标号,每行一个数据;nb文件给出了每篇article所占用的行数,每行一数据;box文件每行代表一篇article的人物传记表,以键值对的形式给出:(field_1:value1)(field_1:value2),(field_2:value1),(field_2:value2),(field_2:value3)hellip;;sent文件,每行一个句子,均来自于所选取article的第一自然段。

我们以11-gram语法模型为基础,即通过前11个单词来预测其后出现的单词。对于来自于同一篇article的每连续11个单词,我们需要如下的输入向量:
(1):建立一个大小为的词向量,其中为常用词汇数目,我们取20000.,查找这11个单词在词向量矩阵中对应的向量,于是可以得到一个大小为的向量

(2):建立两个大小为的参数矩阵。其中代表属性的个数,我们只考虑在所有样本中出现次数至少100次的属性名。代表每个属性中value的最大个数。对于文本中每个单词,如果它在对应的表格中出现至少一次,我们可以用

表示其m次出现的信息,其中每一项表示该单词第i次出现是在第个属性名中,位置是该属性字段正数第个,倒数第个。于是我们用单词对应的m个元组在参数矩阵查找对应向量,可以分别得到m个维度为的向量,对这m个向量作element-wise-maximum运算,则聚合得到,,对于所考虑的11个单词,分别拼接

和,得到两个维度均为的向量和。特别地,如果遇到句子中出现的词汇未在对应的表格中,则统一地用一个固定的向量来代替。

(3):考虑某11个单词对应的表格的属性集合,我们建立一个参数矩阵,

对于中的每个属性名我们可以从该参数矩阵中查找得到一个尺寸为的向量,一共有个向量,对这些向量作element-wise-maximun运算,聚合成为一个向量:。为了表征此表格中每个属性在常用词汇表中出现的情况,我们将该表格中所有属性包含的内容中的词汇取并集,记作. 同时建立一个大小为的参数矩阵,对中每个单词,在查找对应的向量,可以得到个维度为global_embsize的向量,类似地作element-wise-maximun聚合运算,可得

将上述得到的五种向量进行拼接,可得维度为的输入向量,即:

,

上述向量将被作为输入向量提供给神经网络,选取双曲正切函数作为激活函数,隐藏层大小为256,在隐藏层之上再加一个输出单元数等于的全连接层。这样,经过softmax函数映射后输出向量的第k个元素可以表示下一个单词为常见单词表中索引为k的单词的概率。在计算损失函数时,需要同时考虑正样本的损失和所有负样本的损失,其中负样本取遍常用词汇集合和表格单词集合的并集。使用随机梯度下降法训练,训练率设为0.0025。

方案二:使用seq-to-seq模型

根据Andrew Chisholm[4]等人的论文,我们采用seq-to-seq模型进行训练,seq-to-seq模型可以解决一对一、一对多、多对一、多对多等多种自然语言处理任务。训练数据集仍采用wikibio数据集,与方案一不同的是,此方案是将展开后的属性-键值对映射到单个句子(维基百科介绍的第一个句子)。作者给出的数据集的规模为1268515个样本,数据集按训练集:验证集:测试集=8:1:1进行划分。在进行训练前,需要对数据集进行一些处理,包括:
①对标签句子的长度进行过滤,即对所有句子长度进行筛选,只保留长度在[10,37]区间内的句子。

②对所有样本表格中出现的属性按出现总频次由高到低进行排序,只选取出现频率最高的15个属性。每个表格不在这15个属性之内的属性名予以删除

③过滤掉表格字段包含不足6个属性的样本。

使用seq-to-seq模型进行文本生成时,所使用的seq-to-seq模型包括译码器和解码器两部分,均由两个三层的RNN构成,源句子(表格展平后的句子,其中需要把title字段的内容替换为统一的标记TITLE以方便训练)作为编码器的输入,编码器把输入压缩到一个固定维度的编码,而编码器最后时刻的输出作为解码器的初始状态,解码器的初始输入是一个代表句子开始的标记,每运行一步都能得到一个输出,使用beam search算法可以获得最优的预测句子,每次我们都以最优句子中的单词作为下一刻解码器的输入。最终的损失函数为每个时间步上对数概率的累加。的为了确保文本生成能够精确地实现对内容的选择,我们需要另外一个反向的seq-to-seq网络,该网络同样由两个相同的RNN单元分别作为编码器和解码器,其中正向模型的输出作为反向模型编码器输入,而反向模型解码器的输出和原表格数据对比,得到反向模型的损失函数. 正向和反向的损失函数需要被同时最小化,并且如果word_embsize和hidden_size相等,则词向量矩阵和取如下所示:

图3:seq-to-seq自编码器示意图

该模型也使用了attention机制,即对于解码器每个运行的时刻t,可以计算一个参数,其具体计算方法为:

其中函数可以有多种不同形式。于是计算解码器在t时刻状态和输出向量的表达式为:

我们同样采用随机梯度下降法进行训练,batch_size的大小设为64,并且采用BLEU指标及perplexity复杂度等方式评估文本生成的质量。

[1]: Oriol Vinyals and Quoc V. Le. 2015. A neural conversational model. In ICML Deep Learning Workshop

[2]: Alexander M. Rush, Sumit Chopra, and Jason We-ston. 2015. A neural attention model for abstractive sentence summarization. In Conference on Empirical Methods in Natural Language Processing, pages 379–389.

[3]: Lebret, R., Grangier, D., amp; Auli, M. . (2016). Neural text generation from structured data with application to the biography domain In Conference on Empirical Methods in Natural Language Processing (EMNLP), 2016

[4]: Chisholm, Andrew amp; Radford, Will amp; Hachey, Ben. (2017). Learning to generate one-sentence biographies from Wikidata In Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics: Volume 1, Long Papers, pages 633–642

资料编号:[196199]

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。