对话生成方法及装置、存储介质、电子设备与流程

文档序号:18900213发布日期:2019-10-18 21:50阅读:164来源:国知局
对话生成方法及装置、存储介质、电子设备与流程

本公开涉及计算机技术领域,具体而言,涉及一种对话生成方法、对话生成装置、电子设备以及计算机可读存储介质。



背景技术:

语句功能(sentencefunction)是一种重要的语言学特征,按语句功能可以将语句划分为疑问句、陈述句、祈使句等多个类别,该特征在对话中能够体现说话者的目的或者情感。

目前,现有的生成式对话系统基本都是基于sequence-to-sequence(序列到序列的转换模型,seq2seq)框架,其中生成回复的质量是影响用户体验的重要因素。针对对话系统所生成回复质量的问题,已经有大量的方法被提出,例如尝试增强回复的多样性,或者尝试提高回复的信息量。但是这些方法在生成回复的时候只会影响少量的词,例如“微笑”对应开心的情感,“保湿水”对应一个护肤的话题等。这些方法对于提升生成回复的用词多样性和信息量的效果较差,且可控性较低,影响用户的使用体验。

因此,提供一种生成回复的信息量较多且具备多样性以及可控性的对话生成方法是非常必要的。

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



技术实现要素:

本公开的目的在于提供一种对话生成方法、对话生成装置、电子设备以及计算机可读存储介质,进而在一定程度上克服由于相关技术的限制和缺陷而导致的,生成式对话模型回复信息量较少且不可控的问题。

根据本公开的第一方面,提供一种对话生成方法,包括:

获取输入的原始对话信息;

根据预先训练好的功能分类模型识别所述原始对话信息以确定所述原始对话信息对应的语句功能类型;

将所述原始对话信息以及所述语句功能类型输入预先训练好的对话生成模型以生成所述原始对话信息对应的对话回复信息。

在本公开的一种示例性实施例中,所述功能分类模型包括语句编码器,全连接层以及归一化函数层,所述根据预先训练好的功能分类模型识别所述原始对话信息以确定所述原始对话信息对应的语句功能类型,包括:

根据所述语句编码器对所述原始对话信息进行编码,生成所述原始对话信息对应的语句向量;

获取一随机分布式向量,并根据所述随机分布式向量以及所述语句向量确定所述原始对话信息对应的特征向量;

基于所述全连接层以及所述归一化函数层,通过所述特征向量确定所述原始对话信息对应的语句功能类型。

在本公开的一种示例性实施例中,在根据预先训练好的功能分类模型识别所述原始对话信息以确定所述原始对话信息对应的语句功能类型之前,所述方法还包括:

根据预先构建的语句功能分类数据对预设样本数据库中的样本语句进行标记;

通过标记后的所述样本语句对所述功能分类模型进行训练以完成对所述功能分类模型的训练过程。

在本公开的一种示例性实施例中,所述对话生成模型包括语句编码网络以及生成网络,所述将所述原始对话信息以及所述语句功能类型输入预先训练好的对话生成模型以生成所述原始对话信息对应的对话回复信息,包括:

通过所述语句编码网络对所述原始对话信息以及所述语句功能类型进行编码,生成一对应所述原始对话信息且包含所述语句功能类型的隐变量;

根据所述生成网络对所述隐变量进行解码,生成所述原始对话信息对应的对话回复信息。

在本公开的一种示例性实施例中,通过所述语句编码网络对所述原始对话信息以及所述语句功能类型进行编码,生成一对应所述原始对话信息且包含所述语句功能类型的隐变量,包括:

通过所述语句编码网络对所述原始对话信息以及所述语句功能类型进行编码,生成一对应所述原始对话信息且包含所述语句功能类型的原始对话向量;

对所述原始对话向量进行变分推断以及正态分布采样处理得到所述隐变量。

在本公开的一种示例性实施例中,所述对话生成模型还包括辨别器网络,所述在将所述原始对话信息以及所述语句功能类型输入预先训练好的对话生成模型以生成所述原始对话信息对应的对话回复信息之前,所述方法,还包括:

获取样本数据库中的样本对话,根据所述对话生成模型对所述样本对话进行编码生成目标对话向量;所述样本对话包括样本语句以及所述样本语句关联的回复语句;

通过所述生成网络对所述目标对话向量进行解码生成所述样本语句对应的所述回复语句以计算所述生成网络对应的生成损失;

通过所述辨别器网络对所述目标对话向量进行识别处理确定所述目标对话向量对应的语句功能类型以计算所述辨别器网络对应的分类损失;

对所述分类损失以及所述生成损失进行相加生成所述对话生成模型的总损失以根据所述总损失对所述对话生成模型进行训练。

在本公开的一种示例性实施例中,所述对话生成模型还包括训练编码网络,所述训练编码网络包括样本语句编码器以及回复语句编码器;所述获取样本数据库中的样本对话,根据所述对话生成模型对所述样本对话进行编码生成目标对话向量,包括:

根据所述样本语句编码器对所述样本语句进行编码生成样本语句向量;

根据所述回复语句编码器对所述回复语句进行编码生成回复语句向量;

