买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
摘要:本发明公开了一种基于Char‑RNN模型的文本自动生成方法,包括下述步骤:S1、获取符合特征要求的文本数据;S2、对文本数据进行建模处理,并使用向量矩阵来表示字母或者汉字,得到训练数据;S3、将训练数据逐批输入Char‑RNN模型中进行训练,得到每一个字符对应的下一个字符的概率,并随着训练次数的提升会不断修正这个概率,达到预设好的训练次数后会保存训练模型结果;S4、以输入的关键字词作为起始字符,使用训练好的模型结果来得到对应下一个字符的概率并输出,并以此作为下一步的字符输入,依次类推生成一段文本。相比普通的RNN模型,本发明解决了其在长序列数据处理时会产生的梯度消失或梯度爆炸问题。
主权项:1.一种基于Char-RNN模型的文本自动生成方法,其特征在于,包括下述步骤:S1、获取符合特征要求的文本数据;S2、对获取的文本数据进行建模处理,即使用向量矩阵来表示字母或者汉字,得到训练数据;当使用向量矩阵来表示字母时,其中字母使用one-hot独热向量来表示,然后依次输入网络;one-hot编码,使用二进制向量表示,长度即为词库大小;在英语的26个小写字母中,字母a的表示是第一位为1,其他25位都是0,即向量(1,0,0,…,0),字母b的表示是第二位为1,其他25位都是0,即向量(0,1,0,…,0),以此类推;输出相当于一个26类分类问题,因此每一步输出的向量也是26维;当使用向量矩阵来表示汉字时,使用汉字处理前需要加入一层embedding层的处理,将单个汉字按其实际意义分类,从而将数量庞大的汉字字符转换为较稠密的表示,取得更好的效果;S3、将训练数据逐批输入Char-RNN模型中进行训练,得到每一个字符对应的下一个字符的概率,并随着训练次数的提升会不断修正这个概率,达到预设好的训练次数后会保存训练模型结果;在Char-RNN模型加入一层Softmax层处理,Softmax是一个函数,即Softmax将原来的数字输出映射成为(0,1)的值,这些值的累和为1;Softmax函数是一个帮助得到概率的工具,所以将中间计算结果经过变换后得到logits,再做Softmax处理,得到输出即预测的概率,根据此概率选取概率最大的字符作为输出了;S4、以输入的关键字词作为起始字符,使用训练好的模型结果来得到对应下一个字符的概率并输出,并以此作为下一步的字符输入,依次类推生成一段文本。
全文数据:一种基于Char-RNN模型的文本自动生成方法技术领域本发明属于神经网络的技术领域,具体涉及一种基于Char-RNN模型的文本自动生成方法。背景技术循环神经网络RNN是经典的神经网络,也是时序数据的首选网络。当涉及某些顺序机器学习任务时,RNN可以达到很高的精度,没有其他算法可以与之一较高下。这是由于传统的神经网络只是具有一种短期记忆,而RNN具有有限的短期记忆的优势。RNN的主要目的是用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,当要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNN能够对任何长度的序列数据进行处理。目前有许多论文都是基于CNN在NLP上的应用,但其实深度学习与NLP结合的领域中应用最广的应该是RNN,因为文本可以直观地被表示为输入序列,方便的被RNN处理,捕获其Long-Term依赖等信息,而且实际应用中也取得了很好的效果。RNN有很多应用,其中一个不错的应用是与自然语言处理NLP的合作。网上已经有很多人证明了RNN,他们创造出了效果令人惊讶的模型。基于RNN的系统可以学习翻译语言、控制机器人、图像分析、文档摘要、语音识别图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等等任务。举个例子,在2015年,谷歌通过基于CTC训练的RNN程序大幅提升了安卓手机和其他设备中语音识别的能力;百度也使用了CTC;苹果的iPhone在QucikType和Siri中使用了RNN;微软不仅将RNN用于语音识别,还将这一技术用于虚拟对话形象生成和编写程序代码等等。亚马逊Alexa通过双向RNN在家中与你交流,而谷歌使用RNN的范围更加广泛,它可以生成图像字幕,自动回复电子邮件,它包含在新的智能助手Allo中,也显著地提高了谷歌翻译的质量从2016年开始。事实上,谷歌数据中心的很大一部分计算资源现在都在执行RNN任务。在内容推荐上RNN也颇有建树,学术上有不断的深入研究甚至已经开始得到大型企业、互联网公司的应用。例如Netflix在ICLR2016有篇合作的文章,讲的是如何使用RNN根据用户的短期行为数据做视频推荐。而在文本自动生成上,RNN也有一席之地。现有技术中已经有人证明了RNN这点,他们创造出了的语言模型能采纳像莎士比亚的诗歌这样的大量输入,并在训练这些模型后生成它们自己的莎士比亚式的诗歌,而且这些诗歌很难与原作区分开来。而这种针对文本自动生成的RNN模型就是Char-RNN,所以如何利用Char-RNN模型自动生成文本是本领域技术人员的研究方向之一。发明内容本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于Char-RNN模型的文本自动生成方法,解决了其在长序列数据处理时会产生的梯度消失或梯度爆炸问题。为了达到上述目的,本发明采用以下技术方案:本发明提供的一种基于Char-RNN模型的文本自动生成方法,包括下述步骤:S1、获取符合特征要求的文本数据;S2、对获取的文本数据进行建模处理,即使用向量矩阵来表示字母或者汉字,得到训练数据;S3、将训练数据逐批输入Char-RNN模型中进行训练,得到每一个字符对应的下一个字符的概率,并随着训练次数的提升会不断修正这个概率,达到预设好的训练次数后会保存训练模型结果;S4、以输入的关键字词作为起始字符,使用训练好的模型结果来得到对应下一个字符的概率并输出,并以此作为下一步的字符输入,依次类推生成一段文本。作为优选的技术方案,步骤S1中,符合特征要求的文本数据满足下述要求:文本类型、语句风格特点接近;统一使用txt文档类型、UTF-8编码格式保存;使用相同的语言。作为优选的技术方案,步骤S2中,当使用向量矩阵来表示字母时,其中字母使用one-hot独热向量来表示,然后依次输入网络;one-hot编码,使用二进制向量表示,长度即为词库大小。作为优选的技术方案,在英语的26个小写字母中,字母a的表示是第一位为1,其他25位都是0,即1,0,0,…,0,字母b的表示是第二位为1,其他25位都是0,即0,1,0,…,0,以此类推;输出相当于一个26类分类问题,因此每一步输出的向量也是26维。作为优选的技术方案,在步骤S2中,当使用向量矩阵来表示汉字时,汉字处理前需要加入一层embedding层的处理,将单个汉字按其实际意义分类,从而将数量庞大的汉字字符转换为较稠密的表示,取得更好的效果。作为优选的技术方案,所述Char-RNN模型是一个NVSN模型,并加入一个Dropout层的数据处理,用于减少过拟合的情况;在Char-RNN模型中,Dropout处理的原理就是随机忽略掉一些数据之间的联结,神经网络整体变得“不完整”,用这个“不完整”的神经网络训练过一次后,第二次再随机忽略另一些数据联结,再训练,以此类推;所述Dropout层存有一个keep_prob参数,它表示随机保留数据的概率。作为优选的技术方案,步骤S3中,在Char-RNN模型加入一层Softmax层处理,Softmax是一个函数,它的数学定义是:假设一个数组V,vi表示V中的第i个元素,那么这个元素的Softmax值就是Si=ei∑jej,即Softmax可以将原来的数字输出映射成为0,1的值,这些值的累和为1;Softmax函数是一个帮助得到概率的工具,所以可将中间计算结果经过变换后得到logits,再做Softmax处理,得到输出即预测的概率,就可以根据此概率选取概率最大的字符作为输出了。作为优选的技术方案,步骤S3中,在定义损失中,将预测概率和训练目标的独热编码做交叉熵得到损失,所述训练目标即输入的每个字母对应的下一个字母。本发明与现有技术相比,具有如下优点和有益效果:1在文本处理上,相比其他模型的语句、词语级别,本发明精确到字符级别,可以学习得到字符程度上的连贯性。2相比普通的RNN模型,本发明解决了其在长序列数据处理时会产生的梯度消失或梯度爆炸问题。3相比以语句、词语输入的RNN模型,本发明可以解决未登录词的问题。4本发明训练中文语料时,因为输入单元具体到每一个汉字,所以不需要进行中文分词处理,减少较为复杂的分词步骤的同时也避免了分词所可能带来的错误。附图说明图1是“NVSN”的经典RNN结构示意图;图2是Char-RNN利用已经输入的字符来预测下一个字符的示意图;图3是本发明的文本自动生成方法流程图。具体实施方式下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。实施例本发明基于Char-RNN模型的文本自动生成方法的主要原理为:首先根据提供的文本数据作为训练样本数据集,对数据集中的文本数据进行预处理来形成训练用的样本数据对文字进行编码,建立映射,字母使用独热向量表示,汉字需要加入embedding层;其次将处理好的训练数据作为Char-RNN模型的输入来进行模型的训练和输出。所述Char-RNN,即为字符级循环神经网络,最早出自于AndrejKarpathy写的TheUnreasonableEffectivenessofRecurrentNeuralNetworks。众所周知,RNN非常擅长处理序列问题,序列数据前后有很强的关联性,而RNN通过每个单元权重与偏置的共享以及循环计算前面处理过的信息会被利用处理后续信息来体现。Char-RNN模型是从字符的维度上,让机器生成文本,即通过已经观测到的字符出发,预测下一个字符出现的概率,也就是序列数据的推测。现在网上介绍的用深度学习写歌、写诗、写小说的大多都是基于这个方法。样本间存在的顺序关系则称为序列样本,比如说在上下文中,一个词和前面的词是关联的;在土壤数据中,某时的温度和之前的温度是有关联的。Char-RNN不像传统的神经网络的输入输出是固定的,它允许输入输出向量序列,它可以将已有的信息重复利用。所以,使用Char-RNN对各类序列性文本进行分析就成了首选。要让机器生成文本,就需要一个语言模型。语言模型用来评估一句话是自然语言的概率,即根据一句话中现有的词推测下一个词出现的概率。Char-RNN适用于处理序列数据,它可以提取任意长度序列Xt,Xt-1,...,X1的摘要,选择性保留序列的某些方面。如图1所示,Char-RNN模型是一个“NVSN”结构,以英文输入为例,在这里它的输入序列是句子中的字母,输出依次是该输入的下一个字母,是用已经输入的字母去预测下一个字母的概率。下面对本发明的技术方案做进一步的阐述:如图3所述,本实施例基于Char-RNN模型的文本自动生成方法,包括下述步骤:步骤S1:获取符合特征要求的文本数据。步骤S1中,获取的文本数据需要符合以下要求:1文本类型、语句风格特点较接近;2统一使用txt文档类型、UTF-8编码格式保存;3使用相同的语言例如都是使用英语或者汉语,不可以不同语言夹杂一起。步骤S2:对文本数据进行建模处理,主要使用向量矩阵来表示字母或者汉字,得到训练数据。对文本数据的建模处理过程主要是使用向量矩阵来表示字符。其中英文字母将使用独热向量One-HotEncoding来表示,然后依次输入网络。以英语中的26个小写字母为例:字母a的表示为第一位为1,其他25位都是0,即1,0,0,…,0,字母b的表示是第二位为1,其他25位都是0,即0,1,0,…,0,以此类推。输出相当于一个26类分类问题,因此每一步输出的向量也是26维。在实际使用中因为字母也有大小写区分以及其他标点符号的存在,因此独热向量单纯对英文字母的编码表示都会比26要多。如果是训练英文字母等拉丁字母,因为字母数量较少英文字母为例仅有26个所以可以直接使用较为简单的one-hot编码来完成字母的向量矩阵表示。但当使用向量矩阵来表示汉字时,汉字数量庞大,如果继续使用one-hot编码则其向量长度会很庞大,表达过于稀疏。embedding,即词嵌入,它可以用低维向量来表达汉字,降低特征位数。embedding的向量表示会将字母投影到连续向量空间中,每个字母在向量空间中的位置可以反映出其语义间的关联程度,例如文字“男”“女”之间的距离会比“男”“猫”之间的距离更近,因为“男”“女”更为相似。所以我们使用汉字处理前需要加入一层embedding层的处理,将单个汉字按其实际意义分类,从而将数量庞大的汉字字符转换为较稠密的表示,取得更好的效果。对文本数据的建模处理过程中,如果是汉字则需要采用与英文字母不同的处理方法。汉字处理前需要加入一层embedding层,它可以将单个汉字按其实际意义分类,从而将数量庞大的汉字字符转换为较稠密的表示,取得更好的效果。embedding的参数变量通过训练得到。步骤S3:将训练数据逐批输入Char-RNN模型中进行训练,训练过程的目的是得到每一个字符对应的下一个字符的概率,并随着训练次数的提升会不断修正这个概率,达到预设好的训练次数后会保存训练模型结果。步骤S3中,训练模型是一个多层的NVSN模型,在这里会加入一个Dropout层的数据处理,以减少过拟合的情况。在Char-RNN模型中,Dropout处理的原理就是随机忽略掉一些数据之间的联结,神经网络整体变得“不完整”,用这个“不完整”的神经网络训练过一次后,第二次再随机忽略另一些数据联结,再训练,以此类推。通过这样做在整个训练过程中都让每一次预测结果都不会太依赖于其中某部分特定的数据。Dropout的做法是从根本上让神经网络没机会过度依赖,从而减少过拟合的现象出现。在Char-RNN模型中,所述Dropout层存有一个keep_prob参数,它表示随机保留数据的概率。例如keep_porb=0.5表示随机保留一半的数据来用于训练。本实施例通过这一个关键参数来实现Dropout层的数据处理以防过拟合。训练模型的输出需要得到最后的分类概率,所以会加入一层Softmax层处理。Softmax是一个函数,它的数学定义是:假设一个数组V,vi表示V中的第i个元素,那么这个元素的Softmax值就是Si=ei∑jej。即Softmax可以将原来的数字输出映射成为0,1的值,这些值的累和为1满足概率的性质。Softmax函数是一个帮助得到概率的工具。所以可以将中间计算结果经过变换后得到logits,再做Softmax处理,得到输出即预测的概率,就可以根据此概率选取概率最大的字符作为输出了。在定义损失中,将预测概率和训练目标即输入的每个字母对应的下一个字母的独热编码做交叉熵得到损失。步骤S4:以输入的关键字词作为起始字符,使用训练好的模型结果来得到对应下一个字符的概率并输出,并以此作为下一步的字符输入,依次类推生成一段文本。如图2,“锄禾日当午”这句话输入后,“锄”字对应的下一个输出就很大概率是“禾”,以此类推。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求:1.一种基于Char-RNN模型的文本自动生成方法,其特征在于,包括下述步骤:S1、获取符合特征要求的文本数据;S2、对获取的文本数据进行建模处理,即使用向量矩阵来表示字母或者汉字,得到训练数据;S3、将训练数据逐批输入Char-RNN模型中进行训练,得到每一个字符对应的下一个字符的概率,并随着训练次数的提升会不断修正这个概率,达到预设好的训练次数后会保存训练模型结果;S4、以输入的关键字词作为起始字符,使用训练好的模型结果来得到对应下一个字符的概率并输出,并以此作为下一步的字符输入,依次类推生成一段文本。2.根据权利要求1所述一种基于Char-RNN模型的文本自动生成方法,其特征在于,步骤S1中,符合特征要求的文本数据满足下述要求:文本类型、语句风格特点接近;统一使用txt文档类型、UTF-8编码格式保存;使用相同的语言。3.根据权利要求1所述一种基于Char-RNN模型的文本自动生成方法,其特征在于,步骤S2中,当使用向量矩阵来表示字母时,其中字母使用one-hot独热向量来表示,然后依次输入网络;one-hot编码,使用二进制向量表示,长度即为词库大小。4.根据权利要求3所述一种基于Char-RNN模型的文本自动生成方法,其特征在于,在英语的26个小写字母中,字母a的表示是第一位为1,其他25位都是0,即1,0,0,…,0,字母b的表示是第二位为1,其他25位都是0,即0,1,0,…,0,以此类推;输出相当于一个26类分类问题,因此每一步输出的向量也是26维。5.根据权利要求1所述一种基于Char-RNN模型的文本自动生成方法,其特征在于,在步骤S2中,当使用向量矩阵来表示汉字时,汉字处理前需要加入一层embedding层的处理,将单个汉字按其实际意义分类,从而将数量庞大的汉字字符转换为较稠密的表示,取得更好的效果。6.根据权利要求1所述一种基于Char-RNN模型的文本自动生成方法,其特征在于,所述Char-RNN模型是一个NVSN模型,并加入一个Dropout层的数据处理,用于减少过拟合的情况;在Char-RNN模型中,Dropout处理的原理就是随机忽略掉一些数据之间的联结,神经网络整体变得“不完整”,用这个“不完整”的神经网络训练过一次后,第二次再随机忽略另一些数据联结,再训练,以此类推;所述Dropout层存有一个keep_prob参数,它表示随机保留数据的概率。7.根据权利要求1所述一种基于Char-RNN模型的文本自动生成方法,其特征在于,步骤S3中,在Char-RNN模型加入一层Softmax层处理,Softmax是一个函数,它的数学定义是:假设一个数组V,vi表示V中的第i个元素,那么这个元素的Softmax值就是Si=ei∑jej,即Softmax可以将原来的数字输出映射成为0,1的值,这些值的累和为1;Softmax函数是一个帮助得到概率的工具,所以可将中间计算结果经过变换后得到logits,再做Softmax处理,得到输出即预测的概率,就可以根据此概率选取概率最大的字符作为输出了。8.根据权利要求1所述一种基于Char-RNN模型的文本自动生成方法,其特征在于,步骤S3中,在定义损失中,将预测概率和训练目标的独热编码做交叉熵得到损失,所述训练目标即输入的每个字母对应的下一个字母。
百度查询: 广州大学 一种基于Char-RNN模型的文本自动生成方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。