用户可编程的自动化助理的制作方法

文档序号:19905877发布日期:2020-02-11 14:29阅读:217来源:国知局
用户可编程的自动化助理的制作方法



背景技术:

人类可以利用在本文中称为“自动化助理”(也称为“聊天机器人”、“交互式个人助理”、“智能个人助理”、“个人话音助理”、“谈话代理”等)的交互式软件应用来参与人机对话。例如,人类(当他们与自动化助理交互时可以被称为“用户”)可以使用可以包括被转换成文本并然后处理的口头话语的自由形式自然语言输入和/或键入的自由形式自然语言输入来提供命令、查询和/或请求(在本文中统称为“查询”)。

通常,自动化助理被配置成例如响应于任务被映射到的各种预定规范命令而执行各种任务。这些任务可包括像订购项目(例如,食物、产品、服务等)、播放媒体(例如,音乐、视频)、修改购物列表、执行家庭控制(例如,控制恒温器、控制一个或多个灯等)、回答问题、订票等这样的事情。虽然自然语言分析和语义处理使得用户能够发出规范命令的细微变化体,但是这些变化体只可能在自然语言分析和语义处理能确定要执行哪一个任务的限度范围内发生偏移。简言之,尽管在自然语言和语义分析方面取得了许多进步,但面向任务的对话管理仍然相对僵化。另外,用户常常不知道或者忘记规范命令,并且因此可能无法调用自动化助理来执行它们能做的许多任务。此外,添加新的任务要求第三方开发者添加新的规范命令,并且自动化助理通常需要花时间和资源来学习那些规范命令的可接受变化。



技术实现要素:

在本文中描述了用于允许用户使用基于话音的人机对话来用定制例程或“对话例程”对自动化助理进行编程的技术,所述定制例程或“对话例程”稍后可被调用来完成任务。在一些实施方式中,用户可以通过提供包括用于执行任务的命令的自由形式自然语言输入来使自动化助理学习新的对话例程。如果自动化助理不能解释命令,则自动化助理可以索求来自用户的关于命令的澄清。例如,在一些实施方式中,自动化助理可以提示用户识别被要求用值填充以履行任务的一个或多个槽位。在其它实施方式中,用户可以前摄地识别槽位,而不用从自动化助理提示。在一些实施方式中,用户可以例如应自动化助理请求或者前摄地提供用于填充这些槽位中的一个或多个槽位的可能值的枚举列表。自动化助理然后可以存储对话例程,所述对话例程包括命令与任务之间的映射,并且对话例程接受用于填充一个或多个槽位的一个或多个值作为输入。用户可以稍后使用包括命令或其某种语法/语义变化的自由形式自然语言输入来调用对话例程。

一旦对话例程被调用并且对话例程的槽位被用户用值填充,自动化助理就可以采取各种动作。在一些实施方式中,自动化助理可以向远程计算系统发送指示至少用户提供的槽位的数据、槽位本身和/或指示命令/任务的数据。在一些情况下,这种传输可以使远程计算系统例如向另一人输出自然语言输出或指示值/槽位/命令/任务的其它数据。可以以各种方式(其可能不要求通过其他人安装或者配置它自己的第三方软件代理来处理请求)(例如,经由电子邮件、文本消息、自动化电话呼叫等)将这种自然语言输出提供给其他人。该其他人然后可以履行任务。

附加地或可替换地,在一些实施方式中,可以将对话例程的各个方面(诸如槽位、潜在槽位值、命令等)与多个已知的候选任务(例如,对其来说用户不知道规范命令)的类似组件相比较。可以在最佳匹配的候选任务与用户的命令之间生成映射,使得用户对自动化助理的命令(或其语法和/或语义变化)的将来使用将调用对话例程,并且,最终调用最佳匹配的候选任务。如果多个候选任务同等地与对话例程匹配,则可以提示用户选择一个任务,或者可以使用诸如用户的上下文、在先应用使用等这样的其它信号来打破平局。

假设用户在以下对话中接涉(engage)自动化助理:

用户:“iwantapizza(我想要比萨)”

aa:“idon'tknowhowtoorderapizza(我不知道如何订购比萨)”

用户:“toorderapizza,youneedtoknowthetypeofcrustandtoppings(为了订购比萨,你需要知道外皮的类型和顶料的列表)”

aa:“whatarethepossiblepizzacrusttypes?(可能的比萨外皮类型是什么?)”

用户:“thincrustorthickcrust(薄外皮或厚外皮)”

aa:“whatarethepossibletoppings?(可能的顶料是什么?)”

用户:“herearethepossiblevalues(这里是可能的值)”

aa:“okay,readytoorderapizza(好的,准备订购比萨吗?)”

用户:“yes,getmeathincrustpizzawithatomatotopping(是的,给我具有番茄顶料的薄外皮比萨)”

此场景中的命令是“iwantapizza(我想要比萨)”,并且任务是订购比萨。被要求填充以便履行任务的用户定义的槽位包括外皮的类型和顶料的列表。

在一些实施方式中,订购比萨的任务可以通过例如经由电子邮件、文本消息、自动化电话呼叫等向比萨店(用户可以指定或者可以例如基于距离、评级、价格、已知用户偏好等被自动地选择)提供自然语言输出来完成。比萨店的雇员可以经由一个或多个计算设备(例如,店中的计算机终端、雇员的电话、店中的扬声器等)的输出接收自然语言输出,所述自然语言输出可以说像“<user>wouldliketoordera<crust_style>pizzawith<topping1,topping2,...>(<用户>想要订购具有<顶料1、顶料2、...>的<外皮_样式>比萨)”之类的语言。

在一些实施方式中,可以要求比萨店雇员确认用户的请求,例如通过按“1”或者通过说“ok”、“iaccept(我接受)”等。一旦接收到确认,在一些实施方式中,请求用户的自动化助理可以或者可以不提供确认性输出,诸如“yourpizzaisontheway(你的比萨在路上)”。在一些实施方式中,在比萨店处提供的自然语言输出还可以传达其它信息,诸如支付信息、用户的地址等。这种其它信息可以在创建对话例程的同时从请求用户获得或者被自动地确定,例如,基于用户的简档。

在命令被映射到预定第三方软件代理(例如,用于特定比萨店的第三方软件代理)的其它实施方式中,可以经由第三方软件代理自动地完成订购比萨的任务。例如,可以以各种形式将指示槽位/值的信息提供给第三方软件代理。假定所有必需的槽位都被填充有适当的值,则第三方软件代理可以执行为用户下比萨订单的任务。如果不知为何第三方软件代理要求附加信息(例如,附加槽位值),则它可以与自动化助理对接以使自动化助理针对所请求的附加信息提示用户。

本文描述的技术可以产生各种技术优点。如上面所指出的,基于任务的对话管理当前主要按手动地创建并映射到预定义任务的规范命令来处理的。这在其伸缩性方面受限制,因为它要求第三方开发者创建这些映射并向用户通知这些映射。同样地,它要求用户学习规范命令并记住它们以供以后使用。由于这些原因,具有有限能力来提供输入以完成任务的用户(诸如肢体残疾的用户和/或从事其它任务(例如,驾驶)的用户)可能具有使自动化助理执行任务的麻烦。此外,当用户试图按不可解释的命令而调用任务时,需要附加计算资源来消除用户的请求歧义或者以其它方式寻求澄清。通过允许用户创建他们自己的使用定制命令来调用的对话例程,用户更可能记住命令并且/或者能够经由自动化助理成功地和/或更快速地完成任务。这可以保存可能或者是前述消歧/澄清所必需的计算资源。此外,在一些实施方式中,用户创建的对话例程可以与其它用户共享,从而使得自动化助理能够更响应于来自个别用户的可能被其他人使用的“长尾(longtail)”命令。

在一些实施方式中,提供了一种由一个或多个处理器执行的方法,所述方法包括:在计算设备的一个或多个输入组件处从用户接收第一自由形式自然语言,其中,所述第一自由形式自然语言语言输入包括用于执行任务的命令;对所述自由形式自然语言输入执行语义处理;基于所述语义处理来确定自动化助理不能解释所述命令;在所述计算设备的一个或多个输出组件处提供索求来自用户的关于所述命令的澄清的输出;在所述输入组件中的一个或多个处从所述用户接收第二自由形式自然语言输入,其中,所述第二自由形式自然语言输入识别被要求用值填充以便履行所述任务的一个或多个槽位;存储对话例程,所述对话例程包括所述命令与所述任务之间的映射,并且所述对话例程接受用于填充所述一个或多个槽位的一个或多个值作为输入;在所述输入组件中的一个或多个处从所述用户接收第三自由形式自然语言输入,其中,所述第三自由形式自然语言输入基于所述映射调用所述对话例程;基于所述第三自由形式自然语言输入或附加自由形式自然语言输入来识别要用于填充被要求用值填充以便履行所述任务的所述一个或多个槽位的一个或多个值;以及向远程计算设备发送指示要用于填充所述一个或多个槽位的至少一个或多个值的数据,其中,所述发送使所述远程计算设备履行所述任务。

