一种多轮对话中用户意图的识别方法及相关设备与流程

文档序号:24159736发布日期:2021-03-05 14:52阅读:160来源:国知局
一种多轮对话中用户意图的识别方法及相关设备与流程

[0001]
本发明涉及语音交互技术领域,尤其涉及的是一种多轮对话中用户意图的识别方法及相关设备。


背景技术:

[0002]
现有技术中的自然语言解析技术,一般是采用数据驱动,基于机器学习的。基于自然语言解析的对话技术分单轮对话和多轮对话。
[0003]
多轮对话是一种在人机对话中,初步明确用户意图之后,获取必要信息以最终得到明确用户指令的方式。多轮对话与一件事情的处理相对应。多轮对话系统拥有语言理解,语言生成,对话管理,知识库等模块。对话管理又包括状态跟踪和动作选择子模块,可以认为多轮对话系统,是基于分析的单轮对话的扩展,在每轮对话中,对发话进行语义理解,产生内部表征。对话管理使用有限状态机,表示对话中获取信息的整个过程。经过几轮对话,系统逐步获取所需信息,并执行任务。
[0004]
但是现有技术中的现有的多轮对话都是在前一轮对话搜索的基础上对后一轮对话进行查询匹配,例如:当用户前一轮的对话为:“小猪佩琪”,后一轮对话为“恐怖的”,则会先对“小猪佩琪”进行搜索,然后在小猪佩琪的搜索结果上去搜索与“恐怖的”相关的信息,由于这两个词之间没有关联关系,所以导致最后分析出的用户意图是不准确的,而用户意图分析的不准确,导致系统行为返回的不准确,从而导致用户与对话设备之间沟通的不顺利,或者导致对话设备指令执行错误,直接给用户对对话设备的使用带来不便。
[0005]
因此,现有技术有待于进一步的改进。


技术实现要素:

[0006]
鉴于上述现有技术中的不足之处,本发明提供了一种多轮对话中用户意图的识别方法及相关设备,克服现有技术中的多轮对话中未考虑前后对话之间的关联关系,总是在前一轮对话搜索的基础上对后一轮对话进行查询匹配,导致后一轮对话查询匹配的准确性低缺陷。
[0007]
第一方面,本实施例公开了一种多轮对话中用户意图的识别方法,其中,包括以下步骤:
[0008]
获取多轮对话中上文信息的第一对话状态和下文信息的第二对话状态;
[0009]
若所述第一对话状态与所述第二对话状态之间的第一相关性小于预设第一阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果。
[0010]
可选的,所述获取多轮对话中上文信息的第一对话状态和下文信息的第二对话状态的步骤之前,还包括:
[0011]
判断所述上文信息与所述下文信息所对应的语音信息是否相同;
[0012]
若是,则重新获取位于所述下文信息后一轮的对话信息,并将重新获取的所述对话信息替换为所述下文信息。
[0013]
可选的,所述分别获取多轮对话中上文信息的第一对话状态和下文信息的第二对话状态的步骤包括:
[0014]
获取多轮对话中的上文信息和下文信息;
[0015]
分别对所述上文信息和下文信息进行语音识别和语言分析,得到第一对话状态和第二对话状态。
[0016]
可选的,所述若所述第一对话状态与所述第二对话状态之间的第一相关性小于预设第一阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果,包括:
[0017]
若所述第一对话状态与所述第二对话状态之间的相关性大于等于预设第一阈值,则获取与所述第一对话状态所对应的系统反馈信息;
[0018]
若所述系统反馈信息与所述第二对话状态之间的相关性小于预设第二阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果。
[0019]
可选的,所述若所述第一对话状态与所述第二对话状态之间的第一相关性小于预设第一阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果的步骤之前,还包括:
[0020]
获取所述第一对话状态的第一槽位信息;
[0021]
获取所述第二对话状态的第二槽位信息;
[0022]
根据所述第一槽位信息和第二槽位信息计算出所述第一相关性;
[0023]
判断所述第一相关性是否小于预设第一阈值。
[0024]
可选的,所述根据所述第一槽位信息和第二槽位信息计算出所述第一相关性的步骤包括:
[0025]
获取所述第一槽位信息中各个槽位所含字符串,并将各个字符串合并为第一字符串信息;
[0026]
获取所述第二槽位信息中各个槽位所含字符串,并将各个字符串合并为第二字符串信息;
[0027]
计算所述第一字符串信息与所述第二字符串信息中各个字符串之间的编辑距离;
[0028]
根据所述编辑距离的大小计算出所述第一相关性。
[0029]
可选的,所述若所述系统反馈信息与所述第二对话状态之间的相关性小于预设第二阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果的步骤之前,还包括:
[0030]
获取所述系统反馈信息的第三槽位信息;
[0031]
获取所述第二对话状态的第二槽位信息;
[0032]
根据所述第三槽位信息和第二槽位信息计算出所述第二相关性;
[0033]
判断所述第二相关性是否小于预设第二阈值。
[0034]
可选的,所述根据所述第三槽位信息和第二槽位信息计算出所述第二相关性的步骤包括:
[0035]
获取所述第三槽位信息中各个槽位所含字符串,并将各个字符串合并为第三字符串信息;
[0036]
获取所述第二槽位信息中各个槽位所含字符串,并将各个字符串合并为第二字符串信息;
[0037]
计算所述第三字符串信息与所述第二字符串信息中各个字符串之间的编辑距离;
[0038]
根据所述编辑距离的大小计算出所述第二相关性。
[0039]
可选的,所述分别获取所述第一对话状态和所述第二对话状态的第一槽位信息和第二槽位信息的步骤之后,还包括:
[0040]
判断所述第一对话状态和/或第二对话状态所含有的槽位是否填充完整;
[0041]
若未填充完整,则获取与所述第一对话状态和/或第二对话状态中未填充完整的槽位所缺失的关键词信息,并根据获取到的关键词信息将所述第一对话状态和/或第二对话状态所含有的槽位填充完整。
[0042]
可选的,所述分别获取所述系统反馈信息和所述第二对话状态的第三槽位信息和第二槽位信息的步骤之后,还包括:
[0043]
判断所述系统反馈信息和/或第二对话状态所含有的槽位是否填充完整;
[0044]
若未填充完整,则获取与所述系统反馈信息和/或第二对话状态中未填充完整的槽位所缺失的关键词信息,并根据获取到的关键词信息将所述系统反馈信息和/或第二对话状态所含有的槽位填充完整。
[0045]
可选的,所述根据所述下文信息对用户意图进行识别,得到用户意图识别结果的步骤包括:
[0046]
获取所述第二对话状态所含信息的字符信息,提取出第二关键词集;
[0047]
确定与所述第二关键词集相对应的第二用户指令信息;
[0048]
根据所述第二用户指令信息得到用户意图识别结果。
[0049]
可选的,所述识别方法还包括:
[0050]
若所述第一对话状态与所述第二对话状态之间的第一相关性大于等于预设第一阈值,则将所述第一对话状态、所述系统反馈信息与下文信息相结合对用户意图进行识别,得到用户意图识别结果。
[0051]
可选的,所述识别方法还包括:
[0052]
若所述系统反馈信息与所述第二对话状态之间的相关性大于等于预设第二阈值,则将所述第一对话状态、所述系统反馈信息与下文信息相结合对用户意图进行识别,得到用户意图识别结果。
[0053]
可选的,所述将所述第一对话状态、所述系统反馈信息与下文信息相结合对用户意图进行识别,得到用户意图识别结果的步骤包括:
[0054]
获取所述第一对话状态和所述系统反馈信息所含信息的字符信息,提取出第一关键词集;
[0055]
获取所述第二对话状态所含信息的字符信息,提取出第二关键词集;
[0056]
搜索与所述第一关键词集相对应的第一用户指令信息;
[0057]
搜索所述第一用户指令信息中与所述第二关键词集相对应的第二用户指令信息;
[0058]
根据所述第二用户指令信息得到用户意图识别结果。
[0059]
第二方面,本实施例还公开了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时实现所述方法的步骤。
[0060]
第三方面,本实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述的方法的步骤。
[0061]
与现有技术相比,本发明实施例具有以下优点:
[0062]
根据本发明实施方式提供的方法,通过获取多轮对话中前后轮对话中上文信息的第一对话状态和下文信息的第二对话状态;分别计算第一对话状态与第二对话状态之间的第一相关性,并将所述第一相关性与预设第一阈值进行比较,若所述第一相关性小于预设第一阈值,则仅仅根据所述下文信息对用户意图进行识别,得到用户意图识别结果。由于本实施例中充分考虑了前后轮对话之间交互信息的相关性,当两者之间交互信息差别较大时,则将后一轮对话作为一个单独信息进行用户意图分析,从而可以得到更为准确的分析结果,为实现针对用户发出信息作出精确的反馈提供了基础。
附图说明
[0063]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0064]
图1是本发明实施例中一种多轮对话识别用户意图的方法的步骤流程图;
[0065]
图2是多轮对话系统的信息流程方式示意图;
[0066]
图3多轮对话系统的原理结构示意图;
[0067]
图4是本发明实施例中一个示例性应用场景的框架示意图;
[0068]
图5是本发明实施例中一种计算机设备的原理结构框图。
具体实施方式
[0069]
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0070]
多轮对话是人机互动过程中,初步明确用户意图之后,获取必要信息以最终得到确定的用户指令的方式,多轮对话与一件事情的处理相对应,其可以表现为人机之间的多次对话交互,若一次对话便可以明确用户指令,则多轮对话可以表现为人机之间的一次对话交互。
[0071]
发明人经过研究发现,目前的多轮对话忽略话语之间的随机性,需要根据对话前后内容的相关性,来判断是否需要根据之前的对话语境进行决策,而多轮对话中前后内容之间可能存在并不相关的情况,若前后之间的内容并不相关,对后一轮内容产生系统反馈行为时,还是执行在前一轮内容的基础上进行检索实现,则可能会导致对后一轮信息产生的反馈行为不准确。
[0072]
本实施例公开了一种多轮对话中识别用户意图的方法,通过分析前后轮对话之间信息的相关性,判断出是否需要在前一轮对话的查询结果的基础上进行后一轮对话信息的查询,例如:当用户先说“小猪佩琪”,再说“恐怖”时,先判断两者的相关性,如果不相关则执行单轮搜索,即单独搜索“小猪佩琪”和单独搜索“恐怖”,如果相关,则先根据“小猪佩琪”进行搜索,然后在“小猪佩琪”的搜索结果上,去搜索“恐怖”。由于“小猪佩琪”与“恐怖”之间不
相关,因此利用本实施例所公开的方法可以得到更好准确的结果。
[0073]
示例性方法
[0074]
参见图1,示出了本发明实施例中的一种多轮对话中用户意图的识别方法。在本实施例中,所述方法例如可以包括以下步骤:
[0075]
步骤s101:分别获取多轮对话中上文信息的第一对话状态和下文信息的第二对话状态。
[0076]
在多轮对话中,分别获取用户发出上文信息所对应的第一对话状态和下文信息的第二对话状态。其中所述下文信息是多轮对话中人机交互时,处于后一次人机交互时用户发出的语音信息,上文信息是多轮对话中人机交互时,相比较后一次人机交互,用户前一次发出的语音信息。上文信息和下文信息属于用户发出的上一句语音信息和下一句语音信息,并且上文信息和下文信息属于自然语音对话,可以使用中文、英文或者其他自然语音与对话系统之间进行多轮交谈。对话系统接收到用户发出的语音信息后,帮助用户完成一个任务,该任务通常是访问信息的任务。
[0077]
所述对话状态为包含用户发出的语音信息所转化的文本以及根据所述文本分析出的与所述文本信息相关的信息。当获取到上文信息和下文信息后,分别对上文信息和下文信息进行语音识别、语义识别得到所述上文信息的第一对话状态和下文信息的第二对话状态。
[0078]
结合图2所示,所述多轮对话中包括:语音理解,语音生成,对话管理,知识库搜索等步骤。对话管理又包括对话状态跟踪和动作选择等步骤。可以认为多轮对话是基于分析的单轮对话的扩展,在每轮对话中,对发话进行语义理解,产生内部表征。对话管理使用有限状态机,表示对话中获取信息的整个过程。经过几轮对话,系统逐步获取所需信息,并执行任务,如航班信息查询。
[0079]
结合图3,首先获取用户发出的上文信息,通过对用户发出的上文信息进行语音识别asr,产生语音识别结果,也就是上文信息所对应的文本信息;语义解析模块nlu将文本信息映射成用户对话状态,也即是第一对话状态;同样的,对获取用户发出的下文信息进行语音识别asr、得到语音识别结果,在对语音识别结果映射成用户对话状态,得到第二对话状态。
[0080]
本步骤中,为了获取到上文信息的第一对话状态,首先需要对所述上文信息进行语音识别,识别出上文信息中含有的文本信息,再对识别出的文本信息进行语义分析,得到该文本信息中所包含的信息。在对语义分析时一般可以有两种处理方式,一种是具有检索得到与所述文本信息相对应的信息,另一种是基于生成的方式,生成与所述文本信息相对应的信息。利用检索得到与所述文本信息相对应的信息的方式,一般是需建立存储数据库,在所述存储数据库中存储有大量的对话数据,对话数据与对话关键词之间建立索引,对文本信息中含有的关键词进行识别后,根据关键词输出数据库中相对应的对话数据,也即是分析出的与文本信息相对应的第一对话状态。利用生成进行语义分析的方式,该语义分析处理模块利用大量数据构建出一个语音分析模型。当用户输入一个文本信息后,所述语音分析模型输出与所述文本信息相对应的分析结果。所述语音分析模型是基于深度学习的神经网络在大量对话数据的基础上,构建而成的。该语音分析模型分析出的结果即为与所述上文信息或下文信息所对应的对话状态。
[0081]
使用相同的语音识别和语义分析方法分别对下文信息进行语音识别和语义分析,得到与所述上文信息相对应的第一对话状态和与所述下文信息相对应的第二对话状态。
[0082]
步骤s102:若所述第一对话状态与所述第二对话状态之间的第一相关性小于预设第一阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果。
[0083]
当上述步骤中获取到所述第一对话状态和所述第二对话状态之后,计算所述第一对话状态与第二对话状态之间的第一相关性,并判断所述第一相关性是否小于所述预设第一阈值,若小于,则判断上文信息与下文信息之间的相关性小,可以直接根据下文信息对用户意图进行识别,得到用户意图识别结果。
[0084]
具体的,由于对话状态之间相关性的计算为对话状态所含信息中所对应槽位信息之间的相关性,因此所述计算所述第一对话状态与所述第二对话状态之间的第一相关性的步骤包括:
[0085]
获取所述第一对话状态的第一槽位信息;
[0086]
获取所述第二对话状态的第二槽位信息;
[0087]
根据所述第一槽位信息和第二槽位信息计算出所述第一相关性。
[0088]
所述槽位信息为:多轮对话过程中将初步用户意图转化为明确用户指令所需要的信息,一个槽与一件事情的处理中所需要获取的一种信息相对应。槽位信息作为必须获取的一种信息,在多轮对话中不需要全部被填充完整,其分为必填槽位信息和非必填槽位信息。由于非必填槽位信息可以基于上下文信息中得到,因此其可以默认值的形式存在。
[0089]
例如:今天天气如何?在此对话中,由于天气情况是不同的地域处于不同的天气状态,必须根据地理位置才能做出天气情况的搜索,但是由于可以获知用户所在地点为:北京,可以默认该对话所对应的默认询问北京的天气情况,因此系统可以直接做出反馈信息:搜索北京天气。
[0090]
具体的,所述根据所述第一槽位信息和第二槽位信息计算出所述第一相关性的步骤包括:
[0091]
分别获取所述第一槽位信息和所述第二槽位信息中各个槽位所含信息的第一字符串信息和第二字符串信息;
[0092]
计算所述第一字符串信息与所述第二字符串信息中各个字符串之间的编辑距离;
[0093]
根据所述编辑距离的大小计算出所述第一相关性。
[0094]
例如在对轮对话中,下文信息为:“所述人民币对美元的汇率是多少”。则所述下文信息多含的槽位信息为:“查询(槽位1=人民币,槽位2=美元)”这样的形式将作为对话管理模块的输入,这时候状态追踪模块就要根据前一轮的信息,结合该输入判断该轮的查询状态,确定前一轮所出的用户状态为:货币信息查询,则根据下文信息的两个槽位所对应的字符串“人民币”和“美元”,以及上一轮系统反馈信息所对应的槽位信息字符串:“货币信息查询”,计算两者之间的编辑距离,得到由下文信息所对应的字符串信息转成上文信息所对应的字符串所需的最少编辑操作次数,从而得到两者之间的相关性。
[0095]
具体的,计算字符串之间的编辑距离的算法过程包括:
[0096]
假设我们使用d[i,j]个步骤(可以使用一个二维数组保存这个值),表示将字符串s[1

i]转换为字符串t[1

j]所需要的最少步骤个数,那么,在最基本的情况下,即在i等于0时,也就是说字符串s为空,那么对应的d[0,j]就是增加j个字符,使得s转化为t,在j等
于0时,也就是说字符串t为空,那么对应的d[i,0]就是减少i个字符,使得s转化为t。
[0097]
然后我们考虑一般情况,加动态规划的算法,我们要想得到将s[1..i]经过最少次数的增加,删除,或者替换操作就转变为t[1..j],那么我们就必须在之前可以以最少次数的增加,删除,或者替换操作,使得现在字符串s和字符串t只需要再做一次操作或者不做就可以完成s[1..i]到t[1..j]的转换。所谓的“之前”分为下面三种情况:
[0098]
1)我们可以在k个操作内将s[1

i]转换为t[1

j-1]
[0099]
2)我们可以在k个操作里面将s[1..i-1]转换为t[1..j]
[0100]
3)我们可以在k个步骤里面将s[1

i-1]转换为t[1

j-1]
[0101]
针对第1种情况,我们只需要在最后将t[j],加上s[1..i]就完成了匹配,这样总共就需要k+1个操作。
[0102]
针对第2种情况,我们只需要在最后将s[i]移除,然后再做这k个操作,所以总共需要k+1个操作。
[0103]
针对第3种情况,我们只需要在最后将s[i]替换为t[j],使得满足s[1..i]==t[1..j],这样总共也需要k+1个操作。而如果在第3种情况下,s[i]刚好等于t[j],那我们就可以仅仅使用k个操作就完成这个过程。
[0104]
最后,为了保证得到的操作次数总是最少的,我们可以从上面三种情况中选择消耗最少的一种最为将s[1..i]转换为t[1..j]所需要的最小操作次数。
[0105]
算法基本步骤:
[0106]
(1)构造一个行数为m+1、列数为n+1的矩阵,用来保存完成某个转换需要执行的操作的次数,将字符串s[1..n]转换到字符串t[1

m]所需要执行的操作次数为matrix[n][m]的值;
[0107]
(2)初始化matrix第一行为0到n,第一列为0到m。
[0108]
matrix[0][j]表示第1行第j-1列的值,这个值表示将串s[1

0]转换为t[1..j]所需要执行的操作的次数,很显然将一个空字符串转换为一个长度为j的字符串,只需要j次的add操作,所以matrix[0][j]的值应该是j,其他值以此类推。
[0109]
(3)检查每个从1到n的s[i]字符;
[0110]
(4)检查每个从1到m的s[i]字符;
[0111]
(5)将字符串s和字符串t的每一个字符进行两两比较,如果相等,则让cost为0,如果不等,则让cost为1;
[0112]
(6)a、如果我们可以在k个操作里面将s[1..i-1]转换为t[1..j],那么我们就可以将s[i]移除,然后再做这k个操作,所以总共需要k+1个操作。
[0113]
(6)b、如果我们可以在k个操作内将s[1

i]转换为t[1

j-1],也就是说d[i,j-1]=k,那么我们就可以将t[j]加上s[1..i],这样总共就需要k+1个操作。
[0114]
(6)c、如果我们可以在k个步骤里面将s[1

i-1]转换为t[1

j-1],那么我们就可以将s[i]转换为t[j],使得满足s[1..i]==t[1..j],这样总共也需要k+1个操作。(这里加上cost,是因为如果s[i]刚好等于t[j],那么就不需要再做替换操作,即可满足,如果不等,则需要再做一次替换操作,那么就需要k+1次操作)
[0115]
因为我们要取得最小操作的个数,所以我们最后还需要将这三种情况的操作个数进行比较,取最小值作为d[i,j]的值;
[0116]
然后重复执行(3),(4),(5),(6),最后的结果就在d[n,m]中。
[0117]
根据判断计算出的第一相关性与预设第一阈值之间大小,做出执行单轮对话还是多轮对话对用户意图进行识别,若第一相关性大于预设第一阈值,则执行多轮对话识别用户意图,若第一相关性小于预设第一阈值,则执行单轮对话识别用户意图。
[0118]
在本实施例的一种实施方式中,为了获取更准确的相关性的判断结果,所述若所述第一对话状态与所述第二对话状态之间的第一相关性小于预设第一阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果,包括:
[0119]
步骤103、若所述第一对话状态与所述第二对话状态之间的相关性大于等于预设第一阈值,则获取与所述第一对话状态所对应的系统反馈信息;
[0120]
针对所述第一对话状态与用户对话的机器系统会自动反馈一个回复信息,所述回复信息为系统反馈信息,所述系统反馈信息是由对话管理模块实现。结合图3所示,对话管理模块dm根据所述第一对话状态和第二对话状态会选择需要执行的系统反馈行为,也即是系统反馈信息;如果这个系统反馈信息需要和用户交互,那么语言生成模块nlg会被触发,生成自然语言或者说是系统话语;最后,生成的语言由语音合成模块tts朗读给用户听。
[0121]
对话管理的任务主要包括:对话状态维护和生成系统决策。对话状态维护包含维护和更新所述对话状态,比如:t+1时刻的对话状态为s
t+1
,依赖于之前时刻t的状态s
t
,和之前时刻t的系统行为a
t
,以及当前时刻t+1对应的用户行为a
t+1
。可以写成s
t+1