将所述样本语句向量以及所述回复语句向量进行相加生成目标对话向量。

在本公开的一种示例性实施例中,通过所述生成网络对所述目标对话向量进行解码生成所述样本语句对应的所述回复语句以计算所述生成网络对应的生成损失,包括:

对所述目标对话向量进行变分推断以及正态分布采样处理得到目标隐变量;

将所述目标隐变量作为所述生成网络对应的初始隐含状态,并通过所述生成网络对所述目标对话向量进行解码生成所述样本语句对应的所述回复语句以计算所述生成网络对应的生成损失。

在本公开的一种示例性实施例中,通过所述辨别器网络对所述目标对话向量进行识别处理确定所述目标对话向量对应的语句功能类型以计算所述辨别器网络对应的分类损失,包括:

根据所述辨别器网络对应的最大似然模型确定所述辨别器网络的损失函数;

将所述样本语句向量输入到所述辨别器网络,确定所述样本语句向量的语句功能类型以根据所述损失函数计算分类损失。

根据本公开的第二方面,提供一种对话生成装置,包括:

对话信息获取模块,用于获取输入的原始对话信息;

功能分类识别模块,用于根据预先训练好的功能分类模型识别所述原始对话信息以确定所述原始对话信息对应的语句功能类型;

对话回复生成模块,用于将所述原始对话信息以及所述语句功能类型输入预先训练好的对话生成模型以生成所述原始对话信息对应的对话回复信息。

在本公开的一种示例性实施例中,所述功能分类识别单元2220包括:

对话信息编码单元,用于根据所述语句编码器对所述原始对话信息进行编码,生成所述原始对话信息对应的语句向量;

特征向量确定单元,用于获取一随机分布式向量,并根据所述随机分布式向量以及所述语句向量确定所述原始对话信息对应的特征向量;

语句功能类型确定单元,用于基于所述全连接层以及所述归一化函数层,通过所述特征向量确定所述原始对话信息对应的语句功能类型。

在本公开的一种示例性实施例中,所述对话生成装置2200通过下述步骤对功能分类模型进行训练:根据预先构建的语句功能分类数据对预设样本数据库中的样本语句进行标记;通过标记后的所述样本语句对所述功能分类模型进行训练以完成对所述功能分类模型的训练过程。

在本公开的一种示例性实施例中,所述对话回复生成模块2230包括:

隐变量生成单元,用于通过所述语句编码网络对所述原始对话信息以及所述语句功能类型进行编码,生成一对应所述原始对话信息且包含所述语句功能类型的隐变量;

对话回复信息生成单元,用于根据所述生成网络对所述隐变量进行解码,生成所述原始对话信息对应的对话回复信息。

在本公开的一种示例性实施例中,所述隐变量生成单元可以通过下述步骤生成隐变量:通过所述语句编码网络对所述原始对话信息以及所述语句功能类型进行编码,生成一对应所述原始对话信息且包含所述语句功能类型的原始对话向量;对所述原始对话向量进行变分推断以及正态分布采样处理得到所述隐变量。

在本公开的一种示例性实施例中,所述对话生成装置2200还包括:

目标对话向量生成单元,用于获取样本数据库中的样本对话,根据所述对话生成模型对所述样本对话进行编码生成目标对话向量;所述样本对话包括样本语句以及所述样本语句关联的回复语句;

生成损失计算单元,用于通过所述生成网络对所述目标对话向量进行解码生成所述样本语句对应的所述回复语句以计算所述生成网络对应的生成损失;

分类损失计算单元,用于通过所述辨别器网络对所述目标对话向量进行识别处理确定所述目标对话向量对应的语句功能类型以计算所述辨别器网络对应的分类损失;

对话生成模型训练单元,用于对所述分类损失以及所述生成损失进行相加生成所述对话生成模型的总损失以根据所述总损失对所述对话生成模型进行训练。

在本公开的一种示例性实施例中,所述目标对话向量生成单元可以通过以下步骤生成目标对话向量:根据所述样本语句编码器对所述样本语句进行编码生成样本语句向量;根据所述回复语句编码器对所述回复语句进行编码生成回复语句向量;将所述样本语句向量以及所述回复语句向量进行相加生成目标对话向量。

在本公开的一种示例性实施例中,所述生成损失计算单元可以通过以下步骤计算生成损失:对所述目标对话向量进行变分推断以及正态分布采样处理得到目标隐变量;将所述目标隐变量作为所述生成网络对应的初始隐含状态,并通过所述生成网络对所述目标对话向量进行解码生成所述样本语句对应的所述回复语句以计算所述生成网络对应的生成损失。

在本公开的一种示例性实施例中,所述分类损失计算单元可以通过以下步骤计算分类损失:根据所述辨别器网络对应的最大似然模型确定所述辨别器网络的损失函数;将所述样本语句向量输入到所述辨别器网络,确定所述样本语句向量的语句功能类型以根据所述损失函数计算分类损失。

根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。

根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。

本公开示例性实施例可以具有以下部分或全部有益效果:

在本公开的一示例实施方式所提供的对话生成方法中,通过预先训练好的功能分类模型识别用户输入的原始对话信息并确定原始对话信息对应的语句功能类型,将原始对话信息以及语句功能类型输入预先训练好的对话生成模型生成对话回复信息。一方面,通过功能分类模型确定原始对话信息的语句功能类型,根据语句功能类型能够精确判断原始对话信息想要表达的内容或情感,增强回复的可控性;另一方面,对话生成模型结合原始对话信息以及语句功能类型生成对话回复信息,能够增加对话回复信息中包含的信息量,提高对话回复信息的多样性,增强聊天系统的趣味性以及黏性,提高用户的使用体验。

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

附图说明

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

图1示出了可以应用本公开实施例的一种对话生成方法及装置的示例性系统架构的示意图;

图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;

图3示意性示出了根据本公开的一个实施例的对话生成方法的流程图;

图4示意性示出了根据本公开的一个实施例的功能分类模型进行功能分类的示意图;

图5示意性示出了根据本公开的一个实施例的语句功能分类数据对应分类的示意图;

图6示意性示出了根据本公开的一个实施例的训练对话生成模型的流程图;

图7示意性示出了根据本公开的一个实施例的对话生成模型对应训练阶段的示意图;

图8示意性示出了根据本公开的一个实施例的对话生成装置的示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1示出了可以应用本公开实施例的一种对话生成方法及装置的示例性应用环境的系统架构的示意图。

如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。

本公开实施例所提供的对话生成方法一般由服务器105执行,相应地,对话生成装置一般设置于服务器105中。但本领域技术人员容易理解的是,本公开实施例所提供的对话生成方法也可以由终端设备101、102、103执行,相应的,对话生成装置也可以设置于终端设备101、102、103中,本示例性实施例中对此不做特殊限定。举例而言,在一种示例性实施例中,可以是用户通过终端设备101、102、103将用户输入的原始语句上传至服务器105,服务器通过本公开实施例所提供的对话生成方法生成与原始语句对应的回复语句,并将回复语句传输给终端设备101、102、103等进行显示或者语音播放。

图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。

需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图2所示,计算机系统200包括中央处理单元(cpu)201,其可以根据存储在只读存储器(rom)202中的程序或者从存储部分208加载到随机访问存储器(ram)203中的程序而执行各种适当的动作和处理。在ram203中,还存储有系统操作所需的各种程序和数据。cpu201、rom202以及ram203通过总线204彼此相连。输入/输出(i/o)接口205也连接至总线204。

以下部件连接至i/o接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至i/o接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。

特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(cpu)201执行时,执行本申请的方法和装置中限定的各种功能。在一些实施例中,计算机系统200还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图2~图7所示的各个步骤等。

以下对本公开实施例的技术方案进行详细阐述:

当前自动聊天系统的回复生成主要包括检索式回复、生成式回复以及检索式回复与生成式回复结合等方式。检索式回复方式是通过检索与匹配的方式从已有的大量候选回复语句中找出最合适的那个作为回复;生成式回复方式则是事先通过训练将对话规则添加到生成模型中,让生成模型根据历史对话直接生成相应的回复;检索式回复与生成式回复结合的方式是通过检索式回复方式获取最优回复并通过生成式回复方式进行改写,或者通过生成式回复方式先生成一种回复并根据这个回复通过检索式回复方式检索一种最优回复。

这些方式中,检索式回复方式需要投入大量的精力构建数据库,且数据库中的问答对数量有限,难以覆盖所有应用场景,生成的回复语句内容较单一;生成式回复方式生成的对话过于生硬、重复和通用,且缺乏对上文的深入理解,难以保证语法正确、上下文等的一致性,生成的对话拟人性较差;检索式回复与生成式回复结合的方式生成的回复语句虽然信息量大且具备多样性,但是生成趋向不可控,依旧无法得到用户满意的回复。控制回复的特征有许多种,例如情感特征、时态特征等。如果对话系统可以识别出用户的情绪状态,可以避免系统与用户会话的终结,大大提高对话系统的用户体验。一些方法中引入情感极性(sentimentpolarity)来控制生成的回复具有不同的情感特色。但是这种情感的信息的方法在生成的时候只会影响少量的词。例如“微笑”对应开心的情感,“保湿水”对应一个护肤的话题,对于提升生成回复用词多样性和信息量的效果帮助太少。

基于上述一个或多个问题,本示例实施方式提供了一种对话生成方法。该对话生成方法可以应用于上述服务器105,也可以应用于上述终端设备101、102、103中的一个或多个,也可以应用于任何包括服务器105和/或终端设备101、102、103的聊天系统,例如客服机器人、闲聊机器人、智能音箱等,本示例性实施例中对此不做特殊限定。本示例实施例以终端执行为例进行说明,参考图3所示,该对话生成方法可以包括以下步骤s310至步骤s340:

步骤s310、获取输入的原始对话信息。

步骤s320、根据预先训练好的功能分类模型识别所述原始对话信息以确定所述原始对话信息对应的语句功能类型。

步骤s330、将所述原始对话信息以及所述语句功能类型输入预先训练好的对话生成模型以生成所述原始对话信息对应的对话回复信息。