本文公开的技术的这些和其它实施方式可以可选地包括以下特征中的一个或多个。

在各种实施方式中,所述方法还可以包括:将所述对话例程与可由所述自动化助理执行的多个候选任务相比较;以及基于所述比较,从所述多个候选任务中选择所述命令被映射到的所述任务。在各种实施方式中,所述命令被映射到的所述任务包括第三方代理任务,其中,所述发送使所述远程计算设备使用用于填充所述一个或多个槽位的所述一个或多个值来执行所述第三方代理任务。在各种实施方式中,所述比较可以包括将被要求填充以便履行所述任务的所述一个或多个槽位与和所述多个候选任务中的每一个相关联的一个或多个槽位相比较。

在各种实施方式中,所述方法还可以包括:在所述存储之前在所述输入组件中的一个或多个处从所述用户接收第四自由形式自然语言输入。在各种实施方式中,所述第四自由形式自然语言输入可以包括用于填充所述槽位中的一个或多个槽位的可能值的用户提供的枚举列表。在各种实施方式中,所述比较可以包括针对所述多个候选任务中的每一个,将所述可能值的用户提供的枚举列表与用于填充所述候选任务的一个或多个槽位的可能值的枚举列表相比较。

在各种实施方式中,指示至少所述一个或多个值的所述数据还可以包括所述命令的指示或所述命令被映射到的所述任务的指示中的一个或两个。在各种实施方式中,指示至少所述一个或多个值的所述数据可以采取请求基于所述一个或多个值执行所述任务的自然语言输出的形式,并且所述发送使所述远程计算设备提供所述自然语言作为输出。

在另一紧密相关的方面中,一种方法可以包括:在一个或多个输入组件处从用户接收第一自由形式自然语言输入,其中,所述第一自由形式自然语言输入识别所述用户打算被映射到任务的命令,以及被要求用值填充以便履行所述任务的一个或多个槽位;存储对话例程,所述对话例程包括所述命令与所述任务之间的映射,并且所述对话例程接受用于填充所述一个或多个槽位的一个或多个值作为输入;在所述输入组件中的一个或多个处从所述用户接收第二自由形式自然语言输入,其中,所述第二自由形式自然语言输入基于所述映射调用所述对话例程;基于所述第二自由形式自然语言输入或附加自由形式自然语言输入来识别要用于填充被要求用值填充以便履行所述任务的所述一个或多个槽位的一个或多个值;以及向远程计算设备发送指示要用于填充所述一个或多个槽位的至少一个或多个值的数据,其中,所述发送使所述远程计算设备履行所述任务。

此外,一些实施方式包括一个或多个计算设备的一个或多个处理器,其中所述一个或多个处理器可操作来执行存储在关联的存储器中的指令,并且其中所述指令被配置成引起前述方法中的任一种的执行。一些实施方式还包括一种或多种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质存储可由一个或多个处理器执行以执行前述方法中的任一种的计算机指令。

应该领会的是,在本文中更详细地描述的上述构思和附加构思的所有组合被设想为是本文公开的主题的一部分。例如,在本公开的结尾处出现的要求保护的主题的所有组合被设想为是本文公开的主题的一部分。

附图说明

图1是可以实现本文公开的实施方式的示例环境的框图。

图2示意性地描绘依照各种实施方式的在对话例程的调用期间生成的数据如何可以在各种组件之间流动的一个示例。

图3示意性地演示依照各种实施方式的如何可以在调用对话例程时在各种组件之间交换数据的一个示例。

图4描绘图示根据本文公开的实施方式的示例方法的流程图。

图5图示计算设备的示例架构。

具体实施方式

现在转向图1,图示了可以实现本文公开的技术的示例环境。该示例环境包括多个客户端计算设备1061-n。每个客户端设备106可以执行自动化助理客户端118的相应的实例。可以在一个或多个计算系统(统称为“云”计算系统)上实现一个或多个基于云的自动化助理组件119,诸如自然语言处理器122,所述一个或多个计算系统经由一般地在110处指示的一个或多个局域网和/或广域网(例如,因特网)通信地耦合到客户端设备1061-n。

在一些实施方式中,自动化助理客户端118的实例通过其与一个或多个基于云的自动化助理组件119的交互,可以形成从用户的角度来看似乎是用户可以在人机对话中与之接涉的自动化助理120的逻辑实例的东西。在图1中描绘了这样的自动化助理120的两个实例。通过虚线所包含的第一自动化助理120a为操作第一客户端设备1061的第一用户(未描绘)服务并且包括自动化助理客户端1181和一个或多个基于云的自动化助理组件119。通过双点划线所包含的第二自动化助理120b为操作另一客户端设备106n的第二用户(未描绘)服务并且包括自动化助理客户端118n和一个或多个基于云的自动化助理组件119。因此应该理解的是在一些实施方式中,与在客户端设备106上执行的自动化助理客户端118接涉的每个用户实际上可以与他或她自己的自动化助理120的逻辑实例接涉。为了简洁和简单起见,如在本文中像“为”特定用户“服务”那样使用的项“自动化助理”将指代在由用户操作的客户端设备106上执行的自动化助理客户端118和一个或多个基于云的自动化助理组件119(其可以在多个自动化助理客户端118之间共享)的组合。还应该理解的是在一些实施方式中,自动化助理120可以对来自任何用户的请求做出响应,而不管该用户是否实际上被自动化助理120的该特定实例“服务”。

客户端设备1061-n可以包括例如以下各项中的一个或多个:台式计算设备、膝上型计算设备、平板计算设备、移动电话计算设备、用户的车辆的计算设备(例如,车载通信系统、车载娱乐系统、车载导航系统)、独立交互式扬声器、诸如智能电视这样的智能家电和/或用户的包括计算设备的可穿戴装置(例如,用户的具有计算设备的手表、用户的具有计算设备、虚拟或增强现实计算设备的眼镜)。可以提供附加和/或替代客户端计算设备。

在各种实施方式中,客户端计算设备1061-n中的每一个均可以操作各种不同的应用,诸如多个消息交换客户端1071-n中的对应一个。消息交换客户端1071-n可以以各种形式出现并且这些形式可以跨越客户端计算设备1061-n而变化并且/或者可以在客户端计算设备1061-n中的单个客户端计算设备上操作多种形式。在一些实施方式中,消息交换客户端1071-n中的一个或多个可以以以下各项的形式出现:短消息服务(“sms”)和/或多媒体消息服务(“mms”)客户端、在线聊天客户端(例如,即时信使、因特网中继聊天或“irc”等)、与社交网络相关联的消息传递应用、专用于与自动化助理120的谈话的个人助理消息传递服务等。在一些实施方式中,可以经由通过客户端计算设备106的web浏览器(未描绘)或其它应用所呈现的网页或其它资源来实现消息交换客户端1071-n中的一个或多个。

如在本文中更详细地描述的,自动化助理120经由一个或多个客户端设备1061-n的用户接口输入和输出设备来参与与一个或多个用户的人机对话会话。在一些实施方式中,自动化助理120可以响应于由用户经由客户端设备1061-n中的一个的一个或多个用户接口输入设备提供的用户接口输入而参与与用户的人机对话会话。在那些实施方式中的一些中,用户接口输入被显式地导向到自动化助理120。例如,消息交换客户端1071-n中的一个可以是专用于与自动化助理120的谈话的个人助理消息传递服务并且经由该个人助理消息传递服务提供的用户接口输入可以被自动地提供给自动化助理120。另外,例如,可以基于指示自动化助理120将被调用的特定用户接口输入来将用户接口输入显式地导向消息交换客户端1071-n中的一个或多个中的自动化助理120。例如,特定用户接口输入可以是一个或多个键入的字符(例如,@automatedassistant)、用户与硬件按钮和/或虚拟按钮的交互(例如,轻敲、长轻敲)、口头命令(例如,“heyautomatedassistant(嗨自动化助理)”)和/或其它特定用户接口输入。

