一种级联式作文生成方法与流程

文档序号:14279723阅读:212来源:国知局
一种级联式作文生成方法与流程

本发明涉及主题分析技术领域,具体涉及一种级联式作文生成方法。



背景技术:

现有技术中,与作文相关的研究大多以作文自动评分为主,尚未出现关于作文生成方法的研究。作文生成的首要问题是对作文主题进行分析,已有的主题分析技术都是针对大量文本集合进行的,且主要提取的是文章表面的主题信息或事实性主题信息。而作文题目一般较短,且要求对题目进行引申,得到题目中蕴含的深层主题。因此,很难直接利用已有的主题分析技术来进行针对作文题目的主题分析。



技术实现要素:

本发明的目的是为了解决现有技术仅针对作文评分进行研究,未出现关于作文生成方法的研究,以及已有的主题分析技术很难对作文的题目进行分析的缺点,而提出一种级联式作文生成方法。

一种级联式作文生成方法,包括:

步骤一、根据所输入的材料作文题干,提取话题词集;

步骤二、根据所述话题词集,生成句子;

步骤三、将步骤二中生成的所有句子进行排序,得到作文。

本发明的有益效果为:

1、本发明能够对于材料作文题目进行分析,得出隐含在材料作文中表示哲理的关键词;2、本发明能够针对表示哲理的关键词形成的句子进行扩展,使得到的句子不包含关键词但与关键词相关;3、本发明能对生成的句子进行合理的排序,使其符合正常的行文逻辑;

4、本发明选取6683篇高中议论文进行实验,以段落为单位,过滤掉句子数小于3的段落,

本实验采用了rouge-s、rouge-n、p-all来作为评测指标,其中

其中sm代表了第m个文档,s(·)代表了所有的skipbigram句子对,n(·)代表所给出顺序中的所有n个连续句子组合分别代表预测的顺序序列和真实顺序。

具体实验结果为:

附图说明

图1为本发明的总体框架示意图;

图2为本发明具体实施方式二中基于gru的层次化神经网络模型的示意图;

图3为本发明具体实施方式二中基于gru和cnn的层次化神经网络结构图;

图4为本发明具体实施方式二中基于attention层次化神经网络结构图;

图5为本发明具体实施方式二中迁移学习模型的示意图;

图6为具体实施方式三中以“诚信”为主题抽取的句子。

图7为lda模型示意图;

图8为具体实施方式三中lda模型生成的主题示意图;

图9为具体实施方式三中一种扩展策略的实例的示意图;

图10为具体实施方式三中对于话题词“诚信”进行句子扩展的实验结果;

图11为具体实施方式三中对于话题词“奋斗”进行句子扩展的实验结果。

具体实施方式

具体实施方式一:本实施方式提供一种级联式作文生成方法,包括:

步骤一、根据所输入的材料作文题干,提取话题词集。

对于一个给定的作文题干(题目),首先需要明确题干(题目)要求我们写一篇怎样的作文。通过对高考作文题干的分析,可以将题干分为如下三类:

①话题作文。题干中明确要求作文需符合什么话题,比如,请以“声音”为话题写一篇作文。

②命题、半命题作文。题干中明确要求了作文的题目(命题作文),或者给出了题目的一部分,考生需不全题目(半命题作文)。比如,科学家们说进入时间隧道,就可以不受时空的限制,往来于过去和现实之间。假若你有这样的一次机会请以《重返_____》或《寻访_____》为题,写一篇记叙文。

③材料作文。题干中只给出一则材料,材料的形式可以是一个寓言故事、一则新闻、或者一段哲理议论。考生需要分析材料所述意思,然后明确写作内容。

立意分析的目标在于明确作文的核心内容,也就是下一个模块的输入——话题词。对于前两类作文题干,可以直接从题干中提取得到话题词,而分析难点在于对材料作文的分析。所以,本课题的主要研究工作是对材料作文题干进行分析,即输入为材料作文题干,输出为话题词(话题词集)。我们期望这个话题词(集)能表示出材料作文题干要求写一篇什么内容的作文。

一个材料作文的例子为:

“阅读下面的材料,根据要求写一篇不少于800字的文章。(60分)船主请一位修船工给自己的小船刷油漆。修船工刷漆的时候,发现船底有个小洞,就顺手给补了。过了些日子,船主来到他家里道谢,送上去一个大红包。修船工感到奇怪,说:“您已经给过工钱了。”船主说:“对,那是刷油漆的钱,这是补洞的报酬。”修船工说:“哦,那只是顺手做的一件小事……”船主感激地说:“当得知孩子们划船去海上之后,我才想起船底有洞这件事儿,绝望极了,觉得他们肯定回不来了。等到他们平安归来,我才明白是您救了他们。”要求选好角度,确定立意,明确文体,自拟标题;不要脱离材料内容及含意的范围作文,不要套作,不得抄袭。”

