具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本申请实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
图1是本发明第一实施例的长文本生成方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图1所示,该方法包括步骤:
步骤S101:获取输入数据,输入数据包括多个属性以及每个属性对应的值。
具体地,该输入数据包括用户输入的多个属性,以及每个属性对应的值。例如,请参阅下表1,下表1展示了当需要生成一条汽车的广告文本时的输入数据;
表1
需要说明的是,该输入数据中属性和属性的值均由用户预先设定。
步骤S102:基于输入数据构建预设数量个计划子文本,每个计划子文本均包括所有属性。
需要说明的是,预设数量预先设定。具体地,在得到输入数据之后,根据输入数据中的属性构建预设数量个计划子文本,在最终生成文本时,每个计划子文本对应生成一个句子。
步骤S103:计算每个属性在每个计划子文本的概率,并根据概率筛选出符合预设要求的目标属性,并将目标属性作为计划子文本的最终输出属性。
需要理解的是,虽然计划子文本均包括所有的属性,但是,不同的计划子文本所想要表单的核心属性可能不同。因此,在构建计划子文本之后,分别计算每个属性在每个计划子文本的概率,通过概率的高低来确认每个计划子文本所需要的表达的属性。具体地,该预设数量个计划子文本所需要的表达的属性可以表示为:g=g1,g2,…,gT,其中,T为所述预设数量,gi表示第i(1≤i≤T)个计划子文本需要表达的属性,不同计划子文本所需要表达的属性可能不同,例如,继续以上述汽车的广告文本为例进行说明,其生成的g1可能侧重于表达品牌和型号两项属性,g2可能侧重于表达颜色和档位两项属性,g3可能侧重于表达座位数和动力两项属性,从而确认每一个计划子文本的最终输出属性。
步骤S104:根据输入数据和每个计划子文本的最终输出属性生成与计划子文本对应的多个输出子文本,每个子文本包括最终输出属性对应的值,多个输出子文本构成一个长文本。
具体地,在获取到计划子文本的最终输出属性之后,根据输入数据中每个属性对应的值,以及每个计划子文本的最终输出属性生成与每个计划子文本对应的输出子文本,从而得到多个输出子文本,再将多个输出子文本进行组合即可得到一个长文本。
本发明第一实施例的长文本生成方法通过将一个长文本的生成任务分为多个子文本生成任务,且使得每个子文本任务所表达的核心属性不同,再通过逐个执行每个子文本任务,从而得到每个子文本任务对应的输出子文本,再通过组合输出子文本即可得到一个长文本,完成长文本的生成过程,其采用的计划子文本的方式,实现了对人的表达方式的模拟,为每个计划子文本设定需要表达的核心属性,从而使得最终生成的多个输出子文本各有侧重点,进而使得最终组合得到的长文本的句与句之间更为连贯,在很大程度上避免重复出现相同的文本描述。
图2是本发明第二实施例的长文本生成方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图2所示的流程顺序为限。如图2所示,该方法包括步骤:
步骤S201:获取输入数据,输入数据包括多个属性以及每个属性对应的值。
在本实施例中,图2中的步骤S201和图1中的步骤S101类似,为简约起见,在此不再赘述。
步骤S202:对输入数据进行编码操作,并结合预设的第一神经网络模型计算得到第一隐变量分布,并从第一隐变量分布中随机采样得到第一隐变量。
本实施例中,考虑到语言表达的多样性,对于包含同样输入数据的文本可能具有多个合理但顺序不同的表达文本,因此,本实施例中引入了第一隐变量来捕捉语言规划的多样性。具体地,本实施例在获取到输入数据之后,对输入数据进行编码操作,编码过程表示为:
enc=BiGRU(embedding(x))=h;
再将编码结果输入至预设的第一神经网络模型,得到第一隐变量的分布参数(μ,p),表示为:
其中,MLPθ即所述第一神经网络模型,该第一神经网络需要通过样本数据进行预先训练得到;
再在该第一隐变量的分布参数中随机采样得到第一隐变量,表示为:
步骤S203:根据输入数据、第一隐变量计算得到概率分布最大的一组计划子文本。
具体地,在得到第一隐变量后,基于输入数据和该第一隐变量,计算得到概率分布最大的一组计划子文本,其计算公式为:
其中,x是输入数据,zP是第一隐变量,gt表示第t个计划子文本,P(gt|g<t,x,zP)表示在x,zP和小于时间步t的g(gt-1,gt-2…)的情况下,gt出现的概率。
步骤S204:计算每个属性在每个计划子文本的概率,并根据概率筛选出符合预设要求的目标属性,并将目标属性作为计划子文本的最终输出属性。
在本实施例中,图2中的步骤S204和图1中的步骤S103类似,为简约起见,在此不再赘述。
步骤S205:根据输入数据和每个计划子文本的最终输出属性生成与计划子文本对应的多个输出子文本,每个子文本包括最终输出属性对应的值,多个输出子文本构成一个长文本。
在本实施例中,图2中的步骤S205和图1中的步骤S104类似,为简约起见,在此不再赘述。
本发明第二实施例的长文本生成方法在第一实施例的基础上,通过引入在第一隐变量分布中随机采样获得的第一隐变量来控制文本的多样化表达,避免最终生成的文本内容单一和重复的问题。
图3是本发明第三实施例的长文本生成方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图3所示的流程顺序为限。如图3所示,该方法包括步骤:
步骤S301:获取输入数据,输入数据包括多个属性以及每个属性对应的值。
在本实施例中,图3中的步骤S301和图2中的步骤S201类似,为简约起见,在此不再赘述。
步骤S302:对输入数据进行编码操作,并结合预设的第一神经网络模型计算得到第一隐变量分布,并从第一隐变量分布中随机采样得到第一隐变量。
在本实施例中,图3中的步骤S302和图2中的步骤S202类似,为简约起见,在此不再赘述。
步骤S303:根据输入数据、第一隐变量计算得到概率分布最大的一组计划子文本。
在本实施例中,图3中的步骤S303和图2中的步骤S203类似,为简约起见,在此不再赘述。
步骤S304:计算每个属性在每个计划子文本中的概率。
具体地,其计算公式为:
其中,d
i表示第i个属性,g
t表示第t个计划子文本,P(d
i∈g
t|g
<t,x,z
P)表示d
i在g
t中的概率,σ表示sigmoid函数,tanh表示正切函数,
W
p、b
p表示预先设定的控制参数,h
i由属性d
i编码得到,
是用于计划子文本生成的计划解码器的隐状态,具体为上一时间步的计划子文本选中的属性的平均池化,即
步骤S305:分别判断计划子文本中是否存在概率大于预设阈值的目标属性。若存在,则执行步骤S306;若不存在,则执行步骤S307。
具体地,得到每个属性在每个计划子文本中的概率之后,分别判断每个计划子文本中每一个属性的概率是否大于预设阈值。其中,该预设阈值预先设定,本实施例中,优选为0.5。
步骤S306:将目标属性作为计划子文本的最终输出属性。
具体地,当计划子文本中存在概率大于预设阈值的目标属性时,将该目标属性作为该计划子文本的最终输出属性。例如,假设计划子文本的所有属性和概率分别为:A、0.3,B、0.8,C、0.7,D、0.4,则将属性B和C作为该计划子文本的最终输出属性。
步骤S307:将概率最大的属性作为最终输出属性。
具体地,当计划子文本中所有属性的概率均小于预设阈值,则从所有的属性中选取概率最大的那一个属性作为该计划子文本的最终输出属性,避免当计划子文本中所有属性的概率均小于预设阈值时该计划子文本对应的输出子文本不具备任何属性。
步骤S308:根据输入数据和每个计划子文本的最终输出属性生成与计划子文本对应的多个输出子文本,每个子文本包括最终输出属性对应的值,多个输出子文本构成一个长文本。
在本实施例中,图3中的步骤S308和图2中的步骤S205类似,为简约起见,在此不再赘述。
本发明第三实施例在第二实施例的基础上,通过结合随机采样得到的第一隐变量来计算各个计划子文本中属性的概率值,其随机采样的方式导致计划子文本中各属性的概率值可能不同,从而实现了使得多个计划子文本能够表达出不同的属性,进而使得最终生成输出子文本能够分别表达出不同的属性,避免出现重复,并且,在进行最终输出属性的选择是,若属性的概率超过预设阈值则可作为该计划子文本所要表达的属性之一,若不存在概率超过预设阈值的属性,则选取概率值最高的一个属性进行表达,防止最终生成的输出子文本中不具备任何用户想要表达的属性。
图4是本发明第四实施例的长文本生成方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图4所示的流程顺序为限。如图4所示,该方法包括步骤:
步骤S401:获取输入数据,输入数据包括多个属性以及每个属性对应的值。
在本实施例中,图4中的步骤S401和图2中的步骤S201类似,为简约起见,在此不再赘述。
步骤S402:对输入数据进行编码操作,并结合预设的第一神经网络模型计算得到第一隐变量分布,并从第一隐变量分布中随机采样得到第一隐变量。
在本实施例中,图4中的步骤S402和图2中的步骤S202类似,为简约起见,在此不再赘述。
步骤S403:根据输入数据、第一隐变量计算得到概率分布最大的一组计划子文本。
在本实施例中,图4中的步骤S403和图2中的步骤S203类似,为简约起见,在此不再赘述。
步骤S404:计算每个属性在每个计划子文本的概率,并根据概率筛选出符合预设要求的目标属性,并将目标属性作为计划子文本的最终输出属性。
在本实施例中,图4中的步骤S404和图2中的步骤S204类似,为简约起见,在此不再赘述。
步骤S405:利用预设的第一解码端进行文本解码操作,得到第一解码端的隐状态。
需要说明的是,该第一解码端用于解码得到文本级的解码结果,其用于拟合子文本之间的连贯性。具体地,第一解码端的解码过程可以表示为:
其中,
是第一解码端的隐状态,
为上一时刻采样的隐变量,
为第二解码端在上一个时间步进行解码后得到的隐状态。
步骤S406:根据第一解码端的隐状态、输入数据、第一隐变量、计划子文本的最终输出属性和预设的第二神经网络模型计算得到第二隐变量分布。
具体地,利用预设的第二神经网络模型得到第二隐变量分布可以表示为:
其中,
表示第二隐变量的分布参数,MLP
φ′为第二神经网络模型,需要说明的是,该第二神经网络模型通过预先训练得到,s
t是生成的第t个输出子文本的表现形式。
步骤S407:从第二隐变量分布中随机采样得到第二隐变量。
具体地,从第二隐变量分布中随机采样得到第二隐变量可以表示为:
其中,
表示第二隐变量,s
<t表示s
t之前的所有输出子文本的表现形式,g表示计划子文本的最终输出属性,
表示高斯分布,I表示单位向量,c={x,z
p},x是输入数据,z
p是第一隐变量。
步骤S408:根据输入数据、第一隐变量、计划子文本的最终输出属性和第二隐变量计算得到概率分布最大的一组输出子文本的表现形式,表现形式用于反映输出子文本之间的关系。
具体地,该输出子文本的表现形式可以表示为:
其中,
表示在
g,c和小于时间步t的s(s
t-1,s
t-2…)的情况下,s
t出现的概率。
步骤S409:通过预设的第二解码端基于输出子文本的表现形式、输入数据、第一隐变量、计划子文本的最终输出属性、第二隐变量生成多个输出子文本,多个输出子文本组合构成一个长文本。
需要说明的是,该第二解码端用于解码生成每个输出子为本中的词。
具体地,在得到输出子文本的表现形式之后,通过预设的第二解码端基于输出子文本的表现形式、输入数据、第一隐变量、计划子文本的最终输出属性、第二隐变量生成多个输出子文本,该输出子文本的生成过程可以描述为:
其中,
是指输出子文本中的一个词,
表示时间步t生成的输出子文本中的第k个词之前所有的词,
表示
g、c、小于时间步t的s(s
t-1,s
t-2…)和时间步t生成的输出子文本中的第k个词之前所有的词的情况下,
出现的概率。
本发明第四实施例在第二实施例的基础上,通过将输出子文本的生成分为文本生成和词生成两层来实现,从而使得生成的输出子文本的语句之间更为通行和连贯,利用第二隐变量控制输出子文本的表现形式的生成,能够更高的捕获输出子文本之间的一致性,提升最终生成的文本的质量。
进一步的,所述方法还包括预先训练第一神经网络模型和第二神经网络模型,其中,该第一神经网络模型和第二神经网络模型为循环神经网络、多层感知机中的一种。具体地,训练第一神经网络模型和第二神经网络模型包括以下步骤:
1、获取训练样本,该训练样本包括样本输入数据和真实结果数据,样本输入数据包括属性和值;
2、对样本输入数据进行编码,再利用待训练的第一神经网络模型从编码结果中得到第一隐变量分布参数,从第一隐变量分布参数中随机采样得到第一隐变量;
3、根据样本输入数据、第一隐变量计算得到概率分布最大的一组计划子文本,并确认每个计划子文本的最终输出属性;
4、利用第一解码端进行解码操作,再根据解码得到的第一解码端的隐状态、样本输入数据、第一隐变量、计划子文本的最终输出属性和待训练的第二神经网络模型计算得到第二隐变量分布,从第二隐变量分布中随机采样得到第二隐变量;
5、根据样本输入数据、第一隐变量、计划子文本的最终输出属性和第二隐变量计算得到概率分布最大的一组输出子文本的表现形式;
6、通过第二解码端基于输出子文本的表现形式、样本输入数据、第一隐变量、计划子文本的最终输出属性、第二隐变量得到样本输出数据;
7、根据该样本输出数据、真实结果数据、第一神经网络模型的第一损失函数、第二神经网络模型的第二损失函数、利用第一隐变量生成输出子文本时的第三损失函数计算得到第一损失函数值、第二损失函数值、第三损失函数值;
8、利用第一损失函数值、第二损失函数值、第三损失函数值进行反向传播更新,直至精度达到预设要求时,得到训练好的第一神经网络模型和第二神经网络模型。
其中,第一损失函数为:
其中,所述log P(y|x)为第一损失函数值,所述
是指在根据x,y学习出分布并采样Z
P的情况下,y=argmax
yP(y|g,x,z
p),表示最终的输出结果,所述P(y|x,z
P)是在输入x和从分布采样出的z
P来代表隐藏层数据的情况下预测到y的概率,D
KL是散度计算,是计算q
θ‘(z
P|x,y)分布与p
θ(z
p|x)分布的差异,p
θ(z
p|x)是输入数据x编码后的真实分布,该真实分布通过真实结果数据预先得到,q
θ‘(z
P|x,y)是第一神经网络模型学习到的分布。
第二损失函数为:
其中,所述log P(s
t|s
<t,g,x,z
p)是第二损失函数值,所述
是指在
条件下学习到的分布并采样到
的情况下,所述
是在
g,z
p,x和小于时间步t的s(s
t-1,s
t-2…)的情况下,s
t出现的概率,所述D
KL是散度计算,计算
分布与
分布的差异,
是结合了g,x,z
p的隐变量真实分布,通过真实结果数据预先得到,
是第二神经网络模型学习到的分布。
第三损失函数为:
其中,所述log P(y|x,zP)是第三损失函数值,所述P(gt|g<t,x,zp)是在x,zp和小于时间步t的g(gt-1,gt-2…)的情况下,gt出现的概率,所述P(st|s<t,g,x,zp)是在g,x,zp和小于时间步t的s(st-1,st-2…)的情况下,st出现的概率。
图5是本发明实施例的长文本生成装置的功能模块示意图。如图5所示,该装置50包括获取模块51、计划模块52、属性确定模块53和生成模块54。
获取模块51,用于获取输入数据,输入数据包括多个属性以及每个属性对应的值;
计划模块52,用于基于输入数据构建预设数量个计划子文本,每个计划子文本均包括所有属性;
属性确定模块53,用于计算每个属性在每个计划子文本的概率,并根据概率筛选出符合预设要求的目标属性,并将目标属性作为计划子文本的最终输出属性;
生成模块54,用于根据输入数据和每个计划子文本的最终输出属性生成与计划子文本对应的多个输出子文本,每个子文本包括最终输出属性对应的值,多个输出子文本构成一个长文本。
可选地,计划模块52基于输入数据构建预设数量个计划子文本,每个计划子文本均包括所有属性的操作还可以为:对输入数据进行编码操作,并结合预设的第一神经网络模型计算得到第一隐变量分布,并从第一隐变量分布中随机采样得到第一隐变量;根据输入数据、第一隐变量计算得到概率分布最大的一组计划子文本。
可选地,该装置50还包括第一训练模块,用于预先训练第一神经网络模型,该第一神经网络模型的第一损失函数为:
其中,log P(y|x)为第一损失函数值,
是指在根据x,y学习出分布并采样Z
P的情况下,y=argmax
y P(y|g,x,z
p)表示最终的输出结果,P(y|x,z
P)是在输入x和从分布采样出的z
P来代表隐藏层数据的情况下预测到y的概率,D
KL是散度计算,是计算q
θ′(z
P|x,y)分布与pX(z
p|x)分布的差异,p
θ(z
p|x)是预先获取的输入数据x编码后的真实分布,q
θ′(z
p|x,y)是指第一神经网络模型学习到的分布。
可选地,属性确定模块53计算每个属性在每个计划子文本的概率,并根据概率筛选出符合预设要求的目标属性,并将目标属性作为计划子文本的最终输出属性的操作还可以为:计算每个属性在每个计划子文本中的概率;分别判断计划子文本中是否存在概率大于预设阈值的目标属性;若存在,则将目标属性作为计划子文本的最终输出属性。
可选地,属性确定模块53分别判断计划子文本中是否存在概率大于预设阈值的目标属性的操作之后,还用于:当计划子文本中不存在概率大于预设阈值的目标属性时,将概率最大的属性作为最终输出属性。
可选地,生成模块54根据输入数据和每个计划子文本的最终输出属性生成与计划子文本对应的多个输出子文本,每个子文本包括最终输出属性对应的值,多个输出子文本构成一个长文本的操作还可以为:利用预设的第一解码端进行文本解码操作,得到第一解码端的隐状态;根据第一解码端的隐状态、输入数据、第一隐变量、计划子文本的最终输出属性和预设的第二神经网络模型计算得到第二隐变量分布;从第二隐变量分布中随机采样得到第二隐变量;根据输入数据、第一隐变量、计划子文本的最终输出属性和第二隐变量计算得到概率分布最大的一组输出子文本的表现形式,表现形式用于反映输出子文本之间的关系;通过预设的第二解码端基于输出子文本的表现形式、输入数据、第一隐变量、计划子文本的最终输出属性、第二隐变量生成多个输出子文本,多个输出子文本组合构成一个长文本。
可选地,该装置50还包括第二训练模块,用于预先训练第二神经网络模型,第二神经网络模型的第二损失函数为:
其中,log P(s
t|x
<t,g,x,z
p)是第二损失函数值,
是指在
条件下学习到的分布采样到
的情况下,
是在
g,z
p,x和小于时间步t的s(s
t-1,s
t-2…)的情况下,s
t出现的概率,D
KL是散度计算,计算
分布与
分布的差异,
是预先获取的结合了g,x,z
p的隐变量真实分布,
是第二神经网络模型学习到的分布。
关于上述实施例长文本生成装置中各模块实现技术方案的其他细节,可参见上述实施例中的长文本生成方法中的描述,此处不再赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
请参阅图6,图6为本发明实施例的终端的结构示意图。如图6所示,该终端60包括处理器61及和处理器61耦接的存储器62,存储器32中存储有程序指令,程序指令被处理器31执行时,使得处理器31执行上述任一实施例所述的长文本生成方法的步骤。
其中,处理器61还可以称为CPU(Central Processing Unit,中央处理单元)。处理器61可能是一种集成电路芯片,具有信号的处理能力。处理器61还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
参阅图7,图7为本发明实施例的存储介质的结构示意图。本发明实施例的存储介质存储有能够实现上述所有方法的程序文件71,其中,该程序文件71可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。