在一些实施方式中,即便当用户接口输入未被显式地导向自动化助理120时,自动化助理120也可以响应于该用户接口输入而参与对话会话。例如,自动化助理120可以检查用户接口输入的内容并且响应于在用户接口输入中存在某些项和/或基于其它线索来参与对话会话。在许多实施方式中,自动化助理120可以进行交互式话音响应(“ivr”),使得用户可说出命令、搜索等,并且自动化助理可以利用自然语言处理和/或一种或多种语法来将话语转换成文本,并且相应地对文本做出响应。在一些实施方式中,自动化助理120可附加地或替换地在无需将话语转换成文本的情况下对话语做出响应。例如,自动化助理120可将话音输入转换成嵌入,转换成实体表示(其指示存在于话音输入中的一个或多个实体)和/或其它“非文本”表示并且对这样的非文本表示进行操作。因此,在本文中描述为基于从话音输入转换的文本来操作的实施方式可以附加地和/或替换地直接地对话音输入和/或话音输入的其它非文本表示操作。

客户端计算设备1061-n和操作基于云的自动化助理组件119的计算设备中的每一个均可以包括用于存储数据和软件应用的一个或多个存储器、用于访问数据并执行应用的一个或多个处理器以及便于通过网络进行通信的其它组件。由客户端计算设备1061-n中的一个或多个和/或由自动化助理120执行的操作可以分布在多个计算机系统上。自动化助理120可以作为例如在一个或多个位置中的通过网络彼此耦合的一个或多个计算机上运行的计算机程序被实现。

如上面所指出的,在各种实施方式中,客户端计算设备1061-n中的每一个均可以操作自动化助理客户端118。在各种实施方式中,每个自动化助理客户端118可以包括对应的语音捕获/文本至语音(“tts”)/stt模块114。在其它实施方式中,可以与自动化助理客户端118分开地实现语音捕获/tts/stt模块114的一个或多个方面。

每个语音捕获/tts/stt模块114可以被配置成执行一个或多个功能:例如经由麦克风(其在一些情况下可以包括存在传感器105)捕获用户的语音;将该捕获的音频转换为文本(和/或转换为其它表示或嵌入);和/或将文本转换为语音。例如,在一些实施方式中,因为客户端设备106可能在计算资源(例如,处理器周期、存储器、电池等)方面相对地受约束,所以在每个客户端设备106本地的语音捕获/tts/stt模块114可以被配置成将有限数目的不同的口语短语—特别是调用自动化助理120的短语—转换为文本(或者转换为其它形式,诸如降低维数嵌入)。可以将其它语音输入发送到基于云的自动化助理组件119,其可以包括基于云的tts模块116和/或基于云的stt模块117。

基于云的stt模块117可以被配置成利用云的实际上无限的资源来将由语音捕获/tts/stt模块114捕获的音频数据转换成文本(其然后可以被提供给自然语言处理器122)。基于云的tts模块116可以被配置成利用云的实际上无限的资源来将文本数据(例如,由自动化助理120制定的自然语言响应)转换成计算机生成的语音输出。在一些实施方式中,tts模块116可以将计算机生成的语音输出提供给客户端设备106以例如使用一个或多个扬声器来直接地输出。在其它实施方式中,可以将由自动化助理120生成的文本数据(例如,自然语言响应)提供给语音捕获/tts/stt模块114,其然后可以将文本数据转换成在本地输出的计算机生成的语音。

自动化助理120(以及特别是基于云的自动化助理组件119)可以包括自然语言处理器122、前述tts模块116、前述stt模块117、对话状态跟踪器124、对话管理器126和自然语言生成器128(其在一些实施方式中可以与tts模块116组合)。在一些实施方式中,自动化助理120的引擎和/或模块中的一个或多个可以被省略、组合和/或实现在与自动化助理120分开的组件中。

在一些实施方式中,自动化助理120响应于由客户端设备1061-n中的一个的用户在与自动化助理120的人机对话会话期间生成的各种输入而生成响应内容。自动化助理120可以提供响应内容(例如,当与用户的客户端设备分开时通过一个或多个网络)以用于作为对话会话的一部分呈现给用户。例如,自动化助理120可以响应于经由客户端设备1061-n中的一个提供的自由形式自然语言输入而生成响应内容。如本文所使用的,自由形式自然语言输入是由用户制定并且不局限于被呈现以供由用户选择的一组选项的输入。

如本文所使用的,“对话会话”可以包括一个或多个消息在用户与自动化助理120(以及在一些情况下,其它人类参与者)之间的逻辑上自包含的交换和/或由自动化助理120对一个或多个响应动作的执行。自动助理120可以基于各种信号来区分与用户的多个对话会话,所述各种信号诸如会话之间的时间流逝、会话之间的用户上下文(例如,位置、在安排会议之前/期间/之后等)的改变、对用户与客户端设备之间的一个或多个中间交互而不是用户与自动化助理之间的对话的检测(例如,用户暂时切换应用,用户走开然后稍后返回到独立话音激活的产品)、客户端设备在会话之间的锁定/休眠、用于与自动化助理120的一个或多个实例对接的客户端设备的改变等。

自动化助理120的自然语言处理器122处理由用户经由客户端设备1061-n生成的自由形式自然语言输入并且在一些实施方式中可以生成带注释的输出以供由自动化助理120的一个或多个其它组件使用。例如,自然语言处理器122可以处理由用户经由客户端设备1061的一个或多个用户接口输入设备生成的自然语言自由形式输入。所生成的带注释的输出包括自然语言输入的一个或多个注释以及可选地自然语言输入的项中的一个或多个(例如,全部)。

在一些实施方式中,自然语言处理器122被配置成识别并注释自然语言输入中的各种类型的语法信息。例如,自然语言处理器122可以包括词性标记器(未描绘),所述词性标记器被配置成用其语法角色来注释项。例如,词性标记器可以用诸如“noun(名词)”、“verb(动词)”、“adjective(形容词)”、“pronoun(代词)”等这样的词性标记每个项。另外,例如,在一些实施方式中自然语言处理器122可以附加地和/或替换地包括依赖性解析器(未描绘),所述依赖性解析器被配置成确定自然语言输入中的项之间的句法关系。例如,依赖性解析器可以确定哪些项修饰其它项、句子的主语和动词等(例如,解析树)—并且可以对这样的依赖性进行注释。

在一些实施方式中,自然语言处理器122可以附加地和/或替换地包括实体标记器(未描绘),所述实体标记器被配置成注释一个或多个分段中的实体引用,诸如对人们(包括例如文学人物、名人、公众人物等)、组织、位置(真实的和虚构的)等的引用。在一些实施方式中,关于实体的数据可以被存储在一个或多个数据库中,诸如在知识图(未描绘)中。在一些实施方式中,知识图可以包括表示已知实体(以及在一些情况下,实体属性)的节点以及连接节点并表示实体之间的关系的边。例如,“banana(香蕉)”节点可以被连接(例如,作为子节点)到“fruit(水果)”节点,所述“水果”节点进而可以被连接(例如,作为子节点)到“produce(生产)”和/或“food(食物)”节点。作为另一示例,称作“hypotheticalcafé(假想咖啡馆)”的餐馆可以通过还包括诸如其地址、所供食物的类型、营业时间、联系人信息等的属性的节点来表示。“假想咖啡馆”节点可以在一些实施方式中通过边(例如,表示子-父关系)被连接到一个或多个其它节点,诸如“restaurant(餐馆)”节点、“business(企业)”节点、表示餐馆所位于的城市和/或州的节点等。

自然语言处理器122的实体标记器可以以高粒度水平(例如,以使得能够识别对诸如人们这样的实体类的所有引用)和/或较低粒度水平(例如,以使得能够识别对诸如特定人员这样的特定实体的所有引用)注释对实体的引用。实体标记器可以依靠自然语言输入的内容来解析特定实体并且/或者可以可选地与知识图或其它实体数据库进行通信以解析特定实体。

在一些实施方式中,自然语言处理器122可以附加地和/或替换地包括共指解析器(未描绘),所述共指解析器被配置成基于一个或多个上下文线索来对对同一实体的引用进行分组或“聚类”。例如,可以利用共指解析器来将自然语言输入“ilikedhypotheticalcafélasttimeweatethere(我喜欢上次我们在那里用餐的假想咖啡馆)”中的项“there(那里)”解析为“hypotheticalcafé(假想咖啡馆)”。

在一些实施方式中,自然语言处理器122的一个或多个组件可以依靠来自自然语言处理器122的一个或多个其它组件的注释。例如,在一些实施方式中,命名实体标记器在向特定实体注释所有提及时可能依靠来自共指解析器和/或依赖性解析器的注释。另外,例如,在一些实施方式中共指解析器在对对同一实体的引用进行聚类时可能依靠来自依赖性解析器的注释。在一些实施方式中,在处理特定自然语言输入时,自然语言处理器122的一个或多个组件可以使用除了特定自然语言输入之外的相关在先输入和/或其它相关数据来确定一个或多个注释。