我们期望得到的话题词集为:爱岗敬业、尽职尽责、责任心,通过话题词集就可以明确生成的作文的核心内容是爱岗敬业和尽职尽责,而这也正是符合题干要求的。综上所述,题目分析的目标是根据题干生成话题词(集),同时话题词(集)明确了即将生成的作文的核心内容,而这个核心内容是符合题干要求的。

通过分析发现前两类作文(话题作文和命题、半命题作文)题干中比较明确的给出了话题词,针对这两类作文可以直接采用规则匹配的方法得到话题词,比较难于理解的是第三类作文(材料作文)。

经过对材料作文题干的分析,发现所写作文的核心思想就是题干中材料所讲述的道理(哲理),所以这本质还是一个文本理解任务。对于一篇文本,通过训练语料和背景知识,输出一个词集合{w1,w2…wn},这些词表明了这则文本所讲述的道理(哲理)。

这一任务和关键词提取任务很接近,关键词提取任务的目标是根据文本获得一些能表示文本核心意思的词,但目前基于抽取的关键词提取方法获得的关键词是在文本中有出现的,而在本任务中,尤其是对于寓言故事这样的材料,能表示材料所讲述的道理(哲理)的词一般不会在材料出现,例如,之前所列举的材料作文题干并没有包含爱岗敬业这样的词或意思相近的词。因此,基于抽取的关键词提取方法并不能处理大部分的寓言故事。但却又存在少部分材料作文是可以用基于抽取的关键词提取方法来得到话题词。对于无法用关键词提取方法处理的材料作文,我们打算采用deeplearning的方法来得到话题词(集)。综上所述,立意分析的框架如图1所示。

为了对材料作文进行立意分析,可以使用多种基于深度学习的模型,进行话题词的提取。

需要说明的是,当通过深度学习的方法得到话题词集后,还可以将话题词进行扩展,具体可以为:

将词表示成词向量的形式,当给定一个话题词时,计算各个词与话题词之间的相似度,选择top-n作为话题词扩展词集合。词向量化的方法有很多种,比较常用的有one-hot,tf-idf,以及word2vec。one-hot方法最简单,向量长度是词表的大小,向量中只有一维是1,其余维都是0,而这一维正好对应词表中该词;tf-idf,向量长度为文档的数目,每一维上的数值为该词在对应文档中的tf-idf值;word2vec,是一个深度学习的方法,通过神经网络训练得到词向量。本实验中选用word2vec训练获得词向量,向量维度为100。

当给定一个话题词时,计算话题词对应的词向量与其他词之间的相似度,去掉停用词以及单个字组成的词后选取top-n作为话题词扩展词集合。

对于两个给定的向量,有很多方法可以计算两者间的相似度,比较常用的有余弦相似度,欧式距离,如果向量是一个概率分布相似度还可以用kl距离计算。其中,余弦相似度的计算公式如下,

欧式距离的计算公式如下,

本实验选用余弦相似度计算两个词向量的相似值。

以上过程得到了话题词的扩展词集合,然而这并非系统的最后输出结果,本发明期望最终输出一些列的词集合,而每一个词集合都是该话题下的一个分论点(一个立意),所有该部分需要对主题词扩展部分得到的主题词扩展词集合进行划分,将其分割成一个个的词集合(关键词集合),并且使得每一个词集合能表示一个分论点(立意)。系统中这部分采用的方法为将主题词扩展词集合中的每一个词向量化,然后定义词与词之间的相似度计算公式,最后采用聚类算法对其进行聚类,每一个类就是一个关键词集合。刘知远在他的一篇关于关键短语抽取的论文中提到了词聚类的方法,本部分所采用的方法是受这篇论文中词聚类方法的启发。词聚类可分为两步,第一步计算词之间的相似度,第二步用聚类算法聚类。

对于两个对象,可以首先将其表示成向量的形式,然后通过计算向量间的相似度来表示对象间的相似度。向量的相似度计算方法有很多,例如,余弦相似度,欧式距离,如果向量是一个概率分布相似度还可以用kl距离计算。若对象是一个词,同时不用向量化表示的话,可直接采用点互信息计算两个词之间的相似度。其中,余弦相似度的计算公式和欧式距离计算公式同公式2-5和公式2-6。点互信息也是一种常见的用于度量相似度的方法,计算公式如下,

