对话状态跟踪方法、系统、电子设备及存储介质
技术领域
本发明涉及人工智能技术领域,尤其涉及一种对话状态跟踪方法、系统、电子设备及存储介质。
背景技术
现有的对话状态跟踪技术都是基于规则的,用于在对话系统中跟踪对话状态,判别对话目的和主题,给出当前的对话状态跟踪结果。需要后台人员手写大量规则,随着领域的增多和数据量的迅速膨胀,规则越来越复杂,到一定程度,少量的变动都会引起大范围代码的更改,不利于维护,更不利于企业的发展和业务的扩宽。
同时,模型在产品和产品之间,领域和领域之间的迁移几乎不可能实现,领域的扩宽完全依靠人力,另外,基于规则的系统一旦写好,它针对特定回复的回答就是指定的,没办法更改,这使得对话的回复非常生硬。
对于基于统计的对话状态跟踪而言,在层之间传递时保留下来的信息较少,无法很好的实现功能;此外还存在前处理和后处理操作过于复杂,需要程序员花大量时间进行前处理操作编写的问题。通常,工业界目前采用的方法均是基于规则的系统或者直接调用如tensorflow,pytorch等框架中已经约定好的神经网络结构写框架。
发明内容
本发明实施例提供一种对话状态跟踪方法及系统,用于至少解决上述技术问题之一。
第一方面,本发明实施例提供一种对话状态跟踪方法,包括:
根据当前用户对话语料确定当前对话状态分布;
根据所述当前对话状态分布和历史对话状态分布确定当前对话状态,其中,所述历史对话状态分布基于历史用户对话语料确定。
第二方面,本发明实施例提供一种对话状态跟踪系统,包括:
状态分布确定程序模块,用于根据当前用户对话语料确定当前对话状态分布;
当前状态确定程序模块,用于根据所述当前对话状态分布和历史对话状态分布确定当前对话状态,其中,所述历史对话状态分布基于历史用户对话语料确定。
第三方面,本发明实施例提供一种存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项对话状态跟踪方法。
第四方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明上述任一项对话状态跟踪方法。
第五方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项对话状态跟踪方法。
本发明实施例的对话状态跟踪方法不仅考虑了对话过程中的当前用户对话语料,还综合考虑了历史用户对话语料,从而能够更加准确的确认用户的对话意图,提升用户体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的对话状态跟踪方法的一实施例的流程图;
图2为本发明对话状态跟踪方法中的步骤S10的一实施例的流程图;
图3为本发明对话状态跟踪方法中的对用户语料进行去值化的一实施例的流程图;
图4为本发明对话状态跟踪方法的另一实施例的流程图;
图5为本发明对话状态跟踪系统的一实施例的原理框图;
图6为本发明对话状态跟踪系统中的槽值确定程序模块的一实施例的原理框图;
图7为本发明对话状态跟踪系统的另一实施例的原理框图;
图8为本发明的电子设备的一实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本发明中,“模块”、“装置”、“系统”等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。详细地说,例如,元件可以、但不限于是运行于处理器的过程、处理器、对象、可执行元件、执行线程、程序和/或计算机。还有,运行于服务器上的应用程序或脚本程序、服务器都可以是元件。一个或多个元件可在执行的过程和/或线程中,并且元件可以在一台计算机上本地化和/或分布在两台或多台计算机之间,并可以由各种计算机可读介质运行。元件还可以根据具有一个或多个数据包的信号,例如,来自一个与本地系统、分布式系统中另一元件交互的,和/或在因特网的网络通过信号与其它系统交互的数据的信号通过本地和/或远程过程来进行通信。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
如图1所示,本发明的实施例提供一种对话状态跟踪方法,包括:
S10、根据当前用户对话语料确定当前对话状态分布;例如,在餐馆领域,假设跟踪的slot(槽值)有三个,比如,food(食物名称),kind(食物种类),location(餐厅地点等)。对于用户语料“我想吃西餐”,其中“西餐”就对应于槽值kind,相应的本步骤所要确定的就是相应于“西餐”这个槽值状态分布。
S20、根据所述当前对话状态分布和历史对话状态分布确定当前对话状态,其中,所述历史对话状态分布基于历史用户对话语料确定。
在多轮对话过程中,用户与机器人(或者语音助手)之间进行了多轮对话,用户当前所说的语句即为当前用户语料,相对的,之前用户所说的语句就是历史用户语料。
本发明实施例的对话状态跟踪方法不仅考虑了对话过程中的当前用户语料中所包含的槽值信息,还综合考虑了历史用户语料中所包含的槽值信息,从而能够更加准确的确认用户的对话意图,提升用户体验。
如图2所示,本发明的一些实施例中,所述确定当前用户语料所包含的当前槽值信息包括:
S11、对所述当前用户语料进行分词处理;例如,“我想要一家价格中等的西餐厅”就会被分词为“我”,“想要”,“一家”,“价格”,“中等”,“的”,“西餐厅”。
S12、将所述分词处理得到的词汇转化为对应的词嵌入向量;具体地,将分词处理之后得到的词汇输入到embedding层,以将词汇转化为相应的词嵌入向量。
S13、将所述词嵌入向量输入至第一层LSTM;该第一层LSTM为双向LSTM,并且输出其隐层信息至softmax层。
S14、将所述第一层双向LSTM的输出输入至softmax层以得到所述当前对话状态分布;其中,将双向LSTM输出的隐层信息和softmax输出的概率分布进行拼接。
对于历史对话状态分布基于历史用户对话语料确定,示例性的,当所涉及的多轮对话只涉及到了两轮时,此时上述实施例中历史用户对话语料就是用户在本次对话中所说的第一句语料,当前用户语料就是用户在本次对话中所说的第二句语料,相应的历史对话状态分布就是基于用户的第一句语料并按照上述实施例中的步骤S11至步骤S14所得到的。
在一些实施例中,根据所述当前对话状态分布和历史对话状态分布确定当前对话状态包括:将所述当前对话状态分布和历史对话状态分布输入至第二层LSTM以确定所述当前对话状态。
本实施例中,通过对用户语料进行分词处理的方式能够将用户语料中所存在的所有的词汇转化为对应的词嵌入向量,进一步的经LSTM将其中所包含的槽值信息确定为当前槽值信息,保证所获取的当前槽值信息的完整性,从而能够更加准确的用于跟踪对话状态并确定用户意图。
本实施例中,将每一层输出的历史接softmax处理为每一层的输出,再将处理过的输出和上一层的历史信息进行拼接,输入下一轮,这样就能保存更多的信息,使得模型的准确率更高,并且与上述提到的基于统计的对话系统来比,它操作很简单,同样也能达成领域迁移和迭代优化的效果;另外,与基于规则的对话系统相比,它更灵活,更适合业务的扩展和产品间、领域间的迁移。
如图3所示,本发明对话状态跟踪方法中的对用户语料进行去值化的一实施例的流程图,在对所述当前用户语料进行分词处理之前还包括:
S01、确定所述当前用户语料中所包含的待跟踪槽值;
S02、将所述待跟踪槽值替换为对应于所述待跟踪槽值的预定字符串。
本发明实施例中,通过步骤S01-S02对数据进行delexicalised(去值化),直接通过Lectrack架构并只进行对话历史的简单叠加,优点是进行delexicalised后,状态跟踪更加准确。
原因在于通过对用户语料进行去值化处理能够避免将原本属于同一种句式的两个句子识别成不同的句式而导致对话状态跟踪的错误或者准确率降低。例如,在餐馆领域,假设跟踪的slot(槽值)有三个,比如food(食物名称),kind(食物种类),location(餐厅地点等)。每个slot在内部对应有一系列的值(即,多个值)。比如,用户说了“我想吃西餐”或者“我想吃中餐”,其中,“西餐”和“中餐”所对应的slot是kind(食物种类),并且“西餐”和“中餐”分别对应有不同的值(即,kind这个slot在内部对应有多个值)。如果没有进行去值化的话,由于“西餐”和“中餐”分别对应不同的值,则可能会将对应的这两句话识别成不同的句式。而本发明由于预先对用户语料进行了去值化,即将“我想吃西餐”和/或“我想吃中餐”进行去值化为“我想吃SLOT_KIND”,从而就保证了所识别出来的这两句话为同一句式。
在一些实施例中,本发明的对话状态跟踪方法的一具体流程如下:
1)将句子(用户语料U1、U2……Un)delexicalised,这里采用简单的字符串替换方法。比如在餐馆领域,假设跟踪的slot(槽值)有六个,比如food(食物名称),kind(食物种类),location(餐厅地点等)。每个slot值在内部对应有一系列的值,比如用户说了“我想吃西餐”或者“我想吃中餐”,最终西餐和中餐都会被解析为SLOT_KIND,最后这两句话会被表示为同一句“我想吃SLOT_KIND”。
整个对话过程举例如下:
(1):你好,这是思必驰对话助手,请问有什么可以帮助你的吗?
(2):我想要一家价格中等的西餐厅。
(3):好的,你是在找餐厅对么?
(4):是的。
(5):我为您推荐:「以下为推荐列表,按离用户的距离进行排序,比如(水天堂是一家不错的西餐厅)」。
(6):电话和地址是什么?
(7):电话为:****,地址如下:****,需要导航过去么?
(8):好–》跳转到导航页面。
如上面的例子所示,U1、U2……Un表示的就是任意时刻的语料输入。
2)将经过delexicalised的句子输入的embedding层(嵌入层),进行值的embedding。如图4所示,将句子U1、U2……Un输入至嵌入层。
在将句子输入至embedding层之前对句子(例如,U1)进行分词,比如,“我想要一家价格中等的西餐厅”就会被分词为“我”,“想要”,“一家”,“价格”,“中等”,“的”,“西餐厅”,其他以此类推,w11,w12,w1n就是指对U1拆分得到的词。embedding层即把分词转化为embedding向量。
3)将embedding后的值输入双向LSTM层,每一次输出均接一个softmax,再将softmax后的输出和上一层的对话历史输入下一层的LSTM。由于对话需要跟踪长期依赖,而LSTM固有的特征保证了其可以跟踪对话的长期依赖信息,利用双向LSTM可以进一步跟踪对话的前后文信息,依旧拿餐厅领域举例,比如用户在t1时刻说想吃西餐,tn时刻改口说想要吃中餐,那么利用双向LSTM可以跟踪到这一信息的改变,直接将跟踪到的kind=“西餐”更改为kind=“中餐”,无需对其它内容进行修改,起到了简化动态跟踪的效果。
4)在LSTM中提取多轮之中关键信息,输出最终的概率分布。
关键信息就是指对话信息中应该跟踪到的slot值,在LSTM的训练过程中进行学习,输出的状态分布就是在整个slot槽值个数上的分布。
在整个框架中,第一层双向LSTM就是为了将整个句子中重要的信息提取出来,接入softmax获得用户想要表达的关键信息,第二层LSTM就是对已经获得的关键信息进行总结和归纳,从而获得最终的信息。
此外,这种基于层softmax的状态跟踪方法及系统有以下四方面更深层次的效果:
1.对于后台人员来说,它使得后台人员从复杂的规则编写中解放出来,还使得维护变得简单,另外,该方法也非常容易编码实现。
2.对于客户来说,它可以给予用户更好的回复和响应,可以让对话真正的智能起来。
3.对于公司来说,不断扩展的领域和业务也需要一种更加简单的方式进行扩展。它使得过份依赖人力的做法慢慢变成过去。
4.对于产品来说,系统中的一些微小的错误不会再造成后续流程的错误的不断放大,可以增强系统的鲁棒性。此外产品本身可以不断迭代,使得产品的性能随着数据量的增量递增不断变好。
在机器学习的各种框架中,由于对应不同的领域可能有不同的情况,所以框架给定的神经网络通常都是仅仅将历史直接输出到下一层,正是由于这个原因,一般大家都使用框架给定的神经网络,而忽略了其实对话特定的领域而言,可以对神经网络的迭代做更改。
在实现本发明提出的框架之前,采用的是基于slot-filling的规则架构,缺点是难以扩展,不能适应领域的变更,需要大量的手工规则,回答过于生硬。
发明人历经以上探索并付出创造性的劳动之后才提出了本发明的状态跟踪方法及系统,本发明可以根据增加的数据对产品做数次迭代,使得回答的结果更加人性化,更加灵活多变。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作合并,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
如图5所示,本发明的实施例还提供一种对话状态跟踪系统500,包括:
状态分布确定程序模块510,用于根据当前用户对话语料确定当前对话状态分布;
当前状态确定程序模块520,用于根据所述当前对话状态分布和历史对话状态分布确定当前对话状态,其中,所述历史对话状态分布基于历史用户对话语料确定。
本发明实施例的对话状态跟踪系统不仅考虑了对话过程中的当前用户语料中所包含的槽值信息,还综合考虑了历史用户语料中所包含的槽值信息,从而能够更加准确的确认用户的对话意图,提升用户体验。
如图6所示,在本发明的一些实施例中,状态分布确定程序模块510包括:
分词处理程序单元511,用于对所述当前用户对话语料进行分词处理;
向量转换程序单元512,用于将所述分词处理得到的词汇转化为对应的词嵌入向量;
向量输入程序单元513,用于将所述词嵌入向量输入至第一层LSTM;
状态分布确定程序单元514,用于将所述第一层双向LSTM的输出输入至softmax层以得到所述当前对话状态分布。
其中,所述根据所述当前对话状态分布和历史对话状态分布确定当前对话状态包括:将所述当前对话状态分布和历史对话状态分布输入至第二层LSTM以确定所述当前对话状态。
本实施例中,通过对用户语料进行分词处理的方式能够将用户语料中所存在的所有的词汇转化为对应的词嵌入向量,进一步的经LSTM将其中所包含的槽值信息确定为当前槽值信息,保证所获取的当前槽值信息的完整性,从而能够更加准确的用于跟踪对话状态并确定用户意图。
本实施例中提出一种基于层softmax的状态跟踪系统,将每一层输出的历史接softmax处理为每一层的输出,再将处理过的输出和上一层的历史信息进行拼接,输入下一轮,这样就能保存更多的信息,使得模型的准确率更高,并且与上述提到的基于统计的对话系统来比,它操作很简单,同样也能达成领域迁移和迭代优化的效果;另外,与基于规则的对话系统相比,它更灵活,更适合业务的扩展和产品与产品间、领域与领域间的迁移。
如图7所示,在本发明的一些实施例中,对话状态跟踪系统500还包括:
待跟踪槽确定程序模块501,用于在对所述当前用户对话语料进行分词处理之前,确定所述当前用户语料中所包含的待跟踪槽值;
替换程序模块502,用于将所述待跟踪槽值替换为对应于所述待跟踪槽值的预定字符串。
本发明实施例中,通过对数据进行delexicalised(去值化),直接通过Lectrack架构并只进行对话历史的简单叠加,优点是进行delexicalised后,状态跟踪更加准确。原因在于可能是同一种句式,只是由于值的不同,导致系统识别为不同的句式,而实际上是一样的。
在一些实施例中,本发明实施例提供一种非易失性计算机可读存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项对话状态跟踪方法。
在一些实施例中,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项对话状态跟踪方法。
在一些实施例中,本发明实施例还提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行对话状态跟踪方法。
在一些实施例中,本发明实施例还提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时对话状态跟踪方法。
上述本发明实施例的对话状态跟踪系统可用于执行本发明实施例的对话状态跟踪方法,并相应的达到上述本发明实施例的实现对话状态跟踪方法所达到的技术效果,这里不再赘述。本发明实施例中可以通过硬件处理器(hardware processor)来实现相关功能模块。
图8是本申请另一实施例提供的执行对话状态跟踪方法的电子设备的硬件结构示意图,如图8所示,该设备包括:
一个或多个处理器810以及存储器820,图8中以一个处理器810为例。
执行对话状态跟踪方法的设备还可以包括:输入装置830和输出装置840。
处理器810、存储器820、输入装置830和输出装置840可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器820作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的对话状态跟踪方法对应的程序指令/模块。处理器810通过运行存储在存储器820中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例对话状态跟踪方法。
存储器820可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据对话状态跟踪装置的使用所创建的数据等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器820可选包括相对于处理器810远程设置的存储器,这些远程存储器可以通过网络连接至对话状态跟踪装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置830可接收输入的数字或字符信息,以及产生与对话状态跟踪装置的用户设置以及功能控制有关的信号。输出装置840可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器820中,当被所述一个或者多个处理器810执行时,执行上述任意方法实施例中的对话状态跟踪方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),音箱,掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。