s
t
+a
t
+a
t+1
生成系统决策根据对话状态跟踪中的对话状态,产生系统反馈行为,决定下一步做什么,系统反馈行为表示根据用户的输入的对话状态,系统做出的反馈行为,因此所述对话管理模型的输入的信息为用户的语音信息与对用户的语音信息分析得到的当前对话状态,其输出为下一步的系统反馈行为和更新的对话状态。因此输入的信息中所携带的语义信息越多,则对话管理模块所反馈的信息越准确。
[0122]
例如:当上文信息的内容为:我要看小猪佩奇,所对应的对话状态内容包括:影视、演员为动物、类型为喜剧和家庭剧以及其他与小猪佩奇相关的信息,而与所述对话状态相对应的系统反馈信息为:影视搜索。若下文信息为:第一季第3集,通过对下文信息语音识别和语义分析可以得到,与下文信息相对应的第二对话状态为:电视剧或动画片、第3集、多季剧情等,通过计算第一对话状态与第二对话状态之间的相似度,可以得到,第一对话状态与第二对话状态之间的相关性大于预设第一阈值,则需要获取针对第一对话状态的系统反馈信息:搜索小猪佩奇第一季第三集。
[0123]
上述对话管理模块控制着人机对话的过程,其根据对话历史信息,决定此刻对用户的反应。最常见的为任务驱动的多轮对话,用户带着明确的目的如订餐、订票等,用户需求比较复杂,有很多限制条件,因此内容相对复杂的咨询应答需要分多轮进行陈述,一方面,用户在对话过程中可以不断修改或完善自己的需求,另一方面,当用户的陈述的需求不够具体或明确的时候,机器也可以通过询问、澄清或确认来帮助用户找到满意的结果,其对话过程如图4所述,用户和系统之间通过问答实现信息沟通,用户通过发出语音信息:hi,我想订个餐,实现语音指令的传送,当系统接收到用户的语音指令后(所述系统可以为语音机器人,或者其他可以识别用户语音信息的设备),对该语音指令进行解析,识别出所述语音指令中含有的关键信息:restaurant,则系统反馈问询信息:你喜欢什么类型的食物呢,同时反馈的对话行为:food,则用户接收到该信息后,再次发出语音信息:我喜欢吃宫保鸡丁,
则系统接收到语音信息中包含的关键词:宫保鸡丁,根据接收到的信息对用户进行反馈确认,最后得到满意的订餐效果。
[0124]
步骤s104、若所述系统反馈信息与所述第二对话状态之间的相关性小于预设第二阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果。
[0125]
若上述步骤s103中获取到的所述第一对话状态对应的系统反馈信息与所述第二对话状态之间的相关性小于预设第二阈值,则判定上一轮对话信息与下一轮对话信息相关性低,仅仅以下文信息对用户意图进行识别,否则,判定上一轮对话信息与下一轮对话信息相关性高,则将下文信息和上文信息的相关内容相结合对用户意图进行识别。
[0126]
具体的,步骤s104若所述系统反馈信息与所述第二对话状态之间的相关性小于预设第二阈值,则根据所述下文信息对用户意图进行识别,得到用户意图识别结果的步骤之前,还包括:
[0127]
获取所述系统反馈信息的第三槽位信息;
[0128]
获取所述第二对话状态的第二槽位信息;
[0129]
根据所述第三槽位信息和第二槽位信息计算出所述第二相关性;
[0130]
判断所述第二相关性是否小于预设第二阈值。
[0131]
与上述获取第一对话状态的第一槽位信息和获取第二对话状态的第二槽位信息相同,分别获取系统反馈信息的第三槽位信息和第二对话状态的第二槽位信息,再根据获取到的槽位信息计算所述系统反馈信息与第二对话状态之间的第二相关性。
[0132]
具体的,所述根据所述第三槽位信息和第二槽位信息计算出所述第二相关性的步骤包括:
[0133]
获取所述第三槽位信息中各个槽位所含字符串,并将各个字符串合并为第三字符串信息;
[0134]
获取所述第二槽位信息中各个槽位所含字符串,并将各个字符串合并为第二字符串信息;
[0135]
计算所述第三字符串信息与所述第二字符串信息中各个字符串之间的编辑距离;
[0136]
根据所述编辑距离的大小计算出所述第二相关性。
[0137]
计算槽位信息之间的相关性,具体是计算与槽位信息所含信息的字符串信息之间的相关性,而字符串信息之间的相关性是通过计算字符串之间的编辑距离体现的,其计算原理与上述步骤中计算第一槽位信息与第二槽位信息之间的相关性的原理相同。
[0138]
在一种实现方式中,所述计算所述第一对话状态与所述第二对话状态之间的第一相关性的步骤之前,还包括:
[0139]
判断所述第一对话状态和/或第二对话状态所含有的槽位是否填充完整;
[0140]
若未填充完整,则获取与所述第一对话状态和/或第二对话状态中未填充完整的槽位所缺失的关键词信息,并根据获取到的关键词信息将所述第一对话状态和/或第二对话状态所含有的槽位填充完整。
[0141]
若第一对话状态和/或第二对话状态所对应的槽位未填充完整,则可能会导致相关性的计算准确度低,因此上述步骤中对第一对话状态和第二对话状态所含有的槽位是否填充完整进行判断,若未填充完整,则将其填充完整,然后再对计算两者之间的相关性。
[0142]
同样的,计算所述系统反馈信息的第三槽位信息和第二对话状态的第二槽位信息
之间相关性的步骤之前,还包括:
[0143]
判定所述第三槽位信息和所述第二槽位信息是否完整;
[0144]
若未填充完整,则获取与所述系统反馈信息和/或第二对话状态中未填充完整的槽位所缺失的关键词信息,并根据获取到的关键词信息将所述系统反馈信息和/或第二对话状态所含有的槽位填充完整。
[0145]
若系统反馈信息和/或第二对话状态所对应的槽位未填充完整,则可能会导致相关性的计算准确度低,因此上述步骤中对系统反馈信息和第二对话状态所含有的槽位是否填充完整进行判断,若未填充完整,则将其填充完整,然后再对计算两者之间的相关性。
[0146]
当多轮对话中前一轮对话与后一轮对话相关性高,也即是当第一相关性高于预设第一预设阈值,或者当第一相关性小于等于预设第一阈值,但是第二相关性小于预设第二阈值时,以多轮对话识别用户意图,也即是将所述第一对话状态、所述系统反馈信息与下文信息相结合对用户意图进行识别,得到用户意图识别结果。
[0147]
具体的,将所述第一对话状态、所述系统反馈信息与下文信息相结合对用户意图进行识别,得到用户意图识别结果的步骤包括:
[0148]
获取所述第一对话状态和所述系统反馈信息所含信息的字符信息,提取出第一关键词集;
[0149]
获取所述第二对话状态所含信息的字符信息,提取出第二关键词集;
[0150]
搜索与所述第一关键词集相对应的第一用户指令信息;
[0151]
在搜索出的所述第一用户指令信息下搜索与所述第二关键词集相对应的第二用户指令信息;
[0152]
根据所述第二用户指令信息得到用户意图识别结果。
[0153]
当第一对话状态和/或所述系统反馈信息与第二对话状态之间的相关性满足预设阈值条件后,则先对跟你讲第一对话状态和所述系统反馈信息中所含有的字符信息,进行用户意图的识别,得到针对上文信息的搜索结果,在上文信息的搜索结果基础之上,再对下文信息进行搜索,从而反馈出用户所发出的上文信息和下文信息相对应的用户指令,及搜索结果。
[0154]
当多轮对话中前一轮对话与后一轮对话相关性低,也即是当第一相关性小于预设第一预设阈值,以单轮对话识别用户意图,也即是将仅仅以下文信息相结合对用户意图进行识别,得到用户意图识别结果。
[0155]
当所述第一对话状态、所述系统反馈信息与所述第二对话状态之间的相关性不满足预设阈值条件,则执行单轮对话,仅仅根据下文信息对用户意图进行识别,具体的,所述根据所述下文信息对用户意图进行识别,得到用户意图识别结果的步骤包括:
[0156]
获取所述第二对话状态所含信息的字符信息,提取出第二关键词集;
[0157]
搜索与所述第二关键词集相对应的第二用户指令信息;
[0158]
根据所述第二用户指令信息得到用户意图识别结果。
[0159]
上述单轮对话中,仅仅针对下文信息得到用户意图识别的结果,由于本次搜索未被限定在上文信息的相关内容之内,则可以获取到的更加符合用户意图的搜索信息。
[0160]
本实施例所公开的方法中,由于对多轮对话中相邻的上下文信息所对应的对话状态及系统反馈信息进行相关性计算,因此可以避免当前一句对话和后一句对话之间无相关
性时,还是在前一句对话的搜索结果基础上,生成后一句对话搜索结果的情况,而是重新根据后一句对话的内容进行相应的搜索,从而提高了用户意图识别的准确性。
[0161]
在一种实施方式中,为了避免用户前后发出相同的语音信息,对话系统重复对相同语音的相关性进行计算,从而导致增加了系统信息处理的任务量,在对所述获取多轮对话中上文信息的第一对话状态和与所述第一对话状态所对应的系统反馈信息,以及下文信息的第二对话状态的步骤之前,还包括:
[0162]
判断所述上文信息与所述下文信息所对应的语音信息是否相同;
[0163]
若是,则忽略所述下文信息,并重新获取位于所述下文信息后一轮的对话信息,并将重新获取的所述对话信息替换为所述下文信息。
[0164]
上述步骤中当获取到上文信息和下文信息之后,先对上文信息和下文信息是否相同进行对比,若完全相同,则判定出用户重复说了相同的语音信息,则忽略接收到的下文信息,并重新接收位于所述下文信息下一轮的信息,从而避免了系统不必要的信息处理过程。比如:当用户在上下文对话中重复说出:我要订机票,由于两次信息相同,则可以直接忽略第二次接收到的:“我要订机票”的语音信息,不对其进行语义分析、用户意图识别等处理,而是直接重新获取用户在发出第二次语音信息“我要订机票”之后,发出的“从西安到北京”的语音信息,将重新接收到的“从西安到北京”的语音信息作为下文信息,进行相似性的判断。
[0165]
在本实施例的一种应用实施例中,可以采用以下步骤进行用户意图识别;
[0166]
步骤h1、首先判断上文信息与下文信息是否相同,若相同,则执行步骤h2,否则执行步骤h3;
[0167]
步骤h2、重新获取下文信息。
[0168]
步骤h3,获取上文信息的第一对话状态和下文信息的第二对话状态;
[0169]
步骤h4,计算所述第一对话状态与所述第二对话状态之间的第一相关性;判断所述第一相关性是否大于预设第一阈值;若小于,执行步骤h5,否则执行步骤h6;
[0170]
步骤h5,获取与所述第一对话状态相对应的系统反馈信息,并计算所述系统反馈信息与所述第二对话状态之间的第二相关性,并所述第二对话状态与系统反馈信息之间的第二相关性是否低于预设第二阈值,若是则执行步骤h7,若否执行步骤h8;
[0171]
步骤h6,判定两轮对话之间具有相关性,则进入对轮对话,获取与第一对话状态所对应的系统反馈信息,并将第一对话状态、系统反馈信息、第二对话状态相结合对用户意图进行识别。
[0172]
步骤h7、本次对话可以作为单轮对话进行用户意图的识别。
[0173]
步骤h8、本次对话执行多轮对话,需要结合第一对话状态、系统反馈信息、第二对话状态对用户意图进行识别。
[0174]
例如:当上文信息的内容为:我要看小猪佩奇,所对应的对话状态内容包括:影视、演员为动物、类型为喜剧和家庭剧以及其他与小猪佩奇相关的信息,而与所述对话状态相对应的系统反馈信息为:影视搜索。若下文信息为:今天的天气如何,通过对下文信息语音识别和语义分析可以得到,与下文信息相对应的第二对话状态为:地域位置、今天、温度、下雨等,通过计算第一对话状态与第二对话状态之间的相似度,可以得到第一对话状态与第二对话状态之间的相关性低于预设第一阈值,则判断下文信息与上文信息之间不具有相关
性。因此不能在上文信息的结果基础上对下文信息做出系统反馈信息,需要重新对所述第二对话状态进行搜索,做出针对第二对话状态的系统反馈信息:搜索今天当前用户所在地域的天气状况。
[0175]
例如:当上文信息的内容为:我要看喜剧,所对应的对话状态内容包括:影视、类型为喜剧和家庭剧,而与所述对话状态相对应的系统反馈信息为:影视搜索。若下文信息为:小猪佩奇,所对应的对话状态内容包括:影视、演员为动物、类型为喜剧和家庭剧以及其他与小猪佩奇相关的信息,而与所述对话状态相对应的系统反馈信息为:喜剧影视搜索。通过对下文信息语音识别和语义分析可以得到,可以得到第一对话状态与第二对话状态之间的相关性高于预设第一阈值,则判断下文信息与上文信息之间具有相关性。因此需要在上文信息的结果基础上对下文信息做出系统反馈信息,需要重新对所述第二对话状态进行搜索,做出针对第二对话状态的系统反馈信息:搜索小猪佩奇的相关影视资料。
[0176]
示例性设备
[0177]
在上述方法的基础上,本实施例还公开了一种计算机设备,如图5所示,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时实现所述方法的步骤。
[0178]
在上述方法的基础上,本实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述的方法的步骤。
[0179]
在示例性实施例中,一种计算机设备可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0180]
与现有技术相比,本发明实施例具有以下优点:
[0181]
根据本发明实施方式提供的方法,通过获取多轮对话中前后轮对话的语音信息;对前后轮对话的语音信息所对应的对话状态之间的相关性进行计算,判断相关性是否超出某一个阈值,若未超过,则仅针对后一轮对话状态对用户意图进行识别,若超出,则判断前一轮对话的系统行为与后一轮对话的对话状态之间的相关性是否超过某个阈值,若未超出,则单独根据后一轮的对话状态对用户意图进行识别;若超出,则将前一轮的对话状态与第二对话状态相结合对用户意图进行识别。由于本实施例中充分考虑了前后轮对话之间信息的相关性,当两者信息差别较大时,则将后一轮对话作为一个单独信息进行用户意图分析,从而可以得到更为准确的分析结果,为实现针对用户发出信息作出精确的反馈提供了基础。
[0182]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
[0183]
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1