模型训练及古诗生成方法、古诗生成模型、设备和介质与流程

文档序号:21365159发布日期:2020-07-04 04:40阅读:538来源:国知局
模型训练及古诗生成方法、古诗生成模型、设备和介质与流程

本发明涉及人工智能的深度学习技术领域,具体地说,涉及一种模型训练及古诗生成方法、古诗生成模型、设备和介质。



背景技术:

随着深度学习在自然语言领域的发展,文本生成技术也逐渐有了一些应用,比较常见的就是诗歌生成,生成的诗歌可以在节假日或纪念日作为祝福语发送给用户,以此表达对用户节日的问候。

目前的古诗生成技术,虽然在用词和韵律上的效果基本达到比较好的水平,但是经常会出现上下文关联不高,前后诗句表达意思不一致的情况,这样的诗虽然读起来有诗的感觉,但整首诗表达的主题缺乏整体性和前后连贯性。

需要说明的是,上述背景技术部分申请的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

有鉴于此,本发明提供一种模型训练及古诗生成方法、古诗生成模型、设备和介质,通过将关键词和历史信息添加入模型的输入中,使生成的古诗主题清晰、上下文对应、整体连贯。

本发明的第一方面提供一种模型训练方法,包括步骤:根据多个训练主题和每个所述训练主题关联的训练古诗,分别以每首所述训练古诗为训练样本,训练古诗生成模型,包括:获得一第一训练古诗的每句诗句的关键词;根据第一时刻的目标输出、所述第一时刻的下一时刻的目标输出的所属诗句的关键词、及所述第一训练古诗基于所述下一时刻的历史预测信息,生成所述下一时刻的输入信息;以及,将所述下一时刻的输入信息输入所述古诗生成模型,获得所述下一时刻的预测输出。

在一个实施例中,所述古诗生成模型包括embedding层,所述生成所述下一时刻的输入信息的步骤包括:embedding层将所述第一时刻的目标输出、所述下一时刻的目标输出的所属诗句的关键词、及所述第一训练古诗的历史预测信息映射至向量空间并拼接,生成所述下一时刻的字向量;以及,根据所述下一时刻的字向量生成所述下一时刻的输入信息。

在一个实施例中,所述生成所述下一时刻的字向量之后,还包括:根据所述下一时刻的目标输出在其所属诗句中的位置,生成所述下一时刻的位置向量;以及,根据所述下一时刻的字向量和所述下一时刻的位置向量,拼接生成所述下一时刻的输入信息。

在一个实施例中,所述古诗生成模型包括gru网络层和mlp层,所述获得所述下一时刻的预测输出的步骤包括:gru网络层根据所述下一时刻的输入信息,输出与所述下一时刻的输入信息的向量维度对应的多个预测输出;以及,mlp层根据softmax函数筛选所述多个预测输出的概率值排序中最大概率值对应的预测输出,作为所述下一时刻的预测输出。

在一个实施例中,所述根据第一时刻的目标输出的步骤中,通过teacherforcing函数将所述第一时刻的预测输出更新为所述第一时刻的目标输出。

在一个实施例中,所述获得一第一训练古诗的每句诗句的关键词的步骤包括:对所述第一训练古诗的每句诗句进行分词,获得每句诗句的词汇集;计算每个词汇在其所属诗句的词汇集中的词频tf及其所属诗句在所述第一训练古诗中的逆文档频率idf;根据每个所述词汇的词频tf和该所述词汇的所属诗句的逆文档频率idf,获得每个所述词汇的tf-idf值;以及,分别筛选每句诗句中tf-idf值最高的词汇作为每句诗句的关键词。

在一个实施例中,所述获得每句诗句的词汇集的步骤中,获得一第一诗句的词汇集的步骤包括:对所述第一诗句进行自动分割,获得第一分词词组;通过二元分词法对所述第一诗句进行分割,获得第二分词词组;通过三元分词法对所述第一诗句进行分割,获得第三分词词组;以及,将所述第一分词词组、所述第二分词词组和所述第三分词词组进行合并去重,获得所述第一诗句的词汇集。

在一个实施例中,所述获得每个所述词汇的tf-idf值的步骤包括:根据一第一古诗词典遍历各所述词汇集,对各所述词汇集中命中所述第一古诗词典中的古诗词的词汇的tf-idf值进行加权;和/或,根据一第二古诗词典遍历各所述词汇集,筛除各所述词汇集中命中所述第二古诗词典中的古诗词的词汇。