在本示例实施方式所提供的对话生成方法中,一方面,通过功能分类模型确定原始对话信息的语句功能类型,根据语句功能类型能够精确判断原始对话信息想要表达的内容或情感,增强回复的可控性;另一方面,对话生成模型结合原始对话信息以及语句功能类型生成对话回复信息,能够增加对话回复信息中包含的信息量,提高对话回复信息的多样性,增强聊天系统的趣味性以及黏性,提高用户的使用体验。

下面,对于本示例实施方式的上述步骤进行更加详细的说明。

在步骤s310中,获取输入的原始对话信息。

在本公开的一个示例实施例中,原始对话信息可以是指通过终端输入的对话语句或者历史聊天记录,例如原始对话信息可以是用户通过终端输入的对话语句“你好,很高兴见到你!”,也可以是终端中存储单元存储的聊天记录“‘你好,很高兴见到你!’‘我也是,你叫什么名字呢?’;‘我叫小明,你呢?’”,此处本示例实施例中仅是示意性说明,不应对本公开造成任何限定。原始对话信息也可以是指服务器以任何方式接收的对话语句或者历史聊天记录,当然,原始对话信息还可以是指系统中终端接收并发送到服务器的对话语句或者历史聊天记录,本公开对此不做任何限定。

在步骤s320中,根据预先训练好的功能分类模型识别原始对话信息以确定原始对话信息对应的语句功能类型。

在本公开的一个示例实施例中,语句功能类型可以是指语句中用于表现说话者语气以及表达语句用途的分类,例如语句功能类型可以是陈述句、疑问句、祈使句、感叹句等,本公开对此不做特殊限定。功能分类模型可以是指能够识别原始对话信息中各语句的语句功能类型并进行分类的机器学习模型,例如功能分类模型可以是神经网络模型、决策树模型、支持向量机模型、随机森林模型等,本公开对此不做特殊限定。优选的,本示例实施例中的功能分类模型可以是深度神经网络模型。

具体的,本示例实施例中的功能分类模型可以至少包括语句编码器,全连接层以及归一化函数层,当然,本示例实施例不以此为限。其中语句编码器可以是基于gru(gatedrecurrentunit,门控循环单元)网络的编码器,gru网络是lstm(longshort-termmemor,长短期记忆网络,是一种时间循环神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件)一种变体。

终端根据语句编码器对原始对话信息进行编码,生成原始对话信息对应的语句向量;然后获取一随机分布式向量,并根据随机分布式向量以及语句向量确定原始对话信息对应的特征向量;基于全连接层以及归一化函数层,通过特征向量确定原始对话信息对应的语句功能类型。语句向量可以是指语句编码器将原始对话信息进行编码后生成的特征信息;随机分布式向量可以是指通过一随机噪声(变量)进行编码生成的向量,本示例实施例中可以通过该随机分布式向量表示原始对话信息的语句功能。特征向量可以是指通过将随机分布式向量以及语句向量进行叠加生成的、包含原始对话信息对应的内容以及语句功能的高层次特征。全连接层可以是指一般卷积神经网络模型中用于连接上一层所有点的结构层,用于将前面结构层提取的特征进行综合。归一化函数层(softmax层)可以是指一般卷积神经网络模型中用于将全连接层得到特征进行回归分类的结构层,通过归一化函数层计算得到的概率确定原始对话信息对应的语句功能类型。

图4示意性示出了根据本公开的一个实施例的通过功能分类模型进行功能分类的示意图。

参考图4所示,步骤410,终端或者服务器获取输入的原始对话信息,该原始对话信息可以是单个语句,也可以是多个语句组成的历史聊天记录;终端或者服务器将原始对话信息发送到功能分类模型中的语句编码器;

步骤420,语句编码器接收原始对话信息,并对原始对话信息进行编码生成原始对话信息对应的语句向量;

步骤430,终端或者服务器获取一随机分布式向量,以通过该随机分布式向量表示原始对话信息对应的语句功能类型;

步骤440,功能分类模型将步骤420得到的语句向量以及步骤430得到的随机分布式向量进行叠加生成包含原始对话信息的特征向量;

步骤450,功能分类模型通过全连接层对特征向量进行调整;

步骤460,功能分类模型通过归一化函数层计算特征向量中语句功能类型概率;

步骤470,功能分类模型通过语句功能类型概率确定原始对话信息对应的语句功能类型。

在本公开的另一个示例实施例中,终端根据预先构建的语句功能分类数据对预设样本数据库中的样本语句进行标记;通过标记后的样本语句对功能分类模型进行训练以完成对功能分类模型的训练过程。语句功能分类数据可以是指开发人员根据语句的用途以及所表达不同的情感等信息对语句进行分类的详细规则。预设样本数据库可以是指预先搭建的、存储训练模型所需要的样本数据的数据库,当然终端也可以通过服务器获取对应的样本数据,本示例实施例不以此为限。

图5示意性示出了根据本公开的一个实施例的语句功能分类数据对应分类的示意图。