上述公式中,p(i,j)表示文档集中同时包含ti和tj的文档数目,而p(i)表示包含ti文档的数目。

聚类属于无监督学习,常用的聚类方法有k-means,层次聚类,基于密度的聚类算法dbscan(density-basedspatialclusteringofapplicationswithnoise),以及affinitypropagation(ap)聚类算法。其中k-means是一个比较简单的聚类算法,算法需要用户自行指定类别数目k;而层次聚类就是通过对数据集按照某种方法进行层次分解,直到满足某种条件为止;dbscan算法不需要用户指定类别数目,但是需要指定两个样本被认定成邻居的最大距离eps值,以及一个样本如果他的邻居数目大于minpts,则该样本作为一个核心对象,这个minpts也是需要用户自行设定的;ap聚类一大优点是不需要用户自行指定聚类数目,用户仅只需要设定最大迭代次数,相比于k-means聚类方法ap聚类还有一个优点是聚类结果是固定的,而k-means聚类每次得到的结果可能不一样(由于k-means求解的是局部最优,所以初始化的中心点不一样得到的聚类结果就不一样)。

至此,即得到本发明期望的话题词集。

步骤二、根据所述话题词集,生成句子。这个过程最直观的思路是,在语料库中直接寻找包含话题词的句子,然而这样寻找句子会出现每个句子都包含话题词的情况,同时对于语义相似度如此高的句子组合成的作文,会给人一种句子堆砌的感觉,而不像是一篇作文。因此,本步骤还可以进一步通过话题词集提取出与话题词具有逻辑关系的其他关联词,然后根据这个关联词寻找句子,这样生成的句子语义更丰富,不会让人产生词语堆砌的观感。

步骤三、将步骤二中生成的所有句子进行排序,得到作文。

具体实施方式二:本实施方式与具体实施方式一不同的是:步骤一具体包括:

步骤一一、将第一训练语料库中的每个句子中的词向量wi输入至第一gru模型中,得到每个句子的句子向量表示

步骤一二、将每个句子的句子向量表示输入至第二gru模型中,得到整篇的文本的向量表示vdoc;

步骤一三、将整篇的文本的向量表示vdoc以及预先构建好的词表输入至解码器,使用softmax函数对词表里的每一个词预测一个概率值,这个概率值用于表示每个词包含文本语义的概率;

步骤一四、在预测的概率值中选出超过一定阈值的所有词构成的词集合作为话题词集w。

具体而言,本实施方式利用一个层次化神经网络编码器来学习文本的向量表示,通过一个解码器来预测概率值p(wi|vdoc),其中vdoc表示的是文本向量,wi表示词表中第i个词。选择预测概率最高的词的集合作为立意分析的结果。模型结构如图2所示,

在编码器部分,构建两层循环神经网络(rnn),分别是词-句rnn和句-文本rnn。对于训练文本,每句话的结尾都有一个结尾标志</s>,同样在文本的结尾也有一个结尾标志</d>。在词-句rnn中,当输入为</s>时,则当前句结束,用当前rnn的隐含层向量作为该句子向量的表示这是得到n个句子向量(假定文本包含n个句子)每一个句子向量作为句-文本rnn的输入,当输入为</d>时,当前rnn隐含层的向量作为文本向量表示vdic。编码器部分的rnn我们选用gru模型。在解码部分,依据编码器获得的文本向量,对词表里每一个词预测一个概率值,这个概率值表明该词包含文本语义的概率。代价函数定义为交叉熵,对于一篇文本di,该文本对应的词集合为{w1,w2…wn},那么代价函数定义为如下:

还可以使用其他形式的模型来替代本实施方式的立意分析过程,例如以下的方法(1)和方法(2):

(1)使用基于gru和cnn的层次化神经网络模型:

kim在2014年提出基于卷积神经网络(cnn)的句子分类模型,相比于之前的模型取得了非常显著的效果。模型具体结构就是利用cnn学习句子向量表示,最后利用softmax预测各个类别的概率值。作者通过大量实验验证cnn在学习句子向量表示时能够取得非常好的效果,因为相比于rnn而已cnn能够更好的捕获局部特征。因此,可以对层次化的rnn模型进行了改进,将词-句rnn替换成了cnn,使用cnn学习词之间的关系,得到句子向量表示,以此为输入使用gru学习得到文本表示,使用softmax来预测产生标签词的概率p(wi|vdoc),模型结构如图3所示。