本发明的第二方面提供一种古诗生成方法,根据一目标主题,通过基于上述任意实施例所述的模型训练方法训练的古诗生成模型生成目标古诗,包括步骤:生成第二时刻的k个候选项,包括:根据所述第二时刻的所属诗句的关键词和所述目标古诗基于所述第二时刻的历史生成信息,生成所述第二时刻的输入信息;根据所述第二时刻的输入信息获得所述第二时刻的多个生成字;通过集束搜索筛选所述多个生成字的概率值排序的前k个生成字,分别与所述第二时刻的所属诗句的历史生成信息中各生成项组合成多个候选项;以及,筛选所述多个候选项的概率值排序的前k个候选项,作为所述第二时刻的k个候选项。

在一个实施例中,所述古诗生成方法还包括步骤:根据所述第二时刻的所属诗句的字数,循环执行所述生成第二时刻的k个候选项的步骤,获得所述第二时刻的所属诗句的k个生成诗句;根据所述目标古诗的诗句数,循环执行所述获得所述第二时刻的所属诗句的k个生成诗句的步骤,获得所述目标古诗的每句诗句的k个生成诗句;以及,对所述目标古诗的每句诗句的k个生成诗句进行组合和筛选,获得所述目标古诗。

在一个实施例中,所述根据所述第二时刻的所属诗句的关键词的步骤包括:当所述第二时刻的所属诗句的历史生成信息为空时,根据所述目标主题获得所述第二时刻的关键词;以及,当所述第二时刻的所属诗句的历史生成信息不为空时,根据获得的所述第二时刻的关键词遍历各训练样本的关键词集,从各所述训练样本的关键词集中筛选与获得的所述第二时刻的关键词匹配度最高的一关键词,作为所述第二时刻的关键词。

本发明的第三方面提供一种古诗生成方法,根据一目标主题,通过基于上述任意实施例所述的模型训练方法训练的古诗生成模型生成目标古诗,包括步骤:生成第二时刻的n个候选字,包括:根据所述第二时刻的所属诗句的关键词和所述目标古诗基于所述第二时刻的历史生成信息,生成所述第二时刻的输入信息;将所述第二时刻的输入信息复制n份,生成n维输入矩阵,根据所述n维输入矩阵获得n份各自包括多个生成字的生成输出;筛选并分别依次累加每份生成输出的多个生成字的概率值排序的前j个概率值,生成n个累加求和矩阵;获得n个随机变量,分别根据各随机变量与各累加求和矩阵的最大值的乘积,筛选每个累加求和矩阵中相邻并小于其对应乘积的值;以及,获得每个筛选出的值对应的概率值所对应的生成字,作为每份生成输出的候选字,生成所述第二时刻的n个候选字。

在一个实施例中,所述古诗生成方法还包括步骤:根据所述目标古诗的字数,循环执行所述生成第二时刻的n个候选字的步骤,获得n首候选古诗;以及,对所述n首候选古诗进行筛选,获得所述目标古诗。

在一个实施例中,所述根据所述第二时刻的所属诗句的关键词的步骤包括:当所述第二时刻的所属诗句的历史生成信息为空时,根据所述目标主题获得所述第二时刻的关键词;以及,当所述第二时刻的所属诗句的历史生成信息不为空时,根据获得的所述第二时刻的关键词遍历各训练样本的关键词集,从各所述训练样本的关键词集中筛选与获得的所述第二时刻的关键词匹配度最高的一关键词,作为所述第二时刻的关键词。

本发明的第四方面提供一种古诗生成模型,用于根据一目标主题生成目标古诗,包括生成第二时刻的k个候选项,所述古诗生成模型包括:预处理模块,用于根据所述第二时刻的所属诗句的关键词和所述目标古诗基于所述第二时刻的历史生成信息,生成所述第二时刻的输入信息;生成模块,用于根据所述第二时刻的输入信息获得所述第二时刻的多个生成字;以及后处理模块,用于通过集束搜索筛选所述多个生成字的概率值排序的前k个生成字,分别与所述第二时刻的所属诗句的历史生成信息中各生成项组合成多个候选项;并筛选所述多个候选项的概率值排序的前k个候选项,作为所述第二时刻的k个候选项。

本发明的第五方面提供一种古诗生成模型,用于根据一目标主题生成目标古诗,包括生成第二时刻的n个候选字,所述古诗生成模型包括:预处理模块,用于根据所述第二时刻的所属诗句的关键词和所述目标古诗基于所述第二时刻的历史生成信息,生成所述第二时刻的输入信息;生成模块,用于将所述第二时刻的输入信息复制n份,生成n维输入矩阵,根据所述n维输入矩阵获得n份各自包括多个生成字的生成输出;以及后处理模块,用于筛选并分别依次累加每份生成输出的多个生成字的概率值排序的前j个概率值,生成n个累加求和矩阵;获得n个随机变量,分别根据各随机变量与各累加求和矩阵的最大值的乘积,筛选每个累加求和矩阵中相邻并小于其对应乘积的值;并获得每个筛选出的值对应的概率值所对应的生成字,作为每份生成输出的候选字,生成所述第二时刻的n个候选字。