在面向任务对话的上下文中,自然语言处理器122可以被配置成将由用户在对话会话的每轮时提供的自由形式自然语言输入映射到在本文中可以被称为“对话行为”的语义表示。语义表示无论是从用户输入生成的对话行为还是自动化助理话语的其它语义表示都可以采取各种形式。在一些实施方式中,可以将语义表示建模为离散语义框架。在其它实施方式中,可以将语义表示形成为矢量嵌入,例如在连续语义空间中。

在一些实施方式中,对话行为(或更一般地,语义表示)可以尤其指示对应于用户可能正在尝试经由自动化助理120执行的某些动作或任务的参数的一个或多个槽位/值对。例如,假设用户以如下形式提供自由形式自然语言输入:“suggestanindianrestaurantfordinnertonight(建议今晚在印度餐馆用餐)”。在一些实施方式中,自然语言处理器122可以将该用户输入映射到对话行为,所述对话行为包括例如诸如下列的参数:intent(findrestaurant);inform(cuisine=indian,meal=dinner,time=tonight)(意图(找_餐馆);通知(美食=印度,进餐=晚餐,时间=今晚))。对话行为可以以各种形式出现,诸如“greeting(问候)”(例如,调用自动化助理120)、“inform(通知)”(例如,提供用于槽位填充的参数)、“intent(意图)”(例如,找实体、订购某物)、request(请求)(例如,请求关于实体的具体信息)、“confirm(确认)”、“affirm(肯定)”和“thankyou(谢谢你)”(可选地,可以关闭对话会话并且/或者被用作肯定反馈和/或指示应该提供肯定奖励值)。这些只是示例而不意在是限制性的。

对话状态跟踪器124可以被配置成跟踪“对话状态”,所述“对话状态”包括例如用户在人机对话会话的过程中(和/或跨越多个对话会话)的目标(或“意图”)的信念状态。在确定对话状态时,一些对话状态跟踪器可以设法基于对话会话中的用户和系统话语来确定用于在对话中实例化的槽位的最可能的值。一些技术利用固定本体论,所述固定本体论定义一组槽位以及与那些槽位相关联的值的集合。附加地或替换地可以为个别槽位和/或域定制一些技术。例如,一些技术可能需要针对每个域中的每种槽位类型来训练模型。

对话管理器126可以被配置成将例如由对话状态跟踪器124提供的当前对话状态映射到然后由自动化助理120执行的多个候选响应动作中的一个或多个“响应动作”。取决于当前对话框状态,响应动作可以以各种形式出现。例如,可以将对应于在最后一轮之前(例如,当最终用户期望的任务被执行时)发生的对话会话的各轮的初始和中间对话状态映射到包括自动化助理120输出附加自然语言对话的各种响应动作。此响应对话可以包括例如用户为对话状态跟踪器124认为用户打算执行的某个动作(即,填充槽位)提供参数的请求。

在一些实施方式中,对话管理器126可以包括诸如神经网络这样的机器学习模型。在一些这样的实施方式中,神经网络可以采取例如具有后面为softmax层的两个隐藏层的前馈神经网络的形式。然而,可以采用神经网络的其它配置以及其它类型的机器学习模型。在对话管理器126采用神经网络的一些实施方式中,神经网络的输入可以包括但不限于用户动作、前一个响应动作(即,由对话管理器在前一轮中执行的动作)、当前对话状态(例如,由对话状态跟踪器124提供的指示哪些槽位已被填充的二进制矢量)和/或其它值。

在各种实施方式中,对话管理器126可以在语义表示级别下操作。例如,对话管理器126可以以语义对话框架(其可以包括例如由自然语言处理器122提供的对话行为和/或由对话状态跟踪器124提供的对话状态)的形式接收新的观察结果并且从多个候选响应动作中随机地选择响应动作。自然语言生成器128可以被配置成将由对话管理器126选择的响应动作映射到例如在对话会话的每轮结束时作为输出提供给用户的一个或多个话语。

如上面所指出的,在各种实施方式中,用户可以能够创建定制“对话例程”,自动化助理120稍后可以能够有效地重新制定所述定制“对话例程”以完成各种用户定义的或用户选择的任务。在各种实施方式中,对话例程可以包括命令(例如,转换为文本的自由形式自然语言话语或降低维数嵌入、键入的自由形式自然语言输入等)与将全部地或部分地由自动化助理120响应于该命令而执行的任务之间的映射。此外,在一些情况下对,话例程可以包括一个或多个用户定义的“槽位”(也称为“参数”或“属性”),所述“槽位”被要求用值(在本文中也称为“槽位值”)填充以便履行任务。在各种实施方式中,对话例程一旦被创建就可以接受一个或多个值作为输入来填充一个或多个槽位。在一些实施方式中,对话例程针对与对话例程相关联的一个或多个槽位还可以包括可以用于填充槽位的一个或多个用户枚举值,但是这不是必需的。

在各种实施方式中,当一个或多个必需的槽位用值填充时,可以由自动化助理120执行与对话例程相关联的任务。例如,假设用户调用要求两个槽位用值填充的对话例程。如果在调用期间,用户为两个槽位提供了值,则自动化助理120可以使用那些提供的槽位值来执行与对话例程相关联的任务,而无需向用户索求附加信息。因此,可能的是对话例程在被调用时,仅涉及对话的单“轮”(假定用户预先提供所有必要的参数)。另一方面,如果用户未能为至少一个必需的槽位提供值,则自动化助理120可以自动地提供为必需的可是未填充的槽位索求值的自然语言输出。

在一些实施方式中,每个客户端设备106可以包括被配置成存储由一个或多个用户在该设备处创建的一个或多个对话例程的本地对话例程索引113。在一些实施方式中,每个本地对话例程索引113可以存储由任何用户在对应的客户端设备106处创建的对话例程。附加地或替换地,在一些实施方式中,每个本地对话例程索引113可以存储由操作客户端设备106的协调“生态系统”的特定用户所创建的对话例程。在一些情况下,协调生态系统的每个客户端设备106可以存储由控制用户所创建的对话例程。例如,假设用户在采用独立交互式扬声器的形式的第一客户端设备(例如1061)处创建对话例程。在一些实施方式中,该对话例程可以被传播到形成客户端设备106的同一协调生态系统的一部分的其它客户端设备106(例如,智能电话、平板计算机、另一扬声器、智能电视、车辆计算系统等),并且存储在所述其它客户端设备106的本地对话例程索引113中。

在一些实施方式中,可以在多个用户之间共享由个别用户所创建的对话例程。为此,在一些实施方式中,全局对话例程引擎130可以被配置成将由多个用户所创建的对话例程存储在全局对话例程索引132中。在一些实施方式中,存储在全局对话例程索引132中的对话例程基于由创建者授予的权限(例如,经由一个或多个访问控制列表)可以被所选用户利用。在其它实施方式中,存储在全局对话例程索引132中的对话例程可以被所有用户免费利用。在一些实施方式中,由特定用户在客户端设备的协调生态系统的一个客户端设备106处创建的对话例程可以被存储在全局对话例程索引132中,并且此后可以被该特定用户在协调生态系统的其它客户端设备处利用(例如,用于可选下载或在线使用)。在一些实施方式中,全局对话例程引擎130可能能够访问全局对话例程索引132中的全局可用对话例程和存储在本地对话例程索引113中的本地可用对话例程两者。

在一些实施方式中,对话例程可以限于由其创建者调用。例如,在一些实施方式中,话音辨识技术可以用于将新近创建的对话例程指配给其创建者的话音简档。当该对话例程稍后被调用时,自动化助理120可以将说话者的话音与和该对话例程相关联的话音简档相比较。如果匹配,则可以授权说话者调用对话例程。如果说话者的话音与和对话例程相关联的话音简档不匹配,则在一些情况下,可能不允许说话者调用对话例程。

在一些实施方式中,用户可以创建有效地重载现有规范命令和关联任务的定制对话例程。假设用户创建新的对话例程以用于执行用户定义的任务,并且使用先前被映射到不同任务的规范命令来调用该新的对话例程。将来,当该特定用户调用对话例程时,可以履行与对话例程相关联的用户定义的任务,而不是规范命令先前被映射到的不同任务。在一些实施方式中,可以仅在它是调用对话例程的创建者-用户(例如,这可以通过使说话者的话音与对话例程的创建者的话音简档相匹配来确定)的情况下才响应于规范命令而执行用户定义的任务。如果另一用户发出或者以其它方式提供规范命令,则可以替代地执行被传统上映射到规范命令的不同任务。