参考图5所示,首先将语句功能分为六个类型,可以包括陈述句、疑问句、祈使句、感叹句、口语以及表情。其中陈述句可以是用来说明一个事实、或者陈述意见,包含否定和肯定,语句特征是语调平直、且以句号结束,句末可带语气词,例如“他知道了。”“他知道了吧。”“他还不知道呢”等,本示例实施不以此为限;疑问句可以是用来提出问题或表示疑惑,语句特征是语调上升、且以问号结束,例如“他知道了吗?”,本示例实施不以此为限;祈使句可以是对对方提出的要求,语句特征是带有动词,主语限制在第二人称代词、第一人称复数、称谓词等,例如“咱们走吧!”“你快走!”等,本示例实施不以此为限;感叹句可以是抒发某种强烈感情,表达喜悦、愤怒、惊讶、悲伤等,语句特征是带有感情色彩的形容词、且多以感叹号结束,例如“今天天气真好呀!”“这电影好伤感啊!”等,本示例实施不以此为限;口语(oral-tone,ot)可以是“哈哈”“呵呵”“嘻嘻”等不表示强烈情感的口语词汇,本示例实施不以此为限;表情(emoji,em)可以是表情符号等,本示例实施不以此为限。

进一步的,语句功能类型还可以根据六个大类型分为多个更详细的小类型。举例而言,陈述句(statement,st)还可以分为肯定、否定、含疑问词、异形同义、双重否定、其他等。

其中肯定性陈述句(positivestatement,ps)可以是无标志的,可带语气词表示强调,也可不带,语气词用“的、了、嘛、啊、呢、罢了”等,例如“王先生明天去北京了。”“是王先生明天去北京了。(强调语气)”“他说话简直像唱小夜曲那样悦耳动听。(强调语气)”“他居然考试了名牌大学。(强调语气)”等,本示例实施不以此为限;否定陈述句(negativestatement,ns)可以用否定词“不”、“没(没有)”等表示,例如“他不吃。”“他没有吃。”“他听不懂汉语。”“他没听懂汉语。”等,本示例实施不以此为限;包含疑问代词或疑问结构的陈述句可以是并不表示疑问(statementwithinterrogativewords,si)的陈述句,例如“谁也不知道这是怎么回事。”“什么苦他都能吃。”“今天咱哪儿都不去。”“我知道他为什么不来。”等,本示例实施不以此为限;异形同义(heteronyms,he)陈述句可以是指在一些习惯用法中,语句的肯定形式跟否定形式所表示的意义是相同的,例如“好开心——好不开心(都是开心)”“差点儿摔倒——差点儿没摔倒(都是“没摔倒”)”等,本示例实施不以此为限;双重否定句(doublenegation,dn)可以是指以双重否定格式用来表示肯定,有的双重否定句是加强肯定,口气更加坚决;有的双重否定句是减弱肯定,缓和口气,像“不是不”“不无”“不能不”“不敢不”“不可不”等,例如“你不可不来或者你不能不说话。(加强语气)”“我不是不喜欢或者他也不无可取之处。(缓和语气)”等,本示例实施不以此为限;其它(others,oo)可以是指除以上功能分类之外的,包含不组成句子单个词语、词组等,例如“西红柿鸡蛋”“人来人往”等,本示例实施不以此为限。

疑问句(question,qe)还可以分为是非、特指、选择、正反、设问、反问、回声、附加、开放等。

其中是非问句(yes-noquestion,yn)可以是指结构类似陈述句,主要在语调上的差异,且一般情况下,去掉句尾疑问词后仍是完整的陈述句,其回答一般为“是,对”“不、不是、没”等,例如“a:他知道了吗?b:是的,知道了。”“a:你想回家吗?b:不,不想。”等,本示例实施不以此为限;特指问句(wh-question)可以是指存在疑问代词,“谁”、“什么”、“怎样”等,回答内容具体且复杂,例如“a:谁告诉他的?b:小明。”“a:你什么时候去?b:下午去。”“a:小明呢?b:他在吃饭。”等,本示例实施不以此为限;选择问句(alternativequestion,aq)可以是指有两个以上并列结构的选择,例如“你喜欢苹果、梨子还是香蕉呢?”,本示例实施不以此为限;正反问句(a-not-aquestion,aa)可以是指提出两个方面,希望对方选择其一,结构可以是“是不是、可不可以、愿不愿意……”或简单为“愿意不?可以不?……”,例如“你愿不愿意去上街?”“你愿意去上街不?”等,本示例实施不以此为限;设问句(questionwithsuggestedanswers,qs)可以是指自问自答,常用特指疑问结构,例如“你知道我多大吗?都25了!”,本示例实施不以此为限;反问句(rhetoricalquestion,rq)可以是指用肯定形式表否定之意,或者反之,常用是非或特指疑问结构,例如“这道题不是应该这样才对吗?”,本示例实施不以此为限;回声问(backchannel,ba)可以是指重复对方的问话,要求证实或则为了赢得时间以便考虑如何回答,例如“a:你姓什么?b:我姓什么?”“a:咱们今天下午去吧b:今天下午去?”等,本示例实施不以此为限;附加问句(tagquestion,ta)可以是指附在别的句子(一般为陈述句)之后,接上原句用“x不x”或“x”、“不x”提问,目的在于征求对方已经或则希望对方予以证实,例如“你就答应我吧(肯定陈述句),好不好?(附加问)”“我这样做(肯定陈述句),可以?(附加问)”“我早就说过你行的(肯定陈述句),不是吗?(附加问)”等,本示例实施不以此为限;开放性问句(openquestions)可以是指引出某个话题或者讨论,不能轻易用简单的“是”、“不是”或者某个的词或数字来回答的问题,例如“聊聊你的梦想吧!”,本示例实施不以此为限。