本发明的第六方面提供一种计算机设备,包括:处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行上述任意实施例所述的模型训练方法的步骤。

本发明的第七方面提供一种计算机设备,包括:处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行上述任意实施例所述的古诗生成方法的步骤。

本发明的第八方面提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现上述任意实施例所述的模型训练方法的步骤。

本发明的第九方面提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现上述任意实施例所述的古诗生成方法的步骤。

本发明与现有技术相比的有益效果至少包括:

训练时将关键词和历史预测信息添加到模型的输入中,改进了训练方式,使训练后的模型生成的古诗整体风格一致,前后表达连贯,实现完整清晰地表达目标主题的古诗生成;

将第一时刻的目标输出,而非第一时刻的预测输出添加入下一时刻的输入,一方面降低训练时因中间预测误差导致后续预测偏离的问题,另一方面也能实现更快的训练收敛;

完成训练实际生成古诗时,通过生成k个候选项/n个候选字的后处理筛选的方式,实现个性化、多样化的古诗生成,并提高生成诗句的质量。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本发明实施例中模型训练方法的步骤流程图;

图2示出本发明实施例中古诗生成模型的模型结构图;

图3示出本发明实施例中获得关键词的步骤流程图;

图4示出本发明实施例中古诗生成方法的步骤流程图;

图5示出本发明另一实施例中古诗生成方法的步骤流程图;

图6示出本发明实施例中古诗生成方法生成诗句的过程示例;

图7示出本发明另一实施例中古诗生成方法的步骤流程图;

图8示出本发明实施例中随机生成古诗的流程图;

图9示出本发明另一实施例中古诗生成方法的步骤流程图;

图10示出本发明实施例中古诗生成模型的模块示意图;

图11示出本发明另一实施例中古诗生成模型的模块示意图;

图12示出本发明实施例中计算机设备的结构示意图;以及

图13示出本发明实施例中计算机可读存储介质的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使本发明全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。

图1示出实施例中模型训练方法的主要步骤,参照图1所示,本实施例中模型训练方法主要包括步骤s20、根据多个训练主题和每个训练主题关联的训练古诗,分别以每首训练古诗为训练样本,训练古诗生成模型,包括:s202、获得一第一训练古诗的每句诗句的关键词;s204、根据第一时刻的目标输出、第一时刻的下一时刻的目标输出的所属诗句的关键词、及第一训练古诗基于下一时刻的历史预测信息,生成下一时刻的输入信息;以及s206、将下一时刻的输入信息输入古诗生成模型,获得下一时刻的预测输出。

训练主题可以根据训练需求选定,例如选择“敬老”、“尊师”等训练主题。根据选定的训练主题,获得与训练主题相关的古诗,作为训练古诗。古诗生成模型是基于深度学习网络构建的模型。s202获得关键词的步骤可以视为训练前的数据预处理阶段,考虑到现代用词和古诗用词的差异性,不做现代词的扩展词典,关键词完全从训练古诗中产生。s204和s206是基于一个训练样本的循环训练阶段,通过将关键词和历史预测信息添加到古诗生成模型的输入信息中,使训练后的古诗生成模型生成的古诗整体风格一致,前后表达连贯,实现完整清晰地表达目标主题的古诗生成;同时将第一时刻的目标输出,而非第一时刻的预测输出添加到下一时刻的输入信息中,一方面降低训练时因中间预测误差导致后续预测偏离的问题,另一方面实现更快的训练收敛。通过循环执行s20基于各个训练样本训练古诗生成模型的步骤,直到模型收敛以完成训练。

在一个实施例中,参照图3所示获得关键词的主要步骤,在数据预处理阶段,获得一第一训练古诗的每句诗句的关键词的步骤包括:s2022、对第一训练古诗的每句诗句进行分词,获得每句诗句的词汇集;s2024、计算每个词汇在其所属诗句的词汇集中的词频tf及其所属诗句在第一训练古诗中的逆文档频率idf;s2026、根据每个词汇的词频tf和该词汇的所属诗句的逆文档频率idf,获得每个词汇的tf-idf值;以及s2028、分别筛选每句诗句中tf-idf值最高的词汇作为每句诗句的关键词。

为实现生成前后主题一致的诗句,在生成每一句诗句时引入该句诗句的关键词,因此在训练之前根据训练主题关联的训练古诗,进行每首训练古诗的每句诗句的关键词获取,以得到每首训练古诗的每句诗句所对应的关键词。以第一训练古诗为例,首先对第一训练古诗的每句诗句进行分词,以获得每句诗句的词汇集。作为一种较优的示例,使用tf-idf算法计算词汇集中每个分词的tf-idf值,然后选择每句诗句中tf-idf值最高的词汇作为该句诗句的关键词,添加到训练语料中。例如,根据诗句“团圆今夕色光辉”,计算获得关键词“团圆”;根据诗句“结了同心翠带垂”,计算获得关键词“同心”。