再次参考图1,在一些实施方式中,任务切换台134可被配置成将当对话例程被用户调用时生成的数据路由到一个或多个适当的远程计算系统/设备,例如,使得可履行与对话例程相关联的任务。虽然与基于云的自动化助理组件119分开地描述任务切换台134,但是这不意在为限制性的。在各种实施方式中,任务切换台134可以形成自动化助理120的整体部分。在一些实施方式中,由任务切换台134路由到适当的远程计算设备的数据可以包括要用于填充与所调用的对话例程相关联的一个或多个槽位的一个或多个值。附加地或替换地,取决于远程计算系统/设备的性质,由任务切换台134所路由的数据可以包括其它信息,诸如要填充的槽位、指示调用命令的数据、指示要执行的任务的数据(例如,用户的感知意图)等。在一些实施方式中,一旦远程计算系统/设备在履行任务时执行其角色,它们就可以直接地和/或经由任务切换台134将响应数据返回给自动化助理120。在各种实施方式中,自动化助理120然后可以生成(例如,通过自然语言生成器128)自然语言输出以例如经由调用用户所操作的客户端设备106的一个或多个音频和/或视觉输出设备提供给用户。

在一些实施方式中,任务切换台134可以与任务索引136操作地耦合。任务索引136可以存储可全部地或部分地由自动化助理120执行的多个候选任务。在一些实施方式中,候选任务可以包括被配置成自动地对订单做出响应、参与人机对话(例如,作为聊天机器人)等的第三方软件代理。在各种实施方式中,这些第三方软件代理可以经由自动化助理120与用户交互,其中自动化助理120作为中介。在其它实施方式中,特别是在第三方代理本身是聊天机器人的情况下,第三方代理可以例如通过自动化助理120和/或任务切换台134直接地连接到用户。附加地或替换地,在一些实施方式中,候选任务可以包括将由用户提供的信息聚集成特定形式,例如,通过填充特定槽位,并且将该信息(例如,以预定格式)呈现给第三方,诸如人类。在一些实施方式中,候选任务可以附加地或可替换地包括不一定需要提交给第三方的任务,在此情况下任务切换台134可以不将信息路由到远程计算设备。

假设用户创建新的对话例程以将定制命令映射到仍未确定的任务。在各种实施方式中,任务切换台134(或自动化助理120的一个或多个组件)可以将新的对话例程与任务索引136中的多个候选任务相比较。例如,可以将与新的对话例程相关联的一个或多个用户定义的槽位与和任务索引136中的候选任务相关联的槽位相比较。附加地或可替换地,可以将可用于填充新的对话例程的槽位的一个或多个用户枚举值与可用于填充与所述多个候选任务中的一个或多个相关联的槽位的枚举值相比较。附加地或可替换地,可以将新的对话例程的其它方面(诸如待映射的命令、包含在用户的调用中的一个或多个其它触发单词等)与所述多个候选任务的各种属性相比较。基于比较,可以从所述多个候选任务中选择命令将被映射到的任务。

假设用户创建按命令“iwanttoordertacos(我想订购炸玉米饼)”而调用的新的对话例程。进一步假设此新的对话例程意在向待确定的墨西哥餐馆下食物订单(可能用户正在依靠自动化助理120来指导用户进行最佳选择)。用户可以例如通过参与与自动化助理120的自然语言对话来定义与此任务相关联的各种槽位,诸如壳类型(例如,松脆、软、面粉、玉米等)、肉类选择、奶酪的类型、酱汁的类型、顶料等。在一些实施方式中,可以将这些槽位与现有第三方食物订购应用(即,第三方代理商)的待填充的槽位相比较以确定哪一个第三方代理最适合。可能有被配置成接收针对墨西哥食物的订单的多个第三方代理。例如,第一软件代理可以接受针对预定菜单项的订单(例如,没有用于定制配料的选项)。第二软件代理可以接受定制玉米饼订单,并且因此可以与诸如顶料、壳类型等这样的槽位相关联。可以将新的玉米饼订购对话例程(包括其关联的槽位)与第一软件代理和第二软件代理相比较。因为第二软件代理具有与由用户在新的对话例程中定义的那些槽位更紧密地对准的槽位,所以第二软件代理可以例如由任务切换台134选择,以用于按命令“iwanttoordertacos(我想要订购玉米饼)”(或者充分地在语法上/在语义上类似的话语)进行映射。

当对话例程定义为了完成任务而要求填充的一个或多个槽位时,不要求用户在最初调用对话例程时前摄地填充这些槽位。相反地,在各种实施方式中,当用户调用对话例程时,就用户未在调用期间为必需的槽位提供值来说,自动化助理120可以使(例如,可听的、视觉的)输出例如作为向用户索求这些值的自然语言输出被提供。例如,在上面的玉米饼订购对话例程情况下,假设用户稍后提供话语“iwanttoordertacos(我想订购玉米饼)”。因为此对话例程具有被要求填充的槽位,所以自动化助理120可以通过针对要在任何遗漏槽位(例如,壳类型、顶料、肉类等)中填充的值提示用户来响应。另一方面,在一些实施方式中,用户可在调用对话例程时前摄地填充槽位。假设用户发出短语“iwanttoordersomefishtacoswithhardshells(我想要订购具有硬壳的一些鱼肉玉米饼)”。在此示例中,用于壳类型和肉类的槽位已经被填充有相应的值“hardshells(硬壳)”和“fish(鱼肉)”。因此,自动化助理120可以仅针对任何遗漏槽位值(诸如顶料)提示用户。一旦所有必需的槽位都被填充有值,在一些实施方式中,任务切换台134就可以采取动作来使任务被执行。

图2描绘由用户提供的自由形式自然语言输入(在图2和别的地方中的“ffnli”)如何可以用于调用对话例程并且由自动化助理120作为实现该对话例程的一部分所聚集的数据如何可以被传播到各种组件以用于履行任务的一个示例。用户以键入形式或者作为说出的话语向自动化助理120提供(在人机对话会话的一轮或多轮期间)ffnli。自动化助理120例如通过自然语言处理器122(在图2中未描绘)和/或对话状态跟踪器124(同样在图2中未描绘)将ffnli解释并解析成各种语义信息,诸如用户意图、待填充的一个或多个槽位、要用于填充槽位的一个或多个值等。

自动化助理120例如通过对话管理器126(在图2中未描绘)可以向对话例程引擎130咨询以识别包括包含在由用户提供的ffnli中的命令与任务之间的映射的对话例程。在一些实施方式中对话例程引擎130可以向由用户操作的计算设备的本地对话例程索引113或全局对话例程索引132中的一个或两个咨询。一旦自动化助理120选择匹配对话例程(例如,包括与包含在用户的ffnli中的命令在语义上/在语法上最类似的对话例程),必要时,自动化助理120就可以针对用于为对话例程填充所有未填充和必需的槽位的值提示用户。

一旦所有必要的槽位都被填充,自动化助理120就可以将指示至少用于填充槽位的值的数据提供给任务切换台134。在一些情况下,数据还可以识别槽位本身和/或被映射到用户的命令的一个或多个任务。任务切换台134然后可以选择将在本文中被称为用于便于执行任务的“服务”的东西。例如,在图2中,服务包括公用交换电话网(“pstn”)服务240、用于处理sms和mms消息的服务242、电子邮件服务244以及一个或多个第三方软件代理246。如通过省略号所指示的,任何其它数目的附加服务可以或者可以不被任务切换台134利用。这些服务可以用于将指示调用的对话例程的数据或简单地“任务请求”路由到一个或多个远程计算设备。

例如,pstn服务240可以被配置成接收指示调用的对话例程的数据(包括用于填充任何必需的槽位的值)并且将该数据提供给第三方客户端设备248。在此场景中,第三方客户端设备248可以采取被配置成接收电话呼叫的计算设备的形式,诸如蜂窝电话、常规电话、ip语音(“voip”)电话、被配置成进行/接收电话呼叫的计算设备等。在一些实施方式中,提供给这样的第三方客户端设备248的信息可以包括自然语言输出,所述自然语言输出例如由自动化助理120(例如,通过自然语言生成器128)和/或由pstn服务240生成。此自然语言输出可以包括例如传达要执行的任务的计算机生成的话语和与该任务相关联的参数(即,必需的槽位的值),并且/或者使得接收方能够参与被设计来使得能够履行用户的任务的有限对话(例如,很像骚扰电话)。此自然语言输出可以例如由第三方计算设备248呈现为人类可感知的输出250,例如,在听觉上、在视觉上、作为触觉反馈等。