祈使句(imperative,im)还可以分为(肯定形式)命令、请求、(否定形式)禁止、劝阻等。

其中命令句(command,cm)可以是指语气强烈,语句短,不用语气词,例如“快点完成!(命令)”,本示例实施不以此为限;请求句(request,re)可以是指语气委婉,较命令更为舒缓,使用“请”或者语气词,例如“请爱护环境!(请求)”,本示例实施不以此为限;禁止句(forbidden,fb)可以是指语气强烈,不用语气词,使用“禁止、不”等,例如“不准乱扔垃圾!(禁止)”,本示例实施不以此为限;劝阻句(dissuade,ds)可以是指语气委婉,经常使用“别、不要”以及语气词,例如“不要爬栏杆呀!(劝阻)”,本示例实施不以此为限。

感叹句(exclamatory,ex)可以是指带有浓厚的感情的语句,可以表示快乐、惊讶、悲哀、厌恶、恐惧等浓厚的感情,还可以分为由叹词、副词和语气词构成的感叹句,例如“哎呦!救命呀!(哎呦,表示痛楚)”“天哪!这一定是没了命了!(天哪,表示惊讶)”“那该有多好啊!(“多、多么、好、真”)”“赐我一个萌男友吧!”“滚开!”等,本示例实施不以此为限;还可以分为口号或祝词式的感叹句,例如“各族人民大团结万岁!”“高二党给你加油啦!”“恭喜哟!”等,本示例实施不以此为限;以及还可以分为以感叹号为结尾,无明显叹词但情感强烈的感叹句,例如“我又想唱歌了——我也想唱歌!(感叹号结尾,回复时情感强烈)”“我也准备去——要去的!(感叹号结尾,回复时情感强烈)”“一起减肥——我今天减了!(感叹号结尾,回复时情感强烈)”等,本示例实施不以此为限。

需要说明的是,本示例实施例中对语句功能的分类仅是示意性举例说明,语句功能的分类还可以是其他类型的分类,本公开在此不一一举例,且不以此为限。

在步骤s330中,将原始对话信息以及语句功能类型输入预先训练好的对话生成模型以生成原始对话信息对应的对话回复信息。

在本公开的一个示例实施例中,对话生成模型可以是指能够根据输入的原始对话信息以及原始对话信息的语句功能类型自动生成回复的深度学习模型,例如对话生成模型可以是基于cvae(conditionalvariationalautoencoder,条件变分自编码器)框架的模型,当然,本示例实施例对此不做特殊限定。通过cvae框架结构能够使对话生成模型通过控制某个变量实现生成某一类数据,提高对话生成模型对生成数据的控制性。对话回复信息可以是指对话生成模型根据输入的原始对话信息以及原始对话信息的语句功能类型生成的回复语句,例如对话回复信息可以是答复原始对话信息“我感觉非常开始!”的语句“是什么令你如此开心呢?”。

具体的,对话生成模型可以包括语句编码网络(prior网络)以及生成网络,终端通过语句编码网络对原始对话信息以及语句功能类型进行编码,生成一对应原始对话信息且包含语句功能类型的隐变量;根据生成网络对隐变量进行解码,生成原始对话信息对应的对话回复信息。语句编码网络可以是指对输入的原始对话信息以及原始对话信息的语句功能类型进行编码的编码器(encoder),例如语句编码网络可以是基于gru(gatedrecurrentunit,门控循环单元)的编码器,当然,本示例实施例对此不走特限定。生成网络可以是指用于根据隐变量生成恢复语句的解码器,例如生成网络可以是基于gru的解码器,本示例实施示例对此不做特殊限定。隐变量可以是指通过隐形变量法(latentvariableapproach)估算某个概率的未观测变量(隐变量不能直接被观察到,但是会对系统的状态和能观察到的输出产生影响)。隐性变量法的基本思路是将全要素生产率视为一个隐性变量即未观测变量,从而借助状态空间模型(statespacemodel)利用最大似然估计给出全要素生产率估算。

进一步的,终端通过语句编码网络对原始对话信息以及语句功能类型进行编码,生成一对应原始对话信息且包含语句功能类型的原始对话向量;对原始对话向量进行变分推断以及正态分布采样处理得到隐变量。原始对话向量可以是指将原始对话信息以及原始对话信息对应的语句功能类型转化成隐变量的中间变量。变分推断(variationalinference)可以是指利用已知分布通过调整得到符合模型需要的、却难以用公式表达的分布的方法。终端对原始对话向量进行变分推断得到一个正态分布,通过正态分布采样法对该正态分布进行采样,得到对应原始对话信息且包含语句功能类型的隐变量。