tf-idf算法的公式包括:

tf-idf=tfij*idfi

其中“ni,j”是一词汇在其所属诗句中出现的次数,“σknk,j”表示该诗句中所有词汇出现的总和,“tfij”即表示该诗句中该词汇的词频(termfrequency)。“|d|”表示第一训练古诗中的所有诗句总数,“|{j:ti∈dj}|”表示包含词汇“ti”的诗句数,“idfi”即表示该诗句在第一训练古诗中的逆向文档频率(inversedocumentfrequency)。计算tf-idf值的过程中,将每个词汇的tf-idf值记录下来。

对第一训练古诗的每句诗句进行分词是通过分词工具实现的,考虑到现有的分词工具对于古诗分词的局限性,在一个实施例中,获得每句诗句的词汇集的步骤中,获得一第一诗句的词汇集的步骤包括:对第一诗句进行自动分割,获得第一分词词组;通过二元分词法对第一诗句进行分割,获得第二分词词组;通过三元分词法对第一诗句进行分割,获得第三分词词组;以及,将第一分词词组、第二分词词组和第三分词词组进行合并去重,获得第一诗句的词汇集。其中,二元分词法(bigram)是将诗句从头到尾每两个字组成一个词语;三元分词法(thrigram)是将诗句从头到尾每三个字组成一个词语。在其他实施例中,可以采用其他的分词方式对诗句进行多维度分词并合并去重,以获得诗句的完整词汇集。

在一个实施例中,上述获得每个词汇的tf-idf值的步骤还包括:根据一第一古诗词典遍历各词汇集,对各词汇集中命中第一古诗词典中的古诗词的词汇的tf-idf值进行加权;和/或,根据一第二古诗词典遍历各词汇集,筛除各词汇集中命中第二古诗词典中的古诗词的词汇。第一古诗词典中收录期望被选为关键词的词汇,例如编写python脚本统计清代刘文蔚的《诗学含英》书中的古诗常用词,形成一个古诗常用词典,作为该第一古诗词典。根据该第一古诗词典遍历第一训练古诗的词汇集,如果词汇集中有词汇在第一古诗词典中,则在计算该词汇的tf-idf值时进行加权,例如在原有的tf-idf值的计算公式上乘以一个加权系数。经过测试,加权系数设置为2,而未被加权的词汇的加权系数为1,则在选择关键词时,如果一个词汇的词频和包含该词汇的诗句的数量比较接近时(即该词汇的tf-idf原始计算结果接近),设置的加权系统可以发挥偏向选择的作用,使得文雅、古典的古诗常用词有更大的概率被选择作为关键词。第二古诗词典中收录不期望被选为关键词的词汇,例如一些悲苦的、不太吉利的古诗词,同样可通过编写python脚本进行遍历的方式,过滤掉命中该第二古诗词典中的古诗词的词汇。

另外,在数据预处理阶段,使用所有的古诗语料,通过word2vec(一款用于词向量计算的开源工具)训练两个不同粒度的embedding,一种粒度是词级别的wordembedding,用于映射词向量;另一种粒度是字级别的charembedding,用于映射字向量。wordembedding用于生成古诗时关键词的扩展,即在模型实际使用阶段,用户选择一个主题或者输入一句话,使用模型提取其中的名词和形容词作为关键词,然后将关键词的数量扩展到诗句的数量,和训练语料的“关键词-诗句”的格式对应上,使实际生成时的输入和模型训练的输入保持一致。扩展时主要在wordembedding中挨个遍历每个词汇,计算每个词汇与需要扩展的关键词的相似度,相似度高的词汇可以挑选出作为扩展的词向量。charembedding用于模型训练时,对文字做特征映射,后续会结合模型训练阶段具体介绍。在训练时,上述获得的每句诗句及其对应的关键词经过embedding后拼接输入模型。

图2示出实施例中古诗生成模型的模型结构,参照图2所示,本实施例中古诗生成模型包括embedding层22,用于对待输入模型的文字进行特征映射。利用embedding层22生成下一时刻的输入信息的步骤包括:embedding层22将第一时刻的目标输出、下一时刻的目标输出的所属诗句的关键词及第一训练古诗的历史预测信息映射至向量空间并拼接,生成下一时刻的字向量,并根据下一时刻的字向量生成下一时刻的输入信息。通过embedding层22做文字的映射,将文字转为特定的向量用于后续输入网络,能够保证网络的输入是固定维度,同时多维的embedding向量也表征了词义和词语间关系信息。在使用embedding时,每个字到embedding这个词语-向量的对照表中查找对应的向量,整个诗句将每个字的向量拼接后可以直接输入网络。