假设对话例程被创建来下比萨订单。进一步假设(例如,由用户或者由任务切换台134)针对对话例程所识别的任务是为了向缺少它自己的第三方软件代理的特定比萨店提供用户的比萨订单。在一些这样的实施方式中,响应于对话例程的调用,pstn服务240可以将电话呼叫打到特定比萨店处的电话。当特定比萨店处的雇员接听电话时,pstn服务240可以发起通知比萨店雇员用户希望订购具有由用户在该用户调用对话例程时指定的外皮类型和顶料的比萨的自动化(例如,ivr)对话。在一些实施方式中,可以要求比萨店雇员确认比萨店将履行用户的订单,例如,通过按“1”、提供口头确认等。一旦接收到此确认,它就可以被例如提供给pstn服务240,所述pstn服务240可以进而将确认信息(例如,经由任务切换台134)转发给自动化助理120,所述自动化助理120然后可以通知用户比萨在路上(例如,使用诸如“yourpizzaisontheway(你的比萨在路上)”这样的可听和/或视觉自然语言输出)。在一些实施方式中,比萨店雇员可以能够请求用户可能在调用对话例程时尚未指定的附加信息(例如,在创建对话例程过程中未指定的槽位)。

可以以类似的方式使用sms/mms服务242。在各种实施方式中,可以例如通过任务切换台134来给sms/mms服务242提供指示调用的对话例程的数据,诸如一个或多个槽位/值。基于此数据,sms/mms服务242可以生成各种格式(例如,sms、mms等)的文本消息并且将该文本消息发送到第三方客户端设备248,所述第三方客户端设备248再次可以是智能电话或另一类似的设备。操作第三方客户端设备248的人(例如,比萨店雇员)然后可以使用文本消息(例如,朗读它、使它被大声朗读等)作为人类可感知的输出250。在一些实施方式中,文本消息可以请求人提供响应,诸如“reply‘1’ifyoucanfulfillthisorder.reply‘2’ifyoucannot(如果你能履行此订单则回复‘1’。如果你不能履行此订单则回复‘2’)”。以这种方式,类似于上面在ptsn服务240情况下描述的示例,调用对话例程的第一用户可以与操作第三方设备248的第二用户异步地交换数据,以便第二用户可帮助履行与所调用的对话例程相关联的任务。除了电子邮件服务244利用电子邮件相关通信协议(诸如imap、pop、smtp等)来生成和/或与第三方计算设备248交换电子邮件之外,电子邮件服务244可以像sms/mms服务242一样类似地操作。

服务240-244和任务切换台134使得用户能够创建要与第三方接涉的对话例程,同时降低第三方实现可与之交互的复杂软件服务的要求。然而,至少一些第三方可能更喜欢构建第三方软件代理246和/或具有构建第三方软件代理246的能力,所述第三方软件代理246被配置成自动地(例如,通过由那些远程用户所接涉的自动化助理120)与远程用户交互。因此,在各种实施方式中,一个或多个第三方软件代理246可以被配置成与自动化助理120和/或任务切换台134交互,使得用户能够创建可与这些第三方代理246匹配的对话例程。

假设用户基于槽位、枚举的潜在槽位值、其它信息等来创建与特定第三方代理246匹配(如上所述)的对话例程。当被调用时,对话例程可以使自动化助理120将指示对话例程的数据(包括用户提供的槽位值)发送到任务切换台134。任务切换台134可以进而将此数据提供给匹配第三方软件代理246。在某些实施方式中,第三方软件代理246可以执行与对话例程相关联的任务并且例如向任务切换台134返回结果(例如,成功/失败消息、自然语言输出等)。

如通过从第三方代理246直接到自动化助理120的箭头所指示的,在一些实施方式中,第三方软件代理246可以直接地与自动化助理120对接。例如,在某些实施方式中,第三方软件代理246可以向自动化助理120提供使得自动化助理120能够例如通过自然语言生成器128来生成自然语言输出的数据(例如,状态数据),所述自然语言输出然后例如作为可听和/或视觉输出被呈现给调用了对话例程的用户。附加地或可替换地,第三方软件代理246可以生成它自己的自然语言输出,所述自然语言输出然后被提供给自动化助理120,所述自动化助理120进而将所述自然语言输出输出给用户。

如通过图2中的各种箭头中的其它箭头所指示的,上述示例不意在为限制性的。例如,在一些实施方式中,任务切换台134可以将指示调用的对话例程的数据提供给一个或多个服务240-244,并且这些服务进而可以将此数据(或修改的数据)提供给一个或多个第三方软件代理246。这些第三方软件代理246中的一些可以被配置成接收例如文本消息或电子邮件,并且自动地生成可被返回给任务切换台134并继续返回到自动化助理120的响应。

按本公开的所选方面而配置的对话例程不限于从客户端设备106远程地执行/履行的任务。相反地,在一些实施方式中,用户可以接涉自动化助理120以创建在本地执行各种任务的对话例程。作为非限制性示例,用户能创建使用单个命令来一次配置诸如智能电话这样的移动设备的多个设定的对话例程。例如,用户能创建一次接收所有wi-fi设定、蓝牙设定和热点设定作为输入并且相应地改变这些设定的对话例程。作为另一示例,用户能创建在用户说“i’mgonnabelate(我要迟到了)”情况下调用的对话例程。用户可以指示自动化助理120此命令应该使自动化助理120例如使用文本消息、电子邮件等来通知另一人(诸如用户的配偶)该用户将晚到达某个目的地。在一些情况下,用于这样的对话例程的槽位可以包括用户将到达用户的预定目的地的预测时间,其可以由用户填充或者例如由自动化助理120基于位置坐标数据、日历数据等自动预测。

在一些实施方式中,用户可以能够将对话例程配置成在特定槽位中使用预选槽位值,使得用户不需要提供这些槽位值,并且对于那些值在用户未提供它们时不会被提示。假设用户创建比萨订购对话例程。进一步假设该用户始终更喜欢薄外皮。在各种实施方式中,除非用户另外指定,否则用户可以指示自动化助理120在此特定对话例程被调用时,应该用默认值“thinkcrust(薄外皮)”自动地填充槽位“crusttype(外皮类型)”。这样,如果用户偶尔想要订购不同的外皮类型(例如,用户有更喜欢厚外皮的访客),则除了用户可以具体地请求不同类型的外皮(例如,“heyassistant,ordermeahand-tossedpizza(嗨助理,给我订购手工比萨)”)之外,用户可像平常一样调用对话例程。如果用户简单地说“heyassistant,ordermeapizza(嗨助理,给我订购比萨)”,则自动化助理120可能已假定薄外皮并针对其它必需的槽位值提示用户。在一些实施方式中,自动化助理120可以随着时间的推移而“学习”用户更喜欢哪些槽位值。以后,当用户在未显式地提供那些学习的槽位值的情况下调用对话例程时,例如,如果用户已提供那些槽位值超过预定次数或者超过调用对话例程的特定阈值频率,则自动化助理120可以假定那些值(或者要求用户确认那些槽位值)。

图3描绘依照各种实现方式的当用户调用比萨订购对话例程时可能发生的一个示例过程流程。在301处,用户通过例如向自动化助理客户端118发出调用短语“orderathincrustpizza(订购薄外皮比萨)”来调用比萨订购对话例程。在302处,自动化助理客户端118向基于云的自动化助理组件(“cbaac”)119提供调用短语,例如作为记录、转录文本分段、降低维数嵌入等。在303处,cbaac119的各种组件(诸如自然语言处理器122、对话状态跟踪器124、对话管理器126等)可以使用各种线索(诸如对话上下文、动词/名词词典、规范话语、同义词词典(例如,辞典)等)来如上所述处理请求,以提取诸如“pizza(比萨)”的对象和“thincrust(薄外皮)”的属性(或“槽位值”)这样的信息。

在304处,可以将此提取的数据提供给任务切换台134。在一些实施方式中,在305处,任务切换台134可以向对话例程引擎130咨询以例如基于在303处提取并在304处接收的数据来识别与用户的请求匹配的对话例程。如图3中所示,在此示例中所识别的对话例程包括“order(订购)”的动作(其本身可以是槽位)、“pizza”的对象(其在一些情况下也可以是槽位)、“crust”的属性(或“槽位”)(其是必需的)、“topping(顶料)”的另一属性(或槽位)(其也是必需的)以及“order_service(订购_服务)”的所谓的“implementor(实现者)”。取决于用户如何创建对话例程和/或对话例程是否与特定任务(例如,特定第三方软件代理246)匹配,“实现者”可以是例如图2的服务240-244和/或一个或多个第三方软件代理246中的任一个。

在306处,可以例如由任务切换台134确定用于对话例程的一个或多个必需的槽位尚未被填充有值。因此,任务切换台134可以通知诸如自动化助理120这样的组件(例如,图3中的自动化助理客户端118,但是它可能是诸如一个或多个cbaac119这样的另一组件)一个或多个槽位有待用槽位值填充。在一些实施方式中,任务切换台134可以生成针对这些未填充槽位提示用户的必要的自然语言输出(例如,“whattopping(什么顶料)?”),并且自动化助理客户端118可以简单地将此自然语言输出提供给用户,例如,在307处。在其它实施方式中,提供给自动化助理客户端118的数据可以提供遗漏信息的通知,并且自动化助理客户端118可以与cbaac119的一个或多个组件接涉以生成被呈现给用户以针对遗漏槽位值提示用户的自然语言输出。