在本公开的另一个示例实施例中,在使用对话生成模型根据原始对话信息以及原始对话信息对应的语句功能类型生成对话回复信息之前,需要预先对对话生成模型进行训练。

图6示意性示出了根据本公开的一个实施例的训练对话生成模型的流程图。

参考图6所示,在步骤s610中,获取样本数据库中的样本对话,并根据对话生成模型对样本对话进行编码生成目标对话向量。

在本示例实施例中,预设样本数据库可以是指预先搭建的、存储训练模型所需要的样本数据的数据库,当然终端也可以通过服务器获取对应的样本数据,本示例实施例不以此为限。样本对话可以是指用于训练对话生成模型的训练数据,样本对话可以包括样本语句以及样本语句关联的回复语句,本示例实施例不以此为限。目标对话向量可以是指对话生成模型中对样本语句进行编码后生成的中间变量。

具体的,对话生成模型还可以包括训练编码网络(recognition网络),训练编码网络可以是指用于编码一关联语句对(可以包含语句以及该语句对应的回复语句)的编码网络,训练编码网络可以由两个基于gru网络的编码器构成,当然,本示例实施例对此不做特殊限定。终端根据样本语句编码器对样本语句进行编码生成样本语句向量;根据回复语句编码器对回复语句进行编码生成回复语句向量;将样本语句向量以及回复语句向量进行相加生成目标对话向量。样本语句编码器可以是指训练编码网络中两个基于gru网络的编码器之一,用于对样本语句进行编码得到样本语句向量;回复语句编码器可以是指训练编码网络中两个基于gru网络的编码器之一,用于对样本语句对应的回复语句进行编码得到回复语句向量。将样本语句向量以及回复语句向量进行叠加得到目标对话向量。

在步骤s620中,通过生成网络对目标对话向量进行解码生成样本语句对应的回复语句以计算生成网络对应的生成损失。

进一步的,终端对目标对话向量进行变分推断以及正态分布采样处理得到目标隐变量;将目标隐变量作为生成网络对应的初始隐含状态,并通过生成网络对目标对话向量进行解码生成样本语句对应的回复语句以计算生成网络对应的生成损失。生成损失可以是指生成网络对应的损失(loss)值。终端对原始对话向量进行变分推断得到一个正态分布,通过正态分布采样法对该正态分布进行采样,得到对应目标对话向量的目标隐变量。

在步骤s630中,通过辨别器网络对目标对话向量进行识别处理确定目标对话向量对应的语句功能类型以计算辨别器网络对应的分类损失。

在本示例实施例中,对话生成模型还可以包括辨别器网络,辨别器网络可以是指用于对输入的语句进行语句功能分类的分类器,通过该辨别器网络可以对隐变量进行监督。分类损失可以是指辨别器网络对应的损失(loss)值。

进一步的,终端根据辨别器网络对应的最大似然估计模型确定辨别器网络的损失函数;将样本语句向量输入到辨别器网络,确定样本语句向量的语句功能类型以根据损失函数计算分类损失。最大似然估计(maximumlikelihoodestimation,mle)可以是指一种重要而普遍的求估计量的方法,最大似然法明确地使用概率模型,其目标是寻找能够以较高概率产生观察数据的系统发生树。最大似然估计模型可以是指通过最大似然估计确定的概率模型。通过最大似然估计模型确定辨别器网络的损失函数,并通过该损失函数确定辨别器网络的分类损失。

在步骤s640中,对分类损失以及生成损失进行相加生成对话生成模型的总损失以根据总损失对对话生成模型进行训练。

在本示例实施例中,终端将步骤s620以及步骤s630中得到的分类损失以及生成损失进行叠加得到对话生成模型对应的总损失值,通过该总损失值对对话生成模型进行训练,能够使目标隐变量可以既包含语句信息,同时也包含语句功能的信息。

图7示意性示出了根据本公开的一个实施例的对话生成模型对应训练阶段的示意图。

参考图7所示,对话生成模型可以包括语句编码网络(prior网络)701、训练编码网络(recognition网络)702、辨别器网络703以及生成网络704。其中训练编码网络702包括两个基于gru网络的样本语句编码器以及回复语句编码器。

具体的,步骤s710,终端获取样本数据库中的样本语句“ifeelsogreattoday!”,并将样本语句发送到训练编码网络702中的样本语句编码器;

步骤s720,样本语句编码器将样本语句进行编码生成包含样本语句特征的样本语句向量;

步骤s730,对话生成模型根据样本语句编码器的隐含状态计算样本语句编码器对应的attention(相似度或者影响度或者匹配得分);

步骤s740,终端获取样本数据库中与样本语句对应的回复语句“whatmakesyouhappy?”,并将回复语句发送到训练编码网络702中的回复语句编码器;

步骤s750,回复语句编码器将回复语句进行编码生成包含回复语句特征的回复语句向量;

步骤s760,将步骤s720中得到的样本语句向量以及步骤s750中得到的回复语句向量进行叠加生成目标对话向量;

步骤s770,对话生成模型对步骤s760得到目标对话向量进行变分推断以及正态分布采样处理得到目标隐变量;