在embedding层22之前,可以包括一concat层21,用于对待输入的文字,即第一时刻的目标输出、下一时刻的目标输出的所属诗句的关键词和第一训练古诗的历史预测信息进行拼接生成文本数组,然后输入embedding层22对该文本数组进行向量转化,生成下一时刻的字向量,作为下一时刻的输入信息。

进一步的,在一个实施例中,生成下一时刻的字向量之后,还包括:根据下一时刻的目标输出在其所属诗句中的位置,生成下一时刻的位置向量,并根据下一时刻的字向量和下一时刻的位置向量,拼接生成下一时刻的输入信息。考虑到古诗中存在韵脚断句和平仄念读的特征,这些特征在诗句中会出现在不同的位置,如果人为在语料处理上添加这些特征,不但花费大量精力,而且泛化性能也会受到影响。为了表征每个字在不同位置的意义,本实施例中参考transformer结构使用位置向量的计算方式来表征每个字在诗句中的位置。当下一时刻的目标输出在其所属诗句中的位置序号为偶数时,下一时刻的位置向量为:pe(pos,2i)=sin(pos/10002i/dim);当下一时刻的目标输出在其所属诗句中的位置序号为奇数时,下一时刻的位置向量为:pe(pos,2i+1)=cos(pos/10002i/dim)。其中,“i”为字在诗句中的序号,“dim”为位置向量的维度,默认设置了100维。获得下一时刻的位置向量后,将下一时刻的字向量和位置向量在embedding层22上进行拼接后输入到网络中,经过对比认证,位置向量可以在训练过程中有效表征字的位置信息。

另外,上述根据第一时刻的目标输出的步骤中,通过teacherforcing函数将第一时刻的预测输出更新为第一时刻的目标输出。古诗生成的过程是一个自回归(auto-regressive)过程,即每一个字的生成概率仅与前面的内容有关。在每一句的预测时,为了降低自回归模型因为中间预测误差导致后续预测偏离的问题,采用teacherforcing更新网络参数,即在计算下一时刻的输出信息时,不使用当前时刻(对应到上述实施例即第一时刻)的预测输出作为下一时刻的输入,而是使用第一时刻的目标输出作为下一时刻的输入,这样在训练阶段,即使中间某个字的预测不准确,也可以通过目标输出的输入实现纠正,同时也可以实现更快的训练收敛。如图2所示,第一时刻的目标输出替代预测输出,加入下一时刻的输入信息中。

embedding层22之后,是一个深度学习网络层。作为较优的示例,使用gru网络(gatedrecurrentunits)搭建训练网络,gru网络是门控循环神经网络的一种变体,将网络在需时间序列上展开,通过前n-1时刻的隐状态和当前时刻的输入来预测当前时刻的输出。gru网络的主要特点是两个sigmoid门输出0到1之间的值来控制有多少信息量可以通过,从而可以更好捕获上下文关系。

具体来说,在一个实施例中,参照图2所示,古诗生成模型包括gru网络层23和一个mlp(多层神经网络)层24,获得下一时刻的预测输出的步骤包括:gru网络层23根据下一时刻的输入信息,输出与下一时刻的输入信息的向量维度对应的多个预测输出;mlp层24根据softmax函数筛选多个预测输出的概率值排序中最大概率值对应的预测输出,作为下一时刻的预测输出。其中,gru网络层23输出的维度对应数据预处理阶段训练的embedding字典中字的数量。embedding字典是每个字对应一个固定维度向量的形式,通过向量来表征字。文本输入时要将每个字通过查询词向量的方式,获取词向量后再输入网络,因此网络最后输出的维度就是embedding字典的维度。获得的多个预测输出随后经过mlp层24,使用softmax进行分类计算得到概率最大的字,即相当于从多个预测输出中挑选一个最有可能搭配之前已经生成内容的字。通过softmax从维度的数量中找到概率最大的一个,再对应到embedding字典中该位置所对应的字,即获得下一时刻的预测输出。