(2)为了更加充分的利用材料的信息,还可以在gru+gru模型中加入attention结构,如图4所示。

另外,由于材料作文的题干数据很稀少,为了保证深度学习神经网络的训练效果,本发明使用了迁移学习,具体选择了人工标注数据较为丰富的知乎数据作为迁移学习的源领域,作文材料题作为迁移学习的目标领域,利用上述的基于gru和cnn的层次化神经网络模型进行了迁移学习。具体做法为先利用源领域数据(知乎数据)训练网络,然后再利用目标领域数据(作文题干数据)对网络最后一层进行微调,迁移学习模型结构如图5所示。

其它步骤及参数与具体实施方式一相同。

具体实施方式三:本实施方式与具体实施方式一或二不同的是:步骤二具体包括:

步骤二一、句子抽取步骤:

对于给定的所有话题词集合w中的每一个词w,在第二训练语料库中找出包含w的所有句子,并将所有词找出的所有句子均放入集合s中,对于集合s中的每个句子,求出该句子的向量表示;求句子向量表示的方法为:获取句子中的每个词语的wordembedding,然后在每一个维度上对这些wordembedding求平均值;

求出话题词集合的向量表示。

将话题词集合的向量表示与集合s中的各个句子向量分别做余弦相似度。

选出每个种类的句子中相似度得分最高的句子作为待扩展句子s0;句子的种类是预先标注完成的。句子的种类可以包括如下10种:全文总结句、理论论据、中心论点句、升华句、材料内容句、事实论据、分论点论据句、引论句、分论点总结句、分论点句。

以“诚信”为话题抽取句子。句子抽取效果如图6所示。

从实验结果看,发现抽取的句子在语义上还是满足了诚信这个话题,同时也可以看到抽取的句子每一句都在讨论诚信这个话题,但是在实际写作中,就算作文的主题是诚信,也不能每一句话都带有“诚信”二字,同时对于这样语义相似度如此高的句子组合成的作文,会给人是句子的堆砌,而不是一篇作文。所以对于抽取的结果我们还需要扩展。

步骤二二、句子扩展步骤。

将第二训练语料库中每一篇完整的文档输入至第一lda模型进行训练,得到第一θ矩阵、第一矩阵以及第一词表。

将第二训练语料库中每一篇文档中的每一个段落输入至第二lda模型进行训练,得到第二θ矩阵、第二矩阵以及第二词表。第一词表和第二词表是步骤一三设置的词表的子集,即实际使用时得到的第一词表和第二词表可以是通过lda模型输出的频率较高的词构成的。

将步骤二一中得到的待扩展句子s0输入至第二lda模型中进行训练,得到待扩展句子s0在主题上的概率分布和其他所有句子在主题上的概率分布。“主题”这一概念可以参考图8,其中topic1至topic4表示的是4种主题,这4种主题是将文档输入到lda模型中而自然形成的分类,每一种主题并不对应特定的中文含义。主题的种类是可以预先设置的,例如在实测过程中希望将文档按照5种主题进行分类,那么可以指定主题的种类为5。另外有一些词可以在不同的主题下同时出现,例如图8中的“发展”一词在topic1至topic3中都有出现,且概率分布各不相同。

将待扩展句子s0与其他所有句子在第二lda模型中的概率分布进行相似度计算,得到相似度最高的前k个。

将给定的话题词集合输入至第一lda模型得到话题词集合的主题词概率分布,并将所述话题词集合的主题词概率分布与之前得到的相似度最高的前k个句子在主题上的概率分布利用js公式计算相似度,并进行排序得到相似度最高的前u个句子。

即想要进行句子扩展,首先需要把语料库中的各个句子表达成lda模型下的概率分布,这个计算过程需要用到模型计算中的φ矩阵,计算方法和前面提到的计算公式几乎一样,只不过对于φ的取值,直接采用了模型训练中得到的φ矩阵。

首先我们把前面通过抽取得到的待扩展句子记作s0.利用lda训练好的模型,可以得到待扩展句子s0在主题上的概率分布和其他所有句子在主题上的概率分布,用句子s0与其他所有句子在模型下的概率分布进行相似度计算,后面会给出相似度计算方法,得到相似度最高的前k个。由于文本语料中的句子数量多达20万条,而要在线计算任意待扩展句子和其他所有句子之间的lda相似度是非常消耗时间的,所以在实际系统中,我先离线计算并保存,对于每个句子,我都记录与它lda相似度在前50的句子。示意图如图9所示。