步骤s780,辨别器网络703中的语句功能分类器对步骤s770中得到的目标隐变量进行识别确定语句功能类型,辨别器网络703根据语句功能类型对目标隐变量进行监督,并计算分类损失;

步骤s790,对话生成模型将得到的目标隐变量以及步骤730中得到的attention发送到生成网络704并将目标隐变量作为生成网络的初始隐含状态,以使生成网络704根据目标隐变量以及attention生成目标回复信息“whatmakesyouhappy?”并计算生成损失。

最后对话生成模型根据步骤s780中的分类损失以及步骤s790中的生成损失计算对话生成模型对应的总损失以根据总损失对对话生成模型进行训练。

需要说明的是,生成网络704在训练阶段会根据训练编码网络702得到的目标隐变量作为gru的初始隐含状态,然后进行解码生成目标回复语句。而生成网络704在测试阶段会根据语句编码网络701得到的隐变量来生成目标回复。

应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

进一步的,本示例实施方式中,还提供了一种对话生成装置。该对话生成装置可以应用于一服务器或终端,图8示意性示出了根据本公开的一个实施例的对话生成装置的示意图。参考图8所示,该对话生成装置800可以包括对话信息获取模块810、功能分类识别模块820以及对话回复生成模块830。其中:

对话信息获取模块810用于获取输入的原始对话信息;

功能分类识别模块820用于根据预先训练好的功能分类模型识别所述原始对话信息以确定所述原始对话信息对应的语句功能类型;

对话回复生成模块830用于将所述原始对话信息以及所述语句功能类型输入预先训练好的对话生成模型以生成所述原始对话信息对应的对话回复信息。

在本公开的一种示例性实施例中,所述功能分类识别单元820包括:

对话信息编码单元,用于根据所述语句编码器对所述原始对话信息进行编码,生成所述原始对话信息对应的语句向量;

特征向量确定单元,用于获取一随机分布式向量,并根据所述随机分布式向量以及所述语句向量确定所述原始对话信息对应的特征向量;

语句功能类型确定单元,用于基于所述全连接层以及所述归一化函数层,通过所述特征向量确定所述原始对话信息对应的语句功能类型。

在本公开的一种示例性实施例中,所述对话生成装置800通过下述步骤对功能分类模型进行训练:根据预先构建的语句功能分类数据对预设样本数据库中的样本语句进行标记;通过标记后的所述样本语句对所述功能分类模型进行训练以完成对所述功能分类模型的训练过程。

在本公开的一种示例性实施例中,所述对话回复生成模块830包括:

隐变量生成单元,用于通过所述语句编码网络对所述原始对话信息以及所述语句功能类型进行编码,生成一对应所述原始对话信息且包含所述语句功能类型的隐变量;

对话回复信息生成单元,用于根据所述生成网络对所述隐变量进行解码,生成所述原始对话信息对应的对话回复信息。

在本公开的一种示例性实施例中,所述隐变量生成单元可以通过下述步骤生成隐变量:通过所述语句编码网络对所述原始对话信息以及所述语句功能类型进行编码,生成一对应所述原始对话信息且包含所述语句功能类型的原始对话向量;对所述原始对话向量进行变分推断以及正态分布采样处理得到所述隐变量。

在本公开的一种示例性实施例中,所述对话生成装置800还包括:

目标对话向量生成单元,用于获取样本数据库中的样本对话,根据所述对话生成模型对所述样本对话进行编码生成目标对话向量;所述样本对话包括样本语句以及所述样本语句关联的回复语句;

生成损失计算单元,用于通过所述生成网络对所述目标对话向量进行解码生成所述样本语句对应的所述回复语句以计算所述生成网络对应的生成损失;

分类损失计算单元,用于通过所述辨别器网络对所述目标对话向量进行识别处理确定所述目标对话向量对应的语句功能类型以计算所述辨别器网络对应的分类损失;

对话生成模型训练单元,用于对所述分类损失以及所述生成损失进行相加生成所述对话生成模型的总损失以根据所述总损失对所述对话生成模型进行训练。

在本公开的一种示例性实施例中,所述目标对话向量生成单元可以通过以下步骤生成目标对话向量:根据所述样本语句编码器对所述样本语句进行编码生成样本语句向量;根据所述回复语句编码器对所述回复语句进行编码生成回复语句向量;将所述样本语句向量以及所述回复语句向量进行相加生成目标对话向量。

在本公开的一种示例性实施例中,所述生成损失计算单元可以通过以下步骤计算生成损失:对所述目标对话向量进行变分推断以及正态分布采样处理得到目标隐变量;将所述目标隐变量作为所述生成网络对应的初始隐含状态,并通过所述生成网络对所述目标对话向量进行解码生成所述样本语句对应的所述回复语句以计算所述生成网络对应的生成损失。

在本公开的一种示例性实施例中,所述分类损失计算单元可以通过以下步骤计算分类损失:根据所述辨别器网络对应的最大似然模型确定所述辨别器网络的损失函数;将所述样本语句向量输入到所述辨别器网络,确定所述样本语句向量的语句功能类型以根据所述损失函数计算分类损失。

上述对话生成装置中各模块或单元的具体细节已经在对应的对话生成方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

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