上述实施例的模型训练方法在生成方式上选择lstm(longshort-termmemory,长短期记忆网络的变体,gru网络,为实现个性化生成和主题关联,使用关键词和历史预测信息添加到模型的输入中。关键词的选择使用tf-idf进行打分排序,同时考虑到现代用词和古诗用词的差异性,不做现代词的扩展词典,关键词完全从训练古诗中产生。训练后的模型可以生成整体风格一致,前后表达连贯,完整清晰地表达目标主题的古诗。

本发明实施例还提供一种古诗生成方法,根据一目标主题,通过基于上述任意实施例的模型训练方法训练的古诗生成模型生成目标古诗。图4示出实施例中古诗生成方法的主要步骤,参照图4所示,本实施例中古诗生成方法包括s30生成第二时刻的k个候选项的步骤,包括:s302、根据第二时刻的所属诗句的关键词和目标古诗基于第二时刻的历史生成信息,生成第二时刻的输入信息;s304、根据第二时刻的输入信息获得第二时刻的多个生成字;s306、通过集束搜索筛选多个生成字的概率值排序的前k个生成字,分别与第二时刻的所属诗句的历史生成信息中各生成项组合成多个候选项;以及s308、筛选多个候选项的概率值排序的前k个候选项,作为第二时刻的k个候选项。

其中,目标主题是用户输入的,如上对wordembedding的训练说明,用户可以通过选择一个主题、输入一个主题或者输入一句话等方式,由模型进行识别提取获得目标主题。根据第二时刻的所属诗句的关键词的步骤包括:当第二时刻的所属诗句的历史生成信息为空时,根据目标主题获得第二时刻的关键词;当第二时刻的所属诗句的历史生成信息不为空时,根据获得的第二时刻的关键词遍历各训练样本的关键词集,从各训练样本的关键词集中筛选与获得的第二时刻的关键词匹配度最高的一关键词,作为第二时刻的关键词。也即,当一诗句的历史生成信息为空时,以用户输入的主题为关键词,当一诗句有历史生成信息时,使用用户输入的主题的扩展词作为该诗句的关键词。诗句的历史生成信息仅指该句诗句已经生成的字,而目标古诗的历史生成信息是指目标古诗的所有生成的诗句的字。

进一步的,参照图5所示,该古诗生成方法还包括步骤:s40、根据第二时刻的所属诗句的字数,循环执行生成第二时刻的k个候选项的步骤,获得第二时刻的所属诗句的k个生成诗句;s50、根据目标古诗的诗句数,循环执行获得第二时刻的所属诗句的k个生成诗句的步骤,获得目标古诗的每句诗句的k个生成诗句;以及s60、对目标古诗的每句诗句的k个生成诗句进行组合和筛选,获得目标古诗。

上述的古诗生成方法,在每一时刻通过步骤s30生成k个候选项,然后基于步骤s40循环执行步骤s30,以获得目标古诗的一句诗句对应的k个生成诗句,并基于步骤s50循环执行步骤s30和步骤s40,以获得目标古诗的每句诗句对应的k个生成诗句,再通过步骤s60对每句诗句的k个生成诗句进行组合和筛选,获得目标古诗。筛选的方式可以根据用户设置而定,也可以通过过滤掉叠字多的古诗、过滤掉连贯度不高的古诗、过滤掉韵律不优美的古诗等方式进行筛选。

通过循环生成k个候选项的方式可以提高生成诗句的质量。具体来说,为了提高生成诗句的质量,在训练好的古诗生成模型的基础上增加了后处理阶段。作为一种较优的示例,将原有的每次预测一个概率最大的字的方式(softmax)改为集束搜索(beamsearch),beamsearch采用启发式图搜索算法,在搜索空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下质量较高的结点。具体到本实施例,是在每个时刻生成候选项时,从多个生成字中选取概率最大的k个生成字,然后将该k个生成字与该时刻对应的诗句的历史生成信息中的所有生成项(l个)进行组合,得到l*k个候选项,再从中选择k个概率得分最高的,作为该时刻的k个候选项。该时刻的k个候选项在下一个时刻继续再与下一个时刻的k个生成字组合形成新的候选项,再选出k个新的候选项作为下一个时刻的k个候选项。如此不断重复,直到本句诗句生成完成,得到本句诗句的k个生成诗句作为输出。

举例来来说,参照图6所示,框(a)、框(b)、框(c)、框(d)、框(e)分别代表在不同时刻的5个输出和概率值,如果每次都只选择概率最大的字,则只能得到“千山鸟飞绝”这句概率最大的诗句(概率p=0.4*0.5*0.4*0.6*0.6)。如果使用beamsearch,则还可以组合成“晚秋鱼跃水”(概率p=0.2*0.2*0.2*0.2*0.2)和“春花草色明”(概率p=0.2*0.2*0.3*0.2*0.1)这样的诗句,提高了生成诗句的多样性。使用beamsearch生成五言绝句的过程(k设置为3)包括:时刻t1:选出“千”,“晚”,“春”;时刻t2:选出“千山”,“晚秋”,“春花”;时刻t3:选出“千山鸟”,“晚秋鱼”,“春花草”;时刻t4:选出“千山鸟飞”,“晚秋鱼跃”,“春花草色”;时刻t5:选出“千山鸟飞绝”,“晚秋鱼跃水”,“春花草色明”。

图7示出一个实施例中古诗生成方法的主要步骤,参照图7所示,本实施例中古诗生成方法同样根据一目标主题,通过基于上述任意实施例的模型训练方法训练的古诗生成模型生成目标古诗,包括生成第二时刻的n个候选字的步骤s70,包括:s701、根据第二时刻的所属诗句的关键词和目标古诗基于第二时刻的历史生成信息,生成第二时刻的输入信息;s703、将第二时刻的输入信息复制n份,生成n维输入矩阵,根据n维输入矩阵获得n份各自包括多个生成字的生成输出;s705、筛选并分别依次累加每份生成输出的多个生成字的概率值排序的前j个概率值,生成n个累加求和矩阵;s707、获得n个随机变量,分别根据各随机变量与各累加求和矩阵的最大值的乘积,筛选每个累加求和矩阵中相邻并小于其对应乘积的值;以及s709、获得每个筛选出的值对应的概率值所对应的生成字,作为每份生成输出的候选字,生成第二时刻的n个候选字。

其中,目标主题是用户输入的,如上对wordembedding的训练说明,用户可以通过选择一个主题、输入一个主题或者输入一句话等方式,由模型进行识别提取获得目标主题。根据第二时刻的所属诗句的关键词的步骤包括:当第二时刻的所属诗句的历史生成信息为空时,根据目标主题获得第二时刻的关键词;当第二时刻的所属诗句的历史生成信息不为空时,根据获得的第二时刻的关键词遍历各训练样本的关键词集,从各训练样本的关键词集中筛选与获得的第二时刻的关键词匹配度最高的一关键词,作为第二时刻的关键词。也即,当一诗句的历史生成信息为空时,以用户输入的主题为关键词,当一诗句有历史生成信息时,使用用户输入的主题的扩展词作为该诗句的关键词。诗句的历史生成信息仅指该句诗句已经生成的字,而目标古诗的历史生成信息是指目标古诗的所有生成的诗句的字。

进一步的,参照图9所示,该古诗生成方法还包括步骤:s80、根据目标古诗的字数,循环执行生成第二时刻的n个候选字的步骤,获得n首候选古诗;以及s90、对n首候选古诗进行筛选,获得目标古诗。

具体来说,图8示出随机生成古诗的流程图,图8所示的流程可对应到图7所示的步骤流程。参照图8所示,由于生成的古诗会出现一些叠字现象以及上下句中出现同一个字的现象,造成诗句质量不高。为解决这个问题,增加生成诗的数量,然后再进行筛选。增加生成诗的数量,除了使用beamsearch方法外,还可使用本实施例的随机生成方式。获得每个时刻的输出时,将包括关键词的输入信息复制n份,将输入从1维扩展为n维,相当于使用batchsize为n,输入内容相同的样本矩阵输入神经网络,这样做的目的是矩阵运算相比较多次输入预测的速度更快。s7052、在每次生成下一个词时,可能预测的词都会有一个概率,选择排序的前j个,例如20个最大的概率构建一个概率矩阵;s7054、记录这几个分类概率所对应的索引,并随机打乱;s7056、将这个矩阵的值依次进行累加,构建成一个新的累加求和矩阵。s7072、引入一个随机变量,这个随机变量是从0~1之间随机取值一个浮点数,将这个浮点数与累加矩阵的最大的那个数相乘;s7074、然后到累加求和矩阵中查找这个数位于哪两个数中间;s7076、取区间的开始的那个数作为结果。s7092、这个结果的索引映射后就是本次选择预测的那个字。这样最终会生成n首候选古诗,接下来从n首候选古诗中进行筛选。筛选诗的做法是对每首候选古诗建立一个字频统计的字典,依次存入当前诗句中的每个字作为字典的key,最终通过key的个数来决定选择哪首候选古诗,key的个数越多,说明字的重复和叠字现象越少,则候选古诗的质量也越高。

上述的古诗生成方法,在深度学习生成的基础上,从古诗语料中筛选出关键词和历史信息参与模型训练,同时添加了位置向量和后处理的方法,在保证生成古诗的可靠的前提下,实现了多样性的古诗定制生成,生成的诗句可以贴切地表达目标主题。

在一些实施例中,采用上述古诗生成方法生成的目标古诗例如:“知音”主题:鱼雁来时别扁舟,黄花红叶满江流;篱边似竹生秋月,断金情深无限楼。“敬老”主题:恩华重命志分明,找虞时将启圣情;日出风波喧鼓动,鹤寿千岁祝云平。“尊师”主题:敬圣威仪启旗隆,讲道文章演底龙;仙掌紫芝呈瑞气,满城桃李数枝红。“佛系青年”主题:佛寺闲吟足行寻,系舟春草两岸平;青苔院静眠红叶,年塔云沈百鸟林。

本发明实施例还提供一种古诗生成模型,用于根据一目标主题生成目标古诗,包括生成第二时刻的k个候选项,该古诗生成模型对应图4所示实施例的古诗生成模型。图10示出该古诗生成模型10的主要模块,参照图10所示,本实施例中古诗生成模型10包括:预处理模块101,用于根据第二时刻的所属诗句的关键词和目标古诗基于第二时刻的历史生成信息,生成第二时刻的输入信息;生成模块102,用于根据第二时刻的输入信息获得第二时刻的多个生成字;以及后处理模块103,用于通过集束搜索筛选多个生成字的概率值排序的前k个生成字,分别与第二时刻的所属诗句的历史生成信息中各生成项组合成多个候选项;并筛选多个候选项的概率值排序的前k个候选项,作为第二时刻的k个候选项。该古诗生成模型10的各个模块的原理和工作过程可以参照上述实施例,此处不再重复说明。

本发明实施例还提供一种古诗生成模型,用于根据一目标主题生成目标古诗,包括生成第二时刻的n个候选字,该古诗生成模型对应图7所示实施例的古诗生成模型。图11示出该古诗生成模型11的主要模块,参照图11所示,本实施例中古诗生成模型11包括:预处理模块111,用于根据第二时刻的所属诗句的关键词和目标古诗基于第二时刻的历史生成信息,生成第二时刻的输入信息;生成模块112,用于将第二时刻的输入信息复制n份,生成n维输入矩阵,根据n维输入矩阵获得n份各自包括多个生成字的生成输出;以及后处理模块113,用于筛选并分别依次累加每份生成输出的多个生成字的概率值排序的前j个概率值,生成n个累加求和矩阵;获得n个随机变量,分别根据各随机变量与各累加求和矩阵的最大值的乘积,筛选每个累加求和矩阵中相邻并小于其对应乘积的值;并获得每个筛选出的值对应的概率值所对应的生成字,作为每份生成输出的候选字,生成第二时刻的n个候选字。该古诗生成模型11的各个模块的原理和工作过程可以参照上述实施例,此处不再重复说明。

本发明实施例还提供用于训练古诗生成模型和/或基于训练的古诗生成模型生成古诗的计算机设备。在训练时,将关键词和历史预测信息添加到模型的输入中,改进训练方式,使训练后的模型生成的古诗整体风格一致,前后表达连贯,实现完整清晰地表达目标主题的古诗生成;同时将第一时刻的目标输出,而非第一时刻的预测输出添加入下一时刻的输入,一方面降低训练时因中间预测误差导致后续预测偏离的问题,另一方面也能实现更快的训练收敛。在完成训练实际生成古诗时,通过生成多个候选项/候选字以及后处理筛选的方式,实现个性化、多样化的古诗生成,并提高生成诗句的质量。

具体来说,该计算机设备包括处理器和存储器,存储器中存储有可执行指令,处理器被配置为经由执行可执行指令来执行上述任意实施例所描述的模型训练方法和/或古诗生成方法的步骤。

图12是本发明实施例中计算机设备的结构示意图,应当理解的是,图12仅仅是示意性地示出各个模块,这些模块可以是虚拟的软件模块或实际的硬件模块,这些模块的合并、拆分及其余模块的增加都在本发明的保护范围之内。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。

下面参照图12来描述本发明的计算机设备600。图12显示的计算机设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图12所示,计算机设备600以通用计算设备的形式表现。计算机设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。

其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行上述实施例中描述的模型训练方法和/或古诗生成方法的步骤。例如,处理单元610可以执行如图1和图3所示的步骤,也可以执行图4和图5所示的步骤,也可以执行图7至图9所示的步骤。

存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。

存储单元620还可以包括具有一个或多个程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

计算机设备600也可以与一个或多个外部设备700通信,外部设备700可以是键盘、指向设备、蓝牙设备等设备中的一种或多种。这些外部设备700使用户能与该计算机设备600进行交互通信。计算机设备600也能与一个或多个其它计算机设备进行通信,包括路由器、调制解调器等。这种通信可以通过输入/输出(i/o)接口650进行。并且,计算机设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与计算机设备600的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。

本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现上述任意实施例描述的模型训练方法和/或古诗生成方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行上述任意实施例描述的模型训练方法和/或古诗生成方法的步骤。

本发明的计算机可读存储介质可用于训练古诗生成模型和/或基于训练的古诗生成模型生成古诗。在训练时,将关键词和历史预测信息添加到模型的输入中,改进训练方式,使训练后的模型生成的古诗整体风格一致,前后表达连贯,实现完整清晰地表达目标主题的古诗生成;同时将第一时刻的目标输出,而非第一时刻的预测输出添加入下一时刻的输入,一方面降低训练时因中间预测误差导致后续预测偏离的问题,另一方面也能实现更快的训练收敛。在完成训练实际生成古诗时,通过生成多个候选项/候选字以及后处理筛选的方式,实现个性化、多样化的古诗生成,并提高生成诗句的质量。

图13是本发明的计算机可读存储介质的结构示意图。参考图13所示,描述了根据本发明的实施方式的用于实现上述模型训练方法和/或古诗生成方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备,例如利用因特网服务提供商来通过因特网连接。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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