尽管为了简洁和完整性在图3中未示出,但是可以将用户提供的槽位值返回给任务切换台134。在308处,在所有必需的槽位都被填充有用户提供的槽位值情况下,任务切换台134然后可以能够制定完整任务。此完整任务可以例如由任务切换台134提供给适当的实现者350,其像上面所指出的那样可以是一个或多个服务240-244、一个或多个第三方软件代理246等。

图4是图示根据本文公开的实施方式的示例方法400的流程图。为了方便,参考执行操作的系统描述流程图的操作。此系统可以包括各种计算机系统的各种组件,诸如实现自动化助理120的计算系统的一个或多个组件。此外,虽然以特定次序示出方法400的操作,但是这不意在为限制性的。可以重新排序、省略或者添加一个或多个操作。

在块402处,系统可以例如在客户端设备106的一个或多个输入组件处从用户接收第一自由形式自然语言输入。在各种实施方式中,第一自由形式自然语言输入可以包括用于执行任务的命令。作为工作示例,假设用户提供口语话语“iwantapizza(我想要比萨)”。

在块404处,系统可以对自由形式自然语言输入执行语义处理。例如,一个或多个cbaac119可以将用户的话语(或其降低维数嵌入)与一个或多个规范命令、各种词典等相比较。自然语言处理器122可以执行上述分析的各个方面以识别实体,执行指代消解,标记词性等。在步骤406处,系统可以基于块404的语义处理来确定自动化助理120不能解释命令。在一些实施方式中,在块408处,系统可以在客户端设备106的一个或多个输出组件处提供索求来自用户的关于命令的澄清的输出,诸如输出自然语言输出:“idon'tknowhowtoorderapizza(我不知道如何订购比萨)”。

在块410处,系统可以在输入组件中的一个或多个处从用户接收第二自由形式自然语言输入。在各种实施方式中,第二自由形式自然语言输入可以识别被要求用值填充以履行任务的一个或多个槽位。例如,用户可以提供诸如“toorderapizza,youneedtoknowthetypeofcrustandalistoftoppings(为了订购比萨,你需要知道外皮的类型和顶料的列表)”这样的自然语言输入。这种特定自由形式自然语言输入识别两个槽位:外皮类型和顶料的列表(其在技术上取决于用户期望多少顶料而可能是任何数目的槽位)。

如上面间接提到的,在一些实施方式中,用户可以能够枚举用于对话例程的给定槽位的潜在或候选槽位值的列表。在一些实施方式中,这实际上可以使该槽位局限于来自枚举列表的一个或多个值。在一些情况下,枚举用于槽位的可能的值可以使得自动化助理120能够确定哪一个槽位将被用特定值填充并且/或者确定提供的槽位值是无效的。例如,假设用户按短语“ordermeapizzawiththickcrust,tomatoes,andtires(为我订购具有厚外皮、西红柿和轮胎的比萨)”而调用对话例程。自动化助理120可以基于“thickcrust(厚外皮)”是潜在值的枚举列表之一来使“thinkcrust(厚外皮)”与槽位“crusttype(外皮类型)”匹配。这同样适用于“tomatoes(西红柿)”和槽位“toppings(顶料)”。然而,因为“tires(轮胎)”不可能在潜在顶料的枚举列表中,所以自动化助理120可以要求用户对所指定的顶料轮胎进行校正。在其它实施方式中,用户提供的枚举列表可以简单地包括可以由自动化助理120使用(例如,作为要在对话例程的将来调用期间提供给用户的建议)的非限制性潜在槽位值。这在诸如可能的比萨顶料的列表可能很大的比萨订购这样的上下文中可以是有益的,并且可以跨越比萨公司和/或随着时间的推移而大大地变化(例如,比萨店可以取决于应季产品而在一年中的不同时间提供不同的顶料)。

继续工作示例,自动化助理120可能问诸如“whatarethepossiblepizzacrusttypes(可能的比萨外皮类型是什么)?”或“whatarethepossibletoppings(可能的顶料是什么)?”这样的问题。用户可以通过提供可能性的枚举列表以及指示枚举列表是意在为约束性的(即,不允许在那些枚举列表之外的槽位值)还是简单地为示例性的来对每个这样的问题做出响应。在一些情况下用户可能响应给定槽位不限于特定值,使得自动化助理120不受约束并且可用用户提供的任何槽位值来填充该槽位。

返回到图4,一旦用户已完成定义任何必需的/可选的槽位并且/或者枚举潜在槽位值的列表,在块412处,系统(例如,对话例程引擎130)就可以存储包括由用户提供的命令与任务之间的映射的对话例程。所创建的对话例程可以被配置成接受用于填充一个或多个槽位的一个或多个值作为输入,并且使与对话例程相关联的任务例如在如先前所描述的远程计算设备处被履行。对话例程可以被以各种格式存储,并且在本公开的上下文中使用哪一种格式并不关键。

在一些实施方式中,特别是在用户显式地请求自动化助理120生成对话例程而不是在自动化助理120首先未能解释用户说的东西的情况下,可以省略图4的各种操作,诸如操作402-408。例如,用户能简单地对自动化助理120说出诸如下列的短语以触发对话例程的创建:“heyassistant,iwanttoteachyouanewtrick(嗨助理,我想要教你一种新把戏)”或大意是那样的东西。这可以触发例如在块410处开始的方法400的部分。当然,许多用户可能不知道自动化助理120能够学习对话例程。因此,当用户发出自动化助理120不能解释的命令或请求时自动化助理120通过如上面关于块402-408所描述的过程来指导用户可以是有益的。

稍后某时,在块414处,系统可以在相同的客户端设备106或不同的客户端设备106(例如,客户端设备的同一协调生态系统的另一客户端设备)的一个或多个输入组件处从用户接收后续自由形式自然语言输入。后续自由形式自然语言输入可以包括命令或其某种语法和/或语义变化,其可以基于在块412处存储的映射来调用对话例程。

在块416处,系统可以基于后续自由形式自然语言输入或附加自由形式自然语言输入(例如,从未能在对话框的调用时提供一个或多个必需的槽位值的用户索求的)来识别要用于填充一个或多个槽位的一个或多个值,所述一个或多个槽位被要求用值填充以便履行与对话例程相关联的任务。例如,如果用户简单地调用对话例程而没有为任何必需的槽位提供值,则自动化助理120可以例如一次一个、批量地等向用户索求槽位值。

在一些实施方式中,在块418处,系统例如通过任务切换台134和/或服务240-244中的一个或多个可以例如向诸如第三方客户端设备248这样的远程计算设备和/或向第三方软件代理246发送指示要用于填充一个或多个槽位的至少一个或多个值的数据。在各种实施方式中,发送可以使远程计算设备履行任务。例如,如果远程计算设备操作第三方软件代理246,则例如从任务切换台134接收数据可以触发第三方软件代理246使用用户提供的槽位值来履行任务。

本文描述的技术可以用于有效地将可以由各种不同的第三方软件应用(例如,第三方软件代理)执行的任务“胶合在一起”。实际上,完全可以创建使多个任务由多方履行的单个对话例程。例如,用户能创建按诸如“heyassistant,iwanttotakemywifetodinnerandamovie(嗨助理,我想要带我的妻子去吃晚饭并看电影)”这样的短语而调用的对话例程。用户可以在单个对话例程中定义与多个任务(诸如进行晚餐预定并购买电影票)相关联的槽位。用于进行晚餐预定的槽位可以包括例如餐馆(假定用户已经挑选了具体餐馆)、美食类型(如果用户尚未挑选餐馆)、价格范围、时间范围、评论范围(例如,三星以上)等。用于购买电影票的槽位可以包括例如电影、剧院、时间范围、价格范围等。稍后,当用户调用此“dinnerandamovie(晚餐和电影)”预定时,就用户未前摄地提供槽位值来填充各个槽位来说,自动化助理120可以向用户索求这样的值。一旦自动化助理具有用于对话例程的每个任务的所有必需的槽位的槽位值,自动化助理120就可以将数据发送到如先前所描述的各种远程计算设备以使每个任务被履行。在一些实施方式中,自动化助理120可以向用户发布哪些任务被履行并且哪些仍是待定的。在一些实施方式中,自动化助理120可以在所有任务被履行时(或者在这些任务中的一个或多个不能被履行的情况下)通知用户。

