一种对话管理方法、装置、设备及存储介质
技术领域
本申请涉及智能聊天技术领域,尤其涉及一种对话管理方法、装置、设备及存储介质。
背景技术
随着科技的不断发展,聊天机器人作为一个标准应用已经接入各式各样的电子设备中,比如手机、电视、车载终端、音响等。除了进行指令式的功能交互之外,与用户进行知识、情感上的交流也是聊天机器人的重要功能。
用户与聊天机器人的聊天效果取决于所采用的对话管理方案。然而,目前的对话管理方案中,对话流程非常单一,其只是根据用户的输入进行回应,比如,用户问一个问题,其针对这个问题进行回复,这种对话管理方案会导致用户聊天兴趣不断下降,最终不再与聊天机器人进行对话。
发明内容
有鉴于此,本申请提供了一种对话管理方法,用以解决现有技术中的对话管理方案,因对话流程单一导致用户聊天兴趣不断下降的问题,其技术方案如下:
一种对话管理方法,包括:
在获得用户的对话内容后,根据所述用户的对话内容确定本轮对话是否由用户主导;
若本轮对话由用户主导,则根据所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型;若本轮对话不由用户主导,则根据所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型;
根据目标话题和该目标话题的话题类型,生成针对所述用户的对话内容的回应信息,其中,所述回应信息为介绍所述目标话题的信息,或者,由所述目标话题向另一话题转移的信息。
可选的,所述根据所述用户的对话内容确定本轮对话是否由用户主导,包括:
确定所述用户的对话内容是否符合预设的匹配规则集合中的一种匹配规则,其中,所述匹配规则集合根据表征对话由用户主导的对话内容设定;
若所述用户的对话内容符合所述匹配规则集合中的一种匹配规则,则确定本轮对话由用户主导。
可选的,所述匹配规则集合中的每种匹配规则对应一预先构建的隧道节点,所述隧道节点为能够确定用户的对话内容是否符合自身对应的匹配规则的节点;
所述确定所述用户的对话内容是否符合预设的匹配规则集合中的一种匹配规则,包括:
利用与每种匹配规则对应的隧道节点,确定所述用户的对话内容是否符合对应的匹配规则;
相应的,所述根据所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型,包括:
将所述用户的对话内容符合的匹配规则所对应的隧道节点作为目标隧道节点,利用所述目标隧道节点和所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型。
可选的,所述根据所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型,包括:
若本轮对话为首轮对话,则从预先构建的多个对话节点中随机选取一个对话节点,利用选取出的对话节点和所述用户的对话内容中所包含的实体,确定目标话题和该目标话题对应的话题类型;
若本轮对话不为首轮对话,且有对话节点在等待用户的回复,则利用该对话节点和所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型。
可选的,所述根据目标话题和该目标话题的话题类型,生成针对所述用户的对话内容的回应信息,包括:
根据所述目标话题的话题类型,从预先构建的多个对话节点中选取一未选取过的对话节点,作为目标对话节点;
利用所述目标对话节点,生成针对所述用户的对话内容的回应信息;
其中,每个对话节点对应有包括第一类型和第二类型的话题类型对,且设置有从其对应的第一类型的话题转移到其对应的第二类型的话题的对话模板;不同对话节点对应的话题类型对不同,同一对话节点对应的第一类型与第二类型相同或不同;
其中,所述目标对话节点对应的第一类型与所述目标话题的话题类型相同;所述回应信息根据所述目标话题和所述目标对话节点上设置的对话模板生成。
可选的,构建所述多个对话节点的过程包括:
根据预先构建的话题知识图谱构建多个对话节点;
其中,所述话题知识图谱由若干个节点和节点之间的边组成,一个节点代表一个话题,通过一条边连接的两个节点所代表的话题相关;所述话题知识图谱由至少一个领域的话题知识子图谱组成,每个领域的话题知识子图谱中的每个节点代表该领域的一个话题。
可选的,所述根据预先构建的话题知识图谱构建多个对话节点,包括:
对于所述话题知识图谱所涉及的每个领域,对该领域的话题知识子图谱中所包含的话题进行分类,以得到该领域所包含的话题类型;
根据该领域所包含的话题类型之间可能存在的转移情况,确定该领域的对话节点的数量,并按确定出的数量构建该领域的对话节点;
根据该领域所包含的话题类型之间可能存在的转移情况,为该领域的每个对话节点分配一话题类型对,并为该领域的每个对话节点设置由其对应的第一类型的话题向其对应的第二类型的话题转移的对话模板。
可选的,所述根据所述目标话题的话题类型,从预先构建的多个对话节点中选取一未选取过的对话节点,作为目标对话节点,包括:
根据所述目标话题的话题类型,从所述多个对话节点中获取对应的第一类型与所述目标话题的话题类型一致且未获取过的对话节点,由获取的对话节点组成候选对话节点集合;
根据所述本轮对话之前的至少一轮对话、所述目标话题、所述用户的标识,从所述候选对话节点集合中确定目标对话节点。
可选的,所述对话管理方法还包括:
若所述目标对话节点为预设的不再进行话题转移的节点,则利用预先构建的第一类拓展节点以及历史对话,确定下一轮对话的目标话题;
其中,所述历史对话为所述本轮对话以及所述本轮对话之前的对话,所述第一类拓展节点用于在所述历史对话所涉及的领域中发现目标话题。
可选的,所述利用预先构建的第一类拓展节点以及历史对话,确定下一轮对话的目标话题,包括:
利用所述第一类拓展节点,从所述历史对话中获取历史目标话题,作为下一轮对话的目标话题;
或者,利用所述第一类拓展节点,从历史对话中获取历史目标话题,并获取与该历史目标话题有关的话题,作为下一轮对话的目标话题;
或者,利用所述第一类拓展节点,从历史对话所包含的实体中确定未曾作为目标话题的实体,作为下一轮对话的目标话题。
可选的,所述对话管理方法还包括:
若利用所述第一类拓展节点无法获得下一轮对话的目标话题,则利用预先构建的第二类拓展节点,按预设的跨领域规则从预先构建的话题知识图谱中查找其它领域的话题,查找到的话题作为下一轮对话的目标话题;
其中,所述话题知识图谱由多个不同领域的话题知识子图谱组成,每个领域的话题知识子图谱由该领域的多个话题组成。
可选的,所述对话管理方法还包括:
若利用所述第二类拓展节点无法获得下一轮对话的目标话题,则利用预先构建的第三类拓展节点,从预先针对历史对话所涉及的领域构建的话题列表中选取一个话题,作为下一轮对话的目标话题。
一种对话管理装置,包括:对话主导方确定模块、目标话题信息确定模块和回应信息生成模块;
所述对话主导方确定模块,用于在获得用户的对话内容后,根据所述用户的对话内容确定本轮对话是否由用户主导;
所述目标话题信息确定模块,用于当本轮对话由用户主导时,则根据所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型;当本轮对话不由用户主导时,根据所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型;
所述回应信息生成模块,用于根据目标话题和该目标话题的话题类型,生成针对所述用户的对话内容的回应信息,其中,所述回应信息为介绍所述目标话题的信息,或者,由所述目标话题向另一话题转移的信息。
一种对话管理设备,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现上述任一项所述的对话管理方法的各个步骤。
一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一项所述的对话管理方法的各个步骤。
经由上述方案可知,本申请提供的对话管理方法,在获得用户的对话内容后,首先确定本轮对话是否由用户主导,若本轮对话由用户主导,表明用户对对话内容有比较明确的意向,则获取符合用户意图的目标话题和该目标话题的话题类型,若本轮对话不由用户主导,表明用户对对话内容没有比较明确的意向,则根据用户的对话内容中所包含的实体确定目标话题和该目标话题的话题类型,然后根据目标话题和该目标话题的话题类型后,生成介绍目标话题的信息,或者,生成由目标话题向另一话题转移的信息,作为对用户的对话内容的回应信息,由此可见,本申请提供的对话管理方法,在用户对对话内容有明确意向时,在用户的主导下进行对话,在用户对对话内容没有明确意向时,能够引导用户进行对话,并且,在对话过程中还能实现话题的切换,这种对话管理方式使得对话方式和对话内容比较丰富,能够提高用户的聊天兴趣,从而提升用户的聊天体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的对话管理方法的流程示意图;
图2为本申请实施例提供的根据目标话题和该目标话题的话题类型,生成针对用户的对话内容的回应信息的流程示意图;
图3为本申请实施例提供的根据目标话题的话题类型,从预先构建的多个对话节点中选取一未选取过的对话节点作为目标对话节点的流程示意图;
图4为本申请实施例提供的利用节点选择模型选择节点的示意图;
图5为本申请实施例提供的根据预先构建的话题知识图谱构建多个对话节点的流程示意图;
图6为本申请实施例提供的对话管理方法的一具体流程示意图;
图7为本申请实施例提供的对话管理装置的结构示意图;
图8为本申请实施例提供的对话管理设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本案发明人在实现本发明创造的过程中发现,现有的对话管理方案主要有两种,第一种是基于意图和槽识别的对话管理方案,第二种是基于语义表达式和匹配的对话管理方案。其中,基于意图和槽识别的对话管理方案的大致思路是,首先设计用户意图,并训练意图分类器,然后对每一个意图编写会话并设计相应的槽位,为每一种槽位状态编写回复,并训练槽识别器,在用户输入对话内容后,首先要通过意图识别器,推测用户意图,以进入某一种意图的会话脚本之中,并根据会话脚本不断地询问用户,直到把所有槽位都填充完毕。基于语义表达式和匹配的对话管理方案的大致思路是,将用户输入的多轮语句生成特定的知识库查询表达式,匹配知识库中的三元组,从而生成对话。
发明人通过研究发现,上述两种方案均存在较多缺陷:
其中,基于意图和槽识别的对话管理方案存在如下缺陷:其一,需要对每一个意图和槽位编写回复,因此,工作量极大,而且,在这种模式之下,往往无法给同一种情况编写多种问题和提问流程,会话流程和会话内容都非常单一、枯燥;其二,由于在意图识别后就进入多轮流程,难以流畅自然的适应用户意图的切换;其三,槽位作为对话状态难以与领域知识库结合,从而难以给对话增加新的信息,只是应接用户对话,这会导致用户聊天兴趣不断下降,最终不再与机器人进行对话。
其中,基于语义表达式和匹配的对话管理方案存在如下缺陷:其一,仅适用于三元组知识库,其构建的聊天内容也是对知识库中的知识进行回答,即,聊天内容比较单一、枯燥;其二,类似槽位填充,其仅考虑到上下文应该继承一些实体信息,仅能延续当前话题,对于下一个话题还需要用户进行切换,没有自身引发相关话题的能力,这导致用户在了解了其希望了解的信息之后,不能有效地被引导到其他信息上,从而没有兴趣继续与聊天机器人进行对话。
鉴于上述方案存在的问题,本案发明人进行了深入研究,最终提出了一种效果较好的对话管理方法,该对话管理方法可应用于具有数据处理能力的终端(比如,智能手机、PAD、智能音箱、车载终端、智能电视等),该终端可接受用户的输入语音,并针对用户的输入语音进行回应,以实现智能聊天功能,本申请提供的对话管理方法还可以应用于服务器(可以是一个服务器,也可是多个服务器,还可以是服务器集群),服务器可与终端通过网络连接,其可从终端获取用户的输入语音,针对用户的输入语音确定回应信息,并将回应信息反馈给终端,以使终端针对用户的输入语音做出回应,从而实现智能聊天功能。接下来通过下述实施例对本申请提供的对话管理方法进行介绍。
第一实施例
请参阅图1,示出了本申请实施例提供的对话管理方法的流程示意图,该方法可以包括:
步骤S101:在获得用户的对话内容后,根据用户的对话内容确定本轮对话是否由用户主导。
需要说明的是,对话由用户主导指的是,对话根据用户提出的话题展开,在这种情况下,用户对对话内容有比较明确的意向,或者说,用户有其想聊的内容。
在一种可能的实现方式中,根据用户的对话内容确定本轮对话是否由用户主导的过程可以包括:确定用户的对话内容是否符合预设的匹配规则集合中的一种匹配规则,若用户的对话内容符合预设的匹配规则集合中的一种匹配规则,则确定本轮对话由用户主导。其中,匹配规则集合根据表征对话由用户主导的对话内容设定。
示例性的,匹配规则集合中包括三种匹配规则,第一种匹配规则为“意图类别为知识问答,且存在实体”,第二种匹配规则为“与问答数据中库中一个问题的相似度大于预设值”,第三中匹配规则为“意图类别为转移话题”:
假设用户的对话内容为“你知道张某某的老婆是谁吗”,由于用户的对话内容中存在实体“张某某”,且用户的对话内容对应的意图类别为“知识问答”,因此,用户的对话内容符合第一种匹配规则,假设用户的对话内容为“谁才是欧冠之王”,查询问答数据库发现“谁是欧冠之王”与用户的对话内容“谁才是欧冠之王”的相似度极高,因此,用户的对话内容符合第二种匹配规则,若用户的对话内容符合匹配规则集合中的任一匹配规则,则确定本轮对话由用户主导。
其中,用户的对话内容对应的意图类别可通过将用户的对话内容输入预先建立的意图分类模型获得,意图分类模型采用标注有意图类别的训练样本训练得到。
步骤S102a:若本轮对话由用户主导,则获取符合用户意图的目标话题和该目标话题的话题类型。
具体的,可设定与匹配规则集合中每种匹配规则对应的话题获取方式,在确定用户的对话内容所符合的匹配规则后,利用与用户的对话内容所符合的匹配规则对应的话题获取方式获取目标话题和该目标话题的类型。
示例性的,用户的对话内容为“你知道张某某的老婆是谁吗”,由于其符合匹配规则集合中的匹配规则“意图类别为知识问答,且存在实体”,因此,本轮对话由用户主导,由于匹配规则“意图类别为知识问答,且存在实体”对应的话题获取方式为“将查询模块的查询结果作为目标话题”,因此,调用查询模块对“你知道张某某的老婆是谁吗”这一问题的答案进行查询,假设查询模块返回的查询结果为“李xx”,则将“李xx”作为目标话题。
示例性的,用户的对话内容为“不聊张xx了,聊一下他的朋友李xx吧”,由于其符合匹配规则集合中的匹配规则“意图类别为转移话题”,因此,本轮对话由用户主导,由于匹配规则“意图类别为转移话题”对应的话题获取方式为“将转移的话题作为目标话题”,因此,将转移的话题“李xx”作为目标话题。
步骤S102b:若本轮对话不由用户主导,则根据用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型。
若本轮对话不由用户主导,说明用户对于对话内容没有特别明确的方向,此时,可由聊天机器人主导对话,具体的,可将用户的对话内容中所包含的实体确定为目标话题。需要说明的是,若用户的对话内容中所包含的实体由多个,则将未曾作为目标话题的实体作为本轮对话的目标话题。
步骤S103:根据目标话题和该目标话题的话题类型,生成针对用户的对话内容的回应信息。
其中,针对用户的对话内容的回应信息为目标话题的介绍信息,或者,由目标话题向另一话题转移的信息。
本申请实施例提供的对话管理方法,在获得用户的对话内容后,首先确定本轮对话是否由用户主导,若本轮对话由用户主导,表明用户对对话内容有比较明确的意向,则获取符合用户意图的目标话题和该目标话题的话题类型,若本轮对话不由用户主导,表明用户对对话内容没有比较明确的意向,则根据用户的对话内容中所包含的实体确定目标话题和该目标话题的话题类型,然后根据目标话题和该目标话题的话题类型后,生成介绍目标话题的信息,或者,生成由目标话题向另一话题转移的信息,作为对用户的对话内容的回应信息,由此可见,本申请实施例提供的对话管理方法,在用户对对话内容有明确意向时,在用户的主导下进行对话,在用户对对话内容没有明确意向时,能够引导用户进行对话,并且,在对话过程中还能实现话题的切换,这种对话管理方式使得对话方式和对话内容比较丰富,能够提高用户的聊天兴趣,从而提升用户的聊天体验。
第二实施例
本实施例对上述实施例提供的对话管理方法中的步骤S101、S102a和S102b的实现过程进行介绍。
上述实施例提到,可确定用户的对话内容是否符合预设的匹配规则集合中的一种匹配规则,若用户的对话内容符合匹配规则集合中的一种匹配规则,则确定本轮对话由用户主导,否则,确定本轮对话不由用户主导。在一种可能的实现方式中,可预先构建与匹配规则集合中的每种匹配规则对应的隧道节点,该隧道节点能够确定用户的对话内容是否符合自身对应的匹配规则,在此基础上,确定用户的对话内容是否符合预设的匹配规则集合中的一种匹配规则的过程可以包括:
通过与每种匹配规则对应的隧道节点,确定用户的对话内容是否符合对应的匹配规则,若有一隧道节点确定用户的对话内容符合其对应的匹配规则,则确定用户的对话内容符合预设的匹配规则集合中的一种匹配规则。
示例性的,匹配规则集合中有三种匹配规则,则构建三个隧道节点,假设三种匹配规则分别为匹配规则1、匹配规则2和匹配规则3,三个隧道节点分别为隧道节点1、隧道节点2和隧道节点3,其中,隧道节点1对应匹配规则1、隧道节点2对应匹配规则2、隧道节点3对应匹配规则3,当获得用户的对话内容后,通过隧道节点1判断用户的对话内容是否符合其对应的匹配规则1,通过隧道节点2判断用户的对话内容是否符合其对应的匹配规则2,通过隧道节点3判断用户的对话内容是否符合其对应的匹配规则3,假设隧道节点1判断用户的对话内容不符合其对应的匹配规则1,隧道节点2判断用户的对话内容不符合其对应的匹配规则2,而隧道节点3判断用户的对话内容符合其对应的匹配规则3,则可确定本轮对话由用户主导。
在确定出本轮对话由用户主导后,根据用户的对话内容获取符合用户意图的目标话题和该目标话题的话题类型,具体的,可将用户的对话内容符合的匹配规则所对应的隧道节点作为目标隧道节点,由目标隧道节点根据用户的对话内容和其对应的话题获取方式,获取符合用户意图的目标话题和该目标话题的话题类型。需要说明的时,目标隧道节点对应的话题获取方式即为目标隧道节点对应的匹配规则所对应的话题获取方式。
示例性的,假设用户的对话内容为“你知道张某某的老婆是谁吗”,目标隧道节点为上述示例中的隧道节点3,隧道节点3对应的匹配规则3为“意图类别为知识问答,且存在实体”,匹配规则3对应的话题获取方式为“将查询模块的查询结果作为目标话题”,则由隧道节点3将用户的对话内容提供给查询模块进行查询,查询模块查询完后,将查询结果反馈至隧道节点3,假设隧道节点3获得的查询结果为“李xx”,则将“李xx”作为目标话题,假设“李xx”为球员,则目标话题的话题类型为运动员。
上述内容给出了本轮对话由用户主导时,确定目标话题的过程,接下来给对本轮对话不由用户主导时,确定目标话题的过程:
若本轮对话为首轮对话,则从预先构建的多个对话节点中随机选取一个对话节点,利用选取出的对话节点和用户的对话内容中所包含的实体,确定目标话题和该目标话题对应的话题类型,即由随机选取出的对话节点根据用户的对话内容中所包含的实体确定目标话题和该目标话题对应的话题类型;若本轮对话并非为首轮对话,且有对话节点在等待用户的回复,则利用该对话节点和用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型,即由在等待的对话节点根据用户的对话内容中所包含的实体确定目标话题和该目标话题对应的话题类型。
第三实施例
本实施例对上述实施例中的“步骤S103:根据目标话题和该目标话题的话题类型,生成针对用户的对话内容的回应信息”的具体实现过程进行介绍。
请参阅图2,示出了根据目标话题和该目标话题的话题类型,生成针对用户的对话内容的回应信息的流程示意图,可以包括:
步骤S201:根据目标话题的话题类型,从预先构建的多个对话节点中选取一未选取过的对话节点,作为目标对话节点。
其中,每个对话节点对应有包括第一类型和第二类型的话题类型对,且具有从其对应的第一类型的话题转移到其对应的第二类型的话题的对话模板。
需要说明的是,不同对话节点对应的话题类型对不同,同一对话节点对应的第一类型与第二类型可以相同,也可以不同。其中,两个对话节点对应的话题类型对不同指的是,两个对话节点分别对应的第一类型不同,和/或两个对话节点分别对应的第二类型不同。
通过步骤S201确定的目标对话节点对应的第一类型与目标话题的话题类型相同。
步骤S202:利用目标对话节点,生成针对用户的对话内容的回应信息。
其中,针对用户的对话内容的回应信息由目标对话节点根据目标话题和其对应的对话模板生成。
接下来对“步骤S201:根据目标话题的话题类型,从预先构建的多个对话节点中选取一未选取过的对话节点,作为目标对话节点”的实现过程进行介绍。
请参阅图3,示出了根据目标话题的话题类型,从预先构建的多个对话节点中选取一未选取过的对话节点,作为目标对话节点的流程示意图,可以包括:
步骤S301:从预先构建的多个对话节点中获取对应的第一类型与目标话题的话题类型一致且未获取过的对话节点,由获取的对话节点组成候选对话节点集合。
示例性的,目标话题的类型为“球队”,则从多个对话节点中获取对应的第一类型为“球队”且未选取过的对话节点,将获取的这些对话节点组成的对话节点集合作为候选对话节点集合。
步骤S302:根据本轮对话之前的至少一轮对话、目标话题以及用户的标识,从候选对话节点集合中确定目标对话节点。
在一种可能的实现方式中,可将本轮对话之前的至少一轮对话(比如本轮会话之前的两轮对话)的文本、目标话题、用户的标识和候选对话节点集合中各个对话节点的标识输入预先建立的节点选择模型,获得节点选择模型输出的对话节点,作为目标对话节点。
假设目标对话节点根据本轮对话之前的两轮对话的内容确定,在将本轮对话之前的两轮对话的内容输入节点选择模型时,需要将本轮对话之前的两轮对话的内容合并,并为对话的内容添加引导符号,引导符号用于表示轮次和发言方,比如,使用符号<U/-1>表示上一轮用户的对话内容,其中,U表示用户,-1表示轮数,<B/-1>表示上一轮聊天机器人的对话内容,B表示聊天机器人,-1表示轮数,假设本轮对话之前的两轮对话的内容为:
用户:我用的笔记本是苹果的,你知道吗?
聊天机器人:苹果的确是一家伟大的公司,你怎么看的?
用户:确实,我很认同你的看法。
采用引导符号可将上述对话表示为“<U/-1>我用的笔记本是苹果的,你知道吗?<B/-1>苹果的确是一家伟大的公司,你怎么看的?<U/0>确实,我很认同你的看法。”。
如图4所示,在利用节点选择模型确定目标对话节点时,首先利用节点选择模型的向量确定模块和输入信息,确定对话内容表征向量h、话题表征向量t、用户表征向量u和候选对话节点集合中各个对话节点的表征向量ni,然后将对话内容表征向量h、话题表征向量t和用户表征向量u进行拼接,拼接后的向量作为目标向量c,即c=[h,t,u],接着利用节点选择模型的注意力模块将目标向量c和候选对话节点集合中各个对话节点的表征向量ni分别进行注意力计算,以获得各对话节点的概率分布d,最后根据各对话节点的概率分布d确定目标对话节点。其中,注意力计算公式和概率分布确定公式如下所示:
αi=c·ni (1)
d=softmax(α) (2)
其中,在确定对话内容表征向量h时,可先确定输入的对话文本中各个词的词嵌入向量,然后将各个词的词嵌入向量输入双向LSTM,从而得到对话内容表征向量h:
h=[LSTM→(X),LSTM←(X)] (3)
其中,X表示对话内容中各个词的词嵌入向量。
其中,在确定话题表征向量t时,先确定话题名称词的词嵌入向量
以及话题类型的类型向量
然后将话题名称词的词嵌入向量与话题类型的类型向量拼接,拼接后的向量作为话题表征向量t,即:
需要说明的是,节点选择模型初始化时,所有对话节点的表征向量均初始化为相同的向量,以保证所有对话节点的选择概率均等。在后续对话的过程中,对选取的对话节点根据其执行情况进行奖惩,以优化节点选择模型的参数,从而使节点选择模型能更好地选择对话节点,以达到更好地预测用户感兴趣话题的效果。
可选的,节点选择模型的损失函数如下所示:
其中,loss即为节点选择模型的预测损失,对于选择的对话节点,若该对话节点正常运行,则y的取值为1,若该对话节点非正常运行,则y的取值为0。需要说明的是,对话节点正常运行至少存在以下两种情况,其一,选择的对话节点为不再进行话题转移的对话节点,其二,选择的对话节点在与用户对话的过程中期待的回复与用户的回复一致(对话节点在问出一个问题时,具有针对该问题的期待回复),比如,对话节点说:“你喜欢那个队伍?”然后等待用户回复,假设对话节点期待的回复为“A队伍”,用户回复的也是“A队伍”,则认为该对话节点正常运行,需要说明的是,对话节点期待的回复与用户的回复一致,说明对话节点选取的合适;对话节点非正常运行至少存在如下两种情况,其一,对话节点被隧道节点打断,比如,对话节点说了一句话后,等待用户回复,用户回复后,由于用户的回复符合某个隧道节点对应的匹配规则,则由隧道节点确定目标话题,这种情况即为对话节点被隧道节点打断,其二,选择的对话节点在与用户对话的过程中期待的回复与用户的回复不一致,比如,对话节点说:“你喜欢那个队伍?”然后等待用户回复,假设对话节点期待的回复为“A队伍”,而用户回复的不是“A队伍”,则认为该对话节点非正常运行,需要说明的时,对话节点期待的回复与用户的回复不一致,说明对话节点选取的不合适。
在一种可能的实现方式,每个对话节点执行完可返回执行状态,比如,对话节点说完一句话后等待用户回复,则返回wait,如果用户的回复与对话节点期待的回复一致,则返回break,如果用户的回复与对话节点期待的回复不一致,则返回trace,如果对话节点为不再进行话题转移的节点,则返回finish,其中,break和finish表示对话节点正常运行,trace表示对话节点非正常运行。基于此,上述损失函数中y的取值可根据选取出的对话节点所返回的状态确定。
第四实施例
上述实施例提到,目标对话节点从预先构建的多个对话节点中选取,由此可见,需要预先构建多个对话节点,本实施例对预先构建多个对话节点的过程进行介绍。
在一种可能的实现方式中,预先构建多个对话节点的过程可以包括:根据预先构建的话题知识图谱构建多个对话节点。
其中,话题知识图谱由若干个节点和节点之间的边组成,一个节点代表一个话题,通过一条边连接的两个节点所代表的话题相关。
构建话题知识图谱的过程可以包括:首先收集一个或多个不同领域(优选为多个不同领域)的实体,可选的,实体可从类百科数据中抽取;然后抽取实体的属性和实体的相关资源,其中,实体的相关资源可以为实体的新闻、评论、事实、名言等;最后根据实体与属性、实体与相关资源的关系建立话题知识图谱。在建立话题知识图谱时,每个实体作为一个节点,每条资源也作为一个节点,针对每个实体抽取的属性放到对应的节点上。
需要说明的是,话题知识图谱分领域建立,即分别构建每个领域的话题知识子图谱,然后再根据不同领域的话题之间的联系,将各个领域的话题知识子图谱联系起来,比如,a领域的实体与b领域的实体同名,基于同名关系,可将两个领域的知识子图谱建立起联系,再比如,实体为一个人,其既是篮球明星,又是某公司老板,基于该实体的属性可将体育领域与商业领域的知识子图谱联系起来,将两个不同领域建立联系的策略有多种,本实施例对此不做具体限定,通过将各个领域的话题知识子图谱联系起来,可以获得一个包含多个领域话题的话题知识图谱。另外,需要说明的是,话题知识图谱可以按预设的更新方式进行更新,比如,某个实体有了新的新闻,可以用该新的新闻替换旧的新闻,或者将该新的新闻作为一个新的话题添加至话题知识图谱中。
在上述内容的基础上,接下来进一步对“根据预先构建的话题知识图谱构建多个对话节点”的过程进行介绍。
请参阅图5,示出了“根据预先构建的话题知识图谱构建多个对话节点”的实现过程的流程示意图,可以包括:
步骤S501:对于话题知识图谱所涉及的每个领域,对该领域的话题知识子图谱中所包含的话题进行分类,以得到该领域所包含的话题类型。
示例性的,话题知识图谱所涉及的一个领域为体育领域,对体育领域下的话题进行分类可获得“球员”、“球队”、“比赛”这几种话题类型。
步骤S502:根据该领域所包含的话题类型之间可能存在的转移情况,确定该领域的对话节点的数量,并按确定出的数量构建该领域的对话节点。
以体育领域为例,假设体育领域包含三个话题类型,分别为“球员”、“球队”、“比赛”,则话题类型之间可能存在的转移情况包括:“球员”->“球员”、“球员”->“球队”、“球员”->“比赛”、“比赛”->“比赛”、“比赛”->“球员”、“比赛”->“球队”、“球队”->“球队”、“球队”->“球员”、“球队”->“比赛”,即共包括9种转移情况,基于此,可针对体育领域构建9个对话节点。
需要说明的是,在某些情况下(比如对话由机器人开始),还需要构建一类由空话题向某个话题转移的对话节点。
步骤S503:根据该领域所包含的话题类型之间可能存在的转移情况,为该领域的每个对话节点分配一话题类型对,并为该领域的每个对话节点设置由其对应的第一类型的话题向其对应的第二类型的话题转移的对话模板。
以上述的体育领域为例,由于该领域包括上述的9种转移情况,因此需要构建9个对话节点,针对每个对话节点,为其分配一话题类型对,比如,对于对话节点1,为其分配“球员”->“球员”,对于对话节点2,为其分配“球员”->“比赛”,对于对话节点3,为其分配“球员”->“比赛”,以此类推。
需要说明是,针对每个对话节点对应的话题类型对,都要预先编写对话模板,并将编写的对话模板设置在对应的对话节点上,当对话节点进行对话时,根据其上设置的对话模板生成对话内容。比如,一对话节点a对应的话题类型对为“球员”->“比赛”,则需要编写由“球员”类型的话题向“比赛”类型的话题进行转移的对话模板,并将该对话模板设置在对话节点a上。
另外,需要说明的是,一个对话节点对应的话题类型对中的两个话题类型可以相同,也可以不同,若该对话节点对应的话题类型对中的两个话题类型相同,说明该对话节点不进行话题转移,其对应的对话模型为介绍型的对话模板,相应的,其生成的对话为介绍型对话,可以介绍某个实体的属性或者相关资源,比如,“某某技术出众、速度惊人,他的身形非常矫健,他身高185cm,体重80kg”,若该对话节点对应的话题类型对中的两个话题类型不同,则说明该对话节点会进行话题转移,其对应的对话模板为话题转移型的对话模板,相应的,其生成的对话为话题转移型对话,比如“罗某某的球队XX俱乐部中的明星可是太多了,张某某也是很厉害的球员,你认识他吗”,该对话首先谈到了“罗某某”的俱乐部,又谈到了俱乐部中的其他成员,从而让话题从“罗某某”平滑切换到“张某某”。
经由上述过程构建的对话节点具有了话题转移功能,利用这些对话节点与用户对话能够不断引起用户新的兴趣点,从而能够提高与用户交互的轮次。
第五实施例
需要说明的是,为了避免聊回曾经聊过的话题,对话通常单线进行,有鉴于此,有些话题聊完之后可能难以转移到新的话题上,比如,对话从某个球员聊到该球员的一个新闻上,便无法再向新话题转移,也就是说对话节点中会有一些不再向新话题转移的对话节点,这意味着对话不再继续,也就是说,若进行本轮对话的目标对话节点为不再向新话题转移的对话节点,那么本轮对话完成后,对话将结束,为了能够延续对话,进而提升用户的聊天体验,本实施例提出了如下方案:
若目标对话节点为预设的不再进行话题转移的对话节点,则利用预先构建的第一类拓展节点以及历史对话,确定下一轮对话的目标话题。
其中,历史对话为步骤S101和步骤S102中提及的“本轮对话”以及“本轮对话”之前的对话。可以理解的是,在确定新一轮对话的目标话题时,“本轮对话”已成为历史对话。
可以理解的时,用户在与聊天机器人对话时,通常不会在不同领域的话题间进行切换,即对话内容通常属于一个领域,基于此,本申请预先构建第一类拓展节点,利用第一类拓展节点在历史对话所涉及的领域中发现目标话题。
具体的,利用预先构建的第一类拓展节点以及历史对话,确定下一轮对话的目标话题的实现方式有多种:在一种可能的实现方式中,可利用第一类拓展节点,从历史对话中获取历史目标话题,作为下一轮对话的目标话题;在另一种可能的实现方式中,可利用第一类拓展节点,从历史对话中获取历史目标话题,并获取与该历史目标话题有关的话题,作为下一轮对话的目标话题;在再一种可能的实现方式中,可利用第一类拓展节点,从历史对话所包含的实体中确定未曾作为目标话题的实体,作为下一轮对话的目标话题。
需要说明的是,上述第一种实现方式是将历史目标话题作为下一轮对话的目标话题,从话题知识图谱中找与目标历史话题相关且未聊过的内容,比如,历史话题为某个球员,在历史对话中聊过了该球员的a信息,但并未聊过该球员的b信息,则本轮对话可以聊该球员的b信息,优选的,可将“本轮对话”的目标话题作为下一轮对话的目标话题,进而根据该目标话题的话题类型从未选取过的对话节点中选取进行下一轮对话的目标节点,比如,“本轮对话”的目标话题为某个球员,则可将该话题作为下一轮对话的目标话题,从未选取过的对话节点中选取对应第一类型为“球员”的对话节点进行下一轮的对话;上述第二种实现方式是将与历史目标话题有关的话题作为目标话题,比如,历史目标话题为某个球员,与该球员有关的话题是某个球队,且未将该球队作为目标话题聊过,则将该球队作为目标话题,从未选取过的对话节点中选取对应的第一类型为“球队”的对话节点进行下一轮的对话;上述的第三种实现方式是将历史对话的内容中未曾作为目标话题的实体作为目标话题,比如历史目标话题为某个球队,在聊该球队的时候,提到了该球队中的某个球员,且未将该球员作为目标话题聊过,则将该球员作为目标话题,从未选取过的对话节点中选取对应的第一类型为“球员”的对话节点进行下一轮的对话。
可选的,可设置三个第一类拓展节点,利用第一个第一类拓展节点按上述第一种实现方式确定目标话题,利用第二个第一类拓展节点按上述第二种实现方式确定目标话题,利用第三个第一类拓展节点按上述第三种实现方式确定目标话题。在这种情况下,由于有三个第一类拓展节点,因此需要从这三个第一类拓展节点中选取一个节点确定下一轮对话的目标话题,可选的,可利用上述提及的节点选择模型进行拓展节点的选取,其选取过程与上述选取对话节点的过程类似,本实施例在此不做赘述。
在某些时候,可能会存在通过第一类拓展节点发现不到话题的情况,比如,历史目标话题相关的所有信息、历史话题相关的所有话题全部都聊过了,为了能够继续延续对话,本实施例提出了如下方案:
若利用第一类拓展节点无法获得下一轮对话的目标话题,则利用预先构建的第二类拓展节点,按预设的跨领域规则从预先构建的话题知识图谱中查找其他领域的话题,查找到的话题作为下一轮对话的目标话题。
其中,跨领域规则可以但不限定为同名关系。以跨领域规则为同名关系为例:假设历史对话涉及的领域为体育领域,某一轮历史对话的目标话题为运动员“李x”,则第二类拓展节点在话题知识图谱中,通过同名关系发现在娱乐领域有演员“李x”,此时,将娱乐领域的演员“李x”作为下一轮对话的目标话题,进而,可利用与同名关系这一跨领域规则对应的跨领域对话模板生成对话信息,比如可生成“刚才说李x,让我想起来在娱乐领域也有一个李x,她是个女演员。”
需要说明的是,第二类拓展节点可以为一个也可以为多个,每个第二类拓展节点对应一种跨领域规则,且每个第二类拓展节点上可设置与其对应的跨领域规则对应的跨领域对话模板。若第二类拓展节点为一个,则直接利用该第二类拓展节点跨领域发现话题,进而根据发现的话题和对应的跨领域对话模板生成对话信息,若第二类拓展节点为多个,则同样可采用上述的节点选择模型从多个第二类拓展节点中选择一个拓展节点,进而利用选择出的第二类拓展节点跨领域发现话题,进而根据发现的话题和对应的跨领域对话模板生成对话信息。
在某些情况下,可能存在利用跨领域规则也无法发现话题的情况,为了能够进一步继续延续对话,本实施例提供了如下方案:
若利用第二类拓展节点无法获得下一轮对话的目标话题,则利用预先构建的第三类拓展节点,从预先针对历史对话所涉及的领域构建的话题列表中选取一个话题,作为下一轮对话的目标话题。
为了能够延续话题,本申请针对话题知识图谱所涉及的每个领域构建话题列表,话题列表中的话题优选为近期比较热门的话题,优选的,话题列表中的话题每隔一段时间进行一次更新,以保证话题的热度。
示例性的,历史对话涉及的领域为体育领域,则利用第三类拓展节点从体育领域对应的话题列表中选取一个话题,作为下一轮对话的目标话题。从话题列表中选取话题的方式有多种,比如,随机选取,再比如,根据话题列表中话题的历史选取情况进行选取,本实施例对于话题的选取方式不做具体限定。
需要说明的时,对于第三类拓展节点,可为该节点设置由“空话题”转移到某个话题的对话模板,比如,对于体育领域,可设置“空话题”转移到“球员”的对话模板,假设第三类拓展节点从话题列表中选取的是某个球员“xx”,则其根据“空话题”转移到“球员”的对话模板可生成对话信息“说了这么多了。我来给你介绍一下我最喜欢的球员吧。xx你认识吗?”。
第六实施例
上述的五个实施例详细介绍了本申请提供的对话管理方法,在上述实施例提供的对话管理方法的基础上,本实施例结合图6,以体育领域的对话为例,对本申请提供的对话管理方法进一步进行说明:
假设本轮对话不是首轮对话,且上一轮对话的对话节点node1在执行时,给用户回复了“你喜欢那个队伍?”,并返回wait和空话题;
假设用户回复“我喜欢xx队”;
对话回到聊天机器人,由图6可知,当获得用户的回复时,首先将用户的回复提供给各隧道节点,由各隧道节点判断用户的回复是否符合其对应的匹配规则,由于用户的回复均不符合各个隧道节点分别对应的匹配规则,且node1在等待,因此,将node1作为当前的对话节点;
利用node1判断用户的回复与其期待的回复是否一致,若一致,则利用node1获取用户回复内容中的实体,由于用户对话内容中的实体为“xx队”,因此,利用node1构造一个“队伍”类型的话题“xx队”,node1构造好“队伍”类型的话题“xx队”后,会返回break和“队伍”类型的话题“xx队”;
接着,根据node1返回的话题类型“队伍”从未选取过的对话节点中选取对应的第一类型为“队伍”的对话节点,作为目标节点,这里假设目标节点为node2,将队伍类型的话题“xx队”提供给node2;
利用node2生成对话信息,假设node2根据其对应的对话模板生成对话信息“嗯嗯,我也喜欢xx队,尤其是里面的yy(“xx队”的一个队员),你呢?”,node2生成对话信息后,返回wait,等待用户回复;
假设用户回复“我其实更喜欢梅西”;
对话回到聊天机器人,此时,同样需要将用户的回复提供给各隧道节点,由各隧道节点判断用户的回复是否符合其对应的匹配规则,由于用户的回复均不符合各个隧道节点分别对应的匹配规则,且node2在等待,因此,将node2作为当前的对话节点;
利用node2判断用户的回复与其期待的回复是否一致,若一致,则利用node2获取用户回复内容中的实体,由于用户对话内容中的实体为“yy”,因此,利用node1构造一个“运动员”类型的话题“yy”,node2构造好“运动员”类型的话题“yy”后,会返回break和“运动员”类型的话题“yy”;
根据node2返回的话题类型“运动员”,从未选取过的对话节点中选取对应的第一类型为“运动员”的对话节点,作为目标节点,这里假设目标节点为node2,将“运动员”类型的话题“yy”提供给node3;
利用node3生成对话信息,node3根据其对应的模板和话题“yy”生成对话信息,假设node3生成对话信息“我最近听说梅西的一个新闻哦。xxxxxxx(新闻内容)”,然后返回finish;
node3返回finish,表示没有话题可以转移,此时,利用第一类拓展节点explore1从体育领域发现话题,假设explore1根据历史对话中发现了“zz”(队员),这一话题,则生成回复信息“刚才说到zz了,我也很了解他呢,要不说说zz吧。”并返回wait,等待用户回复;
假设用户回复“好的”;
对话回到聊天机器人,同样的,首先将用户的回复提供给各隧道节点,由各隧道节点判断用户的回复是否符合其对应的匹配规则,由于用户的回复均不符合各个隧道节点分别对应的匹配规则,且explore1在等待,因此,将explore1作为当前的对话节点;
利用explore1判断用户的回复与其期待的回复是否一致,若一致,则利用explore1构造一个“运动员”类型的话题“zz”,然后返回break和“运动员”类型的话题“zz”;
根据explore1返回的话题类型“运动员”,从未选取过的对话节点中选取对应的第一类型为“运动员”的对话节点,作为目标节点,这里假设目标节点为node4,将“运动员”类型的话题“yy”提供给node4;
…….
对话按上述过程不断进行。
上述第一实施例至第六实施例提供的对话管理方法,在用户对对话内容有明确意向时,可在用户的主导下进行对话,在用户对对话内容没有明确意向时,能够引导用户进行对话,并且,在对话过程中还能实现话题的切换,从而能够不断引起用户的聊天兴趣,这种对话管理方式使得对话方式和对话内容比较丰富,能够提高用户的聊天兴趣,从而提升用户的聊天体验。
第七实施例
本实施例提供了一种与上述实施例提供的对话管理方法对应的对话管理装置,请参阅图7,示出了该装置的结构示意图,可以包括:对话主导方确定模块701、目标话题信息确定模块702和回应信息生成模块703。
对话主导方确定模块701,用于在获得用户的对话内容后,根据所述用户的对话内容确定本轮对话是否由用户主导。
目标话题信息确定模块702,用于当本轮对话由用户主导时,则根据所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型;当本轮对话不由用户主导时,根据所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型。
回应信息生成模块703,用于根据目标话题和该目标话题的话题类型,生成针对所述用户的对话内容的回应信息,其中,所述回应信息为介绍所述目标话题的信息,或者,由所述目标话题向另一话题转移的信息。
可选的,对话主导方确定模块701,具体用于确定所述用户的对话内容是否符合预设的匹配规则集合中的一种匹配规则,其中,所述匹配规则集合根据表征对话由用户主导的对话内容设定;若所述用户的对话内容符合所述匹配规则集合中的一种匹配规则,则确定本轮对话由用户主导。
可选的,所述匹配规则集合中的每种匹配规则对应一预先构建的隧道节点,所述隧道节点为能够确定用户的对话内容是否符合自身对应的匹配规则的节点,则对话主导方确定模块701在确定所述用户的对话内容是否符合预设的匹配规则集合中的一种匹配规则时,具体用于利用与每种匹配规则对应的隧道节点,确定所述用户的对话内容是否符合对应的匹配规则。
相应的,目标话题信息确定模块702,在根据所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型时,具体用于将所述用户的对话内容符合的匹配规则所对应的隧道节点作为目标隧道节点,利用所述目标隧道节点和所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型。
可选的,目标话题信息确定模块702,在根据所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型时,具体用于若本轮对话为首轮对话,则从预先构建的多个对话节点中随机选取一个对话节点,利用选取出的对话节点和所述用户的对话内容中所包含的实体,确定目标话题和该目标话题对应的话题类型;若本轮对话不为首轮对话,且有对话节点在等待用户的回复,则利用该对话节点和所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型。
可选的,回应信息生成模块703可以包括:节点确定子模块和回应信息生成子模块。
节点确定子模块,用于根据所述目标话题的话题类型,从预先构建的多个对话节点中选取一未选取过的对话节点,作为目标对话节点;
回应信息生成子模块,用于利用所述目标对话节点,生成针对所述用户的对话内容的回应信息;
其中,每个对话节点对应有包括第一类型和第二类型的话题类型对,且设置有从其对应的第一类型的话题转移到其对应的第二类型的话题的对话模板;不同对话节点对应的话题类型对不同,同一对话节点对应的第一类型与第二类型相同或不同。
其中,所述目标对话节点对应的第一类型与所述目标话题的话题类型相同;所述回应信息根据所述目标话题和所述目标对话节点上设置的对话模板生成。
可选的,本实施例提供的对话管理装置还包括:节点构建模块。
节点构建模块,用于根据预先构建的话题知识图谱构建多个对话节点;
其中,所述话题知识图谱由若干个节点和节点之间的边组成,一个节点代表一个话题,通过一条边连接的两个节点所代表的话题相关;所述话题知识图谱由至少一个领域的话题知识子图谱组成,每个领域的话题知识子图谱中的每个节点代表该领域的一个话题。
可选的,节点构建模块包括:话题分类子模块和节点构建子模块。
话题分类子模块,用于对于所述话题知识图谱所涉及的每个领域,对该领域的话题知识子图谱中所包含的话题进行分类,以得到该领域所包含的话题类型。
节点构建子模块,用于根据该领域所包含的话题类型之间可能存在的转移情况,确定该领域的对话节点的数量,并按确定出的数量构建该领域的对话节点;根据该领域所包含的话题类型之间可能存在的转移情况,为该领域的每个对话节点分配一话题类型对,并为该领域的每个对话节点设置由其对应的第一类型的话题向其对应的第二类型的话题转移的对话模板。
可选的,上述的节点确定子模块包括:候选对话节点确定子模块和目标对话节点确定子模块。
候选对话节点确定子模块,用于根据所述目标话题的话题类型,从所述多个对话节点中获取对应的第一类型与所述目标话题的话题类型一致且未获取过的对话节点,由获取的对话节点组成候选对话节点集合。
目标对话节点确定子模块,用于根据所述本轮对话之前的至少一轮对话、所述目标话题、所述用户的标识,从所述候选对话节点集合中确定目标对话节点。
可选的,本实施例提供的对话管理装置还包括:第一话题拓展模块。
第一话题拓展模块,用于当所述目标对话节点为预设的不再进行话题转移的节点时,利用预先构建的第一类拓展节点以及历史对话,确定下一轮对话的目标话题。其中,所述历史对话为所述本轮对话以及所述本轮对话之前的对话,所述第一类拓展节点用于在所述历史对话所涉及的领域中发现目标话题。
可选的,第一话题拓展模块,具体用于利用所述第一类拓展节点,从所述历史对话中获取历史目标话题,作为下一轮对话的目标话题;或者,利用所述第一类拓展节点,从历史对话中获取历史目标话题,并获取与该历史目标话题有关的话题,作为下一轮对话的目标话题;或者,利用所述第一类拓展节点,从历史对话所包含的实体中确定未曾作为目标话题的实体,作为下一轮对话的目标话题。
可选的,本实施例提供的对话管理装置还包括:第二话题拓展模块。
第二话题拓展模块,用于当利用所述第一类拓展节点无法获得下一轮对话的目标话题时,利用预先构建的第二类拓展节点,按预设的跨领域规则从预先构建的话题知识图谱中查找其它领域的话题,查找到的话题作为下一轮对话的目标话题。其中,所述话题知识图谱由多个不同领域的话题知识子图谱组成,每个领域的话题知识子图谱由该领域的多个话题组成。
可选的,本实施例提供的对话管理装置还包括:第三话题拓展模块。
第三话题拓展模块,用于当利用所述第二类拓展节点无法获得下一轮对话的目标话题时,利用预先构建的第三类拓展节点,从预先针对历史对话所涉及的领域构建的话题列表中选取一个话题,作为下一轮对话的目标话题。
本申请实施例提供的对话管理装置,在用户对对话内容有明确意向时,在用户的主导下进行对话,在用户对对话内容没有明确意向时,能够引导用户进行对话,并且,在对话过程中还能实现话题的切换,这种对话管理方式使得对话方式和对话内容比较丰富,能够提高用户的聊天兴趣,从而提升用户的聊天体验。
第八实施例
本实施例还提供了一种对话管理设备,请参阅图8,示出了该对话管理设备的结构示意图,该设备可以包括:至少一个处理器801,至少一个通信接口802,至少一个存储器803和至少一个通信总线804;
在本申请实施例中,处理器801、通信接口802、存储器803、通信总线804的数量为至少一个,且处理器801、通信接口802、存储器803通过通信总线804完成相互间的通信;
处理器801可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器803可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
在获得用户的对话内容后,根据所述用户的对话内容确定本轮对话是否由用户主导;
若本轮对话由用户主导,则根据所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型;若本轮对话不由用户主导,则根据所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型;
根据目标话题和该目标话题的话题类型,生成针对所述用户的对话内容的回应信息,其中,所述回应信息为介绍所述目标话题的信息,或者,由所述目标话题向另一话题转移的信息。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
第九实施例
本实施例提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的程序,所述程序用于:
在获得用户的对话内容后,根据所述用户的对话内容确定本轮对话是否由用户主导;
若本轮对话由用户主导,则根据所述用户的对话内容,获取符合用户意图的目标话题和该目标话题的话题类型;若本轮对话不由用户主导,则根据所述用户的对话内容中所包含的实体,确定目标话题和该目标话题的话题类型;
根据目标话题和该目标话题的话题类型,生成针对所述用户的对话内容的回应信息,其中,所述回应信息为介绍所述目标话题的信息,或者,由所述目标话题向另一话题转移的信息。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。