由于主题模型下,任何句子或者文章都是基于概率分布表示的,所以在选择相似度衡量方式的时候,我选择了利用相对熵来计算,但是由于相对熵并不是堆对称的表达式,所以在其基础上选择了js公式。

js公式:

其中dkl为:

在得到句子以后,由于扩展的句子比较多,所以还需要在此基础上进行一次过滤,而过滤的方式则采用了主题与句子之间的lda相似度。在前面训练模型的部分也提到了,当时训练模型分别训练了基于篇章和基于段的模型(即第一lda模型和第二lda模型),其中基于段的模型用于前面扩展句子的部分,而基于篇章的模型则用在现在用来过滤模型。把给定的主题词集合在模型下得到其主题概率分布,并和带过滤的句子的主题概率分布利用js公式计算相似度,排序得到相似度最高的前100的句子。

下面简要介绍lda主题模型的概念。对于一篇文章、一段话、一个句子所表达的中心思想就是主题。但是在统计模型中,我们通常是用一个特定的词语分别来刻画主题。

lda主题模型是“文本-主题-词”的三层贝叶斯模型,一种非监督学习技术,对于大规模语料库该算法能有效的识别其潜在的主题信息,从而本文本信息建模为数字信息。在模型中,把每一篇文档都表示成不同主题的概率分布,同时对于每一个主题又可以用不同词语的概率分布来表示。该模型可以用图7来表示,各个符号的含义见表1:

表1lda模型中各符号的含义

在算法实现上,通过gisbbs采样完成。其中需要保存的便是θ矩阵以及矩阵。

对于这两个量的计算公式如下。

在整个算法过程中gibbssampling公式:

当上式收敛的时候,便可以停止迭代了。

由于lda模型对参数非常敏感,所以选择参数是非常重要的一个环节。对于超参数,采用了经验结果,即α=50/t,β=0.01。而对于主题个数以及采样过程中的迭代次数通过perplexity来进行计算。

在自然语言领域中,perplexity通常被使用于语言模型质量的度量,一般来说perplexity的值越小,那么模型的质量相应就越好。计算公式如下:

对于主题个数,分别取20,30,40,50,60,70,80,90...200计算其困惑度,最终选择主题为50。

对于迭代次数,分别取500,1000,1500,2000,2500,3000,发现困惑度在1000的时候已经收敛,继续迭代困惑度改变很小,所以最终选择迭代次数为1000.

有了以上步骤以后,便可以进行模型的训练。模型训练的语料是6683篇高中议论文,在训练之前已经用ltp进行了分词。模型训练的输入即语料的所在位置以及前面所提到的一些参数,同时在模型中,我对一些常用的停用词进行了过滤,至于模型的输出则是三个文本:1.θ矩阵2.矩阵3.词表。在模型训练的时候,我同时进行了两种训练。1.以篇章为基础,即把每一篇完整文档作为一个输入文档。2以段落为基础,即把每一篇文档中的每一个段落作为一个输入文档。这样做的原因是,在后面计算相关度的时候,用前一个模型对应句子和整篇文章主题的相关度,用后一个模型对应句子之间的相关度。

如图8所示是训练的主题结果截图,其中后面的概率值代表了该主题推出这个词语的概率。

句子扩展方式1和句子扩展方式2的实验结果如图10和图11所示。

其它步骤及参数与具体实施方式一或二相同。

具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:步骤三具体包括:

步骤三一、计算步骤二二中得到的u个句子的综合分熟,计算公式为:

其中score(s)代表了该句子综合各个特征的分数,w=[w1,w2…,wn]代表了各个特征之间的权重分配,而f=[f1,d2…,fn]则代表了在各个特征上的分数计算函数;

步骤三二、使用learningtorank的方法学习各个特征之间的权重分配,即向量w;.

步骤三三、使用贪心算法,以前一个句子为基础,选择分熟最高的句子作为下一个句子,从而得到排序后的多个句子。

具体而言,本实施方式使用基于learningtorank的模型,在该模型中,我们通过分析高考作文语料,提出了一些在高考作文写作时一些比较重要的特征,作为我们考虑的关键。对于每个高考作文句,我们都需要在其每个特征上对它进行打分。然后选择在当前情况下综合分数最高的句子作为下一句。由于每个句子都考察了多个特征,因而需要考虑各个特征下分数的权重分配。句子的综合分数计算公式如下:

其中score(s)代表了该句子综合各个特征的分数,w=[w1,w2…,wn]代表了各个特征之间的权重分配,而f=[f1,f2…,fn]则代表了在各个特征上的分数计算函数。在这个想法下,我们使用learningtorank的方法来学习各个特征之间的权重分配,即向量w。

通过learningtorank方法,可以学习到各个特征之间的权重分配。而排序过程则是一个贪心过程,每次都以前一个句子作为基础,选择分数最高的句子作为下一个句子。

其它步骤及参数与具体实施方式一至三之一相同。

具体实施方式五:本实施方式与具体实施方式一至四之一不同的是:函数f=[f1,f2…,fn]对应的各个特征的含义是:

作文句的篇章角色:至少包括论点句、分论点句、事例句。

作文句与作文主题的相似度,计算方法为:将作文中的句子以及作文主题中各个词语的wordembedding求平均值来表示作文句与作文主题的向量,然后利用余弦相似度计算。

前后句子之间的相似度,计算方法为:把作文中的句子利用词语的wordembedding向量化,然后求余弦相似度。

句子与主题的相关程度,计算方法为:把作文中的句子以及作文主题利用主题模型向量化,表示成lda下各个主题的概率分布,并计算句子对应的概率分布于主题对应的概率分布之间的kl距离。

句子之间的相关程度,计算方法为:利用主题模型考量高考作文句之间的kl距离。

句子之间的公用词,计算方法为:去除停用词以后,计算句子之间公共词语所占的比例。

句子之间的连贯度,计算方法为:先利用recursiveneuralnetworks作为句子encoder,接着把窗口内的句子向量进行拼接,再通过两层的神经网络来预测窗口内的句子是否是连贯的,预测的值是一个0到1之间的浮点数,数值越大代表连贯度越高。

其它步骤及参数与具体实施方式一至四之一相同。

具体实施方式六:本实施方式与具体实施方式一至五之一不同的是:

本实施方式提供另一种步骤三的实现方式,包括:

使用pointernetwork模型处理步骤二中的所有句子,其中pointernetwork模型包括第一编码器,第二编码器以及解码器,其中第一编码器为lstm神经网络,第一编码器将句子包含的词语的embedding按顺序作为输入,并输出整个句子的embedding;第二编码器为lstm神经网络,第二编码器将整个句子的embedding作为输入,并输出文段的embedding;第三编码器为lstm模型,并输出排序后的句子。

pointernetwork主要由句子encoder、encoder、decoder三部分构成,具体为:

1、句子encoder(第一编码器)

循环神经网络适合处理序列问题,随着序列的进行,它能够保持住关键的信息,具有一定的记忆性。而我们使用longshort-term(lstm)神经网络作为句子encoder,lstm是一种机制更有效的循环神经网络,它能够避免一些普通循环神经网络中梯度消失和梯度爆炸的问题。每个lstm神经元由输入门i,忘记门f以及输出门o三种门控制:

其中w和b是可训练的参数,σ(·)是sigmoid函数,是tanh函数。

在句子encoder部分,我们需要用lstm神经网络来对高考作文句子进行向量化。句子encoder把一个句子s所包含的词语按顺序作为输入,然后利用lstm神经网络计算出整个句子的embedding.所以如果用|s|表示句子s中词语的个数,那么显然句子s的embedding为h|s|。

2、encoder(第二编码器)

encoder部分也是采用的lstm神经网络,不过和句子encoder相比较,句子encoder在每个节点上的输入是一个词语的embedding,而在encoder部分,每个节点的输入是一个句子的embedding,所以在encoder部分,我们最后得到是一个文段的embedding,如果一个文段总共有n个句子,那么有:

ei=encoder(si,ei-1),i=(1,..,n)

其中si是第i个句子的句子embedding,同时,对于encoder的初始值我们使用e0=0

利用这样的一个encoder我们就可以计算得到整个文段的embedding。

3、decoder(解码器)

对于ptr-net的decoder,我们同样使用了lstm.不同的是,在decoder中,利用了attention的思想,每一步我们都需要用当前隐层向量与encoder部分各个节点的向量进行计算,计算过程如下:

即在softmax计算后得到的概率,即这个句子成为下一句的概率。在训练阶段我们是知道正确顺序的,而在测试预测阶段,我们每一步的预测都是通过选择概率值大的句子作为下一句。而在预测的过程中,我们可以使用贪心方法和beamsearch两种方法。最终我们可以知道这些句子得到顺序o的概率为:

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1