具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本发明的实施例以及实施例的具体特征是对本发明实施例技术方案的详细说明,而非对本发明说明书技术方案的限定,在不冲突的情况下,本发明的实施例以及实施例的技术特征可以相互结合。
1、语音助手系统
图1示出了语音助手系统的框图,所述语音助手系统可以在独立的设备上实现,也可以跨多个设备来实现。在某些实施例中,所述语音助手系统的部分模块、单元或功能属于服务器,其余部分模块、单元或功能属于终端,所述终端可通过一个或多个网络与所述服务器进行通信。在某些实施例中,语音助手系统的部分模块,例如处理模块102、交互引擎112,可以既属于服务器,也属于终端,其余部分模块属于服务器或终端中的一者。
所述语音助手系统主要包括:人机交互界面101,处理模块102,数据库103等。其中,处理模块包含n个交互引擎112,n为大于等于1的正整数,每个交互引擎112可以包含语义理解模块201,对话管理和控制模块202,对话生成模块203,命令执行模块204。其中,处理模块102与人机交互界面101相互连接,可以通过人机交互界面接收用户输入的数据,以及通过人机交互界面向用户输出交互数据,例如,反馈给用户的对话数据、任务执行过程及结果。
在某些实施例中,交互引擎112可以包括一个交互主引擎和/或至少一个交互子引擎。其中,交互主引擎为语音助手系统的默认引擎。服务器上的交互子引擎可以是语音助手系统自有,也可以由终端在本地训练生成并通过专有接口上传,终端中的交互子引擎可以是语音助手系统自有,也可以由终端本地训练生成并加载在语音助手系统中,还可以是终端从服务器下载并加载在语音助手系统中。
在某些实施例中,每个交互引擎(交互主引擎、交互子引擎)能够执行至少一种任务,即每个交互引擎可以与至少一个任务相关联,不同的交互子引擎所能够执行的任务可能相同或不同。交互引擎针对与其相关联的每一个任务定义了至少一个槽位。终端可以根据用户需要从服务器下载一个或多个交互子引擎,并加载在终端的语音助手系统中,例如,天气交互子引擎可执行的任务为天气查询,其针对天气查询任务所定义的槽位为城市和日期,用户可以下载天气交互子引擎,并与天气交互子引擎进行交互以查询城市天气预报,音乐交互子引擎可执行的任务为音乐播放,针对音乐播放任务所定义的槽位包括歌手姓名和歌曲名称,用户可以下载音乐交互子引擎,并与音乐交互子引擎进行交互以按照用户要求播放音乐。
交互引擎针对其关联的任务定义的槽位至少包括基本槽位,还可以包括扩展槽位,例如,B1交互引擎和B2交互引擎均与天气查询任务相关联,B1交互引擎针对任务天气查询任务定义的槽位包括城市和日期,B2交互引擎针对天气查询任务定义的槽位包括城市、日期和时间,其中,城市和日期槽位为基本槽位,时间槽位为扩展槽位。
用户可通过语音或者文字等方式与语音助手系统进行交互,语音助手系统根据用户的指令确定用户意图(即确定任务),确定与该用户意图相关联的各个槽位相应的关键知识数据,并将所述关键知识数据填充到相应的槽位中。随后,语音助手系统基于填充好的一个或多个槽位执行该任务。
在某些实施例中,交互主引擎只基于用户指令确定能够处理该用户指令的交互子引擎,其自身不执行具体的任务。因此,在上述过程中确定用户意图可以由语音助手系统中的交互主引擎来完成,交互主引擎还用于基于确定出的用户意图选择一个或多个交互子引擎来处理上述用户指令,上述过程中的槽位填充和任务执行由交互主引擎确定出的一个或多个交互子引擎来执行。
2、交互引擎簇
一个交互引擎簇中包括至少两个交互引擎。在某些实施例中,至少两个交互引擎为至少两个交互子引擎。其中,交互引擎簇中的任意一个交互引擎相关联的任务与所述交互引擎簇中的其他交互引擎相关联的任务不同,交互引擎簇中的任意一个交互引擎相关联的任务与所述交互引擎簇中的至少一个其他交互引擎相关联的任务具有至少一个相同或者相应的槽位,或者,交互引擎簇中的任意一个交互引擎相关联的任务中属于该交互引擎簇的任务与所述交互引擎簇中的其他交互引擎相关联的任务中属于该交互引擎簇的任务不同,交互引擎簇中的任意一个交互引擎相关联的任务中属于该交互引擎簇的任务与所述交互引擎簇中的其他交互引擎相关联的任务中属于该交互引擎簇的任务具有至少一个相同或者相应的槽位
其中,相同的槽位是指槽位名称相同且在特定对话上下文中应当填充相同关键知识数据的槽位,相应的槽位是指槽位名称不同但在特定对话上下文中应当填充相同关键知识数据的槽位。
一个交互引擎簇的示例为出行交互引擎簇,其包括A1交互引擎和B1交互引擎,A1交互引擎能够执行的任务为机票预定,该任务的槽位包括出发地、目的地和日期,其中,目的地为必填槽位,出发地为选填槽位,对于选填槽位而言,当用户指令中不包括对应的关键知识数据时,将采用默认值填充,出发地槽位的默认值为用户当前所在城市如北京,根据A1交互引擎的不同设置,日期槽位可以为必填槽位或选填槽位,当其为必填槽位,且用户指令中不包括相应的关键知识数据时,A1交互引擎可返回澄清性提问“您想预定哪天的机票”。B1交互引擎能够执行的任务为天气查询,该任务的槽位包括城市和日期。假设用户在预定机票时更为关心出行当天目的地的天气情况,则A1交互引擎的日期槽位与B1交互引擎的日期槽位为相同槽位,A1交互引擎的目的地槽位与B1交互引擎的城市槽位为相应槽位,在本示例中,不同交互引擎的相同槽位或相应槽位的对应关系为一对一。但上述假设不应当视为对本发明的限定,用户也可能关心出行当天出发地和目的地的天气,此时,A1交互引擎的日期槽位与B1交互引擎的日期槽位为相同槽位,A1交互引擎的目的地槽位与B1交互引擎的城市槽位为相应槽位,同时,A1交互引擎的出发地槽位与B1交互引擎的城市槽位也为相应槽位,在本示例中,不同交互引擎的相同槽位的对应关系为一对一,相应槽位的对应关系为多对一。
交互引擎簇中的交互引擎可以处于未激活、激活、挂起等状态。
终端可以从服务器下载交互引擎簇的属性信息,并根据下载的交互引擎簇的属性信息,在本地构建交互引擎簇,并将构建得到的交互引擎簇的属性信息同步给用户的其他终端。
终端也可以根据用户与语音助手系统的历史对话记录在本地聚合生成交互引擎簇,并将生成的交互引擎簇的属性信息同步给用户的其他终端,和/或,将其上传到服务器供其他用户下载。
交互引擎簇的属性信息包括以下至少之一:所述交互引擎簇的簇名称、所述交互引擎簇所包括的至少两个交互引擎的名称、所述至少两个交互引擎簇所能够执行(或相关联)的任务所具有的相同或相应的槽位。表1示出了一个交互引擎簇的属性信息。
表1交互引擎簇的属性信息
所述交互引擎簇的属性信息中还可以包括交互引擎相关联的任务,例如,出行交互引擎簇的属性信息还可以如表2所述。
表2交互引擎簇的属性信息
在交互引擎相关联的任务为多个、而仅有其中部分属于某个交互引擎簇时,在其属性信息中指示上述多个任务中的哪个或哪几个属于所述交互引擎簇。例如,A1交互引擎相关联的任务包括机票预订和航空新闻,其中,机票预定属于出行交互引擎簇,B1交互引擎相关联的任务包括天气查询和闹钟设定,其中,天气查询属于出行交互引擎簇,此时,出行交互引擎簇的属性信息也如表2所示。
在使用交互引擎簇时,所述交互引擎簇所包括的交互引擎仅执行其相关联的任务中属于所述交互引擎簇的任务,不属于所述交互引擎簇的任务不会被执行。例如,在上述示例中,在使用出行交互引擎簇时,A1交互引擎相关联的机票预订任务和B1交互引擎相关联的天气查询任务被执行,A1交互引擎相关联的航空新闻任务和B1交互引擎相关联的闹钟设定任务并不会被执行。
在使用交互引擎簇时,若交互引擎簇中的任意一个交互引擎(下文用第一交互引擎来指代)被激活,例如,所述第一交互引擎接收到用户指令,则所述第一交互引擎被激活,或者,交互主引擎基于用户指令确定用户意图,基于所述用户意图选择能够处理上述用户意图的交互子引擎,并将上述用户指令发送给上述交互子引擎,此时,所述交互子引擎被激活,则所述语音助手系统激活所述交互引擎簇中的其他交互引擎(下文用至少一个第二交互引擎来指代),且根据交互引擎簇中的第一交互引擎相关联的第一任务的第一槽位所填充的关键知识数据对至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或第二槽位进行即时同步,所述至少一个第二交互引擎相关联的至少一个第二任务具有所述第一槽位和/或与所述第一槽位相应的第二槽位,将交互引擎簇中的所有或部分交互引擎获取任务执行结果并同时提供给用户。其中,第一交互引擎相关联的第一任务和至少一个第二交互引擎相关联的至少一个第二任务属于所述交互引擎簇。
上述即时同步具体为,应用户请求,例如,基于用户的新建任务指令,当交互引擎簇中的第一交互引擎相关联的第一任务的第一槽位从未填充变化为填充第一关键知识数据时,即时将第一关键知识数据填充到第二交互引擎相关联的第二任务的第一槽位和/或第二槽位中,和/或,应用户请求,例如,基于用户的簇任务修改指令,当交互引擎簇中的第一交互引擎相关联的第一任务的第一槽位所填充的关键知识数据从第一关键知识数据变化为第二关键知识数据时,即时将第二交互引擎相关联的第二任务的第一槽位和/或第二槽位填充的关键知识数据从第一关键知识数据修改为第二关键知识数据。
上述即时同步具体为,应用户请求,例如,基于用户的新建任务指令,当交互引擎簇中的第一交互引擎执行的第一任务的第一槽位从未填充变化为填充第一关键知识数据时,即时将第一关键知识数据填充到第二交互引擎相关联的第二任务的第一槽位和/或第二槽位中,当第一交互引擎与第二交互引擎的相应槽位的对应关系为多对一时,所述填充为追加填充,和/或,应用户请求,例如,基于用户的簇任务修改指令,当交互引擎簇中的第一交互引擎相关联的第一任务的第一槽位所填充的关键知识数据从第一关键知识数据变化为第二关键知识数据时,若第一交互引擎与第二交互引擎的相应槽位的对应关系为一对一,即时将第二交互引擎相关联的第二任务的第一槽位和/或第二槽位填充的关键知识数据从第一关键知识数据修改为第二关键知识数据,所述修改为全部修改,或者,若第一交互引擎与第二交互引擎的相应槽位的对应关系为多对一,即时将第二交互引擎相关联的第二任务的第一槽位和/或第二槽位填充的关键知识数据中的第一关键知识数据修改为第二关键知识数据,所述修改为部分修改。
例如,当第一交互引擎与第二交互引擎的相应槽位的对应关系为一对一时,以A1交互引擎的日期槽位与B1交互引擎的日期槽位为相同槽位、A1交互引擎的目的地槽位与B1交互引擎的城市槽位为相应槽位为例,假设用户的新建任务指令为“预定明天到上海的机票”,语音助手系统确定第一交互引擎为A1交互引擎,将所述指令发送给A1交互引擎,A1交互引擎基于所述指令填充机票预定任务的槽位,将出发地槽位填充为用户当前所在地北京,将目的地槽位填充为上海,将日期槽位填充为8月24日,此时,即时同步的过程是将第一关键知识数据上海填充到B1交互引擎相关联的天气查询任务的城市槽位中,将第一关键数据8月24日填充到B1交互引擎相关联的天气查询任务的日期槽位中,随后,将A1交互引擎和B1交互引擎的任务执行结果同时提供给用户。用户基于任务执行结果,发出簇任务修改指令“还是去成都吧”,此时,A1交互引擎将机票预订任务的目的地槽位填充的关键知识数据从第一关键知识数据上海修改为第二关键知识数据成都,即时同步的过程是将B1交互引擎相关联的天气查询任务的城市槽位填充的关键知识数据从第一关键知识数据上海修改为第二关键知识数据成都,该修改为全部修改。随后,再次将A1交互引擎和B1交互引擎的任务执行结果同时提供给用户。
而当第一交互引擎与第二交互引擎的相应槽位的对应关系为多对一时,以A1交互引擎的日期槽位与B1交互引擎的日期槽位为相同槽位、A1交互引擎的目的地槽位与B1交互引擎的城市槽位为相应槽位、A1交互引擎的出发地槽位与B1交互引擎的城市槽位也为相应槽位为例,假设用户的新建任务指令为“预定明天到上海的机票”,语音助手系统确定第一交互引擎为A1交互引擎,将所述指令发送给A1交互引擎,A1交互引擎基于所述指令填充机票预定任务的槽位,将出发地槽位填充为用户当前所在地北京,将目的地槽位填充为上海,将日期槽位填充为8月24日,此时,即时同步的过程是将第一关键知识数据北京填充到B1交互引擎相关联的天气查询任务的城市槽位中,将第一关键知识数据上海追加填充到B1交互引擎相关联的天气查询任务的城市槽位中,即城市槽位中填充的关键知识数据为北京、上海,将第一关键数据8月24日填充到B1交互引擎相关联的天气查询任务的日期槽位中,随后,将A1交互引擎和B1交互引擎的任务执行结果同时提供给用户。用户基于任务执行结果,发出簇任务修改指令“还是去成都吧”,此时,A1交互引擎将机票预订任务的目的地槽位填充的关键知识数据从第一关键知识数据上海修改为第二关键知识数据成都,即时同步的过程是将B1交互引擎相关联的天气查询任务的城市槽位填充的关键知识数据中的第一关键知识数据上海修改为第二关键知识数据成都,即采用部分修改的方式,修改后城市槽位中填充的关键知识数据为北京、成都。随后,再次将A1交互引擎和B1交互引擎的任务执行结果同时提供给用户。
3、簇任务工作模式
语音助手系统具有两种工作模式,分别为单任务工作模式和簇任务工作模式。其中,语音助手系统基于用户指令确定第一任务如机票预定,进而确定第一交互引擎如A1交互引擎,在单任务工作模式下,执行所述第一任务,在簇任务工作模式下,语音助手系统所包括的交互引擎簇均处于可用状态,当第一交互引擎属于其中至少一个交互引擎簇时,基于所述至少一个交互引擎簇处理所述指令,即语音助手系统不仅执行所述第一任务,还执行属于所述交互引擎簇的其他任务,例如表2中的天气查询任务。
图2示出了基于交互引擎簇进行语音交互的方法,用于具有语音助手系统的终端,包括如下步骤:
步骤201,获取用户的指令;
步骤202,基于所述指令确定第一任务,基于所述第一任务确定第一交互引擎,将所述指令发送给所述第一交互引擎,以使得所述第一交互引擎基于所述指令对所述第一任务的槽位进行填充;其中,所述第一交互引擎与所述第一任务相关联;
步骤203,判断语音助手系统是否处于簇任务工作模式,如果是,执行步骤205a、205b、205c和206,如果否,执行步骤204;
步骤204,从所述第一交互引擎接收第一任务执行结果,将所述第一任务执行结果提供给用户;
步骤205a,确定所述第一交互引擎所属的交互引擎簇,所述交互引擎簇包括所述第一交互引擎和至少一个第二交互引擎;
步骤205b,激活所述至少一个第二交互引擎;
步骤205c,基于所述第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或与第一槽位对应的第二槽位进行即时同步;
步骤206,从所述第一交互引擎接收第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
上述方法可以由语音助手系统来执行,也可以由语音助手系统所包括的装置来执行。
所述终端的语音助手系统包括至少一个交互引擎簇,具体的,所述语音助手系统中存储了至少一个交互引擎簇的属性信息。语音助手系统可以在本地聚合生成所述交互引擎簇,如后文中的方法300和/或400,也可以从服务器下载交互引擎簇的属性信息,并在本地构建形成交互引擎簇,如后文中的方法500和/或600。
在步骤202中将所述指令发送给所述第一交互引擎,即激活了所述第一交互引擎。
在步骤205b中,语音助手系统可以通过向所述至少一个第二交互引擎发送激活消息来激活所述至少一个第二交互引擎。
第一交互引擎相关联的第一任务和至少一个第二交互引擎相关联的至少一个第二任务属于所述交互引擎簇。
优选的,若在步骤205a中,所述第一交互引擎不属于任何交互引擎簇,则执行步骤204。
优选的,在步骤205a中,通过查找的方式,确定所述第一交互引擎所属的交互引擎簇,例如,在终端或语音助手系统中的交互引擎簇的属性信息中查找第一交互引擎的名称,如果查找到,则对应的交互引擎簇为第一交互引擎所述的交互引擎簇,执行步骤205b,如果没有查找到,则第一交互引擎不属于任务交互引擎簇,此时,执行步骤204。
优选的,在步骤205a中,确定所述第一交互引擎和第一任务所属的交互引擎簇。例如,用户发出的指令为“预定明天到上海的机票”,第一交互引擎为A1交互引擎,第一任务为机票预定,则在步骤205a中确定得到的是A1交互引擎和机票预定任务所属的出行交互引擎簇,而不会确定出A1交互引擎和航空新闻任务所属的其他交互引擎簇。
优选的,在步骤205a中,通过确定所述第一任务所属的交互引擎簇,例如,在终端或语音助手系统中的交互引擎簇的属性信息中查找第一任务,来确定所述第一交互引擎所属的交互引擎簇。
在某些实施例中,所述交互引擎簇所包括的至少两个交互引擎中的其中一个或多个为主导交互引擎,其余交互引擎为从交互引擎,在语音助手系统处于簇任务工作模式时,若第一交互引擎为其所属的交互引擎簇的主导交互引擎,则在激活第一交互引擎时,还激活该交互引擎簇中其他交互引擎,并进行交互引擎之间槽位的即时同步,若第一交互引擎不是其所属的交互引擎簇的主导交互引擎,仅激活所述第一交互引擎。例如,在包括A1交互引擎和B1交互引擎的交互引擎簇中,A1交互引擎为主导交互引擎,当用户发出的指令为“预定明天到上海的机票”时,第一交互引擎为A1交互引擎,其是主导交互引擎,因此,A1交互引擎和B1交互引擎均会被激活,机票预订和天气查询任务均会被执行,而当用户发出的指令为“今天上海天气如何”时,第一交互引擎为B1交互引擎,其不是主导交互引擎,因此,仅有B1交互引擎被激活,A1交互引擎并不会被激活,机票预定任务不会被执行。值得注意的是,第一交互引擎可以在一个交互引擎簇中为主导交互引擎,在其他交互引擎簇中为从交互引擎。
所述步骤205a还包括:判断所述第一交互引擎是否为所述交互引擎簇的主导交互引擎,如果是,执行步骤205b及其后续步骤,否则,执行步骤204。
在某些实施例中,在所述步骤204和206执行完毕之后,返回步骤201,继续接收用户的指令。
在某些实施例中,图2所示的方法在执行步骤202之前,还包括步骤201a:判断所述指令的类型,若所述指令为新建任务指令,执行步骤202及其后续步骤;
在步骤201a中,判断所述指令的类型,若所述指令为单任务修改指令,执行步骤207:将所述单任务修改指令发送给第一交互引擎,以使得所述第一交互引擎基于所述指令对第一任务的槽位所填充的关键知识数据进行修改,从所述第一交互引擎获取第一任务修改执行结果,将第一任务修改执行结果提供给用户,返回步骤201。
在步骤201a中,判断所述指令的类型,若所述指令为簇任务修改指令,执行步骤208-209。
步骤208:确定所述交互引擎簇任务修改指令对应的第三交互引擎,将所述指令发送给所述第三交互引擎,以使得所述第三交互引擎基于所述指令对第三交互引擎相关联的第三任务的第三槽位进行修改;基于所述第三任务的第三槽位所填充的修改后的关键知识数据对所述交互引擎簇中的第四交互引擎相关联的至少一个第四任务的第三槽位和/或与所述第三槽位相应的第四槽位进行即时同步;
步骤209,从所述第三交互引擎接收所述第三任务执行结果,从所述至少一个第四交互引擎接收至少一个第四任务执行结果,将所述第三任务执行结果和所述至少一个第四任务执行结果同时提供给用户,返回步骤201。
上述的第一任务、第二任务、第三任务、第四任务仅仅是对任务的指代,其并不意味着上述任务必然相同或不同。具体的,所述第三交互引擎可以为第一交互引擎,相应的,所述第四交互引擎可以为至少一个第二交互引擎,此时,第一任务与第三任务相同,第二任务与第四任务相同;第三交互引擎也可以为第二交互引擎,相应的,第四交互引擎可以为其他第二交互引擎或第一交互引擎,此时,第三任务与第二任务相同,第四任务与第一任务或其他第二任务相同。
第三交互引擎相关联的第三任务和至少一个第四交互引擎相关联的至少一个第四任务属于所述交互引擎簇。
在某些实施例中,交互引擎给出的任务执行结果可以为终态任务执行结果;在某些实施例中,交互引擎给出的任务执行结果可以为暂态任务执行结果,此时,将相应任务的执行状态标记为未完成。在接收到用户的任务确认指令后,所述交互引擎可以将暂态任务执行结果转换为终态任务执行结果,如通过与相应的服务器进行通信完成上述任务执行结果的转换。在步骤204和206中,所述交互引擎簇包括的至少一个的交互引擎给出的任务执行结果为暂态任务执行结果,在步骤204中,所述至少一个交互引擎为第一交互引擎,在步骤206中,所述至少一个交互引擎可以为第一交互引擎和/或第二交互引擎。如前所述,在步骤204和206之后,返回步骤201,继续接收用户的指令,在步骤201a中,判断所述指令的类型,若所述指令为任务确认指令,执行步骤210:将所述任务确认指令发送给所述至少一个交互引擎,以触发所述至少一个交互引擎将所述暂态任务执行结果转换为终态任务执行结果,并从所述至少一个交互引擎接收终态任务执行结果,将其提供给用户,返回步骤201。
例如,用户第一次发出的指令为“预定明天到上海的机票”,则在步骤201a中,判断其为新建指令,则执行步骤202,在步骤202中语音助手系统确定第一任务引擎为A1交互引擎,将所述指令发送给A1交互引擎,A1交互引擎基于所述指令填充机票预定任务的槽位,将出发地槽位填充为用户当前所在地北京,将目的地槽位填充为上海,将日期槽位填充为8月24日,若语音助手系统的工作模式为簇任务工作模式,或语音助手系统的工作模式为簇任务工作模式且第一交互引擎为其所属的出行交互引擎簇的主导交互引擎,则在步骤205b中,所述出行交互引擎簇中的B1交互引擎也被激活,在本示例中,假设第一交互引擎和第二交互引擎的相应槽位的对应关系为上文中的一对一,则语音助手系统将第一关键知识数据北京填充到B1交互引擎相关联的天气查询任务的城市槽位中,将第一关键数据8月24日填充到B1交互引擎相关联的天气查询任务的日期槽位中。随后,方法执行到步骤206,则提供给用户的任务执行结果为A1交互引擎的第一任务执行结果“为您搜索到明天CA232从北京出发到上海的机票,价格为500元,是否要预定”和B1交互引擎的第二任务执行结果“上海明天晴间多云,温度28-34度”,其中,A1交互引擎的任务执行结果为暂态任务执行结果,此时,返回步骤201,继续接收用户指令,以下以返回步骤201后继续接收到三种不同的用户指令为例对本发明的方法进行说明:
第一种:若返回步骤201后,接收到的指令为“确认预定”,则A1交互引擎与服务器如国航服务器进行通信完成机票预定,将暂态任务执行结果转换为终态任务执行结果。
第二种:若返回步骤201后,接收到的指令为“还是去成都吧”,则在步骤201a中,判断该指令为簇任务修改指令,此时,执行步骤208,该指令对应的第三交互引擎为A1交互引擎,即第三交互引擎为第一交互引擎,第三任务与第一任务相同,基于所述指令对第三任务(机票预定)的第三槽位(目的地槽位)进行修改,将其关键知识数据从上海修改为成都,并基于所述第三任务的第三槽位所填充的修改后的关键知识数据(成都)对所述交互引擎簇中的至少一个第四交互引擎(B1交互引擎)相关联的至少一个第四任务(天气查询)的第四槽位(城市)进行即时同步,即将上述城市槽位的关键知识数据即时同步地修改为成都,在步骤209中,所述第三交互引擎和至少一个第四交互引擎分别执行相关联的任务,并向语音助手系统返回任务执行结果,语音助手系统将所述第三交互引擎的第三任务执行结果“为您搜索到明天CA233从北京出发到成都的机票,价格为400元,是否要预定”和所述至少一个第四交互引擎的第四任务执行结果“成都明天多云,温度22-26度”同时提供给用户。
第三种:若返回步骤201后,接收到的指令为“成都天气怎么样”,则在步骤201a中,判断该指令为簇任务修改指令,此时,执行步骤208,该指令对应的第三交互引擎为B1交互引擎,即第三交互引擎为第二交互引擎,第三任务与第二任务相同,基于所述指令对第三任务(天气查询)的第三槽位(城市槽位)进行修改,将其关键知识数据从上海修改为成都,并基于所述第三任务的第三槽位所填充的修改后的关键知识数据(成都)对所述交互引擎簇中的至少一个第四交互引擎(A1交互引擎)相关联的至少一个第四任务(机票预定)的第四槽位(目的地槽位)进行即时同步,即将上述目的地槽位的关键知识数据即时同步地修改为成都,在步骤209中,所述第三交互引擎和至少一个第四交互引擎分别执行相关联的任务,并向语音助手系统返回任务执行结果,语音助手系统将所述第三交互引擎的第三任务执行结果“成都明天多云,温度22-26度”和所述至少一个第四交互引擎的第四任务执行结果“为您搜索到明天CA233从北京出发到成都的机票,价格为400元,是否要预定”同时提供给用户。
类似的,用户第一次发出的指令为“预定明天到上海的机票”,则在步骤201a中,判断其为新建指令,则执行步骤202,在步骤202中确定第一任务引擎为A1交互引擎,并继续执行后续步骤,若语音助手系统的工作模式不为簇任务工作模式和/或A1交互引擎不为主导交互引擎,则方法执行到步骤204,提供给用户的任务执行结果为A1交互引擎的第一任务执行结果“为您搜索到明天CA232从北京出发到上海的机票,价格为500元,是否要预定”,此时,同样返回步骤201,继续接收用户指令。以下以返回步骤201后继续接收到两种不同的用户指令为例对本发明的方法进行说明:
第一种:若返回步骤201后,接收到的指令为“确认预定”,则A1交互引擎与服务器如国航服务器进行通信完成机票预定,将暂态任务执行结果转换为终态任务执行结果。
第二种:若返回步骤201后,接收到的指令为“还是去成都吧”,则在步骤201a中,判断出该指令为单任务修改指令,执行步骤207:第一交互引擎(A1交互引擎)基于所述指令对第一任务类型(机票预定)的槽位(目的地)进行修改,执行所述第一任务类型,将任务执行结果“为您搜索到明天CA233从北京出发到成都的机票,价格为400元,是否要预定”提供给用户,返回步骤201。
针对用户指令不完整导致交互引擎簇中第一交互引擎和/或第二交互引擎相关联的第一任务和/或第二任务无法直接执行时,例如,用户给出指令时未说明购买机票的日期,则在步骤205c后,还包括步骤205d:判断是否从所述第一交互引擎接收到簇任务澄清性提问,若是,执行步骤205e,否则执行步骤206;
步骤205e:将所述交互引擎簇任务澄清性提问提供给用户,返回步骤201;
在步骤201a中,若所述指令为针对所述交互引擎簇任务澄清性提问响应的指令,执行步骤205f;
步骤205f,将所述指令发送给第一交互引擎,以使得所述第一交互引擎根据所述针对所述澄清性提问响应的指令对所述第一任务的槽位进行填充,继续执行步骤205c。
类似的,当用户指令不完整导致第一交互引擎相关联的第一任务无法执行时,在步骤203中判断语音助手系统不处于簇任务工作模式时,执行步骤204a:判断是否从所述第一交互引擎接收到单任务澄清性提问,若是,执行步骤204b,否则,执行步骤204;
步骤204b:将所述单任务澄清性提问提供给用户,返回步骤201;
在步骤201a中,若所述指令为针对所述单任务澄清性提问响应的指令,执行步骤204c;
步骤204c,将所述指令发送给第一交互引擎,以使得所述第一交互引擎根据所述针对所述澄清性提问响应的指令对所述第一任务的槽位进行填充,继续执行步骤204a。
若在步骤205a中,所述第一交互引擎不属于任何交互引擎簇,或者,判断所述第一交互引擎不为所述交互引擎簇的主导交互引擎,则执行步骤204a:判断是否从所述第一交互引擎接收到单任务澄清性提问,若是,执行步骤204b,否则,执行步骤204。
在步骤205b中所述第一交互引擎或第一交互引擎和第一任务所属的交互引擎簇为多个时,使用所述多个交互引擎簇,即依次按照所述多个交互引擎簇来处理所述指令。
在步骤205b中所述第一交互引擎或第一交互引擎和第一任务所属的交互引擎簇为多个时,按照第三预设规则选择使用其中一个交互引擎簇,或者使用所述多个交互引擎簇。
在某些实施例中,所述第三预设规则为如下至少一者:使用次数最多的交互引擎簇、最近使用过的交互引擎簇、用户评分最高的交互引擎簇等。所述第三预设规则与下文提到的第二预设规则可以相同或不同。
图3示出了基于交互引擎簇进行语音交互的方法,用于具有语音助手系统的终端,包括如下步骤:
步骤201,获取用户的指令;
步骤201a,判断所述指令的类型,若所述指令为簇任务工作模式变更指令,执行步骤211;
步骤211,所述语音助手系统根据所述交互引擎簇任务工作模式变更指令,将其工作模式修改为簇任务工作模式;
其中,所述语音助手系统在所述交互引擎簇任务工作模式下,使用交互引擎簇来处理用户的任务指令,将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户。
使用交互引擎簇来处理用户的任务指令,具体为,在基于任务指令激活第一交互引擎时,激活所述第一交互引擎所属的交互引擎簇中的至少一个第二交互引擎,基于对第一交互引擎所关联的第一任务的至少一个第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的至少一个第一槽位和/或与所述第一槽位相应的第二槽位。
将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户,具体为,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
通过上述方法,用户可以根据其需求将语音助手系统的工作模式修改为簇任务工作模式,使得相关联的任务的执行更加符合用户需求,避免了给用户发送冗杂的信息。
优选的,在步骤211之后,返回步骤201。
优选的,在步骤211之后,所述方法还包括:
步骤212,判断所述工作模式变更指令的上一条指令是否为新建任务指令,如果是,执行步骤213a;
步骤213a:使用交互引擎簇来处理用户的所述上一条指令,将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户。
步骤213a具体包括如下步骤:
步骤215,基于所述新建任务指令确定第一任务,基于所述第一任务确定第一交互引擎,所述第一交互引擎与所述第一任务相关联;将所述新建任务指令发送给所述第一交互引擎,以使得所述第一交互引擎基于所述新建任务指令对第一任务的槽位进行填充;
步骤205a,确定所述第一交互引擎所属的交互引擎簇,所述交互引擎簇包括所述第一交互引擎和至少一个第二交互引擎;
步骤205b,激活所述至少一个第二交互引擎;
步骤205c,基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或与所述第一槽位相应的第二槽位进行即时同步;
步骤206,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
上述方法可以由语音助手系统来执行,也可以由语音助手系统所包括的装置来执行。
前文中关于图2所示的方法的优选实施例也同样适用于图3所示的方法。此处不再赘述。
以下结合具体示例对上述方法进行说明。例如,用户在发出指令“预定明天到上海的机票”后,紧接着给出指令“切换工作模式为簇任务工作模式”,则此时,在步骤211中,语音助手系统将其工作模式修改为簇任务工作模式,并获取上一条指令“预定明天到上海的机票”,确定所述上一条指令为新建任务指令,则执行步骤215。在步骤215中,确定第一交互引擎为A1交互引擎,并将所述上一条指令“预定明天到上海的机票”发送给A1交互引擎,此后,执行步骤205a-216,从而可以将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
通过上述方法,用户能够随时修改语音助手系统的工作模式,且在用户修改语音助手系统的工作模式后能够自动按照簇语音交互的模式来执行上一条新建任务指令,从而在用户发出新建任务指令后再修改工作模式的情况下,不需要再次重新发出上述新建任务指令,提高了用户的语音对话体验。
优选的,在执行步骤213a时,先执行步骤214:判断所述语音助手系统针对该新建任务指令是否已经将任务执行结果提供给用户,如果已提供,执行步骤205a及其后续步骤;如果未提供,执行步骤215及其后续步骤。即,若针对该新建任务指令已经将任务执行结果提供给用户,则可以跳过步骤215,即不需要再次确定第一交互引擎进而确定第一任务,也不需要将所述新建任务指令发送给所述第一交互引擎,从而第一交互引擎也不需要再次基于所述新建任务指令对第一任务的槽位进行填充。值得注意的是,即使已经将针对新建任务指令的任务执行结果提供给用户,在步骤216中,语音助手系统仍然再次从第一交互引擎获取第一任务执行结果并将其与第二任务执行结果一并提供给用户,这是考虑到,用户在给出新建任务指令并获取到相应的任务执行结果后,发现任务执行结果不符合其预期,则会立即修改语音助手系统的工作模式,此时,用户可能并未仔细收听或查看第一任务执行结果,因此,在修改语音助手系统的工作模式后,将此前已提供的第一任务执行结果和第二任务执行结果一并提供给用户,更加符合用户的体验需求,避免用户还需要重新定位到修改语音助手系统的工作模式之前语音助手系统给出的第一任务执行结果,给用户提供了更为流畅的使用体验。
优选的,在步骤212中,判断所述工作模式变更指令的上一条指令为新建任务指令时,执行步骤213:判断所述新建任务指令的接收时间是否符合预设条件,如果是,执行步骤213a。
优选的,若判断所述新建任务指令的接收时间不符合预设条件,则返回步骤201。
所述预设条件为所述新建任务指令的接收时间和所述交互引擎簇任务工作模式变更指令的接收时间的差值小于预设值。
通过上述方法,避免不必要地以簇语音交互的模式来执行上一条新建任务指令,例如,用户在上午十点发出一条新建任务指令,并获得了任务执行结果,在下午三点发出工作模式修改指令,在上述情况下,用户的本意仅仅是修改语音助手系统的工作模式,而并不需要以簇语音交互的模式来执行上午十点的新建任务指令,则根据上述方法,能够准确地识别出上述情况。
在步骤201a中,语音助手系统可以对用户指令中包括的关键词来判断该指令是否为簇任务工作模式变更指令。
所述步骤211还包括:向所述用户的其他终端发送同步消息,用于指示所述用户的其他终端上的语音助手系统将其工作模式修改为簇任务工作模式。
4、簇名称
图4示出了基于交互引擎簇进行语音交互的方法,包括如下步骤:
步骤201,获取用户的指令;
步骤201a,判断所述指令的类型,若所述指令包括交互引擎簇使能指令,执行步骤216;所述交互引擎簇使能指令中携带了簇名称;
步骤216,语音助手系统使能所述交互引擎簇名称对应的交互引擎簇;
步骤220,所述语音助手系统根据所述指令中携带的新建任务指令,基于所述交互引擎簇使能指令中携带的簇名称对应的交互引擎簇处理所述新建任务指令;
步骤206,将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户。
上述方法可以由语音助手系统来执行,也可以由语音助手系统所包括的装置来执行。
在步骤216之后、步骤220之前,还包括步骤217,判断所述指令中是否包括新建任务指令,如果是,执行步骤220,否则,返回步骤201。
在步骤217中,若所述指令中包括新建任务指令,进一步执行步骤218,基于所述新建任务指令确定第一任务,基于所述第一任务确定与所述第一任务相关联的第一交互引擎,判断所述第一交互引擎是否属于所述交互引擎簇,如果是,执行步骤220,否则,执行步骤221;
步骤221为:提示用户新建任务指令与簇名称不匹配,返回步骤201。
在步骤217中,若所述指令中包括新建任务指令,进一步执行步骤218,基于所述新建任务指令确定第一任务,基于所述第一任务确定与所述第一任务相关联的第一交互引擎,判断所述第一交互引擎是否属于所述交互引擎簇,如果是,执行步骤219,否则,执行步骤221;
步骤219:判断所述第一交互引擎是否为所述交互引擎簇的主导交互引擎,如果是,执行步骤220,否则,执行步骤222;
步骤222为提示用户新建任务指令相关联的交互引擎非主导交互引擎,返回步骤201。
优选的,步骤220包括如下步骤。
步骤220a,将所述指令中携带的新建任务指令发送给所述交互引擎簇中的第一交互引擎,以使得所述第一交互引擎基于所述指令对第一任务的槽位进行填充;所述第一交互引擎与第一任务相关联,所述第一任务是基于所述新建任务指令确定的;
步骤205b,激活所述交互引擎簇的至少一个第二交互引擎;所述至少一个第二交互引擎是所述交互引擎簇中除所述第一交互引擎外的其他交互引擎;
步骤205c,基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或与所述第一槽位相应的第二槽位进行即时同步。
步骤206具体为:从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
优选的,步骤220包括如下步骤:
步骤220a(如前所述,此处不再赘述);
步骤205b(如前所述,此处不再赘述);
步骤205c(如前所述,此处不再赘述);
步骤205d:判断是否从所述第一交互引擎接收到澄清性提问,若是,执行步骤205e,否则执行步骤206;
步骤205e:将所述交互引擎簇任务澄清性提问提供给用户,返回步骤201;
在步骤201a中,若所述指令为针对所述交互引擎簇任务澄清性提问响应的指令,执行步骤205f;
步骤205f:将所述指令发送给第一交互引擎,以使得所述第一交互引擎根据所述针对所述澄清性提问响应的指令对所述第一任务的槽位进行填充,在步骤205f后执行步骤205c。
步骤206(如前所述,此处不再赘述)。
步骤206具体为:从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
在某些实施例中,在步骤218中,判断所述第一交互引擎和所述第一任务是否属于所述交互引擎簇。
在步骤201a中,若所述用户指令为新建任务指令,则执行步骤202a,判断所述新建任务指令的上一条指令是否为交互引擎簇使能指令,如果是执行步骤220及其后续步骤,或者执行步骤218及其后续步骤,否则,执行步骤202。值得注意的是,上述用户指令为新建任务指令,是指用户指令只包括新建任务指令,而不包括交互引擎簇使能指令,反过来说,若用户指令包括交互引擎簇使能指令,即使用户指令中同时包括了新建任务指令,该用户指令也不会被分类为新建任务指令而执行步骤202a,而是按照交互引擎簇使能指令来执行步骤216,即交互引擎簇使能指令的判断级别高于所述新建任务指令。
上文描述了通过簇任务工作模式和簇名称两种方式来使用交互引擎簇,通过前者使用交互引擎簇,终端的语音助手系统中的所有交互引擎簇均处于可用状态,具体使用哪个或哪几个交互引擎簇取决于用户给出的任务指令,而通过后者使用交互引擎簇,仅可以使用簇名称对应的交互引擎簇,在上述两种使用方式中,优先考虑通过簇名称使用交互引擎簇,在用户没有给出交互引擎簇使能指令时,才判断语音助手系统的工作模式。通过上述两种不同的方式,给用户提供了更加便捷、更加丰富的交互引擎簇使用体验。
5、本地聚合形成交互引擎簇
参见图5,示出了本发明一个实施例中的聚合形成交互引擎簇的方法300,用于具有语音助手系统的终端,包括以下步骤:
步骤301:选取至少两个历史任务,形成历史任务集合;
步骤302:针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,与所述历史任务集合中的每一个历史任务相关联的交互引擎形成交互引擎集合;其中,每个交互引擎与至少一个任务相关联,所述交互引擎针对与其相关联的每一个任务均定义了至少一个槽位;
步骤303,判断所述交互引擎集合中的至少两个交互引擎针对其各自相关联的历史任务所定义的槽位中是否具有相同或相应的槽位,如果是,将所述至少两个交互引擎聚合形成一个交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
上述方法可以由语音助手系统来执行,也可以由语音助手系统所包括的装置来执行。
优选的,步骤301中,根据第一预设规则和历史对话记录选取至少两个历史任务。
优选的,步骤301中根据第一预设规则和历史对话记录选取至少两个历史任务,具体为:选取历史对话记录中预设时间内执行的至少两个历史任务;和/或,选取历史对话记录中预设对话轮数内执行的至少两个历史任务;和/或,选取历史对话记录中连续执行的至少两个历史任务。所述连续执行的至少两个历史任务是指,在所述至少两个历史任务之间未执行不属于所述至少两个历史任务的其他历史任务。
在步骤303中,将所述至少两个交互引擎聚合形成一个交互引擎簇之后,根据所述至少两个历史任务的先后顺序,将所述交互引擎簇中的一个或多个交互引擎确定为主导交互引擎。
参见图6,示出了本发明一个实施例中的聚合形成交互引擎簇的方法400,用于具有语音助手系统的终端,包括以下步骤:
步骤401,获取用户与语音助手系统的历史对话记录,判断所述历史对话记录中是否存在如下情况:中断与第一任务相关的对话,进入与至少一个第二任务相关的对话,在所述至少一个第二任务执行完毕后,恢复与所述第一任务相关的对话;如果是,形成历史任务集合,所述历史任务集合包括所述第一任务和至少一个第二任务;
步骤402:针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,与所述历史任务集合中的每一个历史任务相关联的交互引擎形成交互引擎集合;其中,每个交互引擎与至少一个任务相关联,所述交互引擎针对与其相关联的每一个任务均定义了至少一个槽位;
步骤403,判断所述交互引擎集合中的至少两个交互引擎针对其各自相关联的历史任务所定义的槽位中是否具有相同或相应的槽位,如果是,将所述至少两个交互引擎聚合形成一个交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,在步骤401中,判断所述历史对话记录中是否存在如下情况:中断与第一任务相关的对话,进入与至少一个第二任务相关的对话,在所述至少一个第二任务执行完毕后,恢复与所述第一任务相关的对话,具体为:对所述历史对话记录进行分析,得到相应的历史任务执行时间线和历史任务执行状态;基于所述历史任务执行时间线和历史任务执行状态,判断是否存在历史任务闭环;其中,所述历史任务闭环是一个首尾节点为第一任务、中间节点为至少一个第二任务、且首节点的执行状态为未完成、至少一个中间节点的执行状态为完成的历史任务序列。在该历史任务序列中,尾节点的任务执行状态可以为完成或未完成,本发明不对此进行限定。
在步骤403中,将所述至少两个交互引擎聚合形成一个交互引擎簇之后,将与所述第一任务相关联的交互引擎确定为主导交互引擎。
以下的内容适用于上述方法300和400。
优选的,在步骤303和403中,基于所述历史对话记录中用户的指令,判断所述交互引擎集合中的至少两个交互引擎针对相应的历史任务所定义的槽位中是否具有相同或相应的槽位。
优选的,在步骤303和403中,基于所述历史对话记录中用户的指令,确定与该指令相应的历史任务所关联的交互引擎针对所述历史任务定义的至少一个槽位的关键知识数据,基于所述槽位和关键知识数据,判断所述交互引擎集合中的至少两个交互引擎针对相关联的历史任务所定义的槽位中是否具有相同或相应的槽位。
优选的,在步骤303和403中,将所述至少两个交互引擎聚合形成一个交互引擎簇,具体为:将上述至少两个交互引擎的名称记录在交互引擎簇的属性信息中,并将所述交互引擎集合中的至少两个交互引擎针对相关联的历史任务所定义的槽位中的相同或相应的槽位记录在交互引擎簇的属性信息中。
在步骤303和403中,语音助手系统使用所述交互引擎簇,具体为:在激活所述交互引擎簇中的第一交互引擎时,激活所述交互引擎簇中的至少一个第二交互引擎,基于对第一交互引擎所关联的第一任务的至少一个第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的至少一个第一槽位和/或第二槽位进行即时同步,所述第二交互引擎相关联的第二任务具有所述至少一个第一槽位和/或与所述第一槽位相应的第二槽位,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
在步骤303和403中,所述语音助手系统使用所述交互引擎簇,具体为:所述语音助手系统处于簇任务工作模式、且基于用户指令确定的第一交互引擎被属于所述交互引擎簇时,使用所述交互引擎簇。
在步骤303和403中,所述语音助手系统使用所述交互引擎簇,具体为:所述语音助手系统处于簇任务工作模式、且基于用户指令确定的第一交互引擎和第一任务属于所述交互引擎簇时,使用所述交互引擎簇。
在步骤303和403中,所述语音助手系统使用所述交互引擎簇,具体为:在接收到的用户的指令中包括所述交互引擎簇的簇名称时,使用所述交互引擎簇。
在步骤303和403中,语音助手系统使用所述交互引擎簇,具体包括前述的步骤201-222中的部分或全部步骤。
以下结合具体示例对上述方法300和400进行说明。首先对方法300进行具体说明。例如,用户与语音助手系统在8月24日上午10点到11点的历史对话记录如下:
用户:预定明天到上海的机票。
语音助手系统:已为您预定明天下午两点CA232从北京出发到上海的机票;
用户:明天上海天气如何?
语音助手系统:明天上海阴转晴。
用户:播放周杰伦的晴天。
语音助手系统:已为您查找到周杰伦的晴天,即将播放。
以步骤301为选取历史对话记录中预设时间内执行的至少两个历史任务为例来进一步说明上述方法,假设预设时间为1个小时,则基于上述历史对话记录,选取得到三个历史任务:机票预定、天气查询、歌曲播放;如前所述,假设与机票预定任务相关联的交互引擎为A1交互引擎,与天气查询任务相关联的交互引擎为B1交互引擎,假设与歌曲播放相关联的交互引擎为C1交互引擎。在步骤302中,形成的交互引擎集合包括A1交互引擎、B1交互引擎、C1交互引擎。A1交互引擎针对机票预定定义的槽位包括出发地、目的地、日期,B1交互引擎为天气查询任务定义的槽位包括城市和日期,C1互引擎针对歌曲播放定义的槽位包括歌手姓名和歌曲名称,则在步骤303中,基于所述历史对话记录中用户的指令“预定明天到上海的机票”确定与该指令对应的历史任务即机票预定相关联的交互引擎即A1交互引擎针对机票预定所定义的出发地槽位的关键知识数据为用户当前所在城市即北京、目的地槽位的关键知识数据为上海、日期槽位的关键知识数据为8月25日,基于所述历史对话记录中用户的指令“明天上海天气如何?”,确定与该指令对应的历史任务即天气查询相关联的交互引擎即B1交互引擎针对天气查询所定义的城市槽位的关键知识数据为上海、日期槽位的关键知识数据为8月25日,基于所述历史对话记录中用户的指令“播放周杰伦的晴天”,确定与该指令对应的历史任务即歌曲播放相关联的交互引擎即C1交互引擎针对歌曲所定义的歌手姓名槽位的关键知识数据为周杰伦、歌曲名称槽位的关键知识数据为晴天,基于此,判断所述交互引擎集合中的至少两个交互引擎针对相关联的历史任务所定义的槽位中是否具有相同或相应的槽位,在本具体示例中,可以判断出,A1交互引擎针对机票预定定义的目的地槽位和B1交互引擎针对天气查询任务定义的城市槽位为相应槽位,A1交互引擎针对机票预定定义的日期槽位和B1交互引擎针对天气查询任务定义的日期槽位为相同槽位,C1交互引擎与A1交互引擎和B1交互引擎无相同或相应槽位,则将A1交互引擎和B1交互引擎聚合形成一个交互引擎簇,供语音助手系统在后续与用户的语音交互中使用。
接下来对方法400进行具体说明。例如,用户与语音助手系统的历史对话记录如下:
用户:帮我定一个明天早上7点的闹钟。
语音助手系统:已帮您定好明天早上7点的闹钟。
用户:预定明天到上海的机票。
语音助手系统:为您搜索到明天下午两点CA232从北京出发到上海的机票;
用户:播放周杰伦的晴天。
语音助手系统:已为您查找到周杰伦的晴天,即将播放。
用户:明天上海天气如何?
语音助手系统:明天上海阴转晴。
用户:确认预定。
语音助手系统:已为您预定明天下午两点CA232从北京出发到上海的机票。
用户:查询附近的中国银行。
语音助手系统:附近1公里内有1家中国银行,地址为建设路88号,电话为12345678。
基于上述历史对话记录分析得到的历史任务执行时间线为:闹钟设定—>机票预定—>歌曲播放—>天气查询—>机票预定—>地图查询,历史任务执行状态为:完成—>未完成—>完成—>完成—>完成—>完成,基于所述历史任务执行时间线和历史任务执行状态,确定上述历史对话记录中存在一个历史任务闭环,其中,所述历史任务闭环的首尾节点为第一任务即机票预定,所述历史任务闭环具有两个中间节点,对应的第二任务为歌曲播放和天气查询,首节点的执行状态为未完成、中间节点的执行状态为完成。此时,生成的历史任务集合包括:机票预定、歌曲播放和天气查询。在本示例中,方法400生成的历史任务集合与上个示例中方法300生成的历史任务集合相同,因此,步骤402和步骤403的执行过程与步骤302和步骤303类似,此处不再赘述。
在某些实施例中,在步骤301或401之前,执行如下步骤:
步骤201:接收用户的指令;
步骤201a,判断所述指令的类型,若所述指令为交互引擎簇聚合指令,则执行步骤301-303和/或401-403。
在步骤301-303、步骤401-403均执行的实施例中,不限定二者执行的先后顺序,即可以先执行步骤301-303,也可以先执行步骤401-403.
在步骤303或403之后,执行步骤304或404,所述步骤304或404:向用户提供第一界面,以使得用户通过所述第一界面对所述交互引擎簇进行命名,所述语音助手系统将用户输入的簇名称记录在交互引擎簇的属性信息中。
为交互引擎簇设置相应的使用等级。在步骤303或步骤403中,将所述至少两个交互引擎聚合形成一个交互引擎簇之后,将所述交互引擎簇的使用等级标记为最低,将所述交互引擎簇的使用等级记录在其属性信息中。
在某些实施例中,在步骤301或401中,根据历史对话记录生成多个历史任务集合,对生成的多个历史任务集合进行统计,根据统计结果中历史任务集合的频次标记所述交互引擎簇的使用等级。例如,生成3个历史任务集合,分别为(机票预定、歌曲播放和天气查询)、(餐厅空桌查询和打车)和(机票预定、歌曲播放和天气查询),则统计结果为(机票预定、歌曲播放和天气查询)两次,(餐厅空桌查询和打车)一次,语音助手系统为基于任务集合(机票预定、歌曲播放和天气查询)生成的交互引擎簇标记较高的使用等级,为基于任务集合(餐厅空桌查询和打车)生成的交互引擎簇标记较低的使用等级。
在某些实施例中,在步骤303或403之后,执行步骤305或405:向用户提供第二界面,以使得用户通过所述第二界面对所述交互引擎簇的使用等级进行修改,将修改后的所述交互引擎簇的使用等级记录在其属性信息中。用户可以根据其需求,将语音助手系统对所述交互引擎簇标记的使用等级进行修改。
在某些实施例中,在步骤302或402中,针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,具体为,获取执行所述历史任务的交互引擎。
在某些实施例中,在步骤302或402中,针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,具体为,获取所述终端的语音助手系统所包括的交互引擎中能够执行所述历史任务的至少一个交互引擎,按照第二预设规则,从所述至少一个交互引擎中选取一个交互引擎,作为与该历史任务相关联的交互引擎。
在某些实施例中,所述第二预设规则为以下至少之一:使用次数最多的交互引擎、最近使用的交互引擎、用户评分最高的交互引擎、用户曾采纳其任务执行结果的次数最多的交互引擎等。
在某些实施例中,所述步骤206还包括:基于对所述交互引擎簇的使用,更新所述交互引擎簇的使用等级。其中,对所述交互引擎簇的使用,是指用户通过发出包括与该交互引擎簇相对应的簇名称的指令而触发的所述交互引擎簇的使用,或者,在语音助手系统处于簇任务工作模式时用户发出指令所触发的所述交互引擎簇的使用。
在某些实施例中,在步骤303或403之后,执行步骤306或406,将所述交互引擎簇上传到服务器,供其他用户下载使用,具体的,上传所述交互引擎簇的属性信息。
在某些实施例中,在步骤303或403之后,执行步骤307或407,向用户提供第三界面,以使得用户通过所述第三界面对所述交互引擎簇中的交互引擎的属性进行设置,如设置交互引擎簇的主导交互引擎、从交互引擎,将上述交互引擎的属性记录在所述交互引擎簇的属性信息中。
在某些实施例中,在步骤303或403之后,执行步骤308或408,向所述用户的其他终端发送同步消息,其中携带所述聚合得到的交互引擎簇,具体的,同步消息中携带所述交互引擎簇的属性信息。
本发明不限定步骤304-308的执行顺序,可以以任意的顺序来执行上述五个步骤,同样的,本发明不限定步骤404-408的执行顺序,可以以任意的顺序来执行上述五个步骤。
6、构建交互引擎簇
如前所述,终端的语音助手系统还可以从服务器所获取或下载交互引擎簇的属性信息,并在本地构建所述交互引擎簇。
参见图7,示出了本发明一个实施例中的构建交互引擎簇的方法500,所述方法用于具有语音助手系统的终端,所述方法包括以下步骤:
步骤501,接收服务器发送的第一交互引擎簇属性信息,所述交互引擎簇的属性信息包括所述交互引擎簇中包括的至少两个交互引擎的名称;
步骤502,判断所述终端的语音助手系统是否包括所述交互引擎簇属性信息所包括的所有交互引擎,若所述语音助手系统未包括上述所有交互引擎中的第五交互引擎,执行步骤503;
步骤503,获取与所述第五交互引擎相关联的任务;
步骤504,判断所述终端的语音助手系统是否包括与上述任务相关联的第六交互引擎,如果是,执行步骤506;
步骤506,采用第六交互引擎替换所述第一交互引擎簇属性信息中的第五交互引擎,形成第二交互引擎簇属性信息;
步骤508,基于所述第二交互引擎簇属性信息构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,步骤501中的所述第一交互引擎簇属性信息可以是由其他用户根据前述的方法300和/或400在其终端本地聚合形成交互引擎簇并将其属性信息上传到服务器得到的,也可以是服务器预设的交互引擎簇属性信息。
在第五交互引擎相关联的任务为多个时,在步骤503中,获取与所述第五引擎相关联的属于所述第一交互引擎簇的任务,可以基于所述第一交互引擎簇属性信息(例如表2)完成上述获取过程。
优选的,在步骤501前,所述方法包括如下步骤
步骤201:接收用户的指令;
步骤201a,判断所述指令的类型,若所述指令为第一交互引擎簇下载指令,执行步骤501。
优选的,语音助手系统使用所述交互引擎簇,具体为:在激活所述交互引擎簇中的第一交互引擎时,激活所述交互引擎簇中的至少一个第二交互引擎,基于对第一交互引擎所关联的第一任务的至少一个第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的至少一个第一槽位和/或第二槽位进行即时同步,所述第二交互引擎相关联的第二任务具有所述至少一个第一槽位和/或与所述第一槽位相应的第二槽位,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
优选的,交互引擎簇下载指令中包括所述交互引擎簇的簇名称。
优选的,在步骤502中,若所述终端的语音助手系统包括了所述第一交互引擎簇属性信息所包括的所有交互引擎,执行步骤509。
优选的,在步骤504中,如果所述终端的语音助手系统不包括与上述任务相关联的第六交互引擎,执行步骤507和步骤509。
优选的,在步骤504中,若所述终端的语音助手系统包括与上述任务相关联的第六交互引擎,则执行步骤505,步骤505为判断所述第六交互引擎针对所述任务定义的槽位是否包括了所述第五交互引擎针对所述任务定义的所有槽位,如果是,执行步骤506。
优选的,在步骤505中,若所述第六交互引擎针对所述任务定义的槽位未包括所述第五交互引擎针对所述任务定义的所有槽位,则执行步骤507和步骤509;
步骤507,从所述服务器下载所述第五交互引擎;
步骤509,基于所述第一交互引擎簇属性信息构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,步骤508还包括:向所述用户的其他终端发送同步消息,其中携带所述构建得到的交互引擎簇,具体的,同步消息中携带所述第二交互引擎簇属性信息。
步骤509还包括,向所述用户的其他终端发送同步消息,其中携带所述构建得到的交互引擎簇,具体的,同步消息中携带所述第一交互引擎簇属性信息。
优选的,同步消息中除了携带第一交互引擎簇属性信息之外,还携带下载指示信息,所述下载指示信息包括第五交互引擎的名称,指示所述其他终端下载第五交互引擎。
基于此,其他终端在接收到同步消息后,判断同步消息中是否携带了下载指示信息,若其中携带了下载指示信息,则根据所述下载指示信息下载第五交互引擎,并构建交互引擎簇,若同步消息中没有携带下载指示信息,则上述其他终端直接根据所述同步消息中携带的交互引擎簇属性信息如所述第一交互引擎簇属性信息或第二交互引擎簇属性信息来构建交互引擎簇。这是因为,在下载交互引擎簇之前,用户的不同终端的语音助手系统包括了相同的交互引擎,由于执行上述方法500的终端已经执行了步骤502、504和505中的判断,因此,其他终端不需要重复执行上述判断过程,根据同步消息中是否下载指示信息,能够简化其他终端的操作。
步骤507具体为,立即从所述服务器下载所述第五交互引擎;或者,在等待下载列表中增加所述第五交互引擎,周期性判断所述终端是否接入wifi网络,如果接入wifi网络,则按照等待下载列表执行下载。
在步骤507之后步骤509之前,执行步骤507a,判断所述第五交互引擎是否下载完成,如果是,执行步骤509。
在步骤507a中,通过确定所述等待下载列表为空来确定所述第五交互引擎下载完成。
以下结合具体示例对上述方法进行说明。假设在步骤501中接收到的第一交互引擎簇属性信息如表2所示。在步骤502中,假设终端的语音助手系统中仅包括A1交互引擎,而不包括B1交互引擎,则方法执行到步骤503,获取第五交互引擎即B1交互引擎相关联的任务,本示例中假设B1交互引擎相关联的任务只有一个,即天气查询,则在步骤504中判断所述终端的语音助手系统是否包括与上述任务相关联的第六交互引擎,在本实施例中,假设所述终端的语音助手系统中包括了与天气查询相关联的B2交互引擎,则执行步骤505,B1交互引擎针对所述天气查询任务定义的槽位包括城市和日期,B2交互引擎针对天气查询任务定义的槽位包括城市、日期和时间,则在步骤505中判断出所述第六交互引擎针对所述任务定义的槽位包括了所述第五交互引擎所述任务定义的所有槽位,此时,方法执行到步骤506,采用第六交互引擎即B2交互引擎替换所述第一交互引擎簇属性信息中的第五交互引擎即B1交互引擎,形成第二交互引擎簇属性信息,并在步骤508中,基于所述第二交互引擎簇属性信息构建交互引擎簇,构建得到的交互引擎簇包括A1交互引擎和B2交互引擎。
通过上述方法,在从服务器下载交互引擎簇属性信息后,可以根据终端的语音助手系统本地所包括的交互引擎对所述交互引擎簇属性信息进行本地化,从而避免不必要的下载能够执行同一任务的交互引擎。
参见图8,示出了本发明一个实施例中的构建交互引擎簇的方法600,所述方法用于具有语音助手系统的终端,所述方法包括以下步骤:
步骤601,接收服务器发送的第一交互引擎簇配置信息,所述第一交互引擎簇配置信息包括与第一交互引擎簇所包括的交互引擎相关联的任务;
步骤602,针对所述第一交互引擎簇配置信息所包括的每一个任务,从终端的语音助手系统中选择与该任务相关联的交互引擎,将其放入交互引擎集合;
步骤603,在交互引擎集合中包括了上述每一个任务相关联的交互引擎后,基于交互引擎集合中的交互引擎构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,在步骤601前,所述方法包括如下步骤
步骤201:接收用户的指令;
步骤201a,判断所述指令的类型,若所述指令为第二交互引擎簇下载指令,执行步骤601。
优选的,语音助手系统使用所述交互引擎簇,具体为:在激活所述交互引擎簇中的第一交互引擎时,激活所述交互引擎簇中的至少一个第二交互引擎,基于对第一交互引擎所关联的第一任务的至少一个第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的至少一个第一槽位和/或第二槽位进行即时同步,所述第二交互引擎相关联的第二任务具有所述至少一个第一槽位和/或与所述第一槽位相应的第二槽位,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
优选的,针对交互引擎簇中的每一个交互引擎,交互引擎簇配置信息中包括与其相关联的任务。其中,服务器在接收到终端上传的交互引擎簇(具体的,交互引擎簇属性信息)后生成所述交互引擎簇配置信息,交互引擎簇配置信息的生成过程为将交互引擎簇属性信息中的交互引擎名称替换为该交互引擎相关联的任务,例如,针对表1示出的交互引擎簇属性信息,或者,删除交互引擎簇属性信息中的交互引擎名称,例如,针对表2示出的交互引擎簇属性信息。优选的,上述交互引擎簇配置信息的生成过程适用于交互引擎簇包括的交互引擎仅与一个任务相关联的情况。
优选的,针对交互引擎簇中的每一个交互引擎,交互引擎簇配置信息中包括与所述交互引擎相关联的任务中属于所述交互引擎簇的任务。交互引擎簇配置信息的生成过程为删除交互引擎簇属性信息中的交互引擎名称。优选的,上述交互引擎簇配置信息的生成过程适用于交互引擎簇包括的至少一个交互引擎与多个任务相关联的情况。
优选的,服务器在接收到终端上传的交互引擎簇属性信息时,判断其中是否包含交互引擎相关联的任务,如果包含,则删除交互引擎簇属性信息中的交互引擎名称,生成交互引擎簇配置信息,如果不包含,则将交互引擎簇属性信息中的交互引擎名称替换为该交互引擎相关联的任务,生成交互引擎簇配置信息。
优选的,所述步骤602中的从终端的语音助手系统中选择与该任务相关联的交互引擎,将其放入交互引擎集合,具体为:
步骤602a,判断所述终端的语音助手系统是否包括与该任务相关联的交互引擎,如果是,执行步骤602b;否则,执行步骤602c及其后续步骤;
步骤602b,将所述交互引擎放入交互引擎集合;
步骤602c,获取该任务的第一可选交互引擎列表,将所述第一可选交互引擎列表提供给用户,返回步骤201;
在步骤201a中,若所述指令为第一下载指令,则执行步骤602d;所述第一下载指令中携带用户从所述第一可选交互引擎列表中为该任务所选择的交互引擎;
步骤602d,下载所述第一下载指令中指示的交互引擎,将其放入交互引擎集合。
所述步骤602c中获取该任务的第一可选交互引擎列表,具体可以为向服务器发送第一可选交互引擎列表获取请求,其中携带所述任务,并接收服务器返回的第一可选交互引擎列表。
所述步骤602d中的下载所述第一下载指令中指示的交互引擎,具体为:立即从所述服务器下载所述第一下载指令中指示的交互引擎;或者,在等待下载列表中增加所述第一下载指令中指示的交互引擎,周期性判断所述终端是否接入wifi网络,如果接入wifi网络,则按照等待下载列表执行下载。
优选的,在步骤603中,通过确定交互引擎集合中包括的交互引擎的个数是否等于所述第一交互引擎配置集合中包括的交互引擎的个数,如果是,则可以确定交互引擎集合中包括了上述每一个任务相关联的交互引擎。
优选的,在步骤602c中从服务器获取的该任务的第一可选交互引擎列表,具体包括:可选交互引擎的名称。
优选的,在步骤602c中从服务器获取的该任务的第一可选交互引擎列表,还包括:可选交互引擎的推荐度。
优选的,若终端的语音助手系统中与该任务相关联的交互引擎为多个,则根据第四预设规则选择其中一个交互引擎,将其放入交互引擎集合。
在某些实施例中,所述第四预设规则为以下至少之一:使用次数最多的交互引擎、最近使用的交互引擎、用户评分最高的交互引擎、用户曾采纳其任务执行结果的次数最多的交互引擎等。
若其他用户上传的交互引擎簇所包括的交互引擎中的至少一个交互引擎针对其关联的任务定义了扩展槽位,则针对所述任务,所述交互引擎簇配置信息还包括所述任务的第二可选交互引擎列表,所述第二可选交互引擎列表中包括的交互引擎,针对所述任务所定义的槽位包括了所述至少一个交互引擎针对所述任务所定义的槽位。具体的,服务器按照前文所述的过程生成所述交互引擎簇配置信息后,基于交互引擎簇属性信息,针对交互引擎簇中的每一个交互引擎,判断其针对相关联的任务所定义的槽位是否包括该任务的扩展槽位,如果是,在所述交互引擎簇配置信息增加该任务的第二可选交互引擎列表。优选的,所述相关联的任务属于所述交互引擎簇。
优选的,所述步骤602中的从终端的语音助手系统中选择与该任务相关联的交互引擎,将其放入交互引擎集合,具体为:
步骤602a,若所述交互引擎簇配置信息中包括该任务的第二可选交互引擎列表,则判断所述终端的语音助手系统是否包括所述第二可选交互引擎列表中的交互引擎,如果包括所述第二可选交互引擎列表中的交互引擎,执行步骤602b;如果不包括所述第二可选交互引擎列表中的交互引擎,执行步骤602e及其后续步骤;若所述交互引擎簇配置信息中不包括该任务的第二可选交互引擎列表,判断所述终端的语音助手系统是否包括与该任务相关联的交互引擎,如果是,执行步骤602b;否则,执行步骤602c及其后续步骤。
步骤602b,将所述交互引擎放入交互引擎集合。
步骤602e及其后续步骤为:
步骤602e,将所述第二可选交互引擎列表提供给用户,返回步骤201;
在步骤201a中,若所述指令为第二下载指令,则执行步骤602f;所述第二下载指令中携带用户从所述第二可选交互引擎列表中为该任务所选择的交互引擎;
步骤602f,下载所述第二下载指令中指示的交互引擎,将其放入交互引擎集合。
步骤602c及其后续步骤为:
步骤602c,获取该任务的第一可选交互引擎列表,将所述第一可选交互引擎列表提供给用户,返回步骤201;
在步骤201a中,若所述指令为第一下载指令,则执行步骤602d;所述第一下载指令中携带用户从所述第一可选交互引擎列表中为该任务所选择的交互引擎;
步骤602d,下载所述第一下载指令中指示的交互引擎,将其放入交互引擎集合。
优选的,所述第一可选交互引擎列表和所述第二可选交互引擎列表中可以包括预设数量的交互引擎。基于用户评分、下载次数等来选择所述第一可选交互引擎列表和第二可选交互引擎列表中包括的交互引擎。
优选的,所述步骤603还包括:向所述用户的其他终端发送同步消息,其中携带所述构建得到的交互引擎簇,具体的,同步消息中携带所述构建得到的交互引擎簇的属性信息。
优选的,若在构建交互引擎簇的过程中下载了交互引擎,所述同步消息中还携带下载指示信息,所述下载指示信息包括在构建交互引擎簇的过程中下载了的交互引擎的名称。
基于此,其他终端在接收到同步消息后,若其中携带了下载指示信息,则根据下载指示下载交互引擎,并构建交互引擎簇,若同步消息中没有携带下载指示,则上述其他终端直接根据所述交互引擎簇属性信息构建交互引擎簇。这是因为,在下载交互引擎簇之前,用户的不同终端的语音助手系统包括了相同的交互引擎,由于执行上述方法600的终端已经执行了步骤602中的判断,因此,其他终端不需要再执行步骤602中的判断。
以下结合具体示例对上述方法进行说明。假设其他终端上传的第一交互引擎簇属性信息如表2所示,则服务器基于所述第一交互引擎属性信息生成第一交互引擎簇配置信息,其中,包括机票预定任务和天气查询任务。在步骤601中,终端下载了上述第一交互引擎簇配置信息。假设终端的语音助手系统中仅包括与机票预定任务相关联的A1交互引擎,而不包括与天气查询任务关联的交互引擎,则在步骤602中,针对机票预定任务,将A1交互引擎加入到交互引擎集合中,针对天气查询任务,方法执行到步骤602c,终端获取该任务的第一可选交互引擎列表,其中包括B1交互引擎和B2交互引擎,将其提供给用户,用户给出第一下载指令,指示下载B1交互引擎,则执行步骤602d,终端下载B1交互引擎,并将其放入交互引擎集合,在步骤603中,基于交互引擎集合中的交互引擎构建交互引擎簇。
假设其他终端上传的第一交互引擎簇属性信息中包括的与天气查询相关联的交互引擎为B2交互引擎,由于B2交互引擎针对天气查询任务定义的槽位不仅包括两个基本槽位即城市槽位和日期槽位,还包括一个扩展槽位即时间槽位,因此,服务器所生成的第一交互引擎配置信息中包括天气查询任务的第二可选交互引擎列表,其中,包括B2交互引擎和B3交互引擎,B3交互引擎针对天气查询任务定义的槽位包括两个基本槽位即城市槽位和日期槽位,还包括两个扩展槽位即时间槽位和区域槽位。则在步骤602a中,针对机票预定任务,将A1交互引擎加入到交互引擎集合中,针对天气查询任务,方法将执行到步骤602e,终端将上述第二可选交互引擎列表提供给用户,并根据用户给出的第二下载指令下载交互引擎,从而在步骤603中构建交互引擎簇。
通过上述方法,终端从服务器下载交互引擎簇配置信息,基于所述交互引擎簇配置信息,优先选择语音助手系统本地所包括的交互引擎构建交互引擎簇,避免不必要的下载能够执行同一任务的多个交互引擎。
在前述的多个实施例中均提到在步骤201a中判断指令类型,具体的,语音助手系统可以对用户指令中包括的关键词以及对话上下文、以及提供给用户的任务执行结果、语音助手系统的工作模式等因素来判断该指令具体为前述提到的哪种类型。
前述的基于交互引擎簇进行语音交互方法、聚合形成交互引擎簇的方法、构建交互引擎簇的方法,均可以部分或全部组合。参见图15,示出了本发明的形成交互引擎簇并基于交互引擎簇进行语音交互的方法,在其他实施例中,形成交互引擎簇并基于交互引擎簇进行语音交互的方法中也可以包括前述方法实施例中的全部或部分步骤。本发明不对此进行限定。
本发明还提供一种基于交互引擎簇进行语音交互的装置,参见图9,所述装置包括:
用户指令获取单元,获取用户的指令;
任务执行控制单元,用于基于所述指令确定第一任务,基于所述第一任务确定第一交互引擎,将所述指令发送给所述第一交互引擎,以使得所述第一交互引擎基于所述指令对所述第一任务的槽位进行填充;其中,所述第一交互引擎与所述第一任务相关联;
工作模式控制单元,用于判断语音助手系统是否处于簇任务工作模式,如果是,触发所述任务执行控制单元,如果否,触发任务执行结果接收单元;
所述任务执行控制单元,还用于响应于所述工作模式控制单元的触发,确定所述第一交互引擎所属的交互引擎簇,所述交互引擎簇包括所述第一交互引擎和至少一个第二交互引擎,激活所述至少一个第二交互引擎,基于所述第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或与第一槽位对应的第二槽位进行即时同步;
所述任务执行结果接收单元,用于从所述第一交互引擎接收第一任务执行结果,将所述第一任务执行结果提供给用户,或者,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
优选的,所述装置还包括存储单元,用于存储至少一个交互引擎簇,具体的,存储所述至少一个交互引擎簇的属性信息。
优选的,若所述任务执行控制单元确定所述第一交互引擎不属于任何交互引擎簇,则触发所述任务执行结果接收单元从所述第一交互引擎接收第一任务执行结果。
优选的,所述任务执行控制单元,还用于确定所述第一交互引擎和第一任务所属的交互引擎簇。
优选的,所述任务执行控制单元,还用于响应于所述工作模式控制单元的触发,确定所述第一交互引擎所属的交互引擎簇,判断所述第一交互引擎是否为所述交互引擎簇的主导交互引擎,如果是,激活所述至少一个第二交互引擎,基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或第二槽位进行即时同步;否则,触发所述任务执行结果接收单元。
所述任务执行结果接收单元,还用于在将所述第一任务执行结果提供给用户之后,或者,在将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户之后,触发所述用户指令获取单元。
所述用户指令获取单元,还用于响应于所述任务执行结果接收单元的触发,继续接收用户的指令。
优选的,所述装置还包括指令分类单元,用于判断所述用户指令获取单元获取的用户指令的类型,若所述指令为新建任务指令,触发所述任务执行控制单元。所述任务执行控制单元,还用于响应于所述指令分类单元在指令为新建任务指令时的触发,基于所述指令确定第一任务,基于所述第一任务确定第一交互引擎,将所述指令发送给所述第一交互引擎,以使得所述第一交互引擎基于所述指令对第一任务的槽位进行填充。
所述指令分类单元,还用于:若所述指令为单任务修改指令,触发所述任务执行控制单元。所述任务执行控制单元,还用于响应于所述指令分类单元在指令为单任务修改指令时的触发,将所述指令发送给第一交互引擎,以使得所述第一交互引擎基于所述指令对第一任务的槽位所填充的关键知识数据进行修改。
所述任务执行结果接收单元,还用于从所述第一交互引擎获取第一任务修改执行结果,将第一任务修改执行结果提供给用户,触发所述用户指令获取单元。
所述指令分类单元,还用于:若所述指令为簇任务修改指令,触发所述任务执行控制单元。所述任务执行控制单元,还用于响应于所述指令分类单元在指令为簇任务修改指令时的触发,确定所述交互引擎簇任务修改指令对应的第三交互引擎,将所述指令发送给所述第三交互引擎,以使得所述第三交互引擎基于所述指令对第三交互引擎相关联的第三任务的第三槽位进行修改;基于所述第三任务的第三槽位所填充的修改后的关键知识数据对所述交互引擎簇中的第四交互引擎相关联的至少一个第四任务的第三槽位和/或与所述第三槽位相应的第四槽位进行即时同步。
所述任务执行结果接收单元,还用于从所述第三交互引擎接收所述第三任务执行结果,从所述至少一个第四交互引擎接收至少一个第四任务执行结果,将所述第三任务执行结果和所述至少一个第四任务执行结果同时提供给用户,触发所述用户指令获取单元。
所述任务执行结果接收单元从至少一个交互引擎接收的至少一个任务执行结果为暂态任务执行结果,所述至少一个交互引擎可以为第一交互引擎和/或第二交互引擎。所述任务执行结果接收单元在将任务执行结果提供给用户后,触发所述用户指令获取单元。在所述用户指令获取单元再次获取到用户的指令之后,触发所述指令分类单元。
所述指令分类单元,还用于:若所述指令为任务确认指令,触发所述任务执行控制单元。所述任务执行控制单元,还用于响应于所述指令分类单元在指令为任务确认指令时的触发,将所述任务确认指令发送给所述至少一个交互引擎,以触发所述至少一个交互引擎将所述暂态任务执行结果转换为终态任务执行结果。
所述任务执行结果接收单元,还用于从所述至少一个交互引擎接收终态任务执行结果,将所述终态任务执行结果提供给用户,触发所述用户指令获取单元。
所述任务执行控制单元,还用于在所述即时同步之后,判断是否从所述第一交互引擎接收到簇任务澄清性提问,若是,将所述交互引擎簇任务澄清性提问提供给用户,并触发所述用户指令获取单元,否则触发所述任务执行结果接收单元从所述第一交互引擎接收第一任务执行结果、从所述至少一个第二交互引擎接收至少一个第二任务执行结果。
所述用户指令获取单元,还用于响应所述任务执行控制单元的触发,继续接收用户指令。
所述指令分类单元,还用于:若所述指令为针对所述交互引擎簇任务澄清性提问响应的指令,触发所述任务执行控制单元;所述任务执行控制单元,还用于响应于所述指令分类单元在指令为针对所述交互引擎簇任务澄清性提问响应的指令时的触发,将所述指令发送给第一交互引擎,以使得所述第一交互引擎根据所述针对所述交互引擎簇任务澄清性提问响应的指令对所述第一任务的槽位进行填充,并基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或第二槽位进行即时同步。
所述任务执行控制单元,还用于在判断出语音助手系统不处于簇任务工作模式时,判断是否从所述第一交互引擎接收到单任务澄清性提问,若是,将所述单任务澄清性提问提供给用户,并触发所述用户指令获取单元,否则,触发所述任务执行结果接收单元从所述第一交互引擎接收第一任务执行结果。
所述用户指令获取单元,还用于响应所述任务执行控制单元的触发,继续接收用户指令。
所述指令分类单元,还用于:若所述指令为针对所述单任务澄清性提问响应的指令,触发所述任务执行控制单元;所述任务执行控制单元,还用于响应于所述指令分类单元在指令为针对所述单任务澄清性提问响应的指令时的触发,将所述指令发送给第一交互引擎,以使得所述第一交互引擎根据所述针对所述单任务澄清性提问响应的指令对所述第一任务的槽位进行填充。
优选的,所述任务执行控制单元,还用于若确定所述第一交互引擎不属于任何交互引擎簇,或者,判断所述第一交互引擎不为所述交互引擎簇的主导交互引擎,则判断是否从所述第一交互引擎接收到单任务澄清性提问,若是,将所述单任务澄清性提问提供给用户,并触发所述用户指令获取单元,否则,触发所述任务执行结果接收单元从所述第一交互引擎接收第一任务执行结果。
所述用户指令获取单元,还用于响应所述任务执行控制单元的触发,继续接收用户指令。
所述指令分类单元,还用于:若所述指令为针对所述单任务澄清性提问响应的指令,触发所述任务执行控制单元;所述任务执行控制单元,还用于响应于所述指令分类单元在指令为针对所述单任务澄清性提问响应的指令时的触发,将所述指令发送给第一交互引擎,以使得所述第一交互引擎根据所述针对所述单任务澄清性提问响应的指令对所述第一任务的槽位进行填充。
所述任务执行控制单元还用于在所述第一交互引擎或第一交互引擎和第一任务所属的交互引擎簇为多个时,按照第三预设规则选择使用其中一个交互引擎簇,或者使用所述多个交互引擎簇。
本发明还提供一种基于交互引擎簇进行语音交互的装置,参见图10,所述装置包括:
用户指令获取单元,获取用户的指令;
指令分类单元,用于判断用户指令的类型,若所述指令为簇任务工作模式变更指令,触发工作模式控制单元;
所述工作模式控制单元,用于根据所述交互引擎簇任务工作模式变更指令,将语音助手系统的工作模式修改为簇任务工作模式;
其中,所述语音助手系统在所述交互引擎簇任务工作模式下,使用交互引擎簇来处理用户的任务指令,将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户。
使用交互引擎簇来处理用户的任务指令,具体为,在基于任务指令激活第一交互引擎时,激活所述第一交互引擎所属的交互引擎簇中的至少一个第二交互引擎,基于对第一交互引擎所关联的第一任务的至少一个第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的至少一个第一槽位和/或与所述第一槽位相应的第二槽位。
将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户,具体为,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
所述装置还包括任务执行控制单元和任务执行结果接收单元;
所述指令分类单元,还用于判断所述工作模式变更指令的上一条指令是否为新建任务指令,若是,触发任务执行控制单元;
所述任务执行控制单元,用于使用交互引擎簇来处理用户的所述上一条指令;
所述任务执行结果接收单元,用于将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户。
所述任务执行控制单元使用交互引擎簇来处理用户的所述上一条指令,具体为,响应于指令分类单元在上一条指令为新建任务指令时的触发,基于所述新建任务指令确定第一任务,基于所述第一任务确定第一交互引擎,所述第一交互引擎与所述第一任务相关联;将所述新建任务指令发送给所述第一交互引擎,以使得所述第一交互引擎基于所述新建任务指令对第一任务的槽位进行填充;确定所述第一交互引擎所属的交互引擎簇,所述交互引擎簇包括所述第一交互引擎和至少一个第二交互引擎;激活所述至少一个第二交互引擎;基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或与所述第一槽位相应的第二槽位进行即时同步。
所述任务执行结果接收单元,用于从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
优选的,所述装置还包括存储单元,用于存储至少一个交互引擎簇,具体的,存储至少一个交互引擎簇的属性信息。
本实施例中的所述装置中与图9所示的装置中名称相同的单元,同样具有图9中该单元所具有的功能,关于图9所示的装置的任一单元的优选实施例也同样适用于本实施例中的装置中的相同单元。例如,本实施例中的任务执行控制单元具有与图9中描述的任务执行控制单元的功能相同的功能,关于图9所示的任务执行控制单元的优选实施例也同样适用于本实施例中的任务执行控制单元,对于其他名称相同的单元也是如此,此处不再赘述。
优选的,所述任务执行控制单元用于使用交互引擎簇来处理用户的所述上一条指令,具体为:响应于指令分类单元在上一条指令为新建任务指令时的触发,从所述任务执行结果接收单元接收第一消息,所述第一消息中携带针对该新建任务指令是否已经将任务执行结果提供给用户的指示,若是,确定所述第一交互引擎所属的交互引擎簇,激活所述至少一个第二交互引擎,基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或第二槽位进行即时同步;否则,基于所述新建任务指令确定第一任务,基于所述第一任务确定第一交互引擎,将所述新建任务指令发送给所述第一交互引擎,以使得所述第一交互引擎基于所述新建任务指令对第一任务的槽位进行填充,确定所述第一交互引擎所属的交互引擎簇,激活所述至少一个第二交互引擎,基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或第二槽位进行即时同步;
所述任务执行结果接收单元,还用于向所述任务执行控制单元发送所述第一消息。
优选的,所述任务执行控制单元,用于响应于指令分类单元在上一条指令为新建任务指令时的触发,判断所述新建任务指令的接收时间是否符合预设条件,如果是,使用交互引擎簇来处理用户的所述上一条指令。
所述任务执行控制单元,还用于若判断所述新建任务指令的接收时间不符合预设条件,则触发所述用户指令获取单元。
所述装置还包括同步单元,向所述用户的其他终端发送同步消息,用于指示所述用户的其他终端上的语音助手系统将其工作模式修改为簇任务工作模式。
本发明还提供一种基于交互引擎簇进行语音交互的装置,参见图11,所述装置包括:
用户指令获取单元,获取用户的指令,其中携带新建任务指令;
指令分类单元,用于判断用户指令的类型,若所述指令包括交互引擎簇使能指令,触发任务执行控制单元;
所述任务执行控制单元,用于使能所述交互引擎簇名称对应的交互引擎簇,根据所述指令中携带的新建任务指令,基于所述交互引擎簇使能指令中携带的簇名称对应的交互引擎簇处理所述新建任务指令;
任务执行结果接收单元,用于将所述交互引擎簇所包括的至少两个交互引擎提供的至少两个任务执行结果同时提供给用户。
本实施例中的所述装置中与前述两个实施例(图9-图10对应的实施例)的装置中名称相同的单元,同样具有前述两个实施例中该单元所具有的功能,关于前述两个实施例的装置的任一单元的优选实施例也同样适用于本实施例中的装置中的相同单元。例如,本实施例中的任务执行控制单元具有与前述两个实施例的任务执行控制单元的功能相同的功能,关于前述两个实施例的任务执行控制单元的优选实施例也同样适用于本实施例中的任务执行控制单元,对于其他名称相同的单元也是如此,此处不再赘述。
优选的,所述指令分类单元,还用于判断所述指令中是否包括新建任务指令,如果是,触发所述任务执行控制单元,否则,触发所述用户指令获取单元。
所述任务执行控制单元,还用于响应于所述指令分类单元在所述指令中包括新建任务指令时的触发,根据所述指令中携带的新建任务指令,基于所述交互引擎簇名称对应的交互引擎簇处理所述新建任务指令。
所述任务执行控制单元,还用于响应于所述指令分类单元在所述指令中包括新建任务指令时的触发,基于所述新建任务指令确定第一任务,基于所述第一任务确定与所述第一任务相关联的第一交互引擎,判断所述第一交互引擎是否属于所述交互引擎簇,如果是,根据所述指令中携带的新建任务指令,基于所述交互引擎簇名称对应的交互引擎簇处理所述新建任务指令,否则提示用户新建任务指令与簇名称不匹配,触发所述用户指令获取单元。
所述任务执行控制单元,还用于响应于所述指令分类单元在所述指令中包括新建任务指令时的触发,基于所述新建任务指令确定第一任务,基于所述第一任务确定与所述第一任务相关联的第一交互引擎,判断所述第一交互引擎是否属于所述交互引擎簇,如果第一交互引擎属于所述交互引擎簇,进一步判断所述第一交互引擎是否为所述交互引擎簇的主导交互引擎,如果是主导交互引擎,根据所述指令中携带的新建任务指令,基于所述交互引擎簇名称对应的交互引擎簇处理所述新建任务指令,如果不是主导交互引擎,提示用户新建任务指令相关联的交互引擎非主导交互引擎,触发所述用户指令获取单元;如果第一交互引擎不属于所述交互引擎簇,提示用户新建任务指令与簇名称不匹配,触发所述用户指令获取单元。
所述任务执行控制单元,用于根据所述指令中携带的新建任务指令,基于所述交互引擎簇名称对应的交互引擎簇处理所述新建任务指令,具体为:将所述新建任务指令发送给所述第一交互引擎,以使得所述第一交互引擎基于所述指令对第一任务的槽位进行填充;所述第一交互引擎与第一任务相关联,所述第一任务是基于所述新建任务指令确定的;激活所述交互引擎簇的至少一个第二交互引擎;所述至少一个第二交互引擎是所述交互引擎簇中除所述第一交互引擎外的其他交互引擎;基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或与所述第一槽位相应的第二槽位进行即时同步。
任务执行结果接收单元,用于从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
所述任务执行控制单元,还用于在所述即时同步之后,判断是否从所述第一交互引擎接收到澄清性提问,若是,将所述澄清性提问提供给用户,并触发所述用户指令获取单元。
所述用户指令获取单元,还用于响应所述任务执行控制单元的触发,继续接收用户指令。
所述指令分类单元,还用于:若所述指令为针对所述澄清性提问响应的指令,触发所述任务执行控制单元;所述任务执行控制单元,还用于响应于所述指令分类单元在指令为针对所述澄清性提问响应的指令时的触发,将所述指令发送给第一交互引擎,以使得所述第一交互引擎根据所述针对所述澄清性提问响应的指令对所述第一任务的槽位进行填充,并基于第一交互引擎对所述第一任务的第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的第一槽位和/或第二槽位进行即时同步。
所述指令分类单元,还用于在所述用户指令为新建任务指令时,判断所述新建任务指令的上一条指令是否为交互引擎簇使能指令,如果是,触发所述任务执行控制单元。
所述任务执行控制单元,用于响应于所述指令分类单元在所述上一条指令为交互引擎簇使能指令时的触发,按照如上所述的方式,处理所述新建任务指令。
在另一个实施例中,本发明的基于交互引擎簇进行语音交互的装置包括上述三个实施例中的装置的全部或部分单元。
本发明还提供一种用于聚合形成交互引擎簇的装置,参见图12,包括如下单元:
历史任务集合生成单元,用于选取至少两个历史任务,形成历史任务集合;
交互引擎集合生成单元,用于针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,与所述历史任务集合中的每一个历史任务相关联的交互引擎形成交互引擎集合;其中,每个交互引擎与至少一个任务相关联,所述交互引擎针对与其相关联的每一个任务均定义了至少一个槽位;
聚合单元,用于判断所述交互引擎集合中的至少两个交互引擎针对其各自相关联的历史任务所定义的槽位中是否具有相同或相应的槽位,如果是,将所述至少两个交互引擎聚合形成一个交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,所述历史任务集合生成单元,用于根据第一预设规则和历史对话记录选取至少两个历史任务。
优选的,所述历史任务集合生成单元,用于选取历史对话记录中预设时间内执行的至少两个历史任务;和/或,选取历史对话记录中预设对话轮数内执行的至少两个历史任务;和/或,选取历史对话记录中相邻执行的至少两个历史任务。所述相邻执行的至少两个历史任务是指,在所述至少两个历史任务之间未执行其他历史任务。
优选的,所述聚合单元,还用于将所述至少两个交互引擎聚合形成一个交互引擎簇之后,根据所述至少两个历史任务的先后顺序,将所述交互引擎簇中的一个或多个交互引擎确定为主导交互引擎。
本发明还提供一种用于聚合形成交互引擎簇的装置,包括如下单元:
历史任务集合生成单元,获取用户与语音助手系统的历史对话记录,判断所述历史对话记录中是否存在如下情况:中断与第一任务相关的对话,进入与至少一个第二任务相关的对话,在所述至少一个第二任务执行完毕后,恢复与所述第一任务相关的对话;如果是,形成历史任务集合,所述历史任务集合包括所述第一任务和至少一个第二任务;
交互引擎集合生成单元,用于针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,与所述历史任务集合中的每一个历史任务相关联的交互引擎形成交互引擎集合;其中,每个交互引擎与至少一个任务相关联,所述交互引擎针对与其相关联的每一个任务均定义了至少一个槽位;
聚合单元,用于判断所述交互引擎集合中的至少两个交互引擎针对其各自相关联的历史任务所定义的槽位中是否具有相同或相应的槽位,如果是,将所述至少两个交互引擎聚合形成一个交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,所述历史任务集合生成单元判断所述历史对话记录中是否存在如下情况:中断与第一任务相关的对话,进入与至少一个第二任务相关的对话,在所述至少一个第二任务执行完毕后,恢复与所述第一任务相关的对话,具体为:对所述历史对话记录进行分析,得到相应的历史任务执行时间线和历史任务执行状态;基于所述历史任务执行时间线和历史任务执行状态,判断是否存在历史任务闭环;其中,所述历史任务闭环是一个首尾节点为第一任务、中间节点为至少一个第二任务、且首节点的执行状态为未完成、至少一个中间节点的执行状态为完成的历史任务序列。
优选的,所述聚合单元,还用于将所述至少两个交互引擎聚合形成一个交互引擎簇之后,将与所述第一任务相关联的交互引擎确定为主导交互引擎。
以下内容适用于上述两个实施例中的用于聚合形成交互引擎簇的装置。
所述聚合单元,用于基于所述历史对话记录中用户的指令,判断所述交互引擎集合中的至少两个交互引擎针对相应的历史任务所定义的槽位中是否具有相同或相应的槽位。
所述聚合单元,用于基于所述历史对话记录中用户的指令,确定与该指令相应的历史任务所关联的交互引擎针对所述历史任务定义的至少一个槽位的关键知识数据,基于所述槽位和关键知识数据,判断所述交互引擎集合中的至少两个交互引擎针对相关联的历史任务所定义的槽位中是否具有相同或相应的槽位。
所述聚合单元将所述至少两个交互引擎聚合形成一个交互引擎簇,具体为:将上述至少两个交互引擎的名称记录在交互引擎簇的属性信息中,并将所述交互引擎集合中的至少两个交互引擎针对相关联的历史任务所定义的槽位中的相同或相应的槽位记录在交互引擎簇的属性信息中。
所述语音助手系统使用所述交互引擎簇,具体为:在激活所述交互引擎簇中的第一交互引擎时,激活所述交互引擎簇中的至少一个第二交互引擎,基于对第一交互引擎所关联的第一任务的至少一个第一槽位所填充的关键知识数据对所述交互引擎簇中的至少一个第二交互引擎相关联的至少一个第二任务的至少一个第一槽位和/或第二槽位进行即时同步,所述第二交互引擎相关联的第二任务具有所述至少一个第一槽位和/或与所述第一槽位相应的第二槽位,从所述第一交互引擎接收所述第一任务执行结果,从所述至少一个第二交互引擎接收至少一个第二任务执行结果,将所述第一任务执行结果和所述至少一个第二任务执行结果同时提供给用户。
所述语音助手系统使用所述交互引擎簇,具体为:所述语音助手系统处于簇任务工作模式、且基于用户指令确定的第一交互引擎被属于所述交互引擎簇时,使用所述交互引擎簇。
所述语音助手系统使用所述交互引擎簇,具体为:所述语音助手系统处于簇任务工作模式、且基于用户指令确定的第一交互引擎和第一任务属于所述交互引擎簇时,使用所述交互引擎簇。
所述语音助手系统使用所述交互引擎簇,具体为:在接收到的用户的指令中包括所述交互引擎簇的簇名称时,使用所述交互引擎簇。
上述两个实施例中的用于聚合形成交互引擎簇的装置可以包括在上述两个实施例之前描述的三个实施例中的基于交互引擎簇进行语音交互的装置的全部或部分单元,此处不再赘述。
上述两个实施例中的用于聚合形成交互引擎簇的装置中名称相同的单元,可以同时具有上述两个实施例中的功能。
所述用于聚合形成交互引擎簇的装置还包括:
用户指令获取单元,获取用户的指令;
指令分类单元,用于判断用户指令的类型,若所述指令为交互引擎簇聚合指令,触发历史任务集合生成单元。
所述聚合单元,还用于向用户提供第一界面,以使得用户通过所述第一界面对所述交互引擎簇进行命名,将用户输入的簇名称记录在交互引擎簇的属性信息中。
所述用于聚合形成交互引擎簇的装置还包括存储单元,用于存储聚合形成的交互引擎簇,具体的,存储聚合形成的交互引擎簇的属性信息。
所述聚合单元,还用于将所述至少两个交互引擎聚合形成一个交互引擎簇之后,将所述交互引擎簇的使用等级标记为最低,将所述交互引擎簇的使用等级记录在其属性信息中。
所述用于聚合形成交互引擎簇的装置还包括:统计单元,基于历史对话记录生成的多个历史任务集合进行统计;
所述聚合单元,还用于根据所述统计结果中历史任务集合的频次标记所述交互引擎簇的使用等级。
所述聚合单元,还用于向用户提供第二界面,以使得用户通过所述第二界面对所述交互引擎簇的使用等级进行修改,将修改后的所述交互引擎簇的使用等级记录在其属性信息中。
所述交互引擎集合生成单元针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,具体为,获取执行所述历史任务的交互引擎。
所述交互引擎集合生成单元针对所述历史任务集合的每一个历史任务,获取终端的语音助手系统中与其相关联的交互引擎,具体为,获取所述终端的语音助手系统所包括的交互引擎中能够执行所述历史任务的至少一个交互引擎,按照第二预设规则,从所述至少一个交互引擎中选取一个交互引擎,作为与该历史任务相关联的交互引擎。
所述聚合单元,还用于基于所述任务执行控制单元对所述交互引擎簇的使用,更新所述交互引擎簇的使用等级。
所述用于聚合形成交互引擎簇的装置还包括:上传单元,用于将所述交互引擎簇上传到服务器,供其他用户下载使用,具体的,上传所述交互引擎簇的属性信息。
所述聚合单元,还用于向用户提供第三界面,以使得用户通过所述第三界面对所述交互引擎簇中的交互引擎的属性进行设置,如设置交互引擎簇的主导交互引擎、从交互引擎,将上述交互引擎的属性记录在所述交互引擎簇的属性信息中。
所述用于聚合形成交互引擎簇的装置还包括:同步单元,用于向所述用户的其他终端发送同步消息,其中携带所述聚合得到的交互引擎簇,具体的,同步消息中携带所述交互引擎簇的属性信息。
本发明还提供一种用于构建交互引擎簇的装置,参见图13,包括如下单元:
第一获取单元,用于接收服务器发送的第一交互引擎簇属性信息,所述交互引擎簇的属性信息包括所述交互引擎簇中包括的至少两个交互引擎的名称;
构建单元,用于判断所述终端的语音助手系统是否包括所述交互引擎簇所包括的所有交互引擎,若所述语音助手系统未包括上述所有交互引擎中的第五交互引擎,获取与所述第五交互引擎相关联的任务;判断所述终端的语音助手系统是否包括与上述任务相关联的第六交互引擎,如果所述终端的语音助手系统包括与上述任务相关联的第六交互引擎,采用第六交互引擎替换所述第一交互引擎簇属性信息中的第五交互引擎,形成第二交互引擎簇属性信息,基于所述第二交互引擎簇属性信息构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
本实施例中的用于构建交互引擎簇的装置可以包括前述五个实施例中的用于聚合形成交互引擎簇的装置、基于交互引擎簇进行语音交互的装置的全部或部分单元,此处不再赘述。
优选的,所述装置还包括:
用户指令获取单元,获取用户的指令;
指令分类单元,用于判断用户指令的类型,若所述指令为第一交互引擎簇下载指令,触发所述第一获取单元。
优选的,交互引擎簇下载指令中包括所述交互引擎簇的簇名称。
优选的,所述构建单元,还用于若所述语音助手系统包括了所述交互引擎簇所包括的所有交互引擎,基于所述第一交互引擎簇属性信息构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,所述构建单元,还用于若所述终端的语音助手系统不包括与上述任务相关联的第六交互引擎,从所述服务器下载所述第五交互引擎,基于所述第一交互引擎簇属性信息构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,所述构建单元,还用于若所述终端的语音助手系统包括与上述任务相关联的第六交互引擎,则判断所述第六交互引擎针对所述任务定义的槽位是否包括了所述第五交互引擎针对所述任务定义的所有槽位,如果包括,采用第六交互引擎替换所述第一交互引擎簇属性信息中的第五交互引擎,形成第二交互引擎簇属性信息,基于所述第二交互引擎簇属性信息构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,所述装置还包括同步单元,用于向所述用户的其他终端发送同步消息,其中携带所述构建得到的交互引擎簇,具体的,同步消息中携带所述第二交互引擎簇属性信息。
优选的,所述构建单元,还用于若所述第六交互引擎针对所述任务定义的槽位未包括所述第五交互引擎针对所述任务定义的所有槽位,从所述服务器下载所述第五交互引擎,在所述第五交互引擎下载完成后,基于所述第一交互引擎簇属性信息构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
优选的,所述同步单元还用于向所述用户的其他终端发送同步消息,其中携带所述构建得到的交互引擎簇,具体的,同步消息中携带所述第一交互引擎簇属性信息。
优选的,同步消息中除了携带第一交互引擎簇属性信息之外,还携带下载指示信息,所述下载指示信息包括第五交互引擎的名称,指示所述其他终端下载第五交互引擎。
优选的,所述构建单元从所述服务器下载所述第五交互引擎,具体为:立即从所述服务器下载所述第五交互引擎;或者,在等待下载列表中增加所述第五交互引擎,周期性判断所述终端是否接入wifi网络,如果接入wifi网络,则按照等待下载列表执行下载。
优选的,所述构建单元判断所述第五交互引擎是否下载完成,如果是,基于所述第一交互引擎簇属性信息构建交互引擎簇。
优选的,所述构建单元通过确定所述等待下载列表为空来确定所述第五交互引擎下载完成。
本发明还提供一种用于构建交互引擎簇的装置,参见图14,包括如下单元:
第二获取单元,用于接收服务器发送的第一交互引擎簇配置信息,所述第一交互引擎簇配置信息包括与第一交互引擎簇所包括的交互引擎相关联的任务;
构建单元,用于针对所述第一交互引擎簇配置信息所包括的每一个任务,从终端的语音助手系统中选择与该任务相关联的交互引擎,将其放入交互引擎集合,在交互引擎集合中包括了上述每一个任务相关联的交互引擎后,基于交互引擎集合中的交互引擎构建交互引擎簇,以便于语音助手系统使用所述交互引擎簇。
本实施例中的用于构建交互引擎簇的装置可以包括前述六个实施例中的用于聚合形成交互引擎簇的装置、基于交互引擎簇进行语音交互的装置、构建交互引擎簇的装置的全部或部分单元,此处不再赘述。
优选的,所述装置还包括:
用户指令获取单元,获取用户的指令;
指令分类单元,用于判断用户指令的类型,若所述指令为第二交互引擎簇下载指令,触发所述第二获取单元。
优选的,所述构建单元,用于:针对所述第一交互引擎簇配置信息所包括的每一个任务,判断所述终端的语音助手系统是否包括与该任务相关联的交互引擎,如果是,将所述交互引擎放入交互引擎集合;否则,获取该任务的第一可选交互引擎列表,将所述第一可选交互引擎列表提供给用户,触发所述指令分类单元;
所述指令分类单元,用于若所述指令为第一下载指令,触发所述构建单元;所述第一下载指令中携带用户从所述第一可选交互引擎列表中为该任务所选择的交互引擎;
所述构建单元,用于响应于所述指令分类单元在所述指令为第一下载指令时的触发,下载所述第一下载指令中指示的交互引擎,将其放入交互引擎集合。
所述构建单元获取该任务的第一可选交互引擎列表,具体可以为向服务器发送第一可选交互引擎列表获取请求,其中携带所述任务,并接收服务器返回的第一可选交互引擎列表。
所述构建单元下载所述第一下载指令中指示的交互引擎,具体为:立即从所述服务器下载所述第一下载指令中指示的交互引擎;或者,在等待下载列表中增加所述第一下载指令中指示的交互引擎,周期性判断所述终端是否接入wifi网络,如果接入wifi网络,则按照等待下载列表执行下载。
所述构建单元通过确定交互引擎集合中包括的交互引擎的个数是否等于所述第一交互引擎配置集合中包括的交互引擎的个数,如果是,则可以确定交互引擎集合中包括了上述每一个任务相关联的交互引擎。
所述构建单元,还用于若终端的语音助手系统中与该任务相关联的交互引擎为多个,则根据第四预设规则选择其中一个交互引擎,将其放入交互引擎集合。
在某些实施例中,所述第四预设规则为以下至少之一:使用次数最多的交互引擎、最近使用的交互引擎、用户评分最高的交互引擎、用户曾采纳其任务执行结果的次数最多的交互引擎等。
优选的,所述构建单元还用于:针对所述第一交互引擎簇配置信息所包括的每一个任务,若所述交互引擎簇配置信息中包括该任务的第二可选交互引擎列表,则判断所述终端的语音助手系统是否包括所述第二可选交互引擎列表中的交互引擎,如果包括所述第二可选交互引擎列表中的交互引擎,将所述交互引擎放入交互引擎集合;如果不包括所述第二可选交互引擎列表中的交互引擎,将所述第二可选交互引擎列表提供给用户,触发所述指令分类单元;若所述交互引擎簇配置信息中不包括该任务的第二可选交互引擎列表,判断所述终端的语音助手系统是否包括与该任务相关联的交互引擎,如果是,将所述交互引擎放入交互引擎集合,否则,将所述第一可选交互引擎列表提供给用户,触发所述指令分类单元;
所述指令分类单元,用于若所述指令为第一下载指令或第二下载指令,触发所述构建单元;所述第一下载指令中携带用户从所述第一可选交互引擎列表中为该任务所选择的交互引擎;所述第二下载指令中携带用户从所述第二可选交互引擎列表中为该任务所选择的交互引擎;
所述构建单元,用于响应于所述指令分类单元在所述指令为第一下载指令时的触发,下载所述第一下载指令中指示的交互引擎,将其放入交互引擎集合;响应于所述指令分类单元在所述指令为第二下载指令时的触发,下载所述第二下载指令中指示的交互引擎,将其放入交互引擎集合。
所述装置还包括:同步单元,用于向所述用户的其他终端发送同步消息,其中携带所述构建得到的交互引擎簇,具体的,同步消息中携带所述构建得到的交互引擎簇的属性信息。
优选的,若在构建交互引擎簇的过程中下载了交互引擎,所述同步消息中还携带下载指示信息,所述下载指示信息包括在构建交互引擎簇的过程中下载了的交互引擎的名称。
上述七个实施例中的七个装置可以任意的自由组合,其中任意一者可以包括其余六者中的全部或部分单元。
本发明还提供了一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有可在处理器上运行的计算机程序,所述计算机程序在被所述处理器执行时实现如上所述的方法。
本发明还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有可在处理器上运行的计算机程序、所述计算机程序在被执行时实现如上所述的方法。
本发明还提供了一种语音助手系统,其特征在于,包括如上所述的装置。
本发明还提供了一种终端,其特征在于,包括如上所述的装置或如上所述的语音助手系统。
所述语音助手系统或终端,可以包括前述七个实施例中的用于聚合形成交互引擎簇的装置、基于交互引擎簇进行语音交互的装置、构建交互引擎簇的装置的全部或部分单元。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存、可擦式可编程只读存储器(EPROM)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码。
以上说明只是为了方便理解本发明而举出的例子,不用于限定本发明的范围。在具体实现时,本领域技术人员可以根据实际情况对装置的部件进行变更、增加、减少,在不影响方法所实现的功能的基础上可以根据实际情况对方法的步骤进行变更、增加、减少或改变顺序。
尽管已经示出和描述了本发明的实施例,本领域技术人员应当理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同替换所限定,在未经创造性劳动所作的改进等,均应包含在本发明的保护范围之内。