一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

流式实时对话管理的制作方法

2022-06-01 07:47:43 来源:中国专利 TAG:

流式实时对话管理
1.本技术是申请日为2017年10月30日、申请号为201711035649.7、发明名称为“流式实时对话管理”的发明专利申请的分案申请。
2.相关申请
3.本技术是在2017年2月16日提交的标题为“streaming real-time dialog management”的美国临时专利申请no.62/459,820的非临时申请,并要求该临时申请的优先权,该临时申请的公开内容通过引用并入本文。


背景技术:

4.对话管理是跟踪用户与电子助手的会话的问题。助手等待用户完成讲话、计算出响应,然后提供该响应。由于用户采取轮流说话,轮到助理,然后轮到用户,以此类推,所以这样的流程被称为轮换(turn-taking)。大多数电子助手一次处理一个模式(schema),该模式类似于任务或会话的主题,如烹饪、天气、设置定时器等。可处理多个模式的助手仍以轮换流程操作。


技术实现要素:

5.实施方案提供了实时的而非轮换式的对话管理。使用实时对话管理框架的系统能够参与对用户的自然、实时、双向的会话。由于系统不断地监听流式音频,并决定用户打算说什么,什么响应可能是适合的,以及何时适当地提供响应,所以实时对话管理与轮换不同。在轮换中,系统按照用户的特定请求生成并提供响应;关于是否给予响应并不存在不确定性。相比之下,在实时对话管理中,系统可以尝试在接收到来自用户的完整请求(如,用户沉默一段时间后所暗示的请求)之前预测适当的响应。在预测时,系统必须处理在系统还接收到来自用户的输入时更新、修剪和生成的多个对话路径。实时对话管理框架平衡处理资源(用于计算从未提供的响应的浪费的处理循环)。实时对话管理框架可以使电子助手能够比轮换更快地形成响应,以在适当的时间提供后向信道反馈,并且可以提供辅助响应,或换句话说,使用户想法完整的预测性响应。因此,实时对话管理框架比轮换对话更好地模拟自然会话。包括处理多个模式的会话混合器的实时对话管理框架增强了对更自然会话的模拟。实时、双向和预测性的对话改进了电子助手界面。
6.根据某些方面,可由一个或多个处理器实现的方法包括生成对于触发事件的第一候选响应。触发事件可以是接收到对话的实时流块或接收到对于对话模式的先前后端请求的后端响应。“后端响应”是来自后端系统和/或对话管理器的响应。该方法还包括使用至少一个第一候选响应来更新被接受或待决的候选响应的列表,并且为触发事件确定候选响应的列表是否包括具有满足触发阈值的置信分数的候选响应。该方法还包括当列表不包括具有满足触发阈值的置信分数的候选响应时,等待下一触发事件而不提供候选响应。
7.根据某些方面,可由一个或多个处理器实现的方法包括响应于接收到来自实时对话流的块而将该块提供到对话混合器,从对话混合器接收该块的响应候选,每个响应候选是对话模式的系统响应或对话模式的后端请求,并且使用该块的响应候选中的至少一个来
更新响应候选的旋转列表。该方法还包括对列表中的响应候选进行排序,每个响应候选具有相应的置信分数,确定旋转列表是否包括具有满足触发阈值的置信分数的响应候选,以及当旋转列表不包括具有满足触发阈值的置信分数的响应候选时,发起由列表中具有满足排序阈值的置信分数但尚未处于被接受的对话状态的响应候选所表示的后端请求。
8.根据某些方面,可由一个或多个处理器实现的方法包括接收实时对话的触发事件,该实时对话具有与第一路径相关联的对话束,对话束表示与用户的实时对话的对话状态,确定触发事件在对话束中开启新路径,以及在第一路径中回溯到对话束中的祖先节点。该方法还包括通过使用由祖先节点表示的基状态和来自触发事件的信息生成响应候选,从而从祖先节点开起对话束中的新路径,其中对话束中的路径包括一个或多个被接受或待决的响应候选,响应候选是由对话模式生成的系统响应或对话模式的后端请求。
9.根据某些方面,计算系统包括至少一个处理器和存储指令的存储器,当指令由至少一个处理器运行时使计算设备执行本文所公开的任何方法、操作或过程。
10.根据某些方面,在计算机可读存储设备上具体化的计算机程序产品包括指令,当指令由基板中形成的至少一个处理器运行时,使得计算设备执行任意所公开的方法、操作或过程。另一总体方面包括用于流式传输实时、多模式对话管理以增强与用户的实时对话的系统和/或方法,基本上如附图中至少一个所示和/或描述的,并且在权利要求中更全面地阐述的。
11.根据某些方面,一种计算设备被配置为管理与用户的实时对话,所述计算设备包括:至少一个处理器;和存储指令的存储器,当所述指令由所述至少一个处理器运行时,使得所述计算设备:接收一连串的块中的初始块或下一个块,该一连串的块表示来自用户的实时讲话流;基于接收到块生成第一候选响应;用第一候选响应中的至少一个更新候选响应的排序列表,在接收到块时,所述候选响应被接受或待决,更新的候选响应的排序列表包括针对一个或多个对话模式的一个或多个后端请求以及由对话模式中的一个或多个生成的一个或多个系统响应;基于更新的排序列表执行对两个或更多个对话模式的后端请求;和在执行后端请求之后:基于响应后端请求获得的针对两个或更多个对话模式的信息生成后端响应;基于生成的后端响应,从两个或更多个对话模式中导出复合候选响应;基于复合候选响应进一步更新更新的排序列表;以及基于进一步更新的排序列表的候选响应的更新排序,修剪进一步更新的排序列表。
12.根据某些方面,一种方法包括:接收一连串的块中的初始块或下一个块,该一连串的块表示来自用户的实时讲话流;基于接收到块生成第一候选响应;用第一候选响应中的至少一个更新候选响应的排序列表,在接收到块时,所述候选响应被接受或待决,更新的候选响应的排序列表包括针对一个或多个对话模式的一个或多个后端请求以及由对话模式中的一个或多个生成的一个或多个系统响应;基于更新的排序列表执行对两个或更多个对话模式的后端请求;和在执行后端请求之后:基于响应后端请求获得的针对两个或更多个对话模式的信息生成后端响应;基于生成的后端响应,从两个或更多个对话模式中导出复合候选响应;基于复合候选响应进一步更新更新的排序列表;以及基于进一步更新的排序列表的候选响应的更新排序,修剪进一步更新的排序列表。
13.根据某些方面,一种非暂时性计算机可读存储介质包括指令,当所述指令被执行时,使一个或多个处理器:接收一连串的块中的初始块或下一个块,该一连串的块表示来自
用户的实时讲话流;基于接收到块生成第一候选响应;用第一候选响应中的至少一个更新候选响应的排序列表,在接收到块时,所述候选响应被接受或待决,更新的候选响应的排序列表包括针对一个或多个对话模式的一个或多个后端请求以及由对话模式中的一个或多个生成的一个或多个系统响应;基于更新的排序列表执行对两个或更多个对话模式的后端请求;和在执行后端请求之后:基于响应后端请求获得的针对两个或更多个对话模式的信息生成后端响应;基于生成的后端响应,从两个或更多个对话模式中导出复合候选响应;基于复合候选响应进一步更新更新的排序列表;以及基于进一步更新的排序列表的候选响应的更新排序,修剪进一步更新的排序列表。
14.本文描述的主题的一个或多个实施方案可被实施,以便实现以下一个或多个优点。例如,实施方案比基于轮次的对话管理器更快地计算出响应。在一些实施方案中,系统可以在10毫秒内生成候选。这比传统的轮换系统快得多,传统的轮换系统通常在开始处理用户的对话轮次之前等待一段时间(例如,0.5毫秒)。作为另一示例,由于系统可以提供后向信道反馈,可以提供帮助,并且可以比轮换更快地执行操作,所以实施方案提供与用户更准确的会话。因此,由于缩短了生成候选响应的时间和/或由于提供的更好理解/更准确的响应消除(或至少显著减少)对于因被电子助手错误解释或错误理解而导致用户重复或重新表述它们的部分讲话的需要,所以相比使用基于轮次的对话管理器,来自用户的调用可能被更快地完成。这减少了网络资源致力于调用的时间长度,降低了用户设备的功耗(当用户具有电池供电的设备时尤其有利)等。提供更准确/自然的会话也使得电子助手更用户友好地且容易地使用。此外,由于系统可以跟踪和保持不同的路径,所以系统可以进行多个长期对话。实施方案在远程过程调用上也是非阻塞的,进一步提高了设备性能。
15.在附图和下面的描述中阐述了一个或多个实施方案的细节。从描述和附图中以及从权利要求书中,其它特征将是显而易见的。
附图说明
16.图1是示出根据所公开的主题的示例系统的框图。
17.图2是示出根据所公开的主题的另一示例系统的框图。
18.图3示出了根据公开的实施方案的用于管理实时对话的示例过程的流程图。
19.图4是示出根据所公开的主题的由对话主机管理的示例实时对话束(dialog beam)的框图。
20.图5示出了可用来实现所描述的技术的计算机设备的示例。
21.图6示出了可用来实现所描述的技术的分布式计算机设备的示例。
22.各附图中的相同附图标记指示相同的元件。
具体实施方式
23.实施方案包括系统和方法,其以例如块为单位读取实时流式输入,保持针对输入的响应候选列表,并且决定何时将响应候选中的一个向回提供给用户。响应候选的列表是动态列表,因为其通过添加一个或多个新的响应候选和/或从列表中移除(或“修剪”)一个或多个响应候选来不断更新,并且被称为“旋转”列表。对话主机在触发事件时调用对话混合器,该触发事件可以是返回后端请求、接收到新的流输入或时间窗口到期(在窗口内没有
其它触发事件的情况下)。对话主机维持对话束中的一个或多个路径,管理分支路径,修剪具有较低后验概率的路径,以及回溯以便在需要时开启新路径。流式输入是实时接收的输入,并且可能包括不完整的请求。换句话说,实施方案甚至在用户结束讲话之前就开始生成响应候选。由于对话主机在用户结束讲话之前就开始制定回复,所以对话主机提高了电子助手可以响应用户的速度。对话主机包括排序和触发能力,以决定要作为会话的部分提供给用户哪个(如果有的话)对话响应。决定何时响应,即决定不响应特定的触发事件,是重要的功能,以便电子助手不会不适当地中断或提供过早的建议。实施方案跟踪对话束的每个路径的对话状态,并且在附加的输入改变对话的上下文时能够回溯或开启用于对话的新路径。
24.图1是根据示例实施方案的实时对话管理系统的框图。系统100可以用来更准确地模拟与用户的自然会话,以提供更有帮助的响应,以及比传统的轮换对话管理器更快地提供响应。系统100还可以被配置为提供适时组合了模式的多个对话模式的候选响应。系统100能够处理来自用户的实时流输入,而不是在用户完成命令或查询之后等待处理输入。图1中的系统100的描绘是单个计算设备,但是实施方案也可以将一些组件移动到服务器,使系统100成为客户端-服务器系统,如图2中更详细地示出。此外,一个或多个组件可以组合成单个模块或引擎,并且所示组件的一些能力可以由单独的引擎执行。在一些实施方案中,计算设备的用户可以指示在服务器处执行部分处理。因此,实施方案不限于所示的精确配置。
25.实时对话管理系统100包括计算设备105。计算设备可以实现在个人计算机(例如膝上型计算机)、智能电话机、可穿戴设备(智能手表、智能眼镜等)、游戏机、家用电器等中。计算设备105可以是如图5所示的计算机设备500的示例。计算设备105可以包括形成在基板(未示出)中的一个或多个处理器,该一个或多个处理器被配置为运行一个或多个机器可执行指令、或软件、固件或其组合的各个片段。处理器可以是基于半导体的,也就是说,处理器可以包括可以执行数字逻辑的半导体材料。计算设备105还可以包括一个或多个计算机存储器。存储器,例如主存储器,可以被配置为临时地、永久地、半永久地、或其组合地存储一条或多条数据。存储器可以包括以可由一个或多个处理器读取和/或运行的格式存储信息的任何类型的存储设备。存储器可以包括易失性存储器、非易失性存储器或其组合,并且存储模块或引擎,当模块或引擎由一个或多个处理器运行时执行某些操作。在一些实施方案中,模块可以存储在外部存储设备中并被加载到计算设备105的存储器中。
26.计算设备105可以包括对话输入/输出设备110。对话输入/输出设备110可以包括使得对话主机120能够从用户180接收输入或者向用户180提供响应的硬件。用户的输入可以是有声音的,例如以语音的形式。可以使用传统技术(例如分块(chunking))将语音提供为流输入。用户的输入也可以是非声音的,例如由用户提供的文本、轻敲等。类似地,输出也可以是基于语音或基于文本。输入/输出设备110的示例可以包括麦克风和扬声器。输入/输出设备100的另一示例可以是键盘(虚拟或物理的)和显示器。输入/输出设备110还可以包括用来将麦克风捕获的声音转换为流输入的模块。主要在使用麦克风和扬声器的口头会话的上下文中讨论实时对话管理系统100,但是实施方案包括其它会话模式,诸如在消息收发应用中保持的会话模式。
27.实时对话管理系统100的模块可以包括对话主机120。对话主机120可以被配置为
从输入/输出设备110获得或接收输入。输入可以包括流输入。流输入将用户的语音(讲话)捕获为一连串的块(例如几秒钟时长),并且将块作为文件提供给对话主机120。流输入被认为是口头输入。对话主机120将每个新文件视为触发事件,并且针对每个新输入调用对话混合器130。输入可以包括块的滑动窗口。例如,窗口可以包括新接收的文件和一定数量的先前接收的文件(如果它们存在的话)。窗口可以表示输入的持续时间,在该段持续时间中系统尚未对语义理解或响应做出承诺。换句话说,窗口可以表示输入的“不稳定”部分,系统正使用该输入以确定不同路径,因此系统仍然可以回溯或开启新路径等。一旦系统提供了响应,该系统对提供的输入做出承诺并且输入变得“稳定”。在一些实施方案中,窗口可以被定义为在提供最近的响应之后接收的任何输入块。在一些实施方案中,窗口可以以时间段(例如秒、秒的分数)等为单位来定义。因此,较旧的文件变得太旧而不能包括在窗口中。
28.对话主机120可以被配置为将非口头输入识别为触发事件。非口头输入可以包括使用输入/输出设备110从用户获得的文本串、轻敲输入或选择。对话主机120将这样的非口头输入视为触发事件,并且被配置为针对每个新的非口头输入调用对话混合器130。对话主机120还可以将重写候选视为触发事件。在一些实施方案中,系统可以将当前输入的上下文提供给引擎,该引擎对输入执行各种类型的决定(例如,互指、省略等)。该引擎可以是由对话主机120或其中一个对话管理器170提供的功能。引擎可以提供重写候选,对话主机120可以将该重写候选视为后端响应。对话主机120被配置为使用该重写候选作为新的输入来调用对话混合器130。
29.对话主机120还将后端响应的接收识别为触发事件。对话主机120被配置为针对收到的每个后端响应来调用对话混合器130。“后端响应”表示使用对话管理器170生成的数据,该对话管理器170可以基于一个或多个可搜索的数据存储库,例如后端系统190。该数据意图用于输入/输出设备110的输出。后端响应可以响应于发送给对话管理器170的请求、由对话管理器170提供。因此,后端响应表示由特定对话管理器170操作的模式所提供的搜索结果。换句话说,在该实施例中,对话管理器170的“后端请求”使用该输入来发起由对话管理器170管理的模式的搜索。对话管理器170返回的“后端响应”包括搜索的结果。后端响应可以是针对由对话主机120征求的请求。后端响应还可以是针对不是由对话主机120征求的请求。例如,在一些实施方案中,对话管理器170a可以向一个或多个其它对话管理器(例如,170b和/或170n)提供资源(例如响应于请求而获得的信息或数据),并且其它对话管理器可以使用部分或全部资源来提供额外的后端响应。后端响应包括对后端请求的提议的系统响应。系统响应可以是要由输入/输出设备110向用户提供的口头输出。如果提供了该响应,则系统响应可以替代地或者还与计算设备将执行的动作相关联。例如,系统响应可以导致计算设备打开应用并且在应用中执行某些功能,例如添加新的日历事件。
30.对话主机120可以被配置为在不存在其它触发事件的情况下周期性地调用对话混合器130。例如,如果在一段时间(例如100毫秒)内没有接收到新的输入和后端响应,则对话主机120可以将经过该段时间视为触发事件并调用对话混合器130。这使得对话主机120更新候选的旋转列表,并且做出关于是否经由对话输入/输出设备110向用户提供候选中的一个作为响应的新决定。
31.对话主机120管理候选响应150的旋转列表。每个候选响应可以被称为对话。在实时流对话环境中,对话可以被表示为对话束中的路径。对话束是束搜索,其中对话响应被映
射到对话状态。对话束中的路径表示从相同的基状态(base state)中针对相同的输入(例如,查询)生成的对话状态。由于系统实时监控输入,所以用户的预期对话并不总是知道的。因此,对话主机120一次管理在候选列表150中表示的几个可能的对话。对话主机120修剪对话束中变得不相关或过时的路径,并且根据需要添加新的路径。每个候选与对话状态相关联。该状态可以由数据结构表示。状态数据结构可以包括例如从输入(例如,输入窗口)获取的正被回答的问题。状态数据结构可以包括当前会话的上下文、用户输入/请求的历史、输入的系统解释、提供给用户的响应历史、其它相关事件(诸如,传入的通知)、与任务预测有关的数据(例如,帮助计算设备确定或预测用户希望完成的任务(诸如预订餐桌)的数据)、用户的注意状态(诸如当前对话涉及的人或地点)等。状态数据结构还可以包括关于对话请求的信息的类型的信息。例如,日历对话可能需要日期、时间、事件名称等。状态数据结构可以跟踪所需的值的类型以及是否提供了值。对话状态还可以包括先前响应被接受为系统响应(例如,提供给用户的响应)的指示。候选列表150存储在存储器中并由对话主机120保持。候选列表150表示从对话混合器130接收的候选响应及其对应状态。
32.候选列表150中的候选响应可以是提供要做出的动作和/或要提供给用户的响应的系统响应。候选响应也可以是要运行的后端请求。后端请求可以与对话模式相关联,或者换言之,与特定的对话管理器170相关联。例如,可以存在用于烹饪的对话管理器170a,用于本地方向的对话管理器170b,用于音乐的对话管理器170c,用于时间的对话管理器170d等。因此,对话管理器170可以包括任何数量的不同对话管理器(例如,170a至170n)。对话主机120可以使用排序引擎122和/或触发引擎124来确定是否运行后端请求。例如,如果请求是在音乐模式中搜索“cry”,则由于对话主机的目标是提供单个相关的响应,则这可能表示不太可能提供单个响应的搜索,因而表示资源的浪费。替换地,如果请求是在音乐中搜索“cry me a river”,则对话主机120可以决定运行该请求,这将导致提供给对话主机120的后端响应。状态数据结构可以跟踪候选是请求还是响应,其使对话主机120能够确定请求是否未完成。
33.对话主机120包括排序引擎122和触发引擎124。排序引擎122可以对由对话混合器130提供的候选响应排序。排序引擎122可以修剪具有低后验概率的候选响应。换句话说,排序引擎122可以确定特定的候选响应是否不太可能被选择为良好的响应并被提供给用户。例如,在一些实施方案中,对话混合器130为相同对话管理器(例如,对话管理器170a)提供故障候选和后端请求候选,并且排序引擎122可以将故障候选排序为低并修剪该候选,因为后端请求尚未被运行,所以故障候选过早。修剪候选意味着从候选名单中移除候选。在一些实施方案中,排序引擎122保留故障候选,直到接收到相应的后端响应,而在接收到相应的后端响应之前,在每个排序事件处给予故障候选低次序。
34.排序引擎122可以包括机器学习模型,其将候选列表150中的候选响应和关于候选响应的注释作为输入,并且其提供每个候选响应的排序作为输出。在一些实施方案中,排序模型可以是机器学习模型。例如,排序模型可以是长的短期记忆(lstm)神经网络、前馈神经网络、支持向量机(svm)分类器等,其可以以关于候选的注释的形式给出一组排序信号来预测候选是否可能被选择用于呈现给用户。在一些实施方案中,排序模型可以在服务器处被训练并提供给计算设备105。在一些实施方案中,对话主机120可以被配置为依据对提供给用户的候选的用户响应来进一步训练排序模型。例如,如果候选被选择并呈现给用户,但是
用户表示不同意,则该候选(及其对应的状态,包括注释)可被标记为该模型的消极训练示例。同样,系统可以使用用户表示同意的响应作为积极训练示例。排序分数可以被认为是置信分数,其表示该模型对于响应候选是高质量的相关响应有多确信。
35.注释可以包括通过语音分析获得的实时流块的特性。例如,注释可以指示块是否包括向上拐折。作为另一示例,注释可以指示说话者是否已经结束说话,并且如果是这样,结束说话多长时间。作为另一示例,注释可以指示块包括过滤器或者块的多大部分是过滤器。过滤器是信令说话者实际正在暂停的声音。例如,[uhhh]是口头过滤器。作为另一示例,注释可以指示语音的动力,例如,说话者是正在喊叫还是传达沮丧的指示。该系统可以使用块的传统语音分析来提供注释。
[0036]
排序引擎122还可以从候选列表中修剪响应候选。排序引擎122可以修剪太旧的候选。排序引擎122还可以修剪计算昂贵却几乎没有成功的机会(例如因为搜索过于宽泛)的后端请求候选。排序引擎122可以修剪不匹配的候选,例如故障候选。故障候选是作为默认响应提供的候选响应,并且指示特定对话管理器不能理解请求且不能提供更好的响应。一般来说,系统可以修剪系统有信心其次序将被超越的任何响应候选。排序引擎122还可以基于新的信息(例如,附加输入)来修剪不太可能是正确的任何候选。换句话说,一旦系统对一个解释确信,则排序引擎122可以修剪与其它解释有关的候选响应。
[0037]
对话主机120还可以包括触发引擎124。触发引擎124可以决定是否实际经由例如输入/输出设备110将顶级候选中的一个作为响应提供给用户。当触发引擎124提供了响应时,它可以更新该对话的基状态。基状态表示系统致力于的状态,例如系统提供了响应的状态。因此,一旦触发引擎124提供了响应,则它可以将作为响应提供给用户的候选的临时状态改变或提升为基状态。在一些实施方案中,触发引擎124可以是机器学习的模型。例如,触发引擎124可以是长的短期存储器(lstm)神经网络、前馈神经网络、支持向量机(svm)分类器等,其选择不采取行动或从候选响应中选择响应。触发引擎124可以选择不行动,或者换言之不响应,作为对触发事件的有效响应。触发引擎124是否选择不行动取决于触发事件的上下文和候选列表中的候选响应。触发引擎124还可以响应于触发事件而选择候选列表中的系统响应候选中的一个。如果模型选择了候选,则触发引擎124可以将所选择的系统响应提供给输入/输出设备110用于呈现给用户。向用户呈现可以涉及由计算设备105执行的动作,诸如播放音频文件、播放视频文件、在显示器上提供文本、和/或调用应用。例如,提供具有[播放cry me a river]的系统响应的候选可能导致计算系统105提供[播放cry me a river]的音频输出,并且打开媒体应用并开始播放名为“cry me a river”的歌曲。依据该响应,提供候选作为响应可以包括其它动作,诸如添加日历事件、设置定时器、添加联系人、设置闹钟、播放电影,播放音频书籍等。
[0038]
实时对话管理系统100包括对话混合器130。对话混合器130被配置为将基状态和关于触发事件的信息(例如,后端响应、新的输入、时间经过)作为输入。基状态包括当前会话的上下文,其包括对话束的路径中所有最近接受的候选的对话状态(例如,来自状态数据结构)。关于触发事件的信息可以包括来自用户的文本,例如来自输入流窗口或经由文本框等。关于触发事件的信息还可以包括对于后端请求的响应。关于触发事件的信息还可以包括事件的时间戳。
[0039]
对话混合器130提供一个或多个候选响应作为输出。候选响应可以是系统响应。系
统响应是要作为会话的一部分而提供的文本以及系统100应采取的任何动作。系统响应是可选的,并且不总是包括在由对话混合器130提供的候选中。候选响应也可以是对话混合器130希望主机运行的后端请求。后端请求识别该请求所针对的模式或对话管理器、以及要运行的查询。在一些实施方案中,查询被作为束搜索进行处理。后端请求也是可选的,并且现在总是包括在由对话混合器130提供的候选中。然而,对话混合器130针对每个触发事件提供至少一个系统响应或一个后端请求。对于每个候选响应,对话混合器130还提供临时对话状态。临时状态可以使用本文所讨论的状态数据结构。如果候选被接受,则临时状态可以在对对话混合器130的后续调用中被用作提供给对话混合器130的基状态的一部分。例如,具有后端请求的临时状态被提供为对后端请求的后端响应的基状态。最后,对话混合器130还针对每个候选响应提供关于候选的注释。注释被用作排序的信号,并且还可用于记录。
[0040]
当对话混合器130被调用时,它接受输入时提供的基对话状态。当触发事件是新输入时,对话混合器130确定用户是否触发新的对话。新的对话对应于新的对话管理器,例如新的模式或对话模式中的新搜索。如果用户正触发新的对话,则对话混合器130取出对应的模式并且对用于该模式的对话管理器进行初始化。然后,对话混合器130将自然语言解析器(也称为分析器)的输出分发给所有对话管理器。当触发事件是后端响应时,对话混合器130加载与后端响应相对应的对话管理器,并且将后端响应分别应用到请求它们的对话管理器。对话混合器130可以向对话管理器征求后端请求以及新的状态令牌。所征求的每个对话管理器都会生成某种响应,即使它是错误或故障响应。在一些实施方案中,对话管理器130还可以发出后端请求。对话混合器130将每个对话管理器的输出(无论是系统响应还是后端请求)向上滚动到响应候选中。每个候选具有系统响应和/或后端请求的某种组合以及临时对话状态。在一些实施方案中,对话混合器130可以执行第二阶段候选生成。在第二阶段候选生成中,对话混合器130可以从两个或更多个单独的模式中导出复合候选响应。对话混合器130将候选响应、针对每个候选响应的相应对话状态、以及针对每个候选响应的注释向回提供给对话主机120,其中响应被排序、修剪,并且潜在地,响应被触发并提供给输入/输出设备110。
[0041]
实时对话管理系统100还可以包括多个对话管理器170a-170n。每个对话管理器负责单个对话线程,并且表示可搜索的模式。例如,对话管理器170a可以是用于搜索音乐数字库的音乐对话。对话管理器170b可以是用于搜索本地感兴趣区域(例如“我附近的餐馆”)并且用于提供到特定感兴趣区域的方向的本地对话。对话管理器170c可以是能够查找约会、设置新约会、设置约会的提醒的日历对话等。每个对话管理器被配置为查看所提供的输入并且确定该输入是否与模式匹配。例如,输入[带我到]可能不足以与食物对话管理器触发该模式中的搜索类似,但可能足以与本地对话管理器和音乐对话管理器触发并发出后端请求类似。
[0042]
实时对话管理系统100可以包括后端系统190。后端系统190代表为特定对话管理器提供响应的可搜索数据存储库。例如,音乐对话管理器170a可以调用音乐服务器来搜索标题、艺术家、专辑等,并且可以从存储库播放音乐。在一些实施方案中,存储库对于计算设备来说是本地的,如图1所示。在一些实施方案中,存储库是远程的,例如位于一个或多个服务器处,如图2所示。
[0043]
图2是示出根据所公开的主题的另一示例系统100的框图。在图2的示例中,实时对
话管理系统100包括服务器210,服务器210可以是计算设备或采用多个不同设备的形式的设备,例如标准服务器、一组这样的服务器或机架服务器系统。例如,服务器210可以跨多个计算设备以分布式方式实现。此外,服务器210可以实现在个人计算机(例如膝上型计算机)中。服务器210可以是如图5所示的计算机设备500或如图6所示的系统600的示例。实时对话管理系统可以包括客户端设备205。客户端设备205类似于关于图1所示的客户端设备105。因此,客户端设备205包括对话输入/输出设备110、对话主机120、对话混合器130和候选列表150。在图2的示例中,服务器210包括对话管理器170和后端系统190。在图2的示例中,客户端设备205通过网络140与服务器210以及与其它客户端设备190进行通信。网络140可以是例如因特网,或者网络140可以是有线或无线局域网(lan)、广域网(wan)等,前述网络是使用例如网关设备、网桥、交换机等来实现的。网络140还可以表示蜂窝通信网络。经由网络140,服务器210可以与客户端设备205进行通信并且向客户端设备205发送数据/发送来自客户端设备205的数据。
[0044]
图1的实时对话管理系统100和图2的实时对话管理系统200表示示例配置,但是实施方案可以并入其它配置。例如,一些实施方案可以仅在服务器210上具有后端系统190,或者可以在服务器210上具有一些后端系统190并且在客户端设备205上具有一些后端系统190。一些实施方案可以在客户端设备205上具有一些对话管理器170并且在服务器210上具有一些对话管理器170。一些实施方案可以将对话混合器130,或者将对话混合器130的某些功能移动到服务器210。一些实施方案可以将对话主机120移动到服务器210。一些实施方案可以将对话输入/输出设备110、对话主机和对话混合器130中的一个或多个以及对话管理器170组合成单个模块或应用程序。
[0045]
在实时对话管理系统100收集和存储用户特定数据或可以利用个人信息的方面来说,可以向用户提供这样的机会:控制程序或特征是否收集用户信息,或者控制是否接收可能与用户更相关的内容和/或如何接收该内容。此外,某些数据可以在被存储或使用之前以一种或多种方式处理,使得移除了个人可识别信息。例如,可以对搜索记录进行处理,使得不可以确定个人可识别信息和/或可以在获得了位置信息的地方(诸如城市、邮政编码或州级)概括出用户的地理位置,以便无法确定用户的特定位置。因此,用户可以控制如何收集关于用户的信息以及实时对话管理系统100如何使用该信息。
[0046]
图3示出了根据所公开的实施方案的用于管理实时对话的示例过程300的流程图。过程300可以由实时对话管理系统(诸如图1的系统100或图2的系统)执行。在一些实施方案中,过程300由对话主机(诸如对话主机120)运行。过程300可被用来响应于触发事件而调用对话混合器、确定什么输入要提供给对话混合器、管理由对话混合器提供的候选中的候选列表,并且决定是向用户提供候选响应还是保持沉默并且继续等待进一步的输入。
[0047]
过程300可以表示用于实时对话管理系统的主循环。因此,过程300可以在对话系统处于活跃的同时不断地运行。过程300可以包括等待模式,在等待模式中,系统等待触发事件(305)。等待模式可能被触发事件中断(310-320)。一个触发事件是接收到后端响应(310)。后端响应是由后端请求生成的系统响应。后端响应包括系统响应,并且识别处理请求的对话管理器。另一触发事件是接收到新的输入(315)。输入可以是在滑动窗口中从用户捕获的语音。输入可以是用户输入的文本。输入可以是用户做出的选择。当用户正说话时,系统可以周期性地(例如每100毫秒)提供新的输入。滑动窗口可以包括多达预定数量的先
前输入。因此,例如,滑动窗口的初始输入可以是“播放cry”,并且滑动窗口的下一输入可以是“me a river”,使得滑动窗口的输入是“播放cry me a river”。另一触发事件是时间的经过(320)。当在某个预定时间段内没有接收到后端响应和新的输入时,系统可以触发该事件。该触发事件使系统能够在没有其它触发事件的情况下将对话推进。
[0048]
响应于触发事件,系统可以确定用于触发事件的基状态(330)。基状态为触发事件描述当前会话的上下文。基状态可以是单个对话状态或多个对话状态。基状态包括用于特定对话路径的候选列表中任何被接受的候选的对话状态。当事件被触发时,系统响应候选被接受,或者换句话说,被作为响应提供给用户。当运行了后端请求时,后端请求候选被接受。对话路径开始于根状态,并且包括被接受或挂起的任何候选,直到系统回溯。一旦系统回溯到路径中的祖先节点,该祖先节点表示新路径的基状态,则新对话路径在祖先节点处偏离当前路径。祖先节点可以是对话束中的根节点,但不必须是根节点。
[0049]
作为确定触发事件的基状态的一部分,系统必须确定哪个对话路径对应于触发事件。这可能是当前路径,或者可能是由于系统决定回溯而开启的新路径。例如,当附加输入改变了提供给一个或多个对话管理器的查询(例如,更新了束搜索串)时,系统开启第二对话路径。对话路径分叉,或者在系统回溯到的祖先节点处偏离当前路径。因此,系统可以管理偏离任何基状态的多个路径,并且可以在路径之间作出决定(例如,排序和触发决定)。当该路径中的候选变得过时或排序低时,该系统也可以修剪路径。对话状态可以包括该状态属于哪个路径的指示。对话路径可以包括来自不同对话管理器的竞争候选,所以基状态可以包括不止一个对话状态,例如用于不同对话管理器的不同对话状态。对话状态可以存储在以上关于图1所述的状态数据结构中。
[0050]
对话主机可以将基状态和触发事件信息发送到对话混合器(335)。触发事件信息取决于触发事件的类型。例如,如果触发事件是后端响应,则触发事件信息包括接收的后端响应。如果触发事件是接收到新输入,则触发事件信息是接收到的输入、在滑动窗口(包括接收的输入的窗口)中的输入、接收的文本或接收的其它输入。如果触发事件是时间的经过,则输入可以是当前时间戳。
[0051]
然后,系统可以从对话混合器接收潜在的候选。潜在候选可以是系统响应。系统响应是系统说(例如,经由输出设备提供)和/或做(例如,播放歌曲、设置定时器、购买物品等)的一些事情。潜在候选可以是后端请求。后端请求可以表示特定对话模式中的查询。因此,可以向用于该模式的对话管理器提供后端请求。对话管理器可以将查询提交给后端系统并且形成响应。对话主机接收到响应是触发事件。因此,后端请求候选包括用于将响应与相应候选相匹配的标识符。每个潜在候选都有相应的临时对话状态。每个潜在候选还可以具有可由系统用于对潜在候选进行排序和修剪的相应注释或元数据。注释或元数据也可用于记录。
[0052]
系统对潜在候选进行排序,修剪较差的候选(345)。排序发生在所有分支上,而不仅仅是在步骤330中选择的分支。排序可以包括机器学习模型,其将关于潜在候选的注释和元数据作为输入,并且返回每个潜在候选的分数。可以对该模型进行训练,以将所有分支中的潜在候选列表、它们的状态和注释用作输入。排序导致一些候选被修剪。被修剪的候选可以从候选列表中移除。被修剪的候选也可以被标记为已修剪或不活跃。候选可能因为太旧而被修剪,因为它是其它候选的重复而被修剪,因为它太高昂(例如,查询太广泛,而用户仍
在说话)而被修剪。所有这些可能导致较差的排序分数,例如无法满足(例如,满足或超过)排序阈值的分数。被修剪的候选不再被考虑在候选列表中,即它不被视为响应候选。
[0053]
然后,系统决定是否触发候选列表中的任何候选(350)。触发决定还可以使用机器学习模型,该机器学习模型为列表中的每个候选分配置信分数。在一些实施方案中,置信分数可以是分配给候选的次序。置信分数可以表示系统对于“候选在当时是适合的”是怎样的确信。换句话说,系统一点都不确定是否提供候选响应。这与轮换对话系统不同,在轮换对话系统中,系统总是针对触发事件提供候选响应之一。在实时对话系统中,系统正在不断地确定是否作出响应,并且将根本不响应的选项作为有效确定。系统可以使用各种输入信号来计算每个候选的置信分数。输入信号可以包括来自用户的最后口头输入是否具有向上的语调。向上语调是用于指示用户结束提问的因素。输入信号可以包括用户沉默了多长时间。短暂的沉默可能意味着用户正在思考。较长的沉默可能表示用户正在等待某种响应或可能使用帮助。例如,如果输入滑动窗口是[播放第1978首命名为

的波士顿的歌曲],则系统可能已经生成了候选系统响应[播放more than a feeling]。如果用户声音变弱,例如正试图想起歌曲名,则系统可以触发候选。输入信号可以包括滑动窗口的长度、用户已经讲话多长时间而没有触发响应。如果用户已经讲话了一会而没有触发响应,则该系统可以触发后向信道候选。在一些实施方案中,候选列表可以包括后向信道反馈候选作为默认候选。后向信道候选表示系统的一些反馈,其指示系统正在侦听、但对话主要是单向的,即用户正在说话。例如,后向信道反馈候选可以是[uh-huh]、[hmm]、或[right(对)]或表示注意或理解的其它一些表达。
[0054]
当系统响应候选具有满足(满足或超过)触发阈值的置信分数时,系统可以触发系统响应候选。当系统响应候选具有满足触发阈值的次序时,系统也可以触发系统响应候选。如果系统决定不触发任何响应候选(350,否),则系统可以发起,例如运行,作为候选但尚未被接受的任何后端请求(355)。此时仍在候选列表中的任何后端请求都被接受。在一些实施方案中,系统可以跟踪(例如,经由候选列表中的标志)哪个后端请求是未完成的。然后系统可以返回到等待状态(305)。
[0055]
如果系统决定触发候选(350,是),则系统可以执行系统响应(360)。只有作为系统响应的候选才可以被触发,因为只有系统响应具有提供给用户的输出。输出可以是提供给输出设备的东西,例如说出或显示的文本。输出可以是计算设备执行的动作,例如播放媒体文件。被触发的系统响应候选是被接受的候选。如果触发的候选是后向信道候选(365,是),则系统可以如上所述发起任何接受的后端请求(355),如上解释的,从而系统可以等待用户保持讲话并决定稍后是否提供更具体的响应。如果触发的候选不是后向信道候选(365,否),则系统可以清除任何非触发的分支(370)。这可以包括设置新的根状态或新的基状态并清除候选列表。然后,系统可以进入对于下一触发事件的等待状态(505)。
[0056]
以下是用于说明过程300的示例实时对话。在该示例中,用户(例如,经由麦克风或键盘)提供的输入在括号[]中示出,其作为系统提供的音频输出。系统采取的动作在大括号{}中示出。此示例仅用于说明目的。在本示例中,对话主机以空的候选列表开头,因此根状态无效(null)或为空。开始时,对话主机接收到[带我到教堂]的流块,作为当前输入,例如在315处。因为列表中没有候选,所以基状态为null。因此,对话主机向对话混合器发送空的或无效的基状态和输入“带我到教堂”。对话混合器确定该输入适用于两个对话管理器;
媒体(media)对话管理器和本地(local)对话管理器。对话混合器提供了四个潜在的候选,如表1所示。表1中所有候选都在路径1中,因为它们源于相同的基状态(例如,无效状态)并搜索相同的输入(例如,“带我到教堂”)。
[0057]
路径候选对话状态对话管理器标识符1localsearch(“带我到教堂”)l1locallocal11mediasearch(“带我到教堂”)m1mediamedia11[抱歉,我找不到方向]l2locallocal21[抱歉,我找不到你的媒体]m2mediamedia2
[0058]
表1
[0059]
对话主机对四个潜在候选进行排序:local1,local2,media1和media2。排序可以经由查看四个候选和每个候选的属性的机器学习模型而发生。该模型决定表示对于对话管理器的失败候选的local2和media2候选是差的候选,因为其它两个候选表示尚未提交或运行的后端请求。这两个候选具有较差的次序,并且对话主机修剪了local2和media2候选。因此,候选列表现在仅包括两个后端请求候选,即local1和media1。对话主机确定两个候选都不适格触发,因为它们是后端请求而不是系统响应。如果后端请求具有足够高的次序,则对话主机开始运行local1后端请求和media1后端请求。开始运行后端请求是接受候选。因此,l1对话状态和m1对话状态是接受状态。local1后端请求对应于提供方向和兴趣点的本地对话管理器。local1候选代表对于local模式中的输入(例如,带我到教堂)的搜索。类似地,media1候选对应于搜索媒体库的媒体对话管理器。media1候选代表对于media模式中的输入的搜索。一旦对话主机开始运行这两个后端请求,则对话主机等待另一触发事件。
[0060]
下一触发事件是对于media1候选的响应。换句话说,媒体对话管理器返回与media1请求对应的结果。对话主机确定响应对应于作为路径1的一部分的media1候选,并且确定基状态包括l1对话状态和m1对话状态。l1状态被包括,因为local搜索未决,所以l1对话状态仍然有效。因此,对话主机向对话混合器提供后端响应(对应于media1候选的后端响应)和l1、m1的基状态。作为响应,对话混合器提供三个潜在候选,如表2所示:
[0061][0062]
表2
[0063]
media3候选是系统响应,其向用户提供输出[播放带我到教堂]并且发起使媒体播放器开始播放相应的媒体文件、音频或视频的动作,这被识别为响应。在一些实施方案中,对话主机使用media3候选替换候选列表中的media1候选,因为media3候选是通过运行由media1候选表示的请求而接收到的响应。在一些实施方案中,media1候选被标记为完成,但仍保持活动状态。对话主机修剪local3候选,因为它是仍然运行的local1候选的副本。在一些实施方案中,对话混合器可以识别出local3候选是副本,并且可以不提供local3作为潜在候选。由于local1请求仍在运行,所以对话主机对local4候选排序较差。因此,对话主机修剪local4候选。这样在候选列表中留下local1和media3。media3是适格触发的系统响应,
但media3候选具有较低的排序,因为用户仍在说话,用户没有明确的播放意图,即输入不是[播放带我到教堂],并且存在未完成的请求。因此,对话主机决定不响应并且不触发media3响应。这意味着media3候选是不被接受;而是media3候选正在待决。没有后端请求要运行,所以对话主机等待另一触发事件。
[0064]
下一触发事件是另一流块的到达。下一输入是流块[骑自行车带我到教堂]。此流块表示包含先前输入的滑动窗口。对话主机确定新输入应该是新的束搜索。换句话说,对话主机确定查询更具体,并且在对话束中开启第二路径。新路径的基状态为空,即系统回溯到根状态,并且从根部开始具有“骑自行车带我到教堂”的新的搜索条件的新路径。因此,对话主机向对话混合器发送空的或者无效的基状态和输入“骑自行车带我到教堂”。对话混合器确定输入适用于本地对话管理器。对话混合器不触发媒体对话管理器,因为输入听起来不像媒体请求。因此,对话混合器提供两个潜在的候选,如表3所示。这些候选被包括在候选列表中,该候选列表中具有来自第一个路径的仍然有效但未决的候选:
[0065][0066]
表3
[0067]
对话主机对四个候选进行排序:local1,localb1,media3和localb2。localb2候选的排序较差,对话主机修剪该候选,因为localb1搜索尚未提供响应或超时。media3候选不触发,因为它不响应于输入,例如,它是针对路径1而不是路径2。因此对话主机没有任何系统响应要触发,并且开始运行对于localb1候选的请求。因此,lb1对话状态是路径2中的接受状态,并且对话管理器等待下一触发事件。
[0068]
下一触发事件是对应于local1后端请求的响应。对话主机可以确定该响应对应于local1候选,并且该响应在路径1中而不在路径2中。因此,对话主机确定基状态包括l1对话状态和m1对话状态,这是路径1中最近接受的状态。m3对话状态不是接受状态,因为候选没有被触发。该基状态与后端响应一起提供给对话混合器。对话混合器在响应中提供三个候选。三个候选被添加到候选列表中,如表4所示:
[0069][0070][0071]
表4
[0072]
对话主机对media4候选的排序较低,并且修剪该候选,因为它是副本。在一些实施
方案中,对话混合器可以识别该候选是被接受的候选media1的副本,并且甚至可以不将media4提供为候选。对话主机还将media5候选排序低,并修剪该候选。local5和media3候选是系统响应,但由于还存在待决的后端请求(例如localb1),因此它们可能具有较低此序。因此,l5对话状态尚未成为被接受的状态。因此,对话主机选择响应于触发事件不做任何事情,并等待下一触发事件。
[0073]
下一触发事件是对应于localb1后端请求的响应。对话主机可以确定该响应对应于localb1候选,并且在路径2中而不在路径1中。因此,对话主机确定基状态包括lb1对话状态,其是路径2中最近接受的状态。l1和m1状态不与路径2相关联,因此不包括在提供给对话混合器的基状态中。该基状态和后端响应一同提供给对话混合器。对话混合器在响应中提供一个候选。候选被添加到候选列表,如表5所示:
[0074][0075]
表5
[0076]
对话主机可以对localb3候选较高地排序,因为它响应于整个查询,并且系统可以具有指示用户已经完成说话的元数据等。local5候选排序较低,因为它不考虑整个查询并且media3候选排序较差。对话主机决定触发localb3候选。触发localb3候选导致系统将对话束的基状态更新为lb3对话状态,例如使lb3对话状态成为根状态,并且输出响应并运行其相应的动作。
[0077]
图4是示出上述示例的对话束400的示例框图。该树以为空的根对话状态405开始。换句话说,没有待决的请求或响应,并且候选列表是空的。第一触发事件,dm触发器1,导致表1中所示的四个对话状态。对话状态中的两个(l2和m2)被修剪,并且另外两个(l1和m1)被接受。所有四个状态都是路径1的一部分,其在图4中如实线410示出。第二触发事件,dm触发器2,导致三个更多的对话状态,其中两个(l3和l4)被修剪,并且其中一个(m3)被保留但不被接受。因此m3是待决的对话状态。下一触发事件,dm触发器3,导致系统回溯并开启新路径,其在图4中用点线和虚线450示出。dm触发器3导致两个新的对话状态,其中一个被修剪(lb2),并且其中一个被接受(lb1)。下一触发事件,dm触发器4,应用于第一路径,并且导致保持但尚未被接受的新的对话状态l5。l5对话状态待决。下一触发事件,dm触发器5,应用于第二路径并且导致被接受的新的对话状态lb3。lb3对话状态的接受导致第一路径的待决对话状态(即l5和m3)被修剪。
[0078]
图5示出了可以与本文描述的技术一起使用、可以作为图1的服务器110和/或客户端150操作的通用计算机设备500的示例。计算设备500意图表示各种示例形式的计算设备,诸如膝上型计算机、桌面型计算机、工作站、个人数字助理、蜂窝电话、智能电话、平板电脑、服务器和其它计算设备(包括可穿戴设备)。这里所示的组件,它们的连接和关系以及它们的功能仅仅是示例,并不意味着限制本文档中描述和/或要求保护的发明的实施方案。
[0079]
计算设备500包括经由接口508连接的处理器502、存储器504、存储设备506和扩展
端口510。在一些实施方案中,计算设备500可以包括经由接口508连接的收发器546、通信接口544和gps(全球定位系统)接收器模块548以及其它组件。设备500可以通过通信接口544进行无线通信,通信接口544可以在必要时包括数字信号处理电路。组件502、504、506、508、510、540、544、546和548中的每个可以安装在公共主板上或视情况以其它方式安装。
[0080]
处理器502可以处理用于在计算设备500内运行的指令,包括存储在存储器504中或存储设备506上的指令,以在诸如显示器516的外部输入/输出设备上显示用于gui的图形信息。显示器516可以是监视器或平面触摸屏显示器。在一些实施方案中,可以视情况使用多个处理器和/或多个总线以及多个存储器和多个类型的存储器。此外,可以将多个计算设备500和提供必要操作的部分的每个设备(例如,服务器组、一组刀片服务器或多处理器系统)连接。
[0081]
存储器504存储计算设备500内的信息。在一个实施方案中,存储器504是一个或多个易失性存储器单元。在另一实施方案中,存储器504是一个或多个非易失性存储器单元。存储器504还可以是另一形式的计算机可读介质,诸如磁盘或光盘。在一些实施方案中,存储器504可以包括通过扩展接口提供的扩展存储器。
[0082]
存储设备506能够为计算设备500提供大容量存储。在一实施方案中,存储设备506可以是或包括计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、快闪存储器或其它类似的固态存储设备,或包括存储区域网络中的设备或其它配置的设备阵列。计算机程序产品可以有形地体现在这样的计算机可读介质中。计算机程序产品还可以指令,当指令被运行时执行诸如上述的一个或多个方法。计算机或机器可读介质是诸如存储器504、存储设备506或处理器502上的存储器的存储设备。
[0083]
接口508可以是管理计算设备500的带宽密集型操作的高速控制器或管理较低带宽密集型操作的低速控制器或这些控制器的组合。可以提供外部接口540,以使设备500与其它设备进行近区域通信。在一些实施方案中,控制器508可以耦接到存储设备506和扩展端口514。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的扩展端口可以耦接到一个或多个输入/输出设备,诸如键盘、指针设备、扫描仪或例如通过网络适配器耦接到诸如交换机或路由器的网络设备。
[0084]
计算设备500可以以多种不同的形式实现,如图所示。例如,它可以被实现为标准服务器530,或者在这样的服务器组中多次实现。它也可以实现为机架式服务器系统的一部分。此外,它可以在诸如膝上型计算机532、个人计算机534或平板/智能电话536的计算设备中实现。整个系统可以由彼此通信的多个计算设备500组成。其它配置是可能的。
[0085]
图6示出了可以与本文描述的技术一起使用、可以是图1的服务器110的通用计算机设备600的示例。计算设备600意图表示各种示例形式的大规模数据处理设备,诸如服务器、刀片服务器、数据中心、大型机(mainframe)和其它大规模计算设备。计算设备600可以是具有多个处理器的分布式系统,其可能包括通过一个或多个通信网络互连的网络附接的存储节点。这里所示的组件,它们的连接和关系以及它们的功能仅仅是示例,并不意味着限制本文档中描述和/或要求保护的发明的实现方式。
[0086]
分布式计算系统600可以包括任何数量的计算设备680。计算设备680可以包括通过局域网或广域网络、专用光链路、调制解调器、网桥、路由器、交换机、有线或无线网络等通信的服务器或机架服务器、大型机等。
[0087]
在一些实施方案中,每个计算设备可以包括多个机架。例如,计算设备680a包括多个机架658a-658n。每个机架可以包括一个或多个处理器,例如处理器652a-652n和662a-662n。处理器可以包括数据处理器、网络附接的存储设备和其它计算机控制的设备。在一些实施方案中,一个处理器可以作为主处理器操作并且控制调度和数据分配任务。处理器可以通过一个或多个机架交换机658互连,并且一个或多个机架可以通过交换机678连接。交换机678可以处理多个连接的计算设备680之间的通信。
[0088]
每个机架可以包括存储器(诸如存储器654和存储器664)以及存储装置(诸如656和666)。存储装置656和666可以提供大容量存储,并且可以包括易失性或非易失性存储器,诸如网络附接的盘、软盘、硬盘、光盘、磁带、快闪存储器或其它类似的固态存储设备,或包括存储区域网络中的设备或其它配置的设备阵列。存储器656或666可以在多个处理器、多个机架或多个计算设备之间共享,并且可以包括存储可由一个或多个处理器执行的指令的计算机可读介质。存储器654和664可以包括例如一个或多个易失性存储器单元、一个或多个非易失性存储器单元、和/或其它形式的计算机可读介质(诸如磁盘或光盘、快闪存储器、缓存器、随机存取存储器(ram)、只读存储器(rom)及其组合)。存储器(诸如存储器654)也可以在处理器652a-652n之间共享。数据结构(诸如索引)可以例如存储在存储装置656和存储器654中。计算设备680可以包括未示出的其它组件,诸如控制器、总线、输入/输出设备、通信模块等。
[0089]
整个系统(诸如系统100)可以由彼此通信的多个计算设备680组成。例如,设备680a可以与设备680b、680c和680d通信,并且这些可以统称为系统100。作为另一示例,图1的系统100可以包括一个或多个计算设备680。一些计算设备可以位于地理上彼此靠近的位置,并且其它计算设备可以位于地理上远离的位置。系统600的布局仅是示例,并且系统可以采用其它布局或配置。
[0090]
根据本公开的某些方面,移动设备包括至少一个处理器和存储指令的存储器,所述指令在由所述至少一个处理器运行时使得所述计算设备执行操作。操作包括生成对于触发事件的第一候选响应。触发事件可以是接收到用于对话的实时流块或接收到对于对话模式的先前后端请求的后端响应。操作还包括使用至少一个第一候选响应来更新被接受或待决的候选响应的列表,并且为触发事件确定候选响应的列表是否包括具有满足触发阈值的置信分数的候选响应。当列表不包括具有满足触发阈值的置信分数的候选响应时,操作还包括等待下一触发事件而不提供候选响应。
[0091]
这些和其它方面可以包括以下特征中的一个或多个。例如,第一候选响应中的至少一个可以具有第一候选响应的最高次序。作为另一示例,候选列表中的每个候选可以是系统响应或后端请求,并且候选列表中的每个候选具有相应的对话状态,并且与对话束中的路径相关联。作为另一示例,待决候选响应可以是尚未响应于触发事件提供的系统响应,并且操作还包括确定与触发事件对应的对话束中的路径,确定触发事件的基状态;所述基状态包括所述路径的候选列表中被接受的候选的对话状态,以及使用来自触发事件的信息和基状态来生成第一候选响应。作为另一示例,候选响应列表中的候选响应之一可以表示后向信道反馈。作为另一示例,被接受的响应可以是已经发起的后端请求。作为另一示例,待决响应是未提供给用户的系统响应。作为另一示例,触发事件是第一触发事件,并且候选列表中的候选全部对应于对话束中的第一路径,并且操作还包括接收第二触发事件,确定
第二触发事件需要对话束中的第二路径,设置第二路径的基状态,第二路径的基状态是第一路径的当前基状态的第一路径中的祖先节点的基状态,使用第二路径的基状态和第二触发事件的信息生成第二候选响应,以及使用至少一个第二候选响应来更新被接受或待决的候选响应的列表。作为另一示例,更新列表可以包括修剪未能满足排序阈值的候选响应。
[0092]
在另一方面,一种方法包括响应于接收到来自实时对话流的块而将该块提供给对话混合器,从对话混合器接收该块的响应候选,每个响应候选是用于对话模式的系统响应或用于对话模式的后端请求,以及使用该块的至少一个响应候选来更新响应候选的旋转列表。该方法还包括对列表中的响应候选进行排序,每个响应候选具有各自的置信分数,确定旋转列表是否包括具有满足触发阈值的置信分数的响应候选,以及当旋转列表不包括具有满足触发阈值的置信分数的响应候选时,发起由列表中具有满足排序阈值的置信分数但尚未处于被接受的对话状态的响应候选所表示的后端请求。
[0093]
这些和其它方面可以包括以下特征中的一个或多个。例如,列表中的每个响应候选可以具有相应的注释和相应的对话状态,并且对响应候选进行排序可以包括向机器学习模型提供注释和列表,机器学习模型使用注释和列表中的响应候选来确定相应的置信分数。在这样的实施方案中,注释可以包括通过语音分析获得的块的特性。作为另一示例,响应候选列表中的每个响应候选可以具有相应的对话状态。作为另一示例,该方法还可以包括:更新列表中的响应候选包括修剪具有不满足排序阈值的置信分数的候选。作为另一示例,响应候选列表中的每个响应候选可以具有相应的对话状态并被分配给对话束中的路径,该对话束包括至少两个路径。在这样的实施方案中,当旋转列表确实包括具有满足触发阈值的置信分数的响应候选时,该方法还可以包括确定与具有满足触发阈值的置信分数的响应候选相关联的路径,并且从列表中修剪与该路径不相关联的响应候选。
[0094]
在另一方面,一种方法包括接收用于实时对话的触发事件,实时对话拥有具有与第一路径相关联的对话束,对话束表示与用户的实时对话的对话状态,确定触发事件开启了对话束中的新路径,并且在第一条路径中回溯到对话束中的祖先节点。该方法还包括通过使用由祖先节点表示的基状态和来自触发事件的信息生成响应候选,从而从祖先节点开启对话束中的新路径,其中对话束中的路径包括一个或多个被接受或待决的响应候选,响应候选是由对话模式生成的系统响应或用于对话模式的后端请求。
[0095]
这些和其它方面可以包括以下特征中的一个或多个。例如,祖先节点可以是表示空白基状态的根节点。作为另一示例,响应候选可以具有相应的对话状态并被分配给对话路径之一。作为另一示例,该方法还可以包括:响应于第二触发事件来确定新路径中的响应候选是具有满足触发阈值的置信分数的系统响应,向用户提供响应候选,以及修剪对话束中的第一路径。
[0096]
各种实施方案可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方案,所述可编程系统包括至少一个可编程处理器,可编程处理器可以是专用或通用的,被耦接以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令、并且向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。
[0097]
这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级程序和/或面向对象编程语言、和/或汇编/机器语言来实现。如本文所使用的,术语“机器可读介质”“计算机可读介质”指代任何非暂时性计算机程序产
品、装置和/或设备(例如,磁盘、光盘、存储器(包括读存取存储器)、用于向可编程处理器提供机器指令和/或数据的可编程逻辑器件(pld)。
[0098]
这里描述的系统和技术可以在计算系统中实现,该计算系统包括后端组件(例如,数据服务器)或包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或web浏览器的客户端计算机,用户可以通过图形用户界面或web浏览器进行交互,该客户端计算机具有本文描述的系统和技术的实现方式),或者这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或媒介的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“lan”)、广域网(“wan”)和互联网。
[0099]
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是由于运行在相应计算机上的计算机程序并且彼此具有客户端-服务器关系而产生的。
[0100]
已经描述了许多实施方案。然而,在不脱离本发明的精神和范围的情况下,可以进行各种修改。此外,附图中所示的逻辑流不需要所示的特定顺序或按次序的顺序来实现期望的结果。此外,可以提供其它步骤,或者可以从所描述的流程中消除步骤,并且可以将其它组件添加到所描述的系统或从所描述的系统中移除组件。因此,其它实施方案在所附权利要求的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献