在一些情况下(不管是否在单个谈话预定中将多个任务胶合在一起),自动化助理120可以通过首先搜索潜在槽位值(例如,电影院里的电影、演出时间、可用晚餐预定等)并且然后将这些潜在槽位值呈现给用户(例如,作为建议或者作为可能性的枚举列举)来针对特定槽位值提示用户。在一些实施方式中,自动化助理120可以利用用户的各个方面,诸如用户的偏好、过去的用户活动等,以缩小此类列表的范围。例如,如果用户(和/或用户的配偶)更喜欢特定类型的电影(例如,评论高的、喜剧、恐怖、动作、戏剧等),则自动化助理120可以缩小潜在槽位值的列表的范围然后才将它们呈现给用户。

自动化助理120可以采取有关可能是履行特定任务(例如,订购产品、进行预定等)所必需的支付的各种方法。在一些实施方式中,自动化助理120必要时可以访问自动化助理120可以例如向第三方软件代理246提供的用户提供的支付信息(例如,一张或多张信用卡)。在一些实施方式中,当用户创建对话例程来履行要求支付的任务时,自动化助理120可以针对支付信息和/或针对使用已经与用户的简档相关联的支付信息的许可来提示用户。在指示调用的对话例程的数据(包括一个或多个槽位值)被提供给第三方计算设备(例如,248)以作为自然语言输出被输出的一些实施方式中,可以或者也可以不提供用户的支付信息。在未提供用户的支付信息的情况下,例如,当订购食物时,食物供应商可以在将食物运送到用户的家门时简单地请求用户支付。

在一些实施方式中,自动化助理120可以通过分析用户与在一个或多个客户端计算设备上运行的一个或多个应用的接涉以检测模式来“学习”新的对话例程。在各种实施方式中,自动化助理120可以向用户提供自然语言输出,例如,前摄地在现有的人机对话期间或者作为问用户他们是否愿意将通常执行的动作/任务的序列指配给口头命令的另一类型的通知(例如,弹出卡片、文本消息等),实际上在无需用户显式地要求对话例程的情况下来构建并推荐对话例程。

作为示例,假设用户重复地访问单个食物订购网站(例如,与餐馆相关联),查看与菜单相关联的网页,然后打开用户操作来往与同一食物订购网站相关联的电话号码拨打电话的单独的电话应用。自动化助理120可以检测此模式并生成对话例程以供推荐给用户。在一些实施方式中,自动化助理120可以抓取菜单网页以得到可被并入到对话例程中的潜在槽位和/或潜在槽位值,并且将一个或多个命令(自动化助理120可以建议或者可以由用户提供)映射到食物订购任务。在这种情况下,食物订购任务可以包括像上面关于pstn240所描述的那样呼叫电话号码并且向食物订购网站的雇员输出自然语言消息(例如,骚扰电话)。

还能检测用于订购食物(或者一般地执行其它任务)的动作的其它序列。例如,假设用户通常打开第三方客户端应用来订购食物,并且该第三方客户端应用是基于gui的应用。自动化助理120可以对此进行检测并且例如确定第三方客户端应用与第三方软件代理(例如,246)对接。除了与第三方客户端应用交互之外,此第三方软件代理246还可能已经被配置成可与自动化助理交互。在这样的场景中,自动化助理120能生成对话例程来与第三方软件代理246交互。或者,假设第三方软件代理246当前不能够与自动化助理交互。在一些实施方式中,自动化助理可以确定第三方客户端应用为每个订单提供什么信息,并且可以使用该信息来为对话例程生成槽位。当用户稍后调用该对话例程时,自动化助理120可以填充必需的槽位,然后基于这些槽位/槽位值,生成与第三方软件代理246兼容的数据。

图5是可以可选地被利用来执行本文描述的技术的一个或多个方面的示例计算设备510的框图。在一些实施方式中,客户端计算设备和/或其它组件中的一个或多个可以包括示例计算设备510的一个或多个组件。

计算设备510通常包括经由总线子系统512与许多外围设备进行通信的至少一个处理器514。这些外围设备可以包括存储子系统524(包括例如存储器子系统525和文件存储子系统526)、用户接口输出设备520、用户接口输入设备522和网络接口子系统516。输入和输出设备允许用户与计算设备510交互。网络接口子系统516提供到外部网络的接口并且耦合到其它计算设备中的对应的接口设备。

用户接口输入设备522可以包括键盘、诸如鼠标、轨迹球、触摸板或图形平板这样的指示设备、扫描器、并入到显示器中的触摸屏、诸如话音辨识系统、麦克风这样的音频输入设备和/或其它类型的输入设备。通常,术语“输入设备”的使用旨在包括所有可能类型的设备以及用于将信息输入到计算设备510中或者通信网络上的方式。

用户接口输出设备520可以包括显示子系统、打印机、传真机或诸如音频输出设备这样的非视觉显示器。显示子系统可以包括阴极射线管(crt)、诸如液晶显示器(lcd)这样的平板设备、投影设备或用于创建可见图像的某种其它机制。显示子系统还可以例如经由音频输出设备提供非视觉显示。通常,术语“输出设备”的使用旨在包括所有可能类型的设备以及用于从计算设备510向用户或者向另一机器或计算设备输出信息的方式。

存储子系统524存储提供本文描述的模块中的一些或全部的功能的编程和数据构造。例如,存储子系统524可以包括用于执行图4的方法的所选方面以及用于实现图1至图3中描绘的各种组件的逻辑。

这些软件模块通常由处理器514单独或者与其它处理器相结合地执行。存储子系统524中使用的存储器525可包括许多存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)530以及存储有固定指令的只读存储器(rom)532。文件存储子系统526可为程序和数据文件提供持久存储,并且可以包括硬盘驱动器、软盘驱动器以及关联的可移动介质、cd-rom驱动器、光驱或可移动介质盒。实现某些实施方式的功能性的模块可以由文件存储子系统526存储在存储子系统524中,或者存储在可由处理器514访问的其它机器中。

总线子系统512提供用于让计算设备510的各个组件和子系统按预期彼此通信的机制。尽管总线子系统512被示意性地示出为单条总线,但是总线子系统的替代实施方式可以使用多条总线。

计算设备510可以是各种类型,包括工作站、服务器、计算集群、刀片服务器、服务器场或任何其它数据处理系统或计算设备。由于计算机和网络的不断变化的性质,对图5中描绘的计算设备510的描述仅作为具体示例意在用于图示一些实施方式的目的。计算设备510的许多其它配置可能具有比图5中描绘的计算设备更多或更少的组件。

在本文讨论的某些实施方式可以收集或者使用关于用户的个人信息(例如,从其它电子通信中提取的用户数据、关于用户的社交网络、用户的位置、用户的时间的信息、用户的生物特征信息以及用户的活动和人口统计信息、用户之间的关系等)的情形下,用户被提供有一个或多个机会来控制是否收集信息、是否存储个人信息、是否使用个人信息以及如何关于用户来收集、存储和使用信息。也就是说,本文讨论的系统和方法仅在从相关用户接收到要这样做的显式授权时才收集、存储和/或使用用户个人信息。

例如,用户被提供有对程序或特征是否收集关于特定用户或与程序或特征有关的其它用户的用户信息的控制。要收集个人信息的每个用户被呈现有一个或多个选项以允许控制与该用户相关的信息收集,以提供关于是否收集信息并且关于要收集信息的哪些部分的许可或授权。例如,可通过通信网络给用户提供一个或多个这样的控制选项。此外,某些数据可以在它被存储或者使用之前被以一种或多种方式处理,使得个人可识别的信息被移除。作为一个示例,可以处理用户的标识,使得不能确定个人可识别的信息。作为另一示例,用户的地理位置可以被一般化为较大的区域,使得不能确定用户的特定位置。

虽然已在本文中描述和图示了若干实施方式,但是可以利用用于执行功能并且/或者获得结果和/或本文描述的优点中的一个或多个的各种其它手段和/或结构,并且这样的变化和/或修改中的每一个均被视为在本文描述的实施方式的范围内。更一般地,本文描述的所有参数、尺寸、材料和构造意在为示例性的,并且实际的参数、尺寸、材料和/或构造将取决于教导被用于的一个或多个具体应用。本领域的技术人员将认识到或者能够使用不超过例行实验来探知本文描述的具体实施方式的许多等同物。因此应当理解的是,上述实施方式仅作为示例被呈现,并且在所附权利要求及其等同物的范围内,可以以不同于具体地描述和要求保护的方式实践实施方式。本公开的实施方式针对本文描述的每个单独的特征、系统、物品、材料、套件和/或方法。此外,如果这样的特征、系统、物品、材料、套件和/或方法不是相互不一致的,则两个或更多个这样的特征、系统、物品、材料、套件和/或方法的任何组合被包括在本公开的范围内。

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