CN111737961B - 一种故事生成的方法、装置、计算机设备和介质 - Google Patents
一种故事生成的方法、装置、计算机设备和介质 Download PDFInfo
- Publication number
- CN111737961B CN111737961B CN202010601882.2A CN202010601882A CN111737961B CN 111737961 B CN111737961 B CN 111737961B CN 202010601882 A CN202010601882 A CN 202010601882A CN 111737961 B CN111737961 B CN 111737961B
- Authority
- CN
- China
- Prior art keywords
- story
- paragraph
- candidate
- current
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
Abstract
本申请提供了一种故事生成的方法、装置、计算机设备和介质,所述方法包括:获取用户所输入的第一故事段落;将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;所述目标第二故事段落中出现的人物名称与所述第一故事段落中出现的至少部分的人物名称相同;将所述目标第二故事段落反馈给用户。本申请中通过向训练完成的语句生成模型中输入第一故事段落中所出现的人物名称,提高了在目标第二故事段落中出现第一故事段落中出现的人物名称的概率。
Description
技术领域
本申请涉及故事生成领域,具体而言,涉及一种故事生成的方法、装置、计算机设备和介质。
背景技术
随着技术的发展,电子设备越来越多的应用于人们的生活,人们的阅读也不仅仅局限于纸质书本上,通过电子设备也能进行大量的阅读。人们通过阅读来消磨休闲时间。
一般,人们阅读的资料大多是人为书写的,这样的书写方式过于缓慢。效率低。为了提高写作效率,通过深度学习模型来进行写作得到越来越多的应用,可是通过深度学习模型写出的内容比较随机,逻辑连贯性不高。
发明内容
有鉴于此,本申请的目的在于提供一种故事生成的方法、装置、计算机设备和介质,用于解决现有技术中利用模型所生成的故事段落的故事情节不紧凑的问题。
第一方面,本申请实施例提供了一种故事生成的方法,包括:
获取用户所输入的第一故事段落;
将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;所述目标第二故事段落中出现的人物名称与所述第一故事段落中出现的至少部分的人物名称相同;
将所述目标第二故事段落反馈给用户。
可选的,所述第一故事段落中出现的人物名称是用户输入的;或,所述第一故事段落中出现的人物名称是通过分词模型对所述第一故事段落进行分词后得到的。
可选的,所述将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落,包括:
将所述第一故事段落和所述第一故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选第二故事段落;
根据每个所述候选第二故事段落与所述第一故事段落的逻辑连贯性,从多个所述候选第二故事段落中选择出所述目标第二故事段落。
可选的,所述根据每个所述候选第二故事段落与所述第一故事段落的逻辑连贯性,从多个所述候选第二故事段落中选择出所述目标第二故事段落,包括:
针对每个候选第二故事段落,根据该候选第二故事段落中相邻短句之间的逻辑连贯性,确定该候选第二故事段落的逻辑递进效率;
根据每个候选第二故事段落与所述第一故事段落的逻辑连贯性和每个候选第二故事段落的逻辑递进效率,从多个候选第二故事段落中选择出所述目标第二故事段落。
可选的,所述将所述目标第二故事段落反馈给用户,包括:
判断所述目标第二故事段落是否是最后段落;
若所述目标第二故事段落不是最后段落,则将所述目标第二故事段落作为当前故事段落;
将所述当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落;
根据每个所述候选下一故事段落与所述当前故事段落的逻辑连贯性,从多个所述候选下一故事段落中选择目标下一故事段落;所述目标下一故事段落中所出现的人物名称与所述当前故事段落中出现的至少部分的人物名称相同;
将所述当前故事段落和所述目标下一故事段落反馈给用户。
可选的,在将所述当前故事段落和所述目标下一故事段落反馈给用户之前,还包括:
判断所述目标下一故事段落是否是最后段落;
若所述目标下一故事段落不是最后段落,则将目标下一故事段落作为当前故事段落,并执行步骤所述将所述当前故事段落和所述当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一个故事段落;
若所述目标下一故事段落是最后段落,则执行步骤将当前故事段落和所述目标下一故事段落反馈给用户。
可选的,所述根据每个所述候选下一故事段落与所述当前故事段落的逻辑连贯性,从多个所述候选下一故事段落中选择目标下一故事段落,包括:
分别计算每个候选下一故事段落的逻辑连贯性和每个候选下一故事段落的逻辑递进效率;所述逻辑连贯性是所述候选下一故事段落与所述当前故事段落的逻辑连贯性;
根据所述每个候选下一故事段落的所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落。
可选的,所述方法还包括:
分别计算每个候选下一故事段落的内容重复度;所述内容重复度包括以下的任意一种或多种,人物名称重复度和字符重复度;所述人物名称重复度是根据出现在所述候选下一故事段落中且没有出现在所述当前故事段落中的人物名称数量确定的;所述字符重复度是根据所述候选下一故事段落中出现的不同短句的重复程度确定的;
根据所述每个候选下一故事段落的所述内容重复度、所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落。
可选的,根据所述每个候选下一故事段落的所述内容重复度、所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落,包括:
根据所述内容重复度在多个所述候选下一故事段落中去除掉所述内容重复度大于预设数值的所述候选下一故事段落;
根据所述逻辑连贯性和所述逻辑递进效率,在去除掉所述内容重复度大于预设数值的多个所述候选下一故事段落中选择所述目标下一故事段落。
可选的,根据所述每个候选下一故事段落的所述内容重复度、所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落,包括:
获取用户所输入的撰写要求;所述撰写要求中包括以下要求中的任意一种或多种:故事段落的逻辑连贯属性、故事段落的逻辑递进效率属性和故事段落的内容重复度属性;
根据所述故事段落的逻辑连贯属性所对应的逻辑连贯性、所述故事段落的逻辑递进效率属性所对应的逻辑递进效率和所述故事段落的内容重复度属性所对应的内容重复度,从多个所述候选下一故事段落中选择所述目标下一故事段落。
可选的,所述逻辑连贯性是通过如下步骤计算得到的:
将所述候选下一故事段落中每个短句以及所述当前故事段落的最后一个短句进行向量化,以得到所述候选下一故事段落中每个短句的短句向量和所述当前故事段落中最后一个短句的短句向量;
根据所述候选下一故事段落中每个短句的短句向量和所述当前故事段落的最后一个短句的短句向量,计算所述候选下一故事段落中每个短句与所述当前故事段落的最后一个短句的余弦相似度;
根据所述候选下一故事段落中每个短句与所述当前故事段落的最后一个短句的余弦相似度的均值,确定所述候选下一故事段落与所述当前故事段落的逻辑连贯性。
可选的,所述逻辑递进效率是通过如下步骤计算得到的:
将所述候选下一故事段落中每个短句进行向量化,以得到所述候选下一故事段落中每个短句的短句向量;
针对所述候选下一故事段落中每个短句,根据该短句的短句向量和该短句的下一短句的短句向量,计算两个短句的余弦相似度;
根据所述候选下一故事段落中每两个短句之间的余弦相似度,确定所述候选下一故事段落的逻辑递进效率。
可选的,将所述当前故事段落和所述当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落,包括:
将所述当前故事段落和所述当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到所述候选下一故事段落的第一个短句,并将所述第一个短句作为当前短句;
将所述当前短句输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中的下一个短句;
判断所述下一个短句是否是最后短句;
若所述下一个短句不是最后短句,将下一个短句作为当前短句,并重复步骤将所述当前短句输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中的下一个短句;
若所述下一个短句是最后短句,则将所述第一个短句和输出的每个下一个短句组成所述候选下一故事段落。
可选的,所述将所述当前故事段落和所述当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到所述候选下一故事段落的第一个短句,包括:
将所述当前故事段落和所述当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落中第一个短句的第一个词,并将所述第一个词作为当前词;
将所述当前词输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中第一个短句的下一个词;
判断所述下一个词是否是最后词;
若所述下一个词不是最后词,将下一个词作为当前词,并重复步骤将所述当前词输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中第一个短句的下一个词;
若所述下一个词是最后词,则将所述第一个词和输出的每个下一个词组成所述第一个短句。
可选的,所述语句生成模型是通过如下步骤训练得到的:
获取训练样本;所述训练样本为参考故事的前部内容;
将参考故事的前部内容和人物名称均输入至待训练的语句生成模型,得到第一输出结果;所述人物名称是通过分词模型对所述参考故事进行分词后得到的;
将所述第一输出结果与所述参考故事的后部内容的进行对比,以生成第一损失函数;
根据所述第一损失函数对待训练的语句生成模型进行调整。
可选的,将参考故事的前部内容和人物名称均输入至待训练的语句生成模型,得到第一输出结果,包括:
将参考故事的前部内容、参考故事的前部内容的人物名称和参考故事的前部内容中每个短句的短句类型均输入至待训练的语句生成模型,得到第一输出结果;所述人物名称是通过分词模型对所述参考故事进行分词后得到的。
第二方面,本申请实施例提供了一种故事生成装置,包括:
获取模块,用于获取用户所输入的第一故事段落;
生成模块,用于将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;所述目标第二故事段落中出现的至少部分的人物名称与所述第一故事段落中出现的人物名称相同;
反馈模块,用于将所述目标第二故事段落反馈给用户。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。
本申请实施例提出的一种故事生成的方法,首先,获取用户所输入的第一故事段落;然后,将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;所述目标第二故事段落中出现的人物名称与所述第一故事段落中出现的至少部分的人物名称相同;最后,将所述目标第二故事段落反馈给用户。
采用上述方式,由于将第一故事段落和第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,得到目标第二故事段落,使得目标第二故事段落中的人物名称与第一故事段落中出现的人物名称是至少部分相同的,提高了在目标第二故事段落中出现第一故事段落中出现的人物名称的概率,这样得到的目标第二故事段落与第一故事段落之间的情节紧凑,逻辑严谨,避免了现有技术中人物名称杂乱无章的问题。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种故事生成的方法的流程示意图;
图2为本申请实施例提供的一种语句生成模型的训练方法的流程示意图;
图3为本申请实施例提供的一种故事生成的装置的结构示意图;
图4为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
小说是一种围绕某个人物或者不同人物展开叙述性描述的文学体裁。小说可以是由多个故事组成的。一般来说,小说家需要有大量的生活阅历才能够将小说写好,也因此,优秀的小说家是很少的。近些年,随着大众对阅读需求的提升,出现了大量的网络小说,但由于读者众多,单纯凭借小说家来写小说,产出量较低。进而为了提高小说的产出效率,目前已经出现了利用语言模型来生成小说中的技术,但是,利用语言模型生成的小说中,出现的人物名称是随机的,在后续段落中经常出现之前的小说内容中没有出现过的人物名称,这样生成的小说会导致情节出现断层、或跳脱出原来的环境,进而导致小说出现逻辑上的偏差。
针对上述情况,本申请实施例提供了一种故事生成方法,如图1所示,包括以下步骤:
S101,获取用户所输入的第一故事段落;
S102,将第一故事段落和第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;目标第二故事段落中出现的人物名称与第一故事段落中出现的至少部分的人物名称相同;
S103,将目标第二故事段落反馈给用户。
在上述步骤S101中,第一故事段落是用户针对小说所撰写的故事前序内容(如小说的开头),主要描述小说中出现的人物名称、基本情节等。第一故事段落是小说的基础,在第一故事段落的基础上才能衍生出之后的内容。第一故事段落可以是用户在单独的应用程序或者是游戏过程中出现的提示界面中输入的(即本方案可以是单独的小说生成APP,也可以是在某些程序,如游戏中,附加的功能)。只有获取到第一故事段落后,才能执行步骤S102-S103。
在上述步骤S102中,人物名称是用户所要得到的小说中能够出现的故事角色的名称。第一故事段落中出现的人物名称可以是用户自己输入的;或,第一故事段落中出现的人物名称是通过分词模型对第一故事段落进行分词后得到的。
分词模型可以是以下技术中的任意一种:NLP分词算法、jieba分词算法等。语句生成模型是一种深度学习模型,语句生成模型可以是采用GPT2-large模型训练得到的,或者是采用BERT模型训练得到的。由于GPT2-large模型的训练效果好、简单,因此,通常采用GPT2-large模型来训练语句生成模型。当然,第一故事段落中出现的人物名称如果是用户自己输入的话,就不需要系统采用分词模型进行处理了。第一故事段落中出现的人物名称如果是采用分词模型进行处理的话,就不需要用户自己输入了。
为了进一步提高小说的逻辑连贯性,除了要求目标第二故事段落中出现的人物名称与第一故事段落中出现的至少部分的人物名称相同之外,还应当要求目标第二故事段落中出的人物名称不能是第一故事段落中没有出现过的人物名称。
具体实施时,将第一故事段落和第一故事段落中出现的人物名称输入到训练完成的语句生成模型中,就可以得到目标第二故事段落,目标第二故事段落中所出现的人物名称应该与第一故事段落中出现的人物名称完全相同或者是部分相同,而不能出现第一故事段落中出现的人物名称中没有出现过的人物名称。这样的目标第二故事段落中的人物关系与第一故事段落中的人物关系不会出现偏差,进而使得目标第二故事段落与第一故事段落之间的逻辑比较连贯。
将第一故事段落和第一故事段落中出现的人物名称输入到训练完成的语句生成模型中,可以是用户根据第一故事段落确定出第一故事段落中的人物名称后,将用户自己确定出的第一故事段落中的人物名称和第一故事段落输入到训练好的语句生成模型中;或者,首先通过分词模型对第一故事段落进行分词以得到第一故事段落中的人物名称,然后,将分词后得到的人物名称和第一故事段落输入到训练好的语句生成模型中。
例如,第一故事段落为“天气渐渐热了起来,街上也多了许多卖冰糖水的小摊。林菲菲寻了一处糖水铺子刚坐下,便听到有人在谈论荔枝,在这个年代,荔枝非常稀少,需差人快马加鞭,连续一整天无休无憩从异地运来,才能保证荔枝的品质,林菲菲想着荔枝的味道,咽了咽口水,心想要是能吃到荔枝该多好。忽然,她听到异响,回头便看到宋尧带着人跑了过来。“姑娘,总算找到你了。侯爷喊你去侯府一趟。”,宋尧对着林菲菲说道。林菲菲不知道侯爷方承意为什么找她去侯府。”,则第一故事段落中出现的人物名称为“林菲菲、方承意、宋尧”。
人物名称“林菲菲、方承意、宋尧”可以在独立于第一故事段落的对话框中由用户输入的,也可以是用户在输入第一故事段落时,通过某种标记的方式在第一故事段落中标记出的。比如,用户可以通过使用括号将人物名称括起来,也可以使用文字加粗的方式来标记人物名称,进而让系统知晓哪些是人物名称。或者,人物名称“林菲菲、方承意、宋尧”可以在独立于第一故事段落的对话框中由分词算法对第一故事段落进行分词后显示出来的。将第一故事段落和任务名称同时输入到训练好的语句生成模型中。
在上述步骤S103中,在确定出目标第二故事段落后就可以反馈给用户,用户会对目标第二故事段落进行阅读、检查等工作。此处,反馈可以是指在用户所使用的终端(如输入第一故事段落的终端)上显示第二故事段落,也可以是在将第二故事段落通过特定的某个终端或某种显示方式显示出来。
本申请实施例中,通过将第一故事段落和第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,得到目标第二故事段落,目标第二故事段落中的人物名称是与第一故事段落中出现的人物名称是至少部分相同的,且目标第二故事段落中的人物名称没有第一故事段落中未出现过的人物名称,这样得到的目标第二故事段落与第一故事段落之间的情节紧凑,逻辑连贯性较高。
一个故事不能无限制的发展下去,总会有一个结束的,因此,需要确定目标第二故事段落是否是最后一个段落,步骤S103,包括:
步骤1031,判断目标第二故事段落是否是最后段落;
步骤1032,若目标第二故事段落不是最后段落,则将目标第二故事段落作为当前故事段落;
步骤1033,将当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一个故事段落;
步骤1034,根据每个候选下一故事段落与当前故事段落的逻辑连贯性,从多个候选下一故事段落中选择目标下一故事段落;目标下一故事段落中所出现的人物名称与当前故事段落中出现的至少部分的人物名称相同;
步骤1035,将当前故事段落和目标下一故事段落反馈给用户。
在上述步骤1031中,在判断目标第二故事段落是否是最后段落时,可以根据目标第二故事段落所对应的段落序号确定,即在生成每个目标第二故事段落的时候,都会为每个目标第二故事段落生成对应的段落序号(段落序号就是按照顺序为每个段落进行标记的标识,如,1、2、3等),判断目标第二故事段落序号所对应的序号是否为预设结尾序号。预设结尾序号可以是人为规定的,如35。此种方式可以人为的控制小说长度。
由于语句生成模型是使用大量的语料样本(如小说)训练得到的,因此,语料样本的长度通常就约定了语句生成模型所生成的故事的长度。故预设结尾序号也可以是模型自动确定的,比如,语句生成模型在生成最后一个段落后,可以携带上某一个特殊标识(如#),在语句生成模型生成下一个段落后,判断是否存在该特殊标识,如果存在,则执行步骤将当前故事段落和目标第二故事段落反馈给用户;否则就将目标第二故事段落作为当前故事段落,并执行步骤将当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落。
当然,也可以是将当前故事段落和当前故事段落中出现的人物名称向训练完成的语句生成模型中只输入一次,语句生成模型也会得到多个不同的候选下一故事段落。
在上述步骤1032和步骤1033中,候选下一故事段落中出现的人物名称与当前故事段落(第一故事段落)中出现的至少部分人物名称相同。
具体实施时,如果目标第二故事段落不是最后段落,则需要重新根据目标第二故事段落确定一个新的目标第二故事段落。因此,需要将目标第二故事段落作为当前故事段落,并将当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,就可以得到多个候选下一故事段落。这里将当前故事段落中出现的人物名称输入到训练好的语句生成模型中,是为了减少在下一故事段落中出现当前故事段落中没有出现过的人物名称。当然,还可以将当前故事段落中出现的人物名称替换为第一故事段落中出现的人物名称,第一故事段落中出现的人物名称可能比当前故事段落中出现的人物名称更多、更全面,可以尽最大可能的保留人物关系,使得故事情节更丰富,减少了因为目标第二故事段落中出现的人物名称较少,导致的下一故事段落中更少的出现人物名称,进而导致故事情节单一。
在上述步骤1034中,目标下一故事段落中所出现的人物名称与当前故事段落中出现的至少部分的人物名称相同。
具体实施时,计算每个候选下一故事段落与当前故事段落的逻辑连贯性,根据每个候选下一故事段落与当前故事段落的逻辑连贯性,在多个候选下一故事段落中确定出与当前故事段落较为连贯的目标下一故事段落。
在上述步骤1035中,在确定出目标第二故事段落后,将目标下一故事段落和当前故事段落均反馈给用户。
当然,步骤S103还应该包括:
步骤1036,如果目标第二故事段落是最后段落,则将目标第二故事段落反馈给用户。
每个生成的故事段落都应该被判断一次是否是最后段落,因此,在步骤1035之前,还包括:
步骤1037,判断目标下一故事段落是否是最后段落;
步骤1038,若目标下一故事段落不是最后段落,则将目标下一故事段落作为当前故事段落,并执行步骤将当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一个故事段落;
步骤1039,若目标下一故事段落是最后段落,则执行步骤将当前故事段落和目标下一故事段落反馈给用户。
在上述步骤1037中,在判断目标下一故事段落是否是最后段落时,可以根据目标下一故事段落所对应的段落序号确定,即在生成每个目标下一故事段落的时候,都会为每个目标下一故事段落生成对应的段落序号(段落序号就是按照顺序为每个段落进行标记的标识,如,1、2、3等),判断目标下一故事段落序号所对应的序号是否为预设结尾序号。预设结尾序号可以是人为规定的,如35。此种方式可以人为的控制小说长度。
由于语句生成模型是使用大量的语料样本(如小说)训练得到的,因此,语料样本的长度通常就约定了语句生成模型所生成的故事的长度。故预设结尾序号也可以是模型自动确定的,比如,语句生成模型在生成最后一个段落后,可以携带上某一个特殊标识(如#),在语句生成模型生成下一个段落后,判断是否存在该特殊标识,如果存在,则执行步骤将当前故事段落和目标下一故事段落反馈给用户;否则就将目标下一故事段落作为当前故事段落,并执行步骤将当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落。
在上述步骤1038中,如果目标下一故事段落不是最后段落,则需要重新根据目标下一故事段落确定一个新的目标下一故事段落。因此,需要将目标下一故事段落作为当前故事段落,并执行步骤1033-步骤1035,得到可以反馈给用户的新的目标下一故事段落。
在上述步骤1039中,如果目标下一故事段落是最后段落,则可以直接将当前故事段落和目标下一故事段落反馈给用户了。
一个故事段落的生成可以是一个短句一个短句的生成的,步骤1033,包括:
步骤10,将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落的第一个短句,并将第一个短句作为当前短句;
步骤11,将当前短句输入到训练完成的语句生成模型中,得到候选下一故事段落中的下一个短句;
步骤12,判断下一个短句是否是最后短句;
步骤13,若下一个短句不是最后短句,将下一个短句作为当前短句,并重复步骤将当前短句输入到训练完成的语句生成模型中,得到候选下一故事段落中的下一个短句;
步骤14,若下一个短句是最后短句,则将第一个短句和输出的每个下一个短句组成候选下一故事段落。
在上述步骤10中,短句可以用于组成候选故事段落,短句的生成还需要与当前故事段落具有一定的逻辑连贯性。一个故事段落可以根据标点符号(如,逗号、句号、分号、问号等)拆分成多个短句。因此,在生成第一个短句时,需要将当前故事段落和当前故事段落(第一故事段落)中出现的人物名称输入到训练好的语句生成模型中,进而得到了第一个短句,并将第一个短句作为当前短句。
例如,故事段落为“我在吃水果,可是我不喜欢吃香蕉。”,则该故事段落中的短句包括“我在吃水果”和“可是我不喜欢吃香蕉”。
在上述步骤11中,为了使得得到的候选下一故事段落的整体内容的连贯性,需要将第一个短句(当前短句)重新输入到训练好的语句生成模型中,进而得到了下一个短句。得到的下一个语句还需要与当前故事段落有一定的逻辑连贯性,因此,生成下一个短句时,还可以将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中。
在上述步骤12中,最后短句是通过预设标识确定的,训练完成的语句生成模型经过大量训练数据的训练之后,在生成最后语句的同时也会生成对应的结束标识,用结束标识表征该候选下一故事段落的结尾。结束标识可以是通过预设字符表示(如,</S>)。
在上述步骤13中,如果下一短句的结尾没有结束标识,则该下一短句就不是最后短句,因此,需要将该下一短句作为当前短句,根据当前短句继续生成下一短句,也就是重复步骤11。
在上述步骤14中,如果下一短句的结尾有结束标识,则该下一短句就是最后短句,就不需要根据该最后短句去生成下一短句了。将第一个短句和每一次生成的下一短句进行拼接,就会组成一个候选下一故事段落。
每一个句子还包括多个词,因此在生成短句的时候,可以是一个词一个词的生成,步骤10,包括:
步骤20,将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落中第一个短句的第一个词,并将第一个词作为当前词;
步骤21,将当前词输入到训练完成的语句生成模型中,得到候选下一故事段落中第一个短句的下一个词;
步骤22,判断下一个词是否是最后词;
步骤23,若下一个词不是最后词,将下一个词作为当前词,并重复步骤将当前词输入到训练完成的语句生成模型中,得到候选下一故事段落中第一个短句的下一个词;
步骤24,若下一个词是最后词,则将第一个词和输出的每个下一个词组成第一个短句。
在上述步骤20中,词是组成短句的最小单位。候选下一故事段落中的每一个词也需要与当前故事段落保持一定的连贯性,因此,在生成第一个词的时候,还是需要将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,将第一个词作为当前词。
在上述步骤21中,为了使得得到的候选下一故事段落的整体内容的连贯性,需要将第一个词(当前词)重新输入到训练好的语句生成模型中,进而得到了下一个词。得到的下一个词还需要与当前故事段落有一定的逻辑连贯性,因此,生成下一个词时,还可以将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中。
在上述步骤22中,最后词可以是通过预设标识确定的,训练完成的语句生成模型经过大量训练数据的训练之后,在生成最后词的同时也会生成对应的结束标识,用结束标识表征该候选下一故事段落的结尾。结束标识可以是通过预设字符表示(如,</S>)。
在上述步骤23中,如果下一词的结尾没有结束标识,则该下一词就不是最后词,因此,需要将该下一词作为当前词,根据当前词继续生成下一词,也就是重复步骤21。
在上述步骤24中,如果下一词的结尾有结束标识,则该下一词就是最后词,就不需要根据该最后词去生成下一词了。将第一个词和每一次生成的下一词进行拼接,就会组成第一短句。
在确定目标下一故事段落时,除了考虑该候选下一故事段落与当前故事段落之间的逻辑连贯性,还需要考虑到故事段落内部的情节递进效率,根据逻辑连贯性和逻辑递进效率确定目标下一故事段落,步骤1034,包括:
步骤30,分别计算每个候选下一故事段落与当前故事段落的逻辑连贯性和每个候选下一故事段落的逻辑递进效率;
步骤31,根据每个候选下一故事段落的逻辑连贯性和逻辑递进效率,从多个候选下一故事段落中选择目标下一故事段落。
在上述步骤30中,逻辑连贯性是通过如下步骤计算得到的:
步骤40,将候选下一故事段落中每个短句以及当前故事段落的最后一个短句进行向量化,以得到候选下一故事段落中每个短句的短句向量和当前故事段落中最后一个短句的短句向量;
步骤41,根据候选下一故事段落中每个短句的短句向量和当前故事段落的最后一个短句的短句向量,计算候选下一故事段落中每个短句与当前故事段落的最后一个短句的余弦相似度;
步骤42,根据候选下一故事段落中每个短句与当前故事段落的最后一个短句的余弦相似度的均值,确定候选下一故事段落与当前故事段落的逻辑连贯性。
在上述步骤40中,短句进行向量化可以是将短句转换为多维矩阵。
在上述步骤41中,针对候选下一故事段落中的每一个短句,根据该短句对应的短句向量和当前故事段落中最后一个短句对应的短句向量,计算两个短句之间的余弦相似度。余弦相似度就是通过计算两个向量的夹角余弦值来评估两个向量的相似度(也就是两个短句之间的相似度)。余弦相似度越大,则两个短句之间越相似,余弦相似度越小,则两个短句之间越不相似。
在上述步骤42中,可以将候选下一故事段落中每个短句与当前故事段落的最后一个短句的余弦相似度的均值,确定为候选下一故事段落与当前故事段落的逻辑连贯性。
在上述步骤30中,逻辑递进效率是通过如下步骤计算得到的:
步骤50,将候选下一故事段落中每个短句进行向量化,以得到候选下一故事段落中每个短句的短句向量;
步骤51,针对候选下一故事段落中每个短句,根据该短句的短句向量和该短句的下一短句的短句向量,计算两个短句的余弦相似度;
步骤52,根据候选下一故事段落中每两个短句之间的余弦相似度,确定候选下一故事段落的逻辑递进效率。
在上述步骤50中,短句进行向量化可以是将短句转换为多维矩阵。
在上述步骤51中,针对候选下一故事段落中的每一个短句,根据该短句对应的短句向量和该短句相邻的短句对应的短句向量,计算两个短句之间的余弦相似度。余弦相似度就是通过计算两个向量的夹角余弦值来评估两个向量的相似度(也就是两个短句之间的相似度)。余弦相似度越大,则两个短句之间越相似,余弦相似度越小,则两个短句之间越不相似。
在上述步骤52中,候选下一故事段落中每两个相邻短句之间的余弦相似度的均值,确定为候选下一故事段落的逻辑连贯性。
在上述步骤31中,在确定出每一个候选下一故事段落的逻辑连贯性和逻辑递进效率,可以从多个候选下一故事段落中找到与当前故事段落的逻辑连贯性符合用户所输入的撰写要求,以及候选下一故事段落中每个短句之间的逻辑递进效率符合用户所输入的撰写要求的目标下一故事段落。这样找到的目标下一故事段落即承接与当前故事段落有较好的承接关系,也能促进了整个故事情节的发展,减少了故事拖拉的情况。撰写要求中包括以下要求中的任意一种或多种:故事段落的逻辑连贯属性、故事段落的逻辑递进效率属性和故事段落的内容重复度属性;其中,故事段落的逻辑连贯属性可以是当前故事段落与上一故事段落之间的逻辑连贯性,也就是当前故事段落与上一故事段落之间的相似度。故事段落的逻辑递进效率属性可以是当前故事段落中每两个相邻短句之间的相似度。故事段落的内容重复度属性可以是当前故事段落中短句重复出现的次数。
由于语句生成模型存在随机性,因此,通过训练好的语句生成模型所生成的候选下一故事段落中会存在之前没有出现过的人物名称,因此,通过内容重复度、逻辑连贯性和逻辑递进效率在多个候选下一故事段落中确定出目标下一故事段落,方法还包括:
步骤53,分别计算每个候选下一故事段落的内容重复度;内容重复度包括以下的任意一种或多种,人物名称重复度和字符重复度;人物名称重复度是根据出现在候选下一故事段落中且没有出现在当前故事段落中的人物名称数量确定的;字符重复度是根据候选下一故事段落中出现的不同短句的重复程度确定的;
步骤54,根据每个候选下一故事段落的内容重复度、逻辑连贯性和逻辑递进效率,从多个候选下一故事段落中选择目标下一故事段落。
在上述步骤53中,内容重复度可以是在故事内容中出现人物名称或者是短句重复的情况。内容重复度包括以下的任意一种或多种,人物名称重复度和字符重复度;人物名称重复度是根据出现在候选下一故事段落中且没有出现在当前故事段落中的人物名称数量确定的;字符重复度是根据候选下一故事段落中出现的不同短句的重复程度确定的;其中,字符重复度可以是短句在候选下一故事段落中出现的次数。字符重复度越高,则候选下一故事段落中的内容就越拖沓,可能会导致逻辑递进效率降低;字符重复度越低,则候选下一故事段落中的内容就越发展迅速,可能会提高逻辑递进效率。人物名称重复度越高,则候选下一故事段落中出现的新的人物名称就越多,这样可能会脱离当前故事段落的故事情节,降低了候选下一故事段落与当前故事段落之间的逻辑连贯性,出现情节断层;人物名称重复度越低,则候选下一故事段落中出现的新的人物名称就越少,这样与当前故事段落之间的故事情节更连贯,提高了候选下一故事段落与当前故事段落之间的逻辑连贯性,建少了出现情节断层的情况;本申请中最优的是人物名称重复度为0。
在上述步骤54中,通过内容重复度、逻辑连贯性和逻辑递进效率三个筛选条件,从多个候选下一故事段落中选择目标下一故事段落,对目标下一故事段落有了更多的限定,进而,可以快速并准确的确定出目标下一故事段落。确定出的目标下一故事段落与当前故事段落之间的逻辑关联性较高,且目标下一故事段落的逻辑递进效率也比较高,可以时故事内容在通顺的逻辑下,减少故事拖沓的情况。
内容重复度逻辑连贯性和逻辑递进效率三个筛选条件都是人为设置的,因此,可以在用户输入第一故事段落的同时,用户还可以输入撰写要求,即步骤54,包括:
步骤541,获取用户所输入的撰写要求;撰写要求中包括以下要求中的任意一种或多种:故事段落的逻辑连贯属性、故事段落的逻辑递进效率属性和故事段落的内容重复度属性;
步骤542,根据故事段落的逻辑连贯属性所对应的逻辑连贯性、故事段落的逻辑递进效率属性所对应的逻辑递进效率和故事段落的内容重复度属性所对应的内容重复度,从多个候选下一故事段落中选择目标下一故事段落。
在上述步骤541中,撰写要求中包括以下要求中的任意一种或多种:故事段落的逻辑连贯属性、故事段落的逻辑递进效率属性和故事段落的内容重复度属性;其中,故事段落的逻辑连贯属性可以是当前故事段落与上一故事段落之间的逻辑连贯性,也就是当前故事段落与上一故事段落之间的相似度。故事段落的逻辑递进效率属性可以是当前故事段落中每两个相邻短句之间的相似度。故事段落的内容重复度属性可以是当前故事段落中短句重复出现的次数。
在上述步骤542中,根据故事段落的逻辑连贯属性所对应的逻辑连贯性、故事段落的逻辑递进效率属性所对应的逻辑递进效率和故事段落的内容重复度属性所对应的内容重复度,可以在多个候选下一故事段落中选择目标下一故事段落。
在步骤54中有三个筛选条件,按照如下方式确定目标下一故事段落可以提高计算效率,步骤54,包括:
步骤60,根据内容重复度在多个候选下一故事段落中去除掉内容重复度大于预设数值的候选下一故事段落;
步骤61,根据逻辑连贯性和逻辑递进效率,在去除掉内容重复度大于预设数值的多个候选下一故事段落中选择目标下一故事段落。
在上述步骤60中,可以首先根据内容重复度从多个候选下一故事段落中去除掉不符合内容重复度的候选下一故事段落,也就是,可以在多个候选下一故事段落中去除掉内容重复度大于预设数值的候选下一故事段落,更具体的,可以在多个候选下一故事段落中去除掉人物名称重复度大于0,且字符重复度大于预设数值的候选下一故事段落。
例如,字符重复度为短句在候选下一故事段落中出现的次数,预设数值为1,有如下5个候选下一故事段落,候选下一故事段落1:“描述:林菲菲跟着宋尧一起来到候府,远远便到了方承意。此刻的方承意一袭黑衣,坐在书房内眉头微锁。”;候选下一故事段落2:“林菲菲:“他找我干什么?”林菲菲皱着眉头说道。”;候选下一故事段落3:“林菲菲:"我……我不认识侯爷啊。"林菲菲看着叶问舟说道。”;候选下一故事段落4:“林菲菲:“他找我有什么事?”林菲菲想着他找我什么事呢。”;候选下一故事段落5:“林菲菲:“候府?方承意找我做什么?”林菲菲对宋尧说。”。在候选下一故事段落3中人物名称重复度为1,即人物名称重复度大于0,则需要去除掉候选下一故事段落3。在候选下一故事段落4中短句“他找我有什么事”出现了两次,则字符重复度为2,大于预设数值,则需要去除掉候选下一故事段落4。
在上述步骤61中,多个候选下一故事段落中去除掉内容重复度大于预设数值的候选下一故事段落,在剩下的多个候选下一故事段落中采用逻辑连贯性和逻辑递进效率来进一步的选择目标下一故事段落,不需要再对之前的每一个候选下一故事段落进行逻辑连贯性和逻辑递减效率的计算,可以减少对逻辑连贯性和逻辑递进效率的计算,节约了计算资源,也提高了确定目标下一故事段落的效率。
上述迭代方式可以生成一整篇小说,如果只生成一段,可以采用非迭代的处理方式。由于深度学习模型中存在随机数种子,因此,语句生成模型所输出的结果所输出的结果可能是不一样的,为了得到更准确的目标第二故事段落,可以将第一故事段落和第一故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选第二故事段落,并从多个候选第二故事段落中选择一个目标第二故事段落。
则步骤S102包括:
步骤1021,将第一故事段落和第一故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选第二故事段落;
步骤1022,根据每个候选第二故事段落与第一故事段落的逻辑连贯性,从多个候选第二故事段落中选择出目标第二故事段落。
在上述步骤1021中,候选第二故事段落出现的至少部分的人物名称与第一故事段落中出现的至少部分的人物名称相同,由于语句生成模型的所输出结果的随机性,在候选第二故事段落中可能会出现在第一故事段落中没有出现过的人物名称。
具体实施时,由于语句生成模型所输出结果的随机性,将第一故事段落和第一故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中后,语句生成模型可能会得到多个不同的候选第二故事段落。
当然,也可以是将第一故事段落和第一故事段落中出现的人物名称向训练完成的语句生成模型中只输入一次,语句生成模型也会得到多个不同的候选第二故事段落。
在上述步骤1022中,步骤每个候选第二故事段落与第一故事段落的逻辑连贯性,可以通过以下步骤计算得到:
步骤01,将候选第二故事段落中每个短句和第一故事段落中的最后一个短句进行向量化;
步骤02,计算候选第二故事段落中每个短句与第一故事段落的最后一个短句的余弦相似度;
步骤03,根据候选第二故事段落中每个短句与第一故事段落的最后一个短句的余弦相似度,确定候选第二故事段落与第一故事段落的逻辑连贯性。
在上述步骤01中,短句进行向量化可以是将短句转换为多维矩阵。
在上述步骤02中,针对候选第二故事段落中的每一个短句,根据该短句对应的短句向量和第一故事段落中最后一个短句对应的短句向量,计算两个短句之间的余弦相似度。余弦相似度就是通过计算两个向量的夹角余弦值来评估两个向量的相似度(也就是两个短句之间的相似度)。余弦相似度越大,则两个短句之间越相似,余弦相似度越小,则两个短句之间越不相似。
在上述步骤03中,可以将候选第二故事段落中每个短句与第一故事段落的最后一个短句的余弦相似度的均值,确定为候选第二故事段落与第一故事段落的逻辑连贯性。
在生成候选第二故事段落的时候,可以是一个短句一个短句的生成的,因此,步骤1021包括:
步骤10,将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落的第一个短句,并将第一个短句作为当前短句;
步骤11,将当前短句输入到训练完成的语句生成模型中,得到候选下一故事段落中的下一个短句;
步骤12,判断下一个短句是否是最后短句;
步骤13,若下一个短句不是最后短句,将下一个短句作为当前短句,并重复步骤将当前短句输入到训练完成的语句生成模型中,得到候选下一故事段落中的下一个短句;
步骤14,若下一个短句是最后短句,则将第一个短句和输出的每个下一个短句组成候选下一故事段落。
在上述步骤10中,短句可以用于组成候选故事段落,短句的生成还需要与当前故事段落具有一定的逻辑连贯性。一个故事段落可以根据标点符号(如,逗号、句号、分号、问号等)拆分成多个短句。因此,在生成第一个短句时,需要将当前故事段落和当前故事段落(第一故事段落)中出现的人物名称输入到训练好的语句生成模型中,进而得到了第一个短句,并将第一个短句作为当前短句。
例如,故事段落为“我在吃水果,可是我不喜欢吃香蕉。”,则该故事段落中的短句包括“我在吃水果”和“可是我不喜欢吃香蕉”。
在上述步骤11中,为了使得得到的候选下一故事段落的整体内容的连贯性,需要将第一个短句(当前短句)重新输入到训练好的语句生成模型中,进而得到了下一个短句。得到的下一个语句还需要与当前故事段落有一定的逻辑连贯性,因此,生成下一个短句时,还可以将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中。
在上述步骤12中,最后短句是通过预设标识确定的,训练完成的语句生成模型经过大量训练数据的训练之后,在生成最后语句的同时也会生成对应的结束标识,用结束标识表征该候选下一故事段落的结尾。结束标识可以是通过预设字符表示(如,</S>)。
在上述步骤13中,如果下一短句的结尾没有结束标识,则该下一短句就不是最后短句,因此,需要将该下一短句作为当前短句,根据当前短句继续生成下一短句,也就是重复步骤11。
在上述步骤14中,如果下一短句的结尾有结束标识,则该下一短句就是最后短句,就不需要根据该最后短句去生成下一短句了。将第一个短句和每一次生成的下一短句进行拼接,就会组成一个候选下一故事段落。
每一个句子还包括多个词,因此在生成短句的时候,还可以是一个词一个词的生成,步骤10,包括:
步骤20,将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落中第一个短句的第一个词,并将第一个词作为当前词;
步骤21,将当前词输入到训练完成的语句生成模型中,得到候选下一故事段落中第一个短句的下一个词;
步骤22,判断下一个词是否是最后词;
步骤23,若下一个词不是最后词,将下一个词作为当前词,并重复步骤将当前词输入到训练完成的语句生成模型中,得到候选下一故事段落中第一个短句的下一个词;
步骤24,若下一个词是最后词,则将第一个词和输出的每个下一个词组成第一个短句。
在上述步骤20中,词是组成短句的最小单位。候选下一故事段落中的每一个词也需要与当前故事段落保持一定的连贯性,因此,在生成第一个词的时候,还是需要将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,将第一个词作为当前词。
在上述步骤21中,为了使得得到的候选下一故事段落的整体内容的连贯性,需要将第一个词(当前词)重新输入到训练好的语句生成模型中,进而得到了下一个词。得到的下一个词还需要与当前故事段落有一定的逻辑连贯性,因此,生成下一个词时,还可以将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中。
在上述步骤22中,最后词可以是通过预设标识确定的,训练完成的语句生成模型经过大量训练数据的训练之后,在生成最后词的同时也会生成对应的结束标识,用结束标识表征该候选下一故事段落的结尾。结束标识可以是通过预设字符表示(如,</S>)。
在上述步骤23中,如果下一词的结尾没有结束标识,则该下一词就不是最后词,因此,需要将该下一词作为当前词,根据当前词继续生成下一词,也就是重复步骤21。
在上述步骤24中,如果下一词的结尾有结束标识,则该下一词就是最后词,就不需要根据该最后词去生成下一词了。将第一个词和每一次生成的下一词进行拼接,就会组成第一短句。
在上述步骤1022中,逻辑连贯性可以用于表征两个段落、两个短句之间的相似度,逻辑连贯性与相似度之间呈正比关系,相似度越高,逻辑连贯性越高,相似度越低,逻辑连贯性越低。逻辑连贯性越高,则两个段落或两个短句之间的情节越紧凑;逻辑连贯性越低,则两个段落或两个短句之间的情节可能会出现断层。
具体实施时,计算每个候选第二故事段落与第一故事段落之间的逻辑连贯性,根据每个候选第二故事段落与第一故事段落之间的逻辑连贯性,从多个候选第二故事段落中选择一个最合适的目标第二故事段落。
进一步地,从多个候选第二故事段落中筛选目标第二故事段落,还需要考虑到候选故事段落中每两个短句之间的相似度。在候选第二故事中选择出相邻两个短句之间相似度较低的目标第二故事段落。步骤1022,包括:
步骤10221,针对每个候选第二故事段落,根据该候选第二故事段落中相邻短句之间的逻辑连贯性,确定该候选第二故事段落的逻辑递进效率;
步骤10222,根据每个候选第二故事段落与第一故事段落的逻辑连贯性和每个候选第二故事段落的逻辑递进效率,从多个候选第二故事段落中选择出目标第二故事段落。
在上述步骤10221中,逻辑递进效率可以用于表征候选第二故事段落中两个相邻短句之间情节的发展情况。逻辑连贯性与逻辑递进效率之间成反比,逻辑连贯性越大,则逻辑递进效率越小,逻辑连贯性越小,则逻辑递进效率越大。短句可以是故事段落中两个标点符号之间的短句,一个故事段落可以根据标点符号(如,逗号、句号、分号、问号等)拆分成多个短句。
在上述步骤10222中,候选第二故事段落与第一故事段落的逻辑连贯性可以根据候选第二故事段落中每个短句与第一故事段落的最后一个短句之间的逻辑连贯性确定,每个候选第二故事段落的逻辑递进效率可以根据候选第二故事段落中两个相邻短句之间逻辑连贯性确定。同时根据逻辑递进效率和逻辑连贯性从多个候选第二故事段落中筛选出目标第二故事段落,可以使筛选出的目标第二故事段落与第一故事段落之间的逻辑比较连贯,也可以使目标第二故事段落中相邻两个短句之间的相似度降低,进而促进故事情节的推进。
用于筛选目标第二故事段落的逻辑递进效率和逻辑连贯性可以是人为规定的,即在获取用户输入的第一故事段落的同时,还需要获取用户所输入的撰写要求;撰写要求中包括以下要求中的任意一种或多种:故事段落的逻辑连贯属性、故事段落的逻辑递进效率属性和故事段落的内容重复度属性;其中,故事段落的逻辑连贯属性可以是当前故事段落与上一故事段落之间的逻辑连贯性,也就是当前故事段落与上一故事段落之间的相似度。故事段落的逻辑递进效率属性可以是当前故事段落中每两个相邻短句之间的相似度。故事段落的内容重复度属性可以是当前故事段落中短句重复出现的次数。
在本申请中,训练好的语句生成模型是通过大量的训练数据训练得到的,因此,如图2所示,语句生成模型是通过如下步骤训练得到的:
步骤S70,获取训练样本;训练样本为参考故事的前部内容;
步骤S71,将参考故事的前部内容和人物名称均输入至待训练的语句生成模型,得到第一输出结果;人物名称是通过分词模型对参考故事进行分词后得到的;
步骤S72,将第一输出结果与参考故事的后部内容的进行对比,以生成第一损失函数;
步骤S73,根据第一损失函数对待训练的语句生成模型进行调整。
在上述步骤S70中,训练样本为参考故事的前部内容,一个参考故事可以根据内容的大小分为前部内容和候补内容。
例如,有参考故事为“天气渐渐热了起来,街上也多了许多卖冰糖水的小摊。林菲菲寻了一处糖水铺子刚坐下,便听到有人在谈论荔枝,在这个年代,荔枝非常稀少,需差人快马加鞭,连续一整天无休无憩从异地运来,才能保证荔枝的品质,林菲菲想着荔枝的味道,咽了咽口水,心想要是能吃到荔枝该多好。忽然,她听到异响,回头便看到宋尧带着人跑了过来。“姑娘,总算找到你了。侯爷喊你去侯府一趟。”,宋尧对着林菲菲说道。林菲菲不知道侯爷方承意为什么找她去侯府。”则将“天气渐渐热了起来,街上也多了许多卖冰糖水的小摊。林菲菲寻了一处糖水铺子刚坐下,便听到有人在谈论荔枝,在这个年代,荔枝非常稀少,需差人快马加鞭,连续一整天无休无憩从异地运来,才能保证荔枝的品质,林菲菲想着荔枝的味道,咽了咽口水,心想要是能吃到荔枝该多好。”确定为参考故事的前部内容,将“忽然,她听到异响,回头便看到宋尧带着人跑了过来。“姑娘,总算找到你了。侯爷喊你去侯府一趟。”,宋尧对着林菲菲说道。林菲菲不知道侯爷方承意为什么找她去侯府。”确定为参考故事的后部内容。
在上述步骤S71中,人物名称是通过分词模型对参考故事进行分词后得到的。分词模型的描述可以参考上文中步骤S102的分词模型的描述。
具体实施时,通过将参考故事中的人物名称输入到待训练的语句生成模型中,可以对待训练的语句生成模型进行约束,使得第一输出结果中减少出现参考故事中没有出现过的人物名称,提高了训练精度。
在上述步骤S72中,第一损失函数用来估量待训练的语句生成模型的第一输出结果与参考故事的后部内容的不一致程度,第一损失函数越小,则第一输出结果与参考故事的后部内容越接近,第一损失函数越大,则第一结果与参考故事的后部内容的差异越大。
在上述步骤S73中,根据损失函数,对待训练的语句生成模型中的参数进行调整,损失函数越大,则对待训练的语句生成模型中的参数进行调整幅度越大,损失函数越小,则对待训练的语句生成模型中的参数进行调整幅度越小。
在某些时候,为每个短句添加对应的短句类型,可以提高读者的阅读效率,步骤S71,包括:
步骤711,将参考故事的前部内容、参考故事的前部内容的人物名称和参考故事的前部内容中每个短句的短句类型均输入至待训练的语句生成模型,得到第一输出结果;人物名称是通过分词模型对参考故事进行分词后得到的。
在上述步骤711中,短句类型可以用于将每个短句进行区分,短句类型可以包括以下几种:对话类型和非对话类型。对话类型可以用短句中的人物名称进行标记,非对话类型可以用预设词(如,描述、对白等)进行标记。
在训练的时候,将参考故事的前部内容、参考故事的前部内容的人物名称和参考故事的前部内容中每个短句的短句类型均输入至待训练的语句生成模型,以对待训练的语句生成模型进行训练。参考故事的前部内容中每个短句的短句类型可以快速的确定出参考故事中的人物名称,而通过带有短句类型的参考故事的前部内容对待训练的语句生成模型进行训练,可以控制待训练的语句生成模型所生成的第一输出结果中所出现的任务名称。训练好的语句生成模型所输出的候选故事段落中携带有短句类型,可以提高筛选目标故事段落的速度。
本申请实施例提供了一种故事生成装置,如图3所示,包括:
获取模块301,用于获取用户所输入的第一故事段落;
生成模块302,用于将第一故事段落和第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;目标第二故事段落中出现的至少部分的人物名称与第一故事段落中出现的人物名称相同;
反馈模块303,用于将目标第二故事段落反馈给用户。
可选的,第一故事段落中出现的人物名称是用户输入的;或,第一故事段落中出现的人物名称是通过分词模型对第一故事段落进行分词后得到的。
可选的,生成模块302,包括:
第一生成单元,用于将第一故事段落和第一故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选第二故事段落;
第一选择单元,用于根据每个候选第二故事段落与第一故事段落的逻辑连贯性,从多个候选第二故事段落中选择出目标第二故事段落。
可选的,第一生成单元,包括:
第一确定子单元,用于针对每个候选第二故事段落,根据该候选第二故事段落中相邻短句之间的逻辑连贯性,确定该候选第二故事段落的逻辑递进效率;
第一选择子单元,用于根据每个候选第二故事段落与第一故事段落的逻辑连贯性和每个候选第二故事段落的逻辑递进效率,从多个候选第二故事段落中选择出目标第二故事段落。
可选的,反馈模块303,包括:
第一判断单元,用于判断目标第二故事段落是否是最后段落;若目标第二故事段落不是最后段落,则将目标第二故事段落作为当前故事段落;将当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落;根据每个候选下一故事段落与当前故事段落的逻辑连贯性,从多个候选下一故事段落中选择目标下一故事段落;目标下一故事段落中所出现的人物名称与当前故事段落中出现的至少部分的人物名称相同;将当前故事段落和目标下一故事段落反馈给用户。
可选的,第一判断单元,还包括:
第二判断子单元,用于判断目标下一故事段落是否是最后段落;若目标下一故事段落不是最后段落,则将目标下一故事段落作为当前故事段落,并执行步骤将当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一个故事段落;若目标下一故事段落是最后段落,则执行步骤将当前故事段落和目标下一故事段落反馈给用户。
可选的,第一判断单元,包括:
第一计算子单元,用于分别计算每个候选下一故事段落的逻辑连贯性和每个候选下一故事段落的逻辑递进效率;逻辑连贯性是候选下一故事段落与当前故事段落的逻辑连贯性;
第二选择子单元,用于根据每个候选下一故事段落的逻辑连贯性和逻辑递进效率,从多个候选下一故事段落中选择目标下一故事段落。
可选的,装置还包括:
计算模块,用于分别计算每个候选下一故事段落的内容重复度;内容重复度包括以下的任意一种或多种,人物名称重复度和字符重复度;人物名称重复度是根据出现在候选下一故事段落中且没有出现在当前故事段落中的人物名称数量确定的;字符重复度是根据候选下一故事段落中出现的不同短句的重复程度确定的;
第二选择模块,用于根据每个候选下一故事段落的内容重复度、逻辑连贯性和逻辑递进效率,从多个候选下一故事段落中选择目标下一故事段落。
可选的,第二选择模块,包括:
第一筛选单元,用于根据内容重复度在多个候选下一故事段落中去除掉内容重复度大于预设数值的候选下一故事段落;
第二筛选单元,用于根据逻辑连贯性和逻辑递进效率,在去除掉内容重复度大于预设数值的多个候选下一故事段落中选择目标下一故事段落。
可选的,第二选择模块,包括:
获取单元,用于获取用户所输入的撰写要求;撰写要求中包括以下要求中的任意一种或多种:故事段落的逻辑连贯属性、故事段落的逻辑递进效率属性和故事段落的内容重复度属性;
第三选择单元,用于根据故事段落的逻辑连贯属性所对应的逻辑连贯性、故事段落的逻辑递进效率属性所对应的逻辑递进效率和故事段落的内容重复度属性所对应的内容重复度,从多个候选下一故事段落中选择目标下一故事段落。
可选的,计算模块,包括:
第一向量单元,用于将候选下一故事段落中每个短句以及当前故事段落的最后一个短句进行向量化,以得到候选下一故事段落中每个短句的短句向量和当前故事段落中最后一个短句的短句向量;
第一相似度计算单元,用于根据候选下一故事段落中每个短句的短句向量和当前故事段落的最后一个短句的短句向量,计算候选下一故事段落中每个短句与当前故事段落的最后一个短句的余弦相似度;
第一确定单元,用于根据候选下一故事段落中每个短句与当前故事段落的最后一个短句的余弦相似度的均值,确定候选下一故事段落与当前故事段落的逻辑连贯性。
可选的,计算模块,包括:
第二向量单元,用于将候选下一故事段落中每个短句进行向量化,以得到候选下一故事段落中每个短句的短句向量;
第二相似度计算单元,用于针对候选下一故事段落中每个短句,根据该短句的短句向量和该短句的下一短句的短句向量,计算两个短句的余弦相似度;
第二确定单元,用于根据候选下一故事段落中每两个短句之间的余弦相似度,确定候选下一故事段落的逻辑递进效率。
可选的,第一判断单元,包括:
第一生成子单元,用于将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落的第一个短句,并将第一个短句作为当前短句;
第二生成子单元,用于将当前短句输入到训练完成的语句生成模型中,得到候选下一故事段落中的下一个短句;
第一判断资单元,用于判断下一个短句是否是最后短句;若下一个短句不是最后短句,将下一个短句作为当前短句,并重复步骤将当前短句输入到训练完成的语句生成模型中,得到候选下一故事段落中的下一个短句;若下一个短句是最后短句,则将第一个短句和输出的每个下一个短句组成候选下一故事段落。
可选的,第一判断单元,包括:
第三生成子单元,用于将当前故事段落和当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落中第一个短句的第一个词,并将第一个词作为当前词;
第四生成子单元,用于将当前词输入到训练完成的语句生成模型中,得到候选下一故事段落中第一个短句的下一个词;
第二判断资单元,用于判断下一个词是否是最后词;若下一个词不是最后词,将下一个词作为当前词,并重复步骤将当前词输入到训练完成的语句生成模型中,得到候选下一故事段落中第一个短句的下一个词;若下一个词是最后词,则将第一个词和输出的每个下一个词组成第一个短句。
可选的,装置包括:
训练获取模块,用于获取训练样本;训练样本为参考故事的前部内容;
第一训练输出模块,用于将参考故事的前部内容和人物名称均输入至待训练的语句生成模型,得到第一输出结果;人物名称是通过分词模型对参考故事进行分词后得到的;
第二训练输出模块,用于将第一输出结果与参考故事的后部内容的进行对比,以生成损失函数;
训练调整模块,用于根据第一损失函数对待训练的语句生成模型进行调整。
可选的,第一训练输出模块,包括:
第一训练输出单元,用于将参考故事的前部内容、参考故事的前部内容的人物名称和参考故事的前部内容中每个短句的短句类型均输入至待训练的语句生成模型,得到第一输出结果;人物名称是通过分词模型对参考故事进行分词后得到的。
对应于图1中的故事生成的方法,本申请实施例还提供了一种计算机设备400,如图4所示,该设备包括存储器401、处理器402及存储在该存储器401上并可在该处理器402上运行的计算机程序,其中,上述处理器402执行上述计算机程序时实现上述故事生成的方法。
具体地,上述存储器401和处理器402能够为通用的存储器和处理器,这里不做具体限定,当处理器402运行存储器401存储的计算机程序时,能够执行上述故事生成的方法,解决了现有技术中利用模型所生成的故事段落的故事情节不紧凑的问题。
对应于图1中的故事生成的方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述故事生成的方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述故事生成的方法,解决了现有技术中利用模型所生成的故事段落的故事情节不紧凑的问题,本申请通过将第一故事段落和第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,得到目标第二故事段落,目标第二故事段落中的人物名称是与第一故事段落中出现的人物名称是至少部分相同的,这样得到的目标第二故事段落与第一故事段落之间的情节紧凑,逻辑连贯性较高。
在本申请所提供的实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (18)
1.一种故事生成的方法,其特征在于,包括:
获取用户所输入的第一故事段落;
将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;所述目标第二故事段落中出现的人物名称与所述第一故事段落中出现的至少部分的人物名称相同;
将所述目标第二故事段落反馈给用户;
其中,所述将所述目标第二故事段落反馈给用户,包括:
判断所述目标第二故事段落是否是最后段落;
若所述目标第二故事段落不是最后段落,则将所述目标第二故事段落作为当前故事段落;
将所述当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落;
根据每个所述候选下一故事段落与所述当前故事段落的逻辑连贯性,从多个所述候选下一故事段落中选择目标下一故事段落;所述目标下一故事段落中所出现的人物名称与所述当前故事段落中出现的至少部分的人物名称相同;
将所述当前故事段落和所述目标下一故事段落反馈给用户。
2.根据权利要求1所述的方法,其特征在于,所述第一故事段落中出现的人物名称是用户输入的;或,所述第一故事段落中出现的人物名称是通过分词模型对所述第一故事段落进行分词后得到的。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落,包括:
将所述第一故事段落和所述第一故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选第二故事段落;
根据每个所述候选第二故事段落与所述第一故事段落的逻辑连贯性,从多个所述候选第二故事段落中选择出所述目标第二故事段落。
4.根据权利要求3所述的方法,其特征在于,所述根据每个所述候选第二故事段落与所述第一故事段落的逻辑连贯性,从多个所述候选第二故事段落中选择出所述目标第二故事段落,包括:
针对每个候选第二故事段落,根据该候选第二故事段落中相邻短句之间的逻辑连贯性,确定该候选第二故事段落的逻辑递进效率;
根据每个候选第二故事段落与所述第一故事段落的逻辑连贯性和每个候选第二故事段落的逻辑递进效率,从多个候选第二故事段落中选择出所述目标第二故事段落。
5.根据权利要求1所述的方法,其特征在于,在将所述当前故事段落和所述目标下一故事段落反馈给用户之前,还包括:
判断所述目标下一故事段落是否是最后段落;
若所述目标下一故事段落不是最后段落,则将目标下一故事段落作为当前故事段落,并执行步骤所述将所述当前故事段落和所述当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一个故事段落;
若所述目标下一故事段落是最后段落,则执行步骤将当前故事段落和所述目标下一故事段落反馈给用户。
6.根据权利要求1所述的方法,其特征在于,所述根据每个所述候选下一故事段落与所述当前故事段落的逻辑连贯性,从多个所述候选下一故事段落中选择目标下一故事段落,包括:
分别计算每个候选下一故事段落的逻辑连贯性和每个候选下一故事段落的逻辑递进效率;所述逻辑连贯性是所述候选下一故事段落与所述当前故事段落的逻辑连贯性;
根据所述每个候选下一故事段落的所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
分别计算每个候选下一故事段落的内容重复度;所述内容重复度包括以下的任意一种或多种,人物名称重复度和字符重复度;所述人物名称重复度是根据出现在所述候选下一故事段落中且没有出现在所述当前故事段落中的人物名称数量确定的;所述字符重复度是根据所述候选下一故事段落中出现的不同短句的重复程度确定的;
根据所述每个候选下一故事段落的所述内容重复度、所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落。
8.根据权利要求7所述的方法,其特征在于,根据所述每个候选下一故事段落的所述内容重复度、所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落,包括:
根据所述内容重复度在多个所述候选下一故事段落中去除掉所述内容重复度大于预设数值的所述候选下一故事段落;
根据所述逻辑连贯性和所述逻辑递进效率,在去除掉所述内容重复度大于预设数值的多个所述候选下一故事段落中选择所述目标下一故事段落。
9.根据权利要求7所述的方法,其特征在于,根据所述每个候选下一故事段落的所述内容重复度、所述逻辑连贯性和所述逻辑递进效率,从多个所述候选下一故事段落中选择所述目标下一故事段落,包括:
获取用户所输入的撰写要求;所述撰写要求包括以下要求中的任意一种或多种:故事段落的逻辑连贯属性、故事段落的逻辑递进效率属性和故事段落的内容重复度属性;
根据所述故事段落的逻辑连贯属性所对应的逻辑连贯性、所述故事段落的逻辑递进效率属性所对应的逻辑递进效率和所述故事段落的内容重复度属性所对应的内容重复度,从多个所述候选下一故事段落中选择所述目标下一故事段落。
10.根据权利要求6所述的方法,其特征在于,所述逻辑连贯性是通过如下步骤计算得到的:
将所述候选下一故事段落中每个短句以及所述当前故事段落的最后一个短句进行向量化,以得到所述候选下一故事段落中每个短句的短句向量和所述当前故事段落中最后一个短句的短句向量;
根据所述候选下一故事段落中每个短句的短句向量和所述当前故事段落的最后一个短句的短句向量,计算所述候选下一故事段落中每个短句与所述当前故事段落的最后一个短句的余弦相似度;
根据所述候选下一故事段落中每个短句与所述当前故事段落的最后一个短句的余弦相似度的均值,确定所述候选下一故事段落与所述当前故事段落的逻辑连贯性。
11.根据权利要求6所述的方法,其特征在于,所述逻辑递进效率是通过如下步骤计算得到的:
将所述候选下一故事段落中每个短句进行向量化,以得到所述候选下一故事段落中每个短句的短句向量;
针对所述候选下一故事段落中每个短句,根据该短句的短句向量和该短句的下一短句的短句向量,计算两个短句的余弦相似度;
根据所述候选下一故事段落中每两个短句之间的余弦相似度,确定所述候选下一故事段落的逻辑递进效率。
12.根据权利要求1所述的方法,其特征在于,将所述当前故事段落和所述当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落,包括:
将所述当前故事段落和所述当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到所述候选下一故事段落的第一个短句,并将所述第一个短句作为当前短句;
将所述当前短句输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中的下一个短句;
判断所述下一个短句是否是最后短句;
若所述下一个短句不是最后短句,将下一个短句作为当前短句,并重复步骤将所述当前短句输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中的下一个短句;
若所述下一个短句是最后短句,则将所述第一个短句和输出的每个下一个短句组成所述候选下一故事段落。
13.根据权利要求12所述的方法,其特征在于,所述将所述当前故事段落和所述当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到所述候选下一故事段落的第一个短句,包括:
将所述当前故事段落和所述当前故事段落中出现的人物名称输入到训练完成的语句生成模型中,以得到候选下一故事段落中第一个短句的第一个词,并将所述第一个词作为当前词;
将所述当前词输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中第一个短句的下一个词;
判断所述下一个词是否是最后词;
若所述下一个词不是最后词,将下一个词作为当前词,并重复步骤将所述当前词输入到所述训练完成的语句生成模型中,得到所述候选下一故事段落中第一个短句的下一个词;
若所述下一个词是最后词,则将所述第一个词和输出的每个下一个词组成所述第一个短句。
14.根据权利要求1所述的方法,其特征在于,所述语句生成模型是通过如下步骤训练得到的:
获取训练样本;所述训练样本为参考故事的前部内容;
将参考故事的前部内容和人物名称均输入至待训练的语句生成模型,得到第一输出结果;所述人物名称是通过分词模型对所述参考故事进行分词后得到的;
将所述第一输出结果与所述参考故事的后部内容的进行对比,以生成第一损失函数;
根据所述第一损失函数对待训练的语句生成模型进行调整。
15.根据权利要求1所述的方法,其特征在于,将参考故事的前部内容和人物名称均输入至待训练的语句生成模型,得到第一输出结果,包括:
将参考故事的前部内容、参考故事的前部内容的人物名称和参考故事的前部内容中每个短句的短句类型均输入至待训练的语句生成模型,得到第一输出结果;所述人物名称是通过分词模型对所述参考故事进行分词后得到的。
16.一种故事生成装置,其特征在于,包括:
获取模块,用于获取用户所输入的第一故事段落;
生成模块,用于将所述第一故事段落和所述第一故事段落中出现的人物名称均输入到训练完成的语句生成模型中,以得到目标第二故事段落;所述目标第二故事段落中出现的至少部分的人物名称与所述第一故事段落中出现的人物名称相同;
反馈模块,用于将所述目标第二故事段落反馈给用户;
其中,反馈模块,包括:
第一判断单元,用于:判断所述目标第二故事段落是否是最后段落;
若所述目标第二故事段落不是最后段落,则将所述目标第二故事段落作为当前故事段落;
将所述当前故事段落和当前故事段落中出现的人物名称均多次输入到训练完成的语句生成模型中,以得到多个候选下一故事段落;
根据每个所述候选下一故事段落与所述当前故事段落的逻辑连贯性,从多个所述候选下一故事段落中选择目标下一故事段落;所述目标下一故事段落中所出现的人物名称与所述当前故事段落中出现的至少部分的人物名称相同;
将所述当前故事段落和所述目标下一故事段落反馈给用户。
17.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1-15中任一项所述的方法的步骤。
18.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1-15中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010601882.2A CN111737961B (zh) | 2020-06-28 | 2020-06-28 | 一种故事生成的方法、装置、计算机设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010601882.2A CN111737961B (zh) | 2020-06-28 | 2020-06-28 | 一种故事生成的方法、装置、计算机设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111737961A CN111737961A (zh) | 2020-10-02 |
CN111737961B true CN111737961B (zh) | 2021-08-10 |
Family
ID=72651581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010601882.2A Active CN111737961B (zh) | 2020-06-28 | 2020-06-28 | 一种故事生成的方法、装置、计算机设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111737961B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113762474A (zh) * | 2021-08-26 | 2021-12-07 | 厦门大学 | 自适应主题的故事结尾生成方法、存储介质 |
CN114091414A (zh) * | 2021-11-19 | 2022-02-25 | 北京有竹居网络技术有限公司 | 用于改写叙事性文本的方法、设备、装置和介质 |
CN114139524B (zh) * | 2021-11-29 | 2022-09-13 | 浙江大学 | 故事文本的预测方法、装置以及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101292238A (zh) * | 2005-10-21 | 2008-10-22 | 微软公司 | 语义主题的自动化丰富呈现 |
CN106650943A (zh) * | 2016-10-28 | 2017-05-10 | 北京百度网讯科技有限公司 | 基于人工智能的辅助写作方法和装置 |
CN107924414A (zh) * | 2015-09-16 | 2018-04-17 | 英特尔公司 | 促进在计算装置处进行多媒体整合和故事生成的个人辅助 |
CN108170676A (zh) * | 2017-12-27 | 2018-06-15 | 百度在线网络技术(北京)有限公司 | 故事创作的方法、系统和终端 |
CN108664465A (zh) * | 2018-03-07 | 2018-10-16 | 珍岛信息技术(上海)股份有限公司 | 一种自动生成文本方法以及相关装置 |
CN108897852A (zh) * | 2018-06-29 | 2018-11-27 | 北京百度网讯科技有限公司 | 对话内容连贯性的判断方法、装置以及设备 |
CN110209803A (zh) * | 2019-06-18 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 故事生成方法、装置、计算机设备及存储介质 |
CN110941960A (zh) * | 2019-11-12 | 2020-03-31 | 广州爱学信息科技有限公司 | 一种基于关键词的儿童绘本故事生成方法、系统及设备 |
CN111259665A (zh) * | 2020-01-14 | 2020-06-09 | 成都嗨翻屋科技有限公司 | 一种基于神经网络的交互式歌词生成方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070081368A (ko) * | 2006-02-10 | 2007-08-16 | 삼성전자주식회사 | 노래 가사의 반복 패턴을 기초로 가사 구조를 추출하는장치, 시스템, 및 그 방법 |
US8355903B1 (en) * | 2010-05-13 | 2013-01-15 | Northwestern University | System and method for using data and angles to automatically generate a narrative story |
US11087367B2 (en) * | 2018-07-16 | 2021-08-10 | Miles Poehler | System and method for generating text-based advertisements |
CN110728117A (zh) * | 2019-08-27 | 2020-01-24 | 达而观信息科技(上海)有限公司 | 基于机器学习和自然语言处理的段落自动识别方法及系统 |
CN111046645A (zh) * | 2019-12-11 | 2020-04-21 | 浙江大搜车软件技术有限公司 | 生成文章的方法、装置、计算机设备和存储介质 |
-
2020
- 2020-06-28 CN CN202010601882.2A patent/CN111737961B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101292238A (zh) * | 2005-10-21 | 2008-10-22 | 微软公司 | 语义主题的自动化丰富呈现 |
CN107924414A (zh) * | 2015-09-16 | 2018-04-17 | 英特尔公司 | 促进在计算装置处进行多媒体整合和故事生成的个人辅助 |
CN106650943A (zh) * | 2016-10-28 | 2017-05-10 | 北京百度网讯科技有限公司 | 基于人工智能的辅助写作方法和装置 |
CN108170676A (zh) * | 2017-12-27 | 2018-06-15 | 百度在线网络技术(北京)有限公司 | 故事创作的方法、系统和终端 |
CN108664465A (zh) * | 2018-03-07 | 2018-10-16 | 珍岛信息技术(上海)股份有限公司 | 一种自动生成文本方法以及相关装置 |
CN108897852A (zh) * | 2018-06-29 | 2018-11-27 | 北京百度网讯科技有限公司 | 对话内容连贯性的判断方法、装置以及设备 |
CN110209803A (zh) * | 2019-06-18 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 故事生成方法、装置、计算机设备及存储介质 |
CN110941960A (zh) * | 2019-11-12 | 2020-03-31 | 广州爱学信息科技有限公司 | 一种基于关键词的儿童绘本故事生成方法、系统及设备 |
CN111259665A (zh) * | 2020-01-14 | 2020-06-09 | 成都嗨翻屋科技有限公司 | 一种基于神经网络的交互式歌词生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111737961A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403680B2 (en) | Method, apparatus for evaluating review, device and storage medium | |
CN109657054B (zh) | 摘要生成方法、装置、服务器及存储介质 | |
CN111737961B (zh) | 一种故事生成的方法、装置、计算机设备和介质 | |
CN108269125B (zh) | 评论信息质量评估方法及系统、评论信息处理方法及系统 | |
US10102191B2 (en) | Propagation of changes in master content to variant content | |
WO2017210634A1 (en) | Iterative alternating neural attention for machine reading | |
US11232263B2 (en) | Generating summary content using supervised sentential extractive summarization | |
CN107273349B (zh) | 一种基于多种语言的实体关系抽取方法及服务器 | |
CN110287405B (zh) | 情感分析的方法、装置和存储介质 | |
US10496751B2 (en) | Avoiding sentiment model overfitting in a machine language model | |
CN111859940B (zh) | 一种关键词提取方法、装置、电子设备及存储介质 | |
JP2019197366A (ja) | コンテンツ評価装置、コンテンツ評価方法、プログラム、および記録媒体 | |
CN112541349A (zh) | 输出装置以及记录媒体 | |
CN113836303A (zh) | 一种文本类别识别方法、装置、计算机设备及介质 | |
CN111221940A (zh) | 一种文本生成方法、装置、电子设备及存储介质 | |
CN113392218A (zh) | 文本质量评估模型的训练方法和确定文本质量的方法 | |
US20190019094A1 (en) | Determining suitability for presentation as a testimonial about an entity | |
CN113934834A (zh) | 一种问句匹配的方法、装置、设备和存储介质 | |
CN108959268A (zh) | 一种文本情感分析方法及装置 | |
CN110969005A (zh) | 一种确定实体语料之间的相似性的方法及装置 | |
CN112527967A (zh) | 文本匹配方法、装置、终端和存储介质 | |
CN112559711A (zh) | 一种同义文本提示方法、装置及电子设备 | |
CN111435405A (zh) | 一种文章关键句自动标注方法及装置 | |
CN110245331A (zh) | 一种语句转换方法、装置、服务器及计算机存储介质 | |
CN113515932A (zh) | 处理问答信息的方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |