一种基于动态推敲网络的自然语言生成方法

文档序号:1271766 发布日期:2020-08-25 浏览:37次 >En<

阅读说明:本技术 一种基于动态推敲网络的自然语言生成方法 (Natural language generation method based on dynamic knock-out network ) 是由 王春辉 胡勇 于 2020-05-13 设计创作,主要内容包括:本发明公开一种基于动态推敲网络的自然语言生成方法。所述方法包括:建立Encoder-Attention-Decoder模型;以原始文档x为输入,调用所述模型生成K个初始的句子;从K个句子中随机选取一个句子y&lt;Sub&gt;c&lt;/Sub&gt;;根据x和y&lt;Sub&gt;c&lt;/Sub&gt;调用所述模型,模型中的两个Attention模块分别对x和y&lt;Sub&gt;c&lt;/Sub&gt;进行处理,并将处理结果融合在一起,生成K个新的句子;重复上述步骤直到满足收敛条件。本发明通过反复调用所述模型,利用模型中的Attention模块对生成的句子进行反复推敲、润色,能够输出高质量的句子。(The invention discloses a natural language generation method based on a dynamic knock-out network. The method comprises the following steps: establishing an Encode-Attention-Decoder model; calling the model to generate K initial sentences by taking an original document x as input; randomly selecting a sentence y from K sentences c (ii) a According to x and y c Calling the model, wherein two Attention modules in the model respectively correspond to x and y c Processing, and fusing the processing results together to generate K new sentences; and repeating the steps until the convergence condition is met. The invention repeatedly calls the model, repeatedly pushes and moistens the generated sentence by utilizing the Attention module in the model, and can output the high-quality sentence.)

一种基于动态推敲网络的自然语言生成方法

技术领域

本发明属于自然语言理解技术领域,具体涉及一种基于动态推敲网络的自然语言生成方法。

背景技术

目前,自然语言生成NLG(Natural Language Generation)是自然语言处理的一部分,从知识库或逻辑形式等机器表示系统生成自然语言。自然语言生成系统可以说是一种将资料转换成自然语言表述的翻译器,可以将其理解为自然语言理解的反向。在自然语言生成中,输入序列和输出序列的长度都不是固定的,比如机器翻译、自动文摘等。要处理这种变长的输入和输出,通常使用循环神经网络RNN(RecurrentNeuralNetwork)。对于简单的多层前馈神经网络,每一次输入都要重新计算网络的中间状态,它不受之前样本计算得到的中间状态的影响。而RNN就可以保存这一历史信息,根据当前的输入和历史状态计算当前的状态信息,因此RNN可以处理任意长度的输入。RNN的主要思想就是循环地将输入序列压缩成一个固定维度的向量,也就是网络的中间状态,这一过程通过不断地将当前时刻的输入和历史状态组合实现。

从机器学习的角度看,自然语言生成可以看作一个有监督学习的过程,学习一个任意长度序列到另一个任意长度序列的过程。如果采用典型的编码器-解码器Encoder-Decoder结构,Encoder需要先将整个输入词序列压缩成一个固定维度的向量,然后Decoder从中解码出整个输出词序列。这就要求这个固定维度的向量包含输入句子的所有信息,显然这是很难达到的,这也成了Encoder-Decoder结构的性能瓶颈,使其无法很好地处理长句子。为此,有人提出将注意力Attention机制引入Encoder-Decoder框架,使Decoder更多地关注输入端部分词,从而缓解了Encoder-Decoder框架中将输入序列压缩成固定维度向量带来的问题。目前基于Encoder-Attention-Decoder框架的方法提取生成自然语言,往往只进行一次性解码,缺乏对人类写作过程中反复推敲的建模,导致生成的句子存在不够流利、质量不高的问题。

发明内容

为了解决现有技术中存在的上述问题,本发明提出一种基于动态推敲网络的自然语言生成方法。

为实现上述目的,本发明采用如下技术方案:

一种基于动态推敲网络的自然语言生成方法,包括以下步骤:

步骤1,建立Encoder-Attention-Decoder模型,模型的输入为原始文档,输出为满足任务要求的文档;

步骤2,以原始文档x为输入调用所述模型,生成K个初始的句子Y0={y01,y02,…,y0K};

步骤3,从K个句子中随机选取一个句子yc

步骤4,根据x和yc调用所述模型,模型中的两个Attention模块分别对x和yc进行处理,并将处理结果融合在一起,生成K个句子Yc={yc1,yc2,…,ycK};

步骤5,重复步骤3、4,直到满足收敛条件。

与现有技术相比,本发明具有以下有益效果:

本发明通过建立Encoder-Attention-Decoder模型,以原始文档x为输入,调用所述模型生成K个初始的句子,从K个句子中随机选取一个句子yc,根据x和yc调用所述模型,模型中的两个Attention模块分别对x和yc进行处理,并将处理结果融合在一起,生成K个新的句子,重复上述步骤直到满足收敛条件。本发明通过反复调用所述模型,利用模型中的Attention模块对生成的句子进行反复推敲,能够输出高质量的句子。

附图说明

图1为本发明实施例一种基于动态推敲网络的自然语言生成方法的流程图;

具体实施方式

下面结合附图对本发明作进一步详细说明。

本发明实施例一种基于动态推敲网络的自然语言生成方法,流程图如图1所示,所述方法以下步骤:

S101、建立Encoder-Attention-Decoder模型,模型的输入为原始文档,输出为满足任务要求的文档;

S102、以原始文档x为输入调用所述模型,生成K个初始的句子Y0={y01,y02,…,y0K};

S103、从K个句子中随机选取一个句子yc

S104、根据x和yc调用所述模型,模型中的两个Attention模块分别对x和yc进行处理,并将处理结果融合在一起,生成K个句子Yc={yc1,yc2,…,ycK};

S105、重复步骤S103、S104,直到满足收敛条件。

在本实施例中,步骤S101主要用于建立Encoder-Attention-Decoder模型。所述模型是在经典的Encoder-Decoder结构中引入Attention机制得到的,编码器Encoder和解码器Decoder均采用一个循环神经网络RNN,每个RNN的输出连接一个Attention模块。现有的Encoder-Attention-Decoder模型只调用一次Decoder,而本实施例所述模型的Decoder须多次调用,以实现对生成句子的反复推敲、润色,从而输出高质量的句子。

在本实施例中,步骤S102主要用于生成K个初始的句子。K个初始的句子通过以原始文档x为输入调用所述模型得到。比如,输入句子为“北京是中国的首都”,任务要求为中英机器翻译,调用所述模型,取K=3,可生成3个初始句子。例如3个初始句子可以是:“Beijing is the capital”,“Beijing is capital of China”,“Beijing is thecapital of China”。

在本实施例中,步骤S103主要用于从上一步生成的K个句子中随机地选取一个句子。比如,选取第二个句子“Beijing is capital of China”;当然也可以选取第一个句子“Beijing is the capital”。

在本实施例中,步骤S104、S105主要用于实现对生成句子的反复推敲,以生成高质量的句子。推敲在进行翻译、写作的时候是一个很普遍的做法。为此,将推敲过程加入到编码器-解码器框架中,使解码器工作在两阶段:第一阶段的解码器用于解码生成原始序列;第二阶段的解码器通过反复推敲的过程打磨和润色原始语句,能够通过在第一阶段的原始语句中观察未来的单词而产生更好的句子。步骤S104、S105就是解码器工作的第二阶段。具体方法是:再次调用所述模型,此时输入x不变,利用两个Attention模块分别对输入x和上一步选取的句子yc进行提取特征、压缩等处理,并将处理结果融合在一起(首尾相连),输出K个新的句子;然后,从这K个新的句子中再随机地选取一个句子。反复执行步骤S104、S105就实现了对生成句子的推敲、润色。当满足收敛条件时停止推敲即可输出经推敲后的高质量句子。例如,基于原始文档“北京是中国的首都”和选取的句子“Beijing is capital ofChina”,再次调用所述模型,输出3个新的句子。假设经多次调用模型后输出的3个句子为:“Beijing is the capital of China”,“Beijing is the capital of China”,“Beijingis the capital of China”。由于这时输出的3个句子完全相同,已满足收敛条件,停止调用模型。最后输出的句子是最准确的翻译结果“Beijing is the capital of China”。

作为一种可选实施例,所述收敛条件为:

输入x不变,连续两次调用所述模型生成句子y的条件概率P(y|x)不变;或连续两次调用所述模型生成的句子之间的Levenshtein距离不变。

本实施例给出了两个具体的收敛条件。两个条件之间是逻辑或关系,即只要满足其中任意一个条件就停止句子生成过程。第一个条件是根据连续两次调用所述模型生成句子y的条件概率P(y|x)条件概率是否变化进行判断。P(y|x)由输出层经过softmax激活函数获得。第二个条件是根据连续两次调用所述模型生成的句子之间的Levenshtein距离是否变化进行判断。Levenshtein距离又称字符串编辑距离,字符串A、B的Levenshtein距离是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数。字符操作包括删除、插入和修改一个字符。一般来说,两个字符串的Levenshtein距离越小,则它们越相似。当两个字符串相等时,它们的Levenshtein距离为0。

上述仅对本发明中的几种具体实施例加以说明,但并不能作为本发明的保护范围,凡是依据本发明中的设计精神所做出的等效变化或修饰或等比例放大或缩小等,均应认为落入本发明的保护范围。

6页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:疾病分类编码识别方法、装置及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!