首页 / 专利库 / 人工智能 / 对话代理 / 确定自动化助理对话的状态

确定自动化助理对话的状态

阅读:698发布:2020-05-11

专利汇可以提供确定自动化助理对话的状态专利检索,专利查询,专利分析的服务。并且确定包括自动化助理和至少一个用户的 电子 对话的对话状态,并且基于所确定的对话状态来执行动作。所述对话状态可以被表示为一个或多个插槽,并且针对每一个插槽,被表示为该插槽的一个或多个候选值和每一个候选值的对应分值(例如,概率)。插槽的候选值可以基于在所述对话期间对用户话语和/或系统话语的语言处理来确定。在电子对话的给定回合生成给定插槽的候选值的分值时,各种特征基于使用 存储器 网络对所述用户话语和所述系统话语的处理来确定。各种生成的特征可以使用评分模型来处理以在所述给定回合生成所述给定插槽的候选值的分值。,下面是确定自动化助理对话的状态专利的具体信息内容。

1.一种由一个或多个处理器实施的方法,包括:
识别自动化助理的系统话语和用户的用户话语,所述系统话语和所述用户话语在包括所述用户和所述自动化助理的电子对话的回合期间被提供;
基于所述系统话语和所述用户话语,确定插槽的一个或多个候选值;
生成:
所述系统话语的系统话语表示,以及
所述插槽的所述候选值中的每一个的系统候选值特征,
其中,生成所述系统话语表示和所述系统候选值特征是基于使用双向存储器网络处理所述系统话语;
生成:
所述用户话语的用户话语表示,以及
所述插槽的所述候选值中的每一个的用户候选值特征,
其中,生成所述用户话语表示和所述用户候选值特征是基于使用所述双向存储器网络处理所述用户话语;
生成所述插槽的所述候选值中的每一个的分值,其中,生成所述候选值中的每一个的分值是基于使用训练后的评分模型来处理:所述系统话语表示、所述用户话语表示、所述候选值的所述系统候选值特征以及所述候选值的所述用户候选值特征;
基于所述候选值的所述分值,选择所述插槽的所述候选值中的给定值;以及基于所述插槽的所选的给定值来执行进一步的动作。
2.根据权利要求1所述的方法,其中,确定所述插槽的所述候选值包括:基于所述系统话语的一个或多个给定项来确定所述给定值,以及其中,基于使用所述双向存储器网络处理所述系统话语来生成所述系统话语表示和所述系统候选值特征包括:
生成去词化的系统话语,所述去词化的系统话语包括所述给定话语的所述项但是用所述插槽的插槽描述符来替换所述系统话语的所述一个或多个给定项;以及使用所述双向存储器网络来处理所述去词化的系统话语。
3.根据权利要求2所述的方法,其中,生成所述系统话语表示包括:
在处理所述系统话语之后,基于所述双向存储器网络的最终状态和/或隐藏状态来生成所述系统话语表示。
4.根据前述权利要求中任一项所述的方法,其中,生成所述给定值的所述系统候选值特征包括:
在处理所述系统话语之后,基于与所述插槽的所述插槽描述符相对应的所述双向存储器网络的节点的隐藏状态来生成所述系统候选值特征。
5.根据权利要求1所述的方法,其中,确定所述插槽的所述候选值包括:基于所述用户话语的一个或多个给定项来确定所述给定值,以及其中,基于使用所述双向存储器网络处理所述用户话语来生成所述用户话语表示和所述用户候选值特征包括:
生成去词化的用户话语,所述去词化的用户话语包括所述用户话语的所述项但是用所述插槽的插槽描述符来替换所述用户话语的所述一个或多个给定项;以及使用所述双向存储器网络来处理所述去词化的用户话语。
6.根据权利要求5所述的方法,其中,生成所述用户话语表示包括:
在处理所述用户话语之后,基于所述双向存储器网络的最终状态和/或隐藏状态来生成所述用户话语表示。
7.根据权利要求5或权利要求6所述的方法,其中,生成所述给定值的所述用户候选值特征包括:
在处理所述用户话语之后,基于与所述插槽的所述插槽描述符相对应的所述双向存储器网络的节点的隐藏状态来生成所述用户候选值。
8.根据前述权利要求中任一项所述的方法,
其中,所述一个或多个候选值包括所述给定值和附加值;
其中,生成所述给定值的分值是基于使用所述训练后的评分模型来处理:所述系统话语表示、所述用户话语表示、所述给定值的所述系统候选值特征以及所述给定值的所述用户候选值特征;以及
其中,生成所述附加值的分值是基于使用所述训练后的评分模型来处理:所述系统话语表示、所述用户话语表示、所述附加值的所述系统候选值特征以及所述附加值的所述用户候选值特征。
9.根据前述权利要求中任一项所述的方法,其中,所述一个或多个候选值进一步包括无差异值,以及其中,生成所述无差异值的分值是基于所述系统话语表示、所述用户话语表示以及所述无差异值在所述电子对话的前一回合中的分值。
10.根据前述权利要求中任一项所述的方法,进一步包括:
基于所述系统话语表示和所述用户话语表示的组合来生成整体话语表示;
基于所述给定值的所述系统候选值特征和所述给定值的所述用户候选值特征的组合来生成所述给定值的整体候选值特征;
其中,使用所述训练后的评分模型来处理:所述系统话语表示、所述用户话语表示、所述给定值的所述系统候选值特征以及所述给定值的所述用户候选值特征包括:
使用所述训练后的评分模型来处理所述整体话语表示和所述整体候选值特征。
11.根据权利要求10所述的方法,其中,生成所述给定值的所述整体候选值特征是进一步基于所述给定值的先前分值,所述先前分值是基于所述电子对话的先前回合的先前系统话语和先前用户话语针对所述给定值确定的,所述先前回合紧接在所述电子对话的所述回合之前。
12.根据前述权利要求中任一项所述的方法,其中,所述分值中的每一个是概率。
13.根据前述权利要求中任一项所述的方法,进一步包括:
识别附加系统话语和所述用户的附加用户话语,所述附加系统话语和所述附加用户话语在所述电子对话的下一回合中,所述下一回合紧接在所述电子对话的所述回合之后;
基于所述附加系统话语和所述附加用户话语,确定所述插槽的一个或多个附加候选值;
基于所述分值来选择所述候选值的子集以基于所述附加系统话语表示和所述附加用户话语表示进行评分;
生成以下的附加分值:所述插槽的所述附加候选值中的每一个以及所述子集中的所述候选值中的每一个,其中,生成所述附加分值是基于所述附加系统话语的附加系统话语表示和所述附加用户话语的附加用户话语表示;
基于所述分值,从所述附加候选值和所述子集中的所述候选值中选择所述插槽的附加给定值;以及
基于所述插槽的所述附加给定值来执行更进一步的动作。
14.根据前述权利要求中任一项所述的方法,进一步包括:
基于所述电子对话来选择域;
基于插槽被分配给所述域来选择该插槽。
15.根据前述权利要求中任一项所述的方法,其中,基于所述插槽的所选的给定值来执行所述进一步的动作包括:
生成代理命令,所述代理命令包括所述插槽的所选的给定值;以及
通过一个或多个网络将所述代理命令传输给代理,其中,所述代理命令使所述代理生成响应内容并且通过一个或多个网络传输所述响应内容。
16.根据权利要求15所述的方法,进一步包括:
接收由所述代理生成的所述响应内容;以及
将基于由所述代理生成的所述响应内容的输出传输给提供所述用户话语的客户端设备。
17.根据权利要求1至14中任一项所述的方法,其中,基于所述插槽的所选的给定值来执行所述进一步的动作包括:
基于所选的给定值来生成附加系统话语;以及
将所述附加系统话语包含在所述电子对话的下一回合中以呈现给所述用户,所述下一回合紧接在所述电子对话中的所述回合之后。
18.根据前述权利要求中任一项所述的方法,其中,所述训练后的评分模型包括作为神经网络模型的训练后的候选值评分模型,以及其中,生成所述给定值的分值包括:
应用基于以下的输入作为到所述训练后的候选值评分模型的输入:所述系统话语表示、所述用户话语表示、所述候选值的所述系统候选值特征以及所述候选值的所述用户候选值特征;
基于使用所述训练后的候选值评分模型处理所述输入来生成输出;以及
基于将所述输出应用于所述评分模型的仿射层以及针对所述集合中的所述候选值中的其他候选值所生成的输出来生成所述给定值的分值。
19.一种装置,所述装置被配置为执行根据权利要求1至18中任一项所述的方法。
20.计算机可读指令,所述计算机可读指令在由计算装置执行时使所述计算装置执行根据权利要求1至18中任一项所述的方法。

说明书全文

确定自动化助理对话的状态

背景技术

[0001] 自动化助理(也称为“个人助理”、“移动助理”等)可以由用户经由各种客户端设备(诸如,智能电话、平板计算机、可穿戴设备、汽车系统、独立的个人助理设备等)与之交互。自动化助理接收来自用户的输入(例如,键入和/或口头的自然语言输入),并且用响应内容(例如,视觉和/或听觉自然语言输出)进行响应。可以经由客户端设备本身和/或经由与客户端设备进行网络通信的一个或多个远程计算设备(例如,“”中的计算设备)来实施经由客户端设备与之交互的自动化助理。
[0002] 在参与与用户的对话时,自动化助理在整个对话中追踪对话状态。对话状态表示自动化助理对参与与自动化助理的对话的用户的目标的估计,并且可以用于各种目的。例如,可以使用当前对话状态来确定由自动化助理在对话中提供的下一话语(或其他内容)。而且,例如,当前对话状态可以用于生成代理命令以与一个或多个代理(诸如,第三方(3P)代理)进行交互。例如,一些自动化助理可以基于当前对话状态为3P代理生成代理命令,并且将所生成的代理命令传输给3P代理。响应内容可以由3P代理响应于代理命令生成,并且用于提供响应输出。在一些情况下,自动化助理接收响应内容并且提供响应内容(或其转换)作为响应输出。在一些情况下,3P代理本身可以直接提供响应内容,而无需使用自动化助理作为中介。
[0003] 在确定对话状态时,一些自动化助理寻求基于对话中的用户和系统话语来确定在对话中被初始化的插槽(slot)的最可能值。一些技术利用固定的本体,该本体定义了插槽集合以及与那些插槽相关联的值的集合。然而,一些插槽的可能值的集合可以是较大的或无边界的,使得这种值的本体定义繁重和/或计算效率低下。另外或可替代地,一些技术必须是为单独插槽和/或域定制的,导致先前看不见的插槽和/或域的失败-或要求对每个插槽和/或域进行劳动密集型和计算密集型的适配。例如,一些技术需要针对每个域中的每个插槽类型训练模型,这可能需要针对每个插槽和每个域的计算繁重的训练和/或可能导致未训练的插槽和/或域的失败。进一步地,在确定对话状态时,一些技术另外或可替代地未能捕获用户和/或系统话语中的单词之间的长期依赖性。各种当前对话状态确定技术提出了附加的和/或替代的缺点。发明内容
[0004] 本说明书大体上涉及用于确定包括自动化助理和至少一个用户的电子对话的对话状态并且基于所确定的对话状态执行一个或多个进一步的动作的方法、系统和计算机可读介质。
[0005] 在一些实施方式中,在给定时间的电子对话的对话状态可以被表示为一个或多个插槽,并且针对一个或多个插槽中的每一个,被表示为插槽的一个或多个候选值和候选值中的每一个的对应分值(例如,概率)。在对话的给定时间的插槽的候选值的分值指示它是该插槽的期望值的可能性,并且可以用于选择候选值以用于确定下一系统话语,生成代理命令和/或执行其他动作。例如,在较高分值对应于较高可能性的情况下,可以选择给定时间的插槽的最高评分候选值作为该插槽的最可能值,并且用作给定时间的插槽的“当前”值。作为另一示例,在较高分值对应于较高可能性的情况下,可以基于分别具有满足阈值(例如,大于阈值)的对应分值的那些候选值来选择一个或多个候选值并且将其用于给定时间的插槽。
[0006] 可以根据本文描述的技术来生成候选值的分值。可以基于对话上下文来确定插槽的候选值,该对话上下文可以包括对话期间的用户话语和/或系统话语(自动化助理的话语)、对话期间的视觉信息和/或用户的个性化上下文(例如,联系人列表和/或用户的位置)的语言处理。插槽还可以可选地包括一个或多个特殊值,诸如,插槽的“空/未定义(null/undefined)”值(例如,指示该插槽尚未在对话中实例化)和/或“无差异(indifferent)”值(例如,指示该插槽已被实例化,但是用户话语指示对任何特定值都没有偏好)。插槽的这种特殊值的分值也可以根据本文描述的技术来生成。在一些情况下(例如,当插槽的分值指示它比插槽的候选值和另一特殊值的分值更可取时),可以选择该插槽的一个特殊值作为该插槽的最可能值。
[0007] 在一些实施方式中,在电子对话的给定回合(系统话语和随后的用户话语,反之亦然)生成给定插槽的候选值的分值时,至少部分地基于回合的系统话语和用户话语来确定各种特征。在那些实施方式中的一些中,基于使用存储器网络处理用户话语和使用存储器网络处理系统话语来确定各种特征中的一个或多个。存储器网络包括一个或多个存储器层,每个存储器层包括多个存储器单元。存储器单元可以是例如长短期存储(“LSTM”)存储器单元、控递归单元(“GRU”)或其他存储器单元。在许多实施方式中,存储器网络可以是双向存储器网络。利用存储器网络生成特征可以捕获(用户话语和/或系统话语的)自然语言的长期依赖性,这可以导致基于特征的评分提高,从而相对于仅使用令牌周围表示候选值的局部窗口的技术,对话状态确定得以改进。
[0008] 基于使用双向存储器网络处理用户话语和系统话语而确定的特征可以包括话语表示和候选值特征。可以基于系统话语表示来生成话语表示。例如,在处理系统话语之后可以基于以双向存储器网络的(多种)状态为基础的系统话语表示来生成话语表示。例如,系统话语表示可以基于在处理系统话语之后双向存储器网络的最终前向状态和最终后向状态(例如,的级联)。而且,例如,系统话语表示可以另外或可替代地基于在处理系统话语之后双向存储器网络的多种隐藏状态。处理的系统话语例如可以是系统话语的文本和/或其作为系统动作的机器表示(例如,结构化的对话动作标注以及自变量和值)。可以进一步基于用户话语表示来生成话语表示。例如,可以进一步基于用户话语表示来生成话语表示,该用户话语表示基于在处理用户话语之后双向存储器网络的(多种)状态。例如,用户话语表示可以基于在处理用户话语之后双向存储器网络的最终前向状态和最终后向状态(例如,的级联)。而且,例如,用户话语表示可以另外或可替代地基于在处理用户话语之后双向存储器网络的多种隐藏状态。在一些实施方式中,话语表示可以基于系统话语和用户话语的直接总和。如本文更详细地描述的,话语表示被用于对给定插槽的所有候选值进行评分,并且还可以被用于对针对对话状态被追踪的一个或多个其他插槽的所有候选值进行评分。
[0009] 分别针对对应的候选值生成候选值特征。在一些实施方式中,候选值的候选值特征仅用于对该候选值进行评分。换言之,尽管话语表示被用于对正在追踪的所有插槽的所有候选值进行评分,但是在一些实施方式中,给定候选值的候选值特征被用于仅对给定候选值进行评分。给定候选值的候选值特征可以基于在处理对应话语之后双向存储器网络的节点/单元的与给定候选值相对应的隐藏状态。当双向存储器网络的节点在位置上对应于使用该网络处理的话语的令牌时,该双向存储器网络的节点对应于给定候选值,并且该令牌对应于给定值。例如,用户话语可以包括给定候选值。进一步地,可以针对给定值用插槽的插槽描述符(例如,特殊令牌或特定于该插槽的文本描述符)替换给定候选值来生成去词化(delexicalize)的用户话语。然后可以使用双向存储器网络来处理去词化的用户话语。在位置上对应于插槽描述符的节点的隐藏状态可以是对应于给定候选值的隐藏状态。给定候选值的候选值特征可以基于在处理用户话语之后(当用户话语包括给定候选值时)节点的隐藏状态和/或在处理系统话语之后(当系统话语包括给定候选值时)节点的隐藏状态。
给定候选值的候选值特征还可以基于在对话的先前回合(如果有的话)中给定值的所生成的分值(如果有的话)。例如,如果给定候选值存在于对话的先前回合中,则针对给定候选值生成先前分值,并且可以将先前分值用于生成给定候选值的候选值特征。
[0010] 也可以生成插槽特征。插槽特征分别是为对应插槽生成的,并且用于对该插槽的所有候选值进行评分。换言之,虽然话语表示用于对正在追踪的所有插槽的所有候选值进行评分,但是给定插槽的插槽特征用于对给定插槽(但不是其他插槽)的所有候选值进行评分。而且,尽管给定候选值的候选值特征用于仅对给定候选值进行评分,但是给定插槽的插槽特征用于对给定插槽的所有候选值进行评分。给定插槽的插槽特征可以基于系统话语和/或用户话语针对所考虑的给定回合是否将给定插槽实例化。例如,系统话语是否基于具有给定插槽作为自变量的系统动作,以及用户话语是否包括给定插槽的值。给定插槽的插槽特征还可以可选地基于对话的先前回合(如果有的话)中的空值的所生成的分值和无差异值的所生成的分值。可以基于处理用户话语和/或系统话语来生成插槽特征,但是可选地,不对使用双向存储器网络生成的值进行任何参照。
[0011] 所生成的各种特征可以用于在给定回合生成给定插槽的候选值的分值。例如,在生成给定插槽的每个候选值的分值时,可以利用话语表示、给定插槽的插槽特征以及候选值的候选值特征。可以使用训练后的评分模型(诸如,训练后的前馈神经网络模型)生成每个候选值的分值。在一些实施方式中,评分模型可以包括一个或多个候选值评分模型,其用于对每个候选值进行评分。在那些实施方式中的一些中,相同的候选值评分模型(或其复制品)用于对给定插槽的所有候选值进行评分(并且可选地用于对所有插槽的所有候选值进行评分)。换言之,相同的训练参数可以用于对多个插槽的多个候选值进行评分。而且,在给定回合对每个候选值进行评分时,针对所有插槽的所有候选值,可以将相同的话语表示应用于候选值评分模型。另外,针对对应插槽的所有候选值,可以将相同的插槽特征应用于候选值评分模型。通过这种方式,由于不需要存储和利用单独的候选值评分模型和/或由于可以使用相同的话语表示和相同的插槽特征来对多个候选值进行评分,因此可以提高运行时的计算效率。而且,可以基于多个插槽的训练实例(可选地跨多个域)对候选值评分模型进行训练,从而实现更稳健和/或准确的评分和/或实现跨多个域的稳健和/或准确的评分(即使在没有使用来自那些域中的一个或多个的训练实例进行训练,和/或仅使用来自那些域中的一个或多个的有限训练实例进行训练的情况下)。
[0012] 在一些实施方式中,在生成给定插槽的每个候选值的分值时,通过候选值评分模型处理话语表示、给定插槽的插槽特征以及候选值的候选值特征,以生成对应输出(例如,分对数)。而且,基于通过训练后的无差异评分模型处理话语表示和给定插槽的插槽特征,可选地可以针对给定插槽的“无差异”值生成输出(例如,分对数)。无差异评分模型可以具有与候选值评分模型不同的输入维度(例如,仅接受话语表示和插槽特征作为输入,而没有任何候选值特征),并且可以具有与候选值评分模型不同的训练参数。而且,基于是否在对话中针对给定插槽分配了任何候选值,可以可选地为给定插槽的“空”值分配输出(例如,分对数)。在一些实施方式中,可以将来自候选评分模型的输出、来自无差异评分模型的输出以及为空值分配的输出应用于softmax层(或其他仿射(affine)层),以生成候选值以及空值和无差异值的分值。分值可以分别是对应值的概率(例如,从0到1的归一化概率)。
[0013] 如上面所提到的,插槽的候选值的分值可以用于确定对话状态,并且基于对话状态执行一个或多个进一步的动作。例如,对话的给定回合之后的分值可以用于基于多个插槽中的每个插槽的“最可能”的候选值来确定对话状态,如那些候选值的分值所指示的。然后可以利用对话状态来生成下一系统话语,以选择适当的代理,和/或向代理传输命令。例如,可以使用对话状态和将多种对话状态中的每一种映射到对应的系统话语的对话策略来选择下一系统话语。而且,例如,可以基于确定所选代理可以对对话状态的插槽的最可能值起作用来使用对话状态选择适当的代理。而且,例如,可以基于对话状态的插槽的最可能值来生成代理命令(例如,代理命令可以包括那些值中的一个或多个),并且将代理命令传输给对应代理。
[0014] 可以实施本说明书中描述的主题的特定实施方式,以便实现以下优点中的一个或多个。与其他方法相比,本说明书中描述的对话状态追踪方法和模型可以提高数据效率。例如,在生成(可选地,多个插槽中的每一个的)(即,话语表示)多个候选值中的每一个的分值时,通过针对多个插槽中的每一个使用相同的评分模型和/或通过使用某些生成的特征(例如,话语表示和/或插槽特征),可以减少数据存储和/或处理要求。而且,例如,本文描述的评分模型的训练和/或使用可以使其与新域一起使用,而无需基于特定于新域的训练实例进行任何训练(或减少这种训练的数量)。这可以消除特定于新域的新模型在计算上的昂贵训练。进一步地,本文描述的评分模型的训练可以基于多个插槽和/或多个域的训练实例。这可以增加这种模型的鲁棒性和/或效率。这种模型的这种增强的鲁棒性和/或效率当被自动化助理用于对话状态追踪时可以增加自动化助理参与的对话的鲁棒性和/或效率,从而产生改进的自动化助理。另外,各种实施方式生成插槽的候选值的分值,而不考虑特定于特定候选值的显式描述符的特征。例如,各种实施方式基于以候选值的插槽的插槽描述符为基础的特征来生成候选值的分值,而不是基于显式描述候选值的项或其他值。即使该插槽具有大量(或无边界)的可能值集合,这也可以为该插槽的所有候选值生成有意义的分值。
而且,与现有架构相比,一些实施方式提供了用于对话状态追踪的改进的特征和/或评分模型架构。
[0015] 进一步地,可以实施本说明书中描述的主题的实施方式,以便实现对用户与自动化助理之间的对话状态的更准确和/或鲁棒的追踪。这可以实现与自动化助理的更有效的交互,从而可以节省各种计算资源。例如,如果对话的状态被错误地确定,则它可以节省网络和/或处理器资源,否则该网络和/或处理器资源可以通过与自动化助理的交互来消耗。例如,它可以减少对话和/或用户与自动化助理之间所需的其他交互的“回合”数,以使自动化助理能够满足用户的意图。
[0016] 提供以上发明内容作为本文公开的各种实施方式的一些特征的概述。下面提供了那些实施方式以及各种附加特征和各种附加实施方式的附加描述。
[0017] 在一些实施方式中,提供了一种由一个或多个处理器执行的方法,该方法包括识别自动化助理的系统话语和用户的用户话语。系统话语和用户话语在包括用户和自动化助理的电子对话期间被提供。该方法进一步包括基于系统话语和用户话语确定插槽的一个或多个候选值。该方法进一步包括生成:系统话语的系统话语表示以及插槽的每个候选值的系统候选值特征。生成系统话语表示和系统候选值特征是基于使用双向存储器网络处理系统话语。该方法进一步包括生成:用户话语的用户话语表示以及插槽的每个候选值的用户候选值特征。生成用户话语表示和用户候选值特征是基于使用双向存储器网络处理用户话语。该方法进一步包括生成插槽的每个候选值的分值。生成每个候选值的分值是基于使用训练后的评分模型处理:系统话语表示、用户话语表示、候选值的系统候选值特征以及候选值的用户候选值特征。该方法进一步包括:基于候选值的分值从插槽的候选值中选择给定值;以及基于插槽的所选的给定值来执行进一步的动作。
[0018] 本文公开的技术的这些和其他实施方式可以可选地包括以下特征中的一个或多个。
[0019] 在一些实施方式中,确定插槽的候选值包括基于系统话语的一个或多个给定项来确定给定值。在那些实施方式中的一些中,基于使用双向存储器网络处理系统话语来生成系统话语表示和系统候选值特征包括:生成去词化的系统话语,该去词化的系统话语包括给定话语的项但是用插槽的插槽描述符替换系统话语的一个或多个给定项;以及使用双向存储器网络处理去词化的系统话语。在那些实施方式中的一些版本中,生成系统话语表示包括:在处理系统话语之后,基于双向存储器网络的至少一种状态来生成系统话语表示。例如,在处理系统话语之后,基于双向存储器网络的最终前向状态、最终后向状态和/或隐藏状态来生成系统话语表示。在那些实施方式中的一些附加或替代版本中,生成给定值的系统候选值特征包括:在处理系统话语之后,基于与插槽的插槽描述符相对应的双向存储器网络的节点的隐藏状态来生成系统候选值特征。
[0020] 在一些实施方式中,确定插槽的候选值包括基于用户话语的一个或多个给定项来确定给定值。在那些实施方式中的一些中,基于使用双向存储器网络处理用户话语来生成用户话语表示和用户候选值特征包括:生成去词化的用户话语,该去词化的用户话语包括用户话语的项但是用插槽的插槽描述符来替换用户话语的一个或多个给定项;以及使用双向存储器网络来处理去词化的用户话语。在那些实施方式中的一些版本中,生成用户话语表示包括:在处理用户话语之后,基于双向存储器网络的至少一种状态来生成用户话语表示,诸如,最终前向状态、最终后向状态和/或隐藏状态。在那些实施方式中的一些附加和/或替代版本中,生成给定值的用户候选值特征包括:在处理用户话语之后,基于与插槽的插槽描述符相对应的双向存储器网络的节点的隐藏状态来生成用户候选值。
[0021] 在一些实施方式中,一个或多个候选值包括给定值和附加值。在那些实施方式中的一些中,生成给定值的分值是基于使用训练后的评分模型来处理:系统话语表示、用户话语表示、给定值的系统候选值特征以及给定值的用户候选值特征;以及生成附加值的分值是基于使用训练后的评分模型来处理:系统话语表示、用户话语表示、附加值的系统候选值特征以及附加值的用户候选值特征。
[0022] 在一些实施方式中,一个或多个候选值进一步包括无差异值。在那些实施方式中的一些中,生成无差异值的分值是基于系统话语表示、用户话语表示以及无差异值在电子对话的前一回合中的分值。
[0023] 在一些实施方式中,该方法进一步包括:基于系统话语表示和用户话语表示的组合来生成整体话语表示;以及基于给定值的系统候选值特征和给定值的用户候选值特征的组合来生成给定值的整体候选值特征。在那些实施方式中的一些中,使用训练后的评分模型来处理:系统话语表示、用户话语表示、给定值的系统候选值特征以及给定值的用户候选值特征包括:使用训练后的评分模型来处理整体话语表示和整体候选值特征。在那些实施方式中的一些版本中,生成给定值的整体候选值特征进一步基于给定值的先前分值,该先前分值是基于电子对话的先前回合的先前系统话语和先前用户话语针对给定值确定的,该先前回合紧接在电子对话的回合之前。
[0024] 在一些实施方式中,每个分值都是概率。
[0025] 在一些实施方式中,该方法进一步包括:识别附加系统话语和用户的附加用户话语,该附加系统话语和附加用户话语在电子对话的下一回合中;基于附加系统话语和附加用户话语,确定插槽的一个或多个附加候选值;基于分值,选择候选值的子集以基于附加系统话语表示和附加用户话语表示进行评分;生成插槽的每个附加候选值和子集的每个候选值的附加分值,其中,生成附加分值是基于附加系统话语的附加系统话语表示和附加用户话语的附加用户话语表示;基于分值,从附加候选值和子集的候选值中选择插槽的附加给定值;以及基于插槽的附加给定值来执行更进一步的动作。
[0026] 在一些实施方式中,该方法进一步包括:基于电子对话选择域;以及基于插槽被分配给该域来选择该插槽。
[0027] 在一些实施方式中,基于插槽的所选的给定值执行进一步的动作包括:生成代理命令,该代理命令包括插槽的所选的给定值;以及通过一个或多个网络将代理命令传输给代理,其中,代理命令使代理生成响应内容并且通过一个或多个网络传输响应内容。在那些实施方式中的一些中,该方法进一步包括:接收由代理生成的响应内容;以及将基于由代理生成的响应内容的输出传输给提供用户话语的客户端设备。
[0028] 在一些实施方式中,基于插槽的所选的给定值执行进一步的动作包括:基于所选的给定值来生成附加系统话语;以及将附加系统话语包含在电子对话的下一回合中以呈现给用户,下一回合紧接在电子对话中的回合之后。
[0029] 在一些实施方式中,训练后的评分模型包括作为神经网络模型的训练后的候选值评分模型。在那些实施方式中的一些中,生成给定值的分值包括:应用基于系统话语表示、用户话语表示、候选值的系统候选值特征和候选值的用户候选值特征的输入作为到训练后的候选值评分模型的输入;基于使用训练后的候选值评分模型处理输入来生成输出;以及基于将输出应用于评分模型的仿射层以及针对集合的其他候选值所生成的输出来生成给定值的分值。
[0030] 另外,一些实施方式包括一个或多个计算设备的一个或多个处理器,其中,一个或多个处理器可操作以执行存储在关联存储器中的指令,以及其中,该指令被配置为执行本文描述的一种或多种方法。处理器可以包括一个或多个图形处理单元(GPU)、中央处理单元(CPU)和/或张量处理单元(TPU)。一些实施方式包括存储计算机指令的一个或多个非暂时性计算机可读存储介质,该计算机指令可由一个或多个处理器执行以执行本文描述的一种或多种方法。
[0031] 应该了解的是,将本文更详细地描述的前述概念和附加概念的所有组合视为本文公开的主题的一部分。例如,出现在本公开的结尾处的要求保护的主题的所有组合被视为是本文公开的主题的一部分。附图说明
[0032] 图1是可以实施本文公开的实施方式的示例环境的框图
[0033] 图2A和图2B图示了图1的各种组件在一些实施方式中可以如何交互的示例。
[0034] 图3图示了作为双向存储器网络的特征模型的示例。
[0035] 图4图示了评分模型的示例。
[0036] 图5是图示了根据本文公开的实施方式的在对话期间确定对话状态并且基于(多种)对话状态执行进一步的动作的示例方法的流程图
[0037] 图6是图示了根据本文公开的实施方式的训练评分模型的示例方法的流程图。
[0038] 图7图示了计算设备的示例架构。

具体实施方式

[0039] 本文呈现的实施方式给出了用于对话状态追踪的基于深度学习的技术,该技术能够处理在规模上具有较大或无边界的可能值集合的插槽。在涉及至少一个用户和自动化助理的对话期间,插槽的候选插槽值由插槽值引擎确定。为了确定对话的每个用户话语中存在的插槽和候选插槽值,插槽值引擎可以利用基于双向递归神经网络的多域语言理解(LU)模型。可以基于标记数据和跨多个域的插槽来训练多域LU模型,并且通过多域LU模型生成的输出可以用于对用户话语进行去词化。为了确定每个系统话语中存在的插槽和候选插槽值,插槽值引擎可以利用来自自动化助理的语言生成组件的输出。例如,来自语言生成组件的输出可以直接指示系统话语中包括的插槽和插槽值。外部知识源也可以可选地用于扩展用户话语和/或系统话语的候选值。例如,口头用户话语的候选插槽值可以包括基于口头用户话语的一部分的主要语音到文本识别的第一候选值以及基于口头用户话语的一部分的替代语音到文本识别的第二候选值(即,在候选值中包括替代语音识别假设)。
[0040] 在整个对话中,对话状态引擎维护每个插槽的候选值集合。插槽的候选值集合被定义为包括该插槽的候选值及其关联分值。对话中给定时间的候选值的分值表示用户对给定时间当前对话中的候选值的偏爱程度。
[0041] 作为一个示例,令 为在由对话状态引擎处理的域D中的插槽s的索引t处的对话回合的候选值集合。在对话的开始,针对每个插槽, 是空的。可以将 的边界施加为限制集合的最大可能大小(即,限制包括在插槽的集合中的候选值的数量)。每个集合的最大容量(K)可以足够大以确保不会从集合中清除最近引入的或极有可能的候选值。在一些实施方式中,最大容量(K)可以设置为6、7、8或其他值。在对话的每个回合(t),可以将与回合t时的用户话语中的插槽s相关联的所有候选值添加到 (如果它们尚未存在于 中)。这些候选值是从插槽值引擎获得的。例如,候选值可以由插槽值引擎基于将回合的用户话语应用于LU模型,基于对话上下文和/或基于外部资源(例如,用户的联系人列表)来确定。
在对话的每个回合(t),也可以将与回合t时的系统话语中的插槽s相关联的所有候选值添加到 (如果它们尚未存在于 中)。这些候选值是在回合t时从系统动作获得的。在对话的每个回合(t),可以按照分值的降序来分析 中的所有候选值 如果 则可
以用 (例如,“填充值”)扩展 如果 则可以从 中清除最低评分的候选值
(基于来自对话的前一回合的分值)。这些步骤确保了新提到的候选值始终包括在候选集合中,并且如果需要的话,则清除不太优选的值。
[0042] 对话状态引擎然后通过使用来自对话的前一回合的候选值的分值(如果有的话)并且使用对话回合的用户话语和系统话语的各种特征来预测每个集合的每个候选值的分值。每个插槽的候选值的分值可以分别指示插槽的候选值的概率。在一些实施方式中,插槽的分值可以基于包括在插槽的集合中的候选值(Vs)(即,从用户和/或系统话语中导出的候选值)以及基于插槽的“空”值(即,尚未指定插槽s)和“无差异”值(即,用户对插槽s没有偏好)来确定。更正式地,分值可以基于通过 的分布来确定,其中,δs表示无差异值并且 表示空值。这可能是良好的接近值,因为从未在对话中提到的值将具有接近于零的概率,因此不需要明确存储在对话状态中。如上面所提到的,为了使插槽的分布大小在所有回合上保持恒定,可以将 虚拟值(即,填充)添加到 给出大小为K+2
的分布。此外,针对大多数插槽,|V′s|=K+2<<|Vs|。这实现了分布的紧凑型表示,并且计算效率高。
[0043] 对话状态引擎将每个插槽的候选值集合视为输入,并且更新每个候选值的分值。它还识别出哪些插槽没有限制(即,无差异值)或尚未指定(即,空值)。如上面提到的,在每个回合使用该回合的用户话语、该回合的系统话语和先前的候选集合来初始化候选集合。
在时间t,对话状态引擎使用来自先前对话回合的集合(被表示为 )与其分值和对话动作以及用户和系统话语来生成话语表示 插槽特征 和候选特征
候选评分器然后使用这些特征来更新候选的分值。令
并且 使用等式来更新每个
的分值
针对1≤k≤4., 和 是可训练的模型参数。
[0044] 特征 和 可以使用对话回合的去词化的用户话语和系统话语来获得。通过用特殊令牌delex取代与插槽s相关联的所有值来对话语进行去词化(但是不对来自话语的插槽描述符进行去词化)。可以使用存储器网络(诸如,两层堆叠的双向GRU网络)来分别处理去词化的系统话语和去词化的系统话语。系统话语和用户话语的最终前向状态 和后向状态 可以被视为整个话语的紧凑型表示,而该状态( 针对通过级联前向和后向状态形成的索引k处的令牌)对令牌周围的上下文进行编码。除了标注插槽的值之外,插槽值引擎还可以预测与用户话语相对应的语音动作,例如,确认、否定等。如果可以从话语中推导出插槽,则这些语音动作可以具有可选的插槽参数。例如,话语“No that doesn't work(不,那不行)”对应于否定行为,而话语“6pm doesn't work for me(下午6点对我来说不行)”对应于否定(时间)。特征也能从系统对话动作中提取出来作为对话策略模在用户回合之前的输出。系统对话动作的一些示例是再见、请求(时间)和通知(时间=“6pm(下午6点)”)。去词化的系统话语是从对话系统的语言生成组件获得的。
[0045] 话语表示 与域中的所有插槽的所有候选值相关,并且在对所有插槽的所有候选值进行评分时共享。话语表示可以被定义为 其中,ct是通过在处理系统话语之后级联双向存储器网络的最终前向和后向状态来获得的系统话语表示,并且 是表示存在不具有任何插槽或值自变量的系统对话动作的二进制向量。
c′t和 表示用户话语的对应特征。
[0046] 插槽等级特征 与特定插槽相关并且在对对应插槽的所有候选值进行评分时共享。插槽s的插槽等级特征可以被定义为
其中, 和 是分别在前一回合的输出中无差异的和空的特殊值的分值,并且 是
表示存在具有插槽s作为自变量(例如,请求、否定)的系统对话动作的二进制向量。
是用户对话动作的对应的二进制向量。
[0047] 候选等级特征分别与对应的特定候选值相关,并且用于仅对特定候选值进行评分。针对插槽s的候选值 候选等级特征可以被定义为其中 是表示存在与候选值
相关联的所有系统对话行为的二进制向量(例如,动作通知对应于系统意图通知中的插槽价格的值为“便宜”的候选(价格=“便宜”))。如果 不存在于 中,则 是前一回合中的候选的预测分值或0。T是在去词化之前存在候选值的去词化的系统话语中的索引集合。 是在处理系统话语之后从双向存储器网络获得的隐藏状态向量并且在候选值的系统话语中对上下文进行编码。如果 不存在于系统话语中,则T是空的,并且总和结果被视为适当大小的零向量。 和 是用户话语的对应值。
[0048] 现在转到附图,更详细地描述了这些和其他实施方式。
[0049] 图1图示了可以实施本文公开的技术的示例环境。示例环境包括客户端设备106、自动化助理110和多个代理140A至140N。客户端设备106可以是例如独立的声控扬声器设备、台式计算设备、膝上型计算设备、平板计算设备、移动电话计算设备、用户车辆的计算设备和/或用户的包括计算设备的可穿戴装置(例如,用户的具有计算设备的手表、用户的具有计算设备的眼镜、虚拟或增强现实计算设备)。可以提供附加和/或替代的客户端设备。
[0050] 尽管自动化助理110在图1中被图示为与客户端设备106分离,但是在一些实施方式中,可以由客户端设备106实施自动化助理110的所有或各个方面。例如,在一些实施方式中,输入处理引擎112可以由客户端设备106实施。在自动化助理110的一个或多个(例如,所有)方面由远离客户端设备106的一个或多个计算设备实施的实施方式中,客户端设备106和自动化助理110的那些方面经由一个或多个网络(诸如,广域网(WAN)(例如,互联网))通信。
[0051] 尽管与自动化助理110组合仅图示一个客户端设备106,但是在许多实施方式中,自动化助理110可以是远程的,并且可以与相同用户的多个客户端设备中的每一个和/或与多个用户的多个客户端设备中的每一个对接。例如,自动化助理110可以经由不同会话管理与多个设备中的每一个的通信,并且可以并行管理多个会话。例如,在一些实施方式中,自动化助理110可以被实施为采用云基础设施的基于云的服务,例如,使用服务器场或运行适合于处理来自多个用户的大量请求的软件高性能计算机的集群。然而,为了简单起见,关于单个客户端设备106描述了本文的许多示例。
[0052] 自动化助理110与代理140A至140N分离,并且经由API和/或经由一个或多个通信信道(例如,客户端设备106的内部通信信道和/或网络(诸如,WAN))与代理140A至140N通信。在一些实施方式中,代理140A至140N中的一个或多个分别由相应方管理,该相应方与管理自动化助理110的一方分离。如本文描述的,“代理”引用自动化助理使用的一个或多个计算设备和/或软件。在一些情况下,代理可以与自动化助理分离和/或可以通过一个或多个通信信道与自动化助理通信。在那些情况中的一些情况下,自动化助理可以将数据(例如,代理命令)从第一网络节点传输到第二网络节点,该第二网络节点实施代理的功能性中的所有或各个方面。在一些情况下,代理可以是第三方(3P)代理,因为它由与管理自动化助理的一方分离的一方管理。在一些其他情况下,代理可以是第一方(1P)代理,因为它由管理自动化助理的相同一方管理。
[0053] 代理被配置为从自动化助理110(例如,通过网络和/或经由API)接收调用请求和/或其他代理命令。响应于接收到代理命令,代理基于代理命令来生成响应内容,并且传输响应内容以提供基于响应内容的用户接口输出。例如,代理可以将响应内容传输给自动化助理110以通过自动化助理110提供基于响应内容的输出。作为另一示例,代理本身可以提供输出。例如,用户可以经由客户端设备106与自动化助理110交互(例如,自动化助理可以在客户端设备106上实施和/或与客户端设备106进行网络通信),并且代理可以是安装在客户端设备106上的应用或者可远离客户端设备106执行的应用,但是在客户端设备106上是“可流式”。当调用应用时,它可以由客户端设备106执行和/或引起客户端设备106的重视(例如,其内容可以接管客户端设备106的显示器)。
[0054] 自动化助理110包括输入处理引擎112、代理/域引擎122、插槽值引擎124、调用/交互引擎118和输出引擎116。自动化助理110还包括对话状态引擎130,其包括候选模块132、特征模块134和评分模块136。在一些实施方式中,在与自动化助理110分离的组件中可以省略、组合和/或实施自动化助理110的一些引擎(和/或模块)。而且,自动化助理110可以包括本文为了简洁起见未图示的附加引擎(和/或模块)。
[0055] 自动化助理110从客户端设备106接收到用户输入的实例。用户可以经由用户接口输入设备将各种类型的用户输入提供给自动化助理110。在一些实例中,输入可以是“用户话语”,其是自由形式的自然语言输入,诸如,基于用户经由一个或多个用户接口输入设备生成的用户接口输入(例如,基于经由物理或虚拟键盘提供的键入输入或者基于经由麦克提供的口头输入)的文本输入。如本文使用的,自由形式的输入是由用户制定的并且不限于呈现给用户选择的一组选项(例如,不限于在下拉式菜单中呈现的一组选项)的输入。
[0056] 作为一个示例,自动化助理110可以以包括令牌序列的自然语言数据流的形式接收用户话语。例如,自动化助理110可以响应于键入的用户输入接收自然语言数据流,或者可以以流式音频记录的形式接收自然语言语音输入数据流。流式音频记录可以由客户端设备106响应于从客户端设备106的麦克风接收到的信号而生成,该麦克风捕获客户端设备106的用户的口头输入。在一些实施方式中,用户输入可以由客户端设备106生成和/或响应于客户端设备106的用户明确调用自动化助理110来提供给自动化助理110。例如,客户端设备106可以检测到用户的某些语音输入的调用(例如,自动化助理110热词/短语,诸如,“Hey Assistant(嗨,助理)”)、用户与硬件按钮和/或虚拟按钮的交互(例如,硬件按钮的轻击、客户端设备106显示的图形界面元素的选择)和/或其他特定的用户接口输入。
[0057] 自动化助理110响应于从客户端设备106接收到用户输入的实例来提供输出的实例。输出的实例可以是例如包括自然语言输出的“系统话语”。系统话语可以被提供为由客户端设备106可听地呈现(例如,经由客户端设备106的扬声器输出)的音频和/或由客户端设备106图形化地呈现(例如,经由客户端设备106的显示器渲染)的文本和/或图形内容等。如本文描述的,输出的一些实例可以是基于自动化助理110的对话策略和基于当前对话状态确定的系统话语。例如,可以基于系统话语在给定时间被映射到当前对话状态来确定对话中的给定时间的系统话语,如由对话状态引擎130所确定的。而且,输出的一些实例可以基于由代理140A至140N中的一个所选代理生成的响应内容。也如本文描述的,代理140A至
140N中的一个所选代理可以基于当前对话状态而选择和/或响应内容可以响应于是基于当前对话状态的代理命令而生成。
[0058] 自动化助理110的输入处理引擎112处理自然语言输入(例如,从客户端设备106接收到的自然语言输入),并且生成注释输出以供自动化助理110的一个或多个其他组件使用,诸如,代理/域引擎122、插槽值引擎124和/或对话状态引擎130。例如,输入处理引擎112可以处理自然语言自由形式输入,其是用户经由客户端设备106的一个或多个用户接口输入设备生成的。所生成的注释的输出包括基于自然语言输入的令牌,并且可选地包括自然语言输入的一个或多个注释。如上所述,自然语言输入可以基于用户经由一个或多个用户接口输入设备生成的用户接口输入(例如,基于经由物理或虚拟键盘提供的键入输入或者基于经由麦克风提供的口头输入)。
[0059] 如本文描述的,插槽值引擎124在确定插槽的候选值时可以使用由输入处理引擎112生成的令牌和/或注释。另外,对话状态引擎130(例如,特征模块134)在确定一个或多个特征以用于(例如,由评分模块136)生成插槽的候选值的分值时可以使用由输入处理引擎
112生成的令牌和/或注释。
[0060] 输入处理引擎112可以在生成令牌时可选地标准化或以其他方式转换一些n元语法。例如,输入处理引擎112可以去除大写字母,将日期转换为标准格式,将相对时间项转换为标准格式(例如,将“明天”转换为与“明天”相对应的日期),将数字转换为通用标识符(例如,将任何数字转换为“#”)等。
[0061] 在一些实施方式中,输入处理引擎112包括语音到文本模块114,其接收语音输入的实例(例如,数字音频数据的形式),并且将语音输入转换为包括一个或多个文本单词或短语的文本。输入处理引擎112然后可以使用转换后的文本来生成令牌和/或其他数据。在一些实施方式中,语音到文本模块114是使用一种或多种语音到文本算法以基于语音输入生成文本的流式语音到文本引擎。语音到文本模块114可以依赖于所存储的一个或多个语音到文本模型(也称为语言模型),该语音到文本模型分别可以对语言中的音频信号和语音单元之间的关系以及语言中的单词序列进行建模。在一些实施方式中,语音到文本模块114的中间输出可以被用作由一个或多个组件(例如,由特征模块134应用于特征模型152)使用的自然语言输入的令牌和/或附加注释。例如,可以将语音到文本模块114生成的n个最佳列表和/或网格应用于特征模型152作为自然语言输入的令牌的表示。网格是紧凑地表示话语的多个可能假设的图表。因此,网格表示自然语言输入的可能令牌。
[0062] 在一些实施方式中,输入处理引擎112被配置为识别并注释自然语言输入中的各种类型的语法信息。例如,输入处理引擎112可以包括被配置为使用其语法色来注释项的词性标注器。例如,词性标注器可以利用其词性来标注每个项,诸如,“名词”、“动词”、“形容词”、“代词”等。而且,例如,在一些实施方式中,输入处理引擎112可以另外和/或可替代地包括被配置为确定自然语言输入中的项之间的句法关系的依存句法分析器。例如,依存句法分析器可以确定哪些项修饰其他项、句子的主语和动词等(例如,分析树),并且可以注释这种依存句法。
[0063] 在一些实施方式中,输入处理引擎112可以另外和/或可替代地包括实体标注器,该实体标注器被配置为注释一个或多个片段中的实体引用,诸如,对人、组织、位置等的引用。实体标注器可以以高粒度级别来注释对实体的引用(例如,以实现对实体类的所有引用的标识,诸如,人)和/或以低粒度级别来注释对实体的引用(例如,以实现对特定实体的所有引用的标识,诸如,特定的人)。实体标注器可以依赖于自然语言输入的内容来解析特定实体和/或可以可选地与知识图或其他实体通信以解析特定实体。在一些实施方式中,除了或代替被确定为对应于那些插槽的令牌,针对令牌解析的实体可以被用作对应插槽的插槽值。
[0064] 在一些实施方式中,输入处理引擎112可以另外和/或可替代地包括指代解析器,该指代解析器被配置为基于一个或多个上下文提示对相同实体的引用进行分组或“聚类”。例如,指代解析器可以用于将用户输入的实例中的项“it(它)”解析为先前在用户输入的前一实例中提及的“Restaurant A(餐厅A)”。在那些实施方式中的一些中,由输入处理引擎
112提供的令牌可以包括代词的指示物代替代理本身。例如,“Restaurant A”可以被提供为令牌而不是“it”。
[0065] 在一些实施方式中,输入处理引擎112的一个或多个组件可以依赖于来自输入处理引擎112的一个或多个其他组件的注释。例如,在一些实施方式中,命名实体标注器可以在注释对特定实体的所有提及时依赖于来自指代解析器和/或依存句法分析器的注释。而且,例如,在一些实施方式中,指代解析器可以在聚类对相同实体的引用时依赖于来自依存句法分析器的注释。在一些实施方式中,在处理特定的自然语言输入时,输入处理引擎112的一个或多个组件可以使用相关的先前输入和/或特定的自然语言输入之外的其他相关数据来确定一个或多个注释。
[0066] 输出引擎116将输出的实例提供给客户端设备106。输出的实例可以是基于自动化助理110的对话策略的系统话语,和/或可以基于来自代理140A至140N中的其中一个的响应内容(当自动化助理110充当该代理的中介时)。在一些实施方式中,输出引擎116可以包括将响应内容的文本组件转换为音频格式的文本到语音引擎,并且由输出引擎116提供的输出是音频格式(例如,作为流式音频)。在一些实施方式中,响应内容可能已经是音频格式。在一些实施方式中,输出引擎116另外或可替代地提供文本回复内容作为输出(可选地以由客户端设备106转换为音频)和/或提供其他图形内容作为输出以由客户端设备106进行图形显示。
[0067] 代理/域引擎122选择由与客户端设备106的当前对话指示的一个或多个域和/或一个或多个代理140A至140N。如下面描述的,插槽值引擎124可以使用所选的域和/或代理来确定与该域和/或代理相关的插槽。例如,插槽的某个集合可能对“restaurant reservation(餐厅预订)”域来说是相关的,而插槽的不同(但是可能部分重叠的)集合可能对“buy movie tickets(买电影票)”域来说是相关的。而且,例如,插槽的每个集合可能对使用户能够“order food(预订食物)”的代理来说是相关的,而插槽的不同(但是可能重叠)集合可能对使用户能够“book a flight(预订航班)”的代理来说是相关的。如本文使用的,域指的是对话的用户意图的本体分类,并且以比对话状态小的粒度描述了用户意图。在一些实施方式中,针对每个域(例如,在数据库中)定义了插槽的对应集合。例如,可以针对“buy bus ticket(买汽车票)”域定义插槽的第一集合,可以针对“flight booking(航班预订)”域定义插槽的第二集合,可以针对“restaurant reservation domain(餐厅预订域)”定义插槽的第三集合等。
[0068] 代理/域引擎122可以基于用户在对话中提供的输入和/或基于其他数据来选择一个或多个域和/或代理140A至140N中的一个或多个代理。例如,代理/域引擎122可以基于“Assistant,book me a flight(助理,请为我预订航班)”的初始用户话语来选择“book a flight(预订航班)”域。代理/域引擎122可以选择代理和/或域的其他数据可以包括例如:客户端设备的用户的历史交互(例如,用户在过去针对给定域使用了哪个代理)、代理和/或域的整体流行度、代理的等级、客户端设备上的当前渲染和/或最近渲染的内容、客户端设备的位置、当前日期和/或时间等。
[0069] 在一些实施方式中,代理/域引擎122基于用户在对话中明确调用代理和/或域来选择特定代理和/或域。例如,一些代理可能与明确的调用短语相关联,并且代理/域引擎122可以基于包括特定代理的调用短语的自然语言输入来选择特定代理。而且,例如,一些域可能与多个调用短语相关联,并且代理/域引擎122可以基于包括特定域的调用短语中的任何一个的自然语言输入来选择其中一个域。代理选择引擎122可以在确定域时可选地依赖于来自输入处理引擎112的注释输出。在一些情况下,其中,代理能够作用于多个域,代理选择模块122可以选择特定代理和用于该代理的特定域。
[0070] 插槽值引擎124确定被分配给在对话中指示的域和/或代理的插槽的候选插槽值。例如,针对每个用户话语和/或系统话语,插槽值引擎124可以分析对应话语以针对由话语指示的域的一个或多个插槽来确定一个或多个插槽值。例如,插槽值引擎124可以基于接收到的用户话语的令牌和/或基于所提供的系统话语的令牌来确定一个或多个候选插槽值。
在那些实施方式中的一些中,插槽值引擎124进一步基于对应插槽的插槽描述符来确定一个或多个候选插槽值。例如,插槽描述符(或其嵌入)可以与所选的域和/或代理相关联地存储在插槽描述符数据库158中。插槽值引擎124可以将插槽描述符的嵌入和话语的令牌(或其嵌入)应用于插槽模型156以确定哪些令牌对应于哪些插槽。插槽值引擎124然后可以分配令牌和/或基于令牌的值,作为其对应插槽的候选插槽值。
[0071] 插槽的描述符可以是插槽的文本描述符,诸如,标题和/或描述了可以由插槽的插槽值定义的参数的其他描述符。例如,“restaurant reservation”域可以包括各种插槽,诸如,具有“人数”描述符的插槽、具有“restaurant name(餐厅名称)”描述符的另一插槽、具有“reservation date(预订日期)”描述符的另一插槽、具有“cuisine(烹饪)”描述符的另一插槽、具有“reservation time(预订时间)”描述符的另一插槽等。
[0072] 对话状态引擎130生成由插槽值引擎124确定的候选值的分值,并且可选地插槽的“无差异”和/或“未定义”值的分值。如本文描述的,由对话状态引擎130生成的分值指示当前对话状态。例如,自动化助理可以基于分值针对域的每个插槽选择一个或多个候选值(或者无差异或未定义值)。然后所选的值可以用作插槽的当前值,从而定义当前对话状态。
[0073] 候选模块132针对域的每个插槽维护用于该插槽的候选值集合并且用于候选值的分值。例如,在对话的开始,候选值集合可能是空的(或仅包括“填充”值)。在对话的每个对话回合,插槽值引擎124可以向候选模块132提供针对该对话回合确定的候选值。在每个对话回合,候选模块132可以将每个新提及的候选值添加到其对应集合。在一些实施方式中,候选模块132在每个插槽的集合中维护固定数量的候选值。在那些实施方式中的一些中,候选模块132可以将“填充”值添加到未包括足够的候选值的集合。另外或者可替代地,候选模块132可以从插槽集合中去除一个或多个候选值以为插槽的新提供的候选值腾出空间。例如,如果插槽集合已经满了并且接收到两个新的候选值,则可以从集合中去除插槽的具有最差分值的两个现有的候选值(基于前一对话回合中的评分)以为两个新的候选值腾出空间。
[0074] 特征模块134在对话的每个回合生成各种特征。例如,特征模块134可以在对话的每个回合生成话语表示、候选值特征和插槽特征。候选值特征分别用于候选模块132维护的集合中的对应候选值。插槽特征分别用于候选模块132维护的集合的对应插槽。特征模块134在生成话语表示和候选值特征时使用特征模型152。特征模型152可以是例如双向存储器网络。
[0075] 评分模块136在对话的每个回合生成候选集合的值的分值。在生成分值时,评分模块136使用评分模型154和由特征模块134生成的各种特征。具体地,评分模块136基于使用评分模型154处理各种特征来生成分值。评分模型154可以是例如根据本文描述的实施方式训练的一个或多个前馈神经网络模型。
[0076] 下面和本文其他地方提供了对话状态引擎130的附加描述。
[0077] 调用/交互引擎118执行在对话的每个回合之后的一个或多个动作,并且基于对话的当前状态执行一个或多个动作。例如,调用/交互引擎118可以基于对话的当前状态确定系统话语以在对话的下一回合中提供。例如,调用/交互引擎118可以在确定系统话语以在下一回合中提供时使用当前状态和对话策略。作为另一示例,调用/交互引擎118可以基于对话的当前状态生成和传输代理命令。例如,调用/交互引擎118可以在关联插槽中生成包括插槽值的代理命令,其中,插槽值基于对话的当前状态来选择(例如,具有最能指示当前插槽值的分值的插槽值)。代理命令可以是关联插槽中包括插槽值的结构化命令,并且可选地是附加数据,诸如,域的指示(例如,其中,代理通过多个域操作)、用户标识符、会话标识符等。在一些实施方式中或在一些情况下,代理命令是调用所选代理的调用命令。在一些实施方式中或在一些情况下,已经在对话中(例如,基于先前的自然语言输入)调用了代理,并且在促进涉及调用的代理的对话时提供代理命令。所选代理可以响应于代理命令来生成响应内容。在一些实施方式中,所选代理将响应内容传输给自动化助理110,并且输出引擎116基于响应内容来生成输出。例如,输出引擎116可以提供未更改的响应内容作为输出,或者可以执行响应内容的文本到语音转换(或其他转换),并且提供转换后的内容作为输出。在一些实施方式中,所选代理直接将响应内容传输给客户端设备106。在其他实施方式中,所选代理可以在客户端设备106(例如,是安装在客户端设备106上的应用)上本地操作,并且可以生成响应内容以直接显示在客户端设备106上。
[0078] 每个代理140A至140N可以包括它自己的内容引擎和/或其他引擎。而且,在许多实施方式中,代理可以在生成响应内容时访问所存储的各种模型和/或其他资源(例如,它自己的语法模型和/或内容模型)。
[0079] 参照图2A和2B,图示了图1的各种组件和它们在一些实施方式中可以如何交互的示例。在图2中,由自动化助理110的输入处理引擎112接收用户话语和系统话语171。例如,可以接收到对话回合的系统话语和响应用户话语。
[0080] 作为工作示例,用户话语和系统话语171可以包括系统话语“There are tables available at 6pm at Cascal.Does that work(Cascal下午6点有可用的餐桌。行吗)?”,接着是用户话语“6pm doesn't work for me.How about 7pm(下午6点对我来说不行。晚上7点如何呢)?”。在该工作示例中,在系统话语和用户话语171之后可以是对话的先前回合,其包括用户话语“book Cascal table today(预订今天的Cascal餐桌)”。输入处理引擎112基于用户话语和系统话语171生成令牌172,并且将令牌172提供给插槽值引擎124、特征模型134以及可选地提供给代理/域引擎122。在一些实施方式中,输入处理引擎112另外将用户话语和系统话语171的附加注释提供给引擎122、模块134和/或引擎124。
[0081] 在一些实施方式中和/或在对话的某些回合,代理/域引擎122使用令牌172和/或其他数据来选择特定域和/或代理,并且将域和/或代理的指示173提供给插槽值引擎124以及可选地提供给调用/交互模块118(图2B)。继续该工作示例,代理/域引擎122可以基于先前的用户话语“book Cascal table tonight(预订今晚的Cascal餐桌)”(例如,基于存在“restaurant reservation”域项诸如“book(预订)”和“restaurant(餐桌)”)来选择“restaurant reservation”域。
[0082] 代理/域引擎122将域和/或代理的指示173提供给插槽值引擎124。插槽值引擎124访问插槽描述符数据库158以识别分配给由指示173指示的域和/或代理的插槽,并且识别那些插槽的插槽描述符。
[0083] 插槽值引擎124使用令牌172以及可选地使用插槽描述符的嵌入来确定哪些令牌172对应于所识别的哪个插槽(如果有的话)。例如,插槽值引擎124可以应用令牌172和插槽描述符的(多次)嵌入作为插槽模型156的输入,并且基于输入通过插槽模型156生成输出,该输出指示哪些令牌172对应于哪个插槽(如果有的话)。插槽值引擎124可以使用输出来确定哪些令牌172对应于哪个插槽。
[0084] 插槽值引擎124基于所确定的对应令牌来为域的一个或多个插槽进一步生成候选值。例如,候选值可以严格对应于令牌,或者可以是实体标识符或令牌的其他指示。继续该工作示例,插槽值引擎124可以基于插槽模型156上的一次或多次通过来确定:“Cascal”是具有“restaurant name”描述符的插槽的候选插槽值,并且“6pm”和“7pm”是具有“time(时间)”描述符的插槽的候选插槽值。
[0085] 插槽值引擎124将插槽、候选值和插槽描述符174提供给对话状态引擎130的候选模块132和特征模块134。
[0086] 候选模块132将每个插槽的任何“新的”候选值添加到插槽的候选值集合。继续该工作示例,基于在先前用户话语“Book Cascal Table tonight(预订今晚的Cascal餐桌)”中提到它,“Cascal”已经是“restaurant name”插槽的候选值。因此,由于“Cascal”已经被包括在“restaurant name”插槽的候选值集合中,所以不会将“Cascal”添加到“restaurant name”候选值。然而,由于“6pm”和“7pm”尚未存在于集合中并且它们被包括在对话回合中,所以可以将“6pm”和“7pm”添加到“time”插槽的值的集合。在一些实施方式中,候选模块132在每个插槽的值的集合中维护固定数量的候选值。在那些实施方式中的一些中,候选模块132可以将“填充”值添加到未包括足够的候选值的集合。另外或者可替代地,候选模块132可以从插槽集合中去除一个或多个候选值以为插槽的新提供的候选值腾出空间。
[0087] 特征模块134使用令牌172以及插槽、插槽值和插槽描述符174来生成话语表示、候选值特征和插槽特征175。如本文描述的,可以使用特征模型152来生成话语表示和候选值特征。也如本文描述的,可以针对基于用户话语和/或系统话语171确定的每个候选值以及为候选模块132在集合中维护的任何附加候选值生成候选值特征。进一步地,可以使用候选值的分值来生成候选值特征,其中,该分值来自前一对话回合的评分。可以由候选模块132提供来自先前对话回合的候选值以及来自前一对话回合的分值,该候选模块132维护插槽的候选值集合及其分值。下面参照图3更详细地描述了使用特征模型152的实施例152A确定各种特征的示例。
[0088] 特征模块134将话语表示、候选值特征和插槽特征175提供给评分模块136。评分模块136使用评分模型154和话语表示、候选值特征以及插槽特征175来生成所有集合的候选值的分值。继续该工作示例,可以生成“reservation time(预订时间)”插槽的候选值“6pm”的分值,并且生成“reservation time”插槽的候选值“7pm”的分值。进一步地,可以生成“restaurant name”插槽的候选值“Cascal”的分值。也可以生成“reservation time”插槽的空值和无差异值以及“restaurant name”插槽的空值和无差异值的分值。下面参照图4更详细地描述了生成插槽的多个候选值以及插槽的空值和无差异值的分值的示例。
[0089] 评分模块136将候选值的分值提供给候选模块132。候选模块132更新其维护的候选值和分值的集合的列表以反映最近分值。候选模块132将每个插槽177的候选值和最近分值提供给调用/交互模块118。
[0090] 在一些实施方式中或在一些情况下,调用/交互模块118基于每个插槽177的候选值和分值来确定进一步的系统话语178。可以将进一步的系统话语178提供给输出引擎116,并且输出引擎116可以将进一步的系统话语178提供给客户端设备106作为对话的下一回合的系统话语。
[0091] 相反,在一些实施方式中或在一些情况下,调用/交互模块118基于每个插槽177的候选值和分值来生成具有插槽179的所选值的代理命令。可以基于那些候选值的分值来选择包括在代理命令中的插槽的所选值。可以将代理命令179传输给代理140A,其生成响应内容180。响应内容180可以由代理140A直接提供给客户端设备106,或者可以提供给输出引擎116,该输出引擎116然后将该响应内容180(或其对话)提供给客户端设备106。基于代理/域引擎122选择代理(例如,如通过指示173所指示的)和/或基于确定代理140A可以为被确定为表示当前对话状态(例如,如基于分值的)候选值生成响应内容,可以将代理命令179传输给代理140A。
[0092] 在一些实施方式中,代理命令179是调用请求,其利用具有基于分值选择的所选值来调用代理140A。如本文描述的,在一些情况下,在调用代理140A之后,自动化助理110仍然可以充当中介。也如本文描述的,在一些情况下,对话实际可以传递到代理140A(一旦传递了,就没有自动化助理110充当中介),并且在出现一个或多个条件时传递回自动化助理110。进一步地,也如本文描述的,在一些情况下,代理140A可以由客户端设备106执行和/或引起客户端设备106的重视(例如,其内容可以接管客户端设备106的显示器)。
[0093] 现在转到图3,提供了双向存储器网络152A的示例。双向存储器网络152A是堆叠的两层双向存储器网络,并且是特征模型152的一个示例(图1和图2A)。特征模块134在生成话语表示和候选值特征时可以使用双向存储器网络152A以在生成候选值的分值时使用。双向存储器网络152A包括第一双向GRU层162A和第二双向GRU层166A。在许多实施方式中,双向存储器网络152A可以独立于评分模型(例如,评分模型154或评分模型154A)训练。作为一个非限制性示例,双向存储器网络152A可以仅是编码器-解码器网络的“编码器”部分,其独立训练以接收令牌作为输入,通过“编码器”部分生成那些令牌的编码(作为通过第二双向GRU层166A的输出),然后通过“解码”部分重新生成令牌。例如,双向存储器网络可以是编码器-解码器网络的编码器部分,其在多个训练实例上训练,该多个训练实例分别具有令牌的对应有序集合作为训练实例输入以及具有令牌的相同的对应有序集合作为训练实例输出。
[0094] 第一双向GRU层162A包括第一方向存储器单元M1D1N1至M1D1NN和第二方向存储器单元M1D2N1至M1D2NN。在图3的示例中,每个存储器单元都是GRU存储器单元。在其他实施方式中可以使用LSTM存储器单元和/或其他存储器单元。第一方向存储器单元M1D1N1至M1D1NN对第一方向上的话语的令牌T1至TN进行操作,该第一方向符合它们在接收到的自然语言输入中的实际序列。例如,应用令牌T1作为到M1D1N1的输入。基于将令牌T1应用于M1D1N1生成的输出以及令牌T2被应用于M1D1N2。基于将令牌T2和来自M1D1N1的输出应用于M1D1N2生成的输出以及令牌T3被应用于M1D1N3。这继续,直到到达M1D1NN为止。要注意的是,如果自然语言输入中的令牌数量小于第一方向存储器单元M1D1N1至M1D1NN的数量,则可以应用“填充”值作为到超过令牌的数量的那些第一方向存储器单元M1D1N1至M1D1NN的输入。“填充”值可以是空值或指示不存在令牌的其他值。
[0095] 第二方向存储器单元M1D2N1至M1D2NN对与其实际序列相反的第二方向上的话语的令牌T1至TN进行操作。例如,应用令牌TN作为到M1D2NN的输入。基于将令牌TN应用于M1D2NN生成的输出以及令牌TN-1(也未图示)被应用于M1D2NN-1(未图示)。这继续,直到到达M1D2N1为止。要注意的是,如果自然语言输入中的令牌数量小于第二方向存储器单元M1D2N1至M1D2NN的数量,则可以应用“填充”值作为到超过令牌的数量的那些第二方向存储器单元M1D2N1至M1D2NN的输入。
[0096] 第一双向输出164A在图3中被图示并且表示在处理话语的令牌之后由第一双向GRU层162A生成的输出。第一双向输出164A包括输出M11-N。输出M11-N中的每一个是基于对应令牌生成的输出,并且是基于通过第一方向存储器单元M1D1N1至M1D1NN中的一个对应存储器单元生成的输出以及通过第二方向存储器单元M1D1N1至M1D2NN中的一个对应存储器单元生成的输出。例如,输出M12可以包括来自第一方向存储器单元M1D1N2(即,的隐藏状态)的输出以及来自第二方向存储器单元M1D2N2(即,的隐藏状态)的输出。通过这种方式,输出M12在由所有令牌T1至TN表示的话语的上下文中对令牌T2的特征进行编码,从而捕获令牌T2的特征中的话语的单词之间的长期依赖性。
[0097] 第二双向GRU层166A包括第一方向存储器单元M2D1N1至M2D1NN和第二方向存储器单元M2D2N1至M2D2NN。在图3的示例中,每个存储器单元都是GRU存储器单元。在其他实施方式中可以使用LSTM存储器单元和/或其他存储器单元。第一方向存储器单元M2D1N1至M2D1NN对第一方向上的第一双向输出164A的第一部分进行操作,并且第二方向存储器单元M2D2N1至M2D2NN对相反的第二方向上的第一双向输出164A的第二部分进行操作。例如,可以将输出M11-N的来自第一方向存储器单元M1D1N1至M1D1NN的部分应用于第二双向GRU层166A的第一方向存储器单元M2D1N1至M2D1NN。进一步地,可以将输出M11-N的来自第二方向存储器单元M1D2N1至M1D2NN的部分应用于第二双向GRU层166A的第二方向存储器单元M2D2N1至M2D2NN。
[0098] 第二双向输出168A在图3中被图示并且表示在处理第一双向输出164A之后由第二双向GRU层166A生成的输出。第二双向输出168A包括输出M21-N。输出M21-N中的每一个是基于对应的第一双向输出164A生成的输出,并且基于通过第一方向存储器单元M2D1N1至M2D1NN中的一个对应存储器单元生成的输出以及通过第二方向存储器单元M2D1N1至M2D2NN中的一个对应存储器单元生成的输出。例如,输出M22可以包括来自第一方向存储器单元M2D1N2的输出和来自第二方向存储器单元M2D2N2的输出。通过这种方式,输出M22在所有第一双向输出164A的上下文中对令牌T2的进一步的特征进行编码,从而捕获令牌T2的特征中的长期依赖性。
[0099] 现在提供了使用图3的双向存储器网络152A来生成对话回合的话语表示的示例。为了生成话语表示,可以通过双向存储器网络152A处理回合的用户话语,以在处理用户话语之后生成用户话语表示,其是双向存储器网络152A的最终前向状态和最终后向状态的级联。最终前向状态可以是第二双向输出M26的由第二双向GRU层166A的第一方向节点M2D1NN生成的部分。基于由第一方向节点M2D1NN处理通过第一双向GRU层162A的第一方向节点M1D1NN生成的输出并且处理通过第二双向GRU层166A的第一方向节点M2D2NN-1(未图示)生成的输出,通过第一方向节点M2D1NN生成第二双向输出M26的该部分。最终后向状态可以是第二双向输出M21的由第二双向GRU层166A的第二方向节点M2D2NN生成的部分。基于由第二方向节点M2D2NN处理通过第一双向GRU层162A的第二方向节点M1D2NN生成的输出并且处理通过第二双向GRU层166A的第二方向节点M2D2N2生成的输出,通过第二方向节点M2D2N1生成第二双向输出M21的该部分。
[0100] 为了生成话语表示,也可以通过双向存储器网络152A来处理回合的系统话语以在处理系统话语之后生成系统话语表示,其是双向存储器网络152A的最终前向状态和最终后向状态的级联。最终前向状态可以是第二双向输出M26的由第二双向GRU层166A的第一方向节点M2D1NN生成的部分。最终后向状态可以是第二双向输出M21的由第二双向GRU层166A的第二方向节点M2D2N1生成的部分。
[0101] 话语表示可以是基于用户话语表示和系统话语表示的直接总和。在一些实施方式中,如果对应话语缺少任何插槽或值自变量(例如,插槽值引擎124基于对应话语未确定任何候选值),则在确定话语表示时可以忽略系统话语和/或用户话语。更正式地,话语表示可以被定义为 其中,ct是通过在处理系统话语之后级联双向存储器网络152A的最终前向和后向状态来获得的系统话语表示, 是表示存在不具有任何插槽或值自变量的系统对话行为的二进制向量,并且c′t和 表示用户话语的对应特征。
[0102] 现在提供了生成插槽“time”的候选值“6pm”的候选值特征的示例。在图3中图示了示例用户话语,其中,示例用户话语是“6pm doesn't work for me.How about 7pm(下午6点对我不来说不行。下午7点如何呢)?”的工作示例。用户话语的去词化版本在逐个令牌的基础上被应用于双向存储器网络152A并且包括特殊的句子开头(SOS)令牌作为令牌T1以及包括特殊的句子结尾(EOS)令牌作为令牌TN。在图3中通过用插槽描述符“
[0103] 在处理对话回合的包括候选值的话语之后,候选值“6pm”的候选值特征可以基于与候选值“6pm”相对应的节点的隐藏状态。例如,在处理图3所图示的示例用户话语之后,候选值“6pm”的候选值特征可以基于节点M1D1N2、M1D2N2、M2D1N2和M2D2N2的隐藏状态。在图3中,这些隐藏状态被表示为第一双向输出M12(节点M1D1N2和M1D2N2的隐藏状态)和第二双向输出M22(节点M2D1N2和M2D2N2的隐藏状态)。在候选值也被包括在系统话语中的情况下,在处理系统话语之后,候选值特征可以进一步基于与候选值“6pm”相对应的节点的隐藏状态。例如,基于该工作示例,如果会话的系统话语是“There are tables available at 6pm at Cascal.Does that work(Cascal下午6点有可用的餐桌。行吗)?”,则在处理系统话语的去词化版本之后,可以进一步使用与系统话语中的“6pm”相对应的节点的隐藏状态。更正式地,针对插槽s的候选 候选值特征可以被定义为其中: 是表示存在与候选值
相关联的所有系统对话动作的二进制向量(例如,动作通知对应于系统意图中的插槽价格的值为“便宜”的候选通知(价格=“便宜”));如果 不存在于 中,则 是前一回合中的候选的预测分值或0;T是在去词化之前存在候选值的去词化的系统话语中的索引集合;以及 是从双向存储器网络获得的隐藏状态向量并且在候选值 的话语中对
上下文进行编码。如果 不存在于系统话语中,则T是空的,并且总和结果被视为适当大小的零向量。 和 是用户话语的对应候选值。
[0104] 如本文描述的,也可以在对话的每个回合为正在考虑的每个插槽生成插槽特征。插槽s的插槽特征可以被定义为 其中, 和 是
分别在前一回合的输出中的特殊值“无差异”和“空”的分值,并且 是表示存在具有插槽s作为自变量(例如,请求、否定)的系统对话动作的二进制向量。 是用户对话动作的对应的二进制向量。
[0105] 尽管在图3中图示了特征模型的特定示例,但是要理解的是,可以使用不同的特征模型,诸如,不同的双向存储器网络。例如,可以使用包括LSTM单元的双向存储器网络。而且,例如,可以使用仅包括单个双向存储器层的双向存储器网络(例如,省略第二双向GRU层166A,并且基于第一双向输出164A而不是也基于第二双向输出168A导出的特征)。作为再一示例,可以使用包括多于两个双向存储器层的双向存储器网络。
[0106] 现在转到图4,提供了评分模型154A的示例。评分模型154A是评分模型154(图1和图2A)的一个示例并且在生成候选值的分值时可以由评分模块136使用。在图4中,评分模型154A包括训练后的候选值评分模型154A1的多个复制品,包括训练后的无差异评分模型
154A2并且包括一个或多个softmax层154A3。在一些实施方式中,候选值评分模型154A1可以是训练后的神经网络模型(例如,前馈模型),其中,模型154A1的训练权重(W1和W2)表示训练后的神经网络模型的各种节点的训练权重。而且,在一些实施方式中,训练后的无差异评分模型154A2可以是训练后的神经网络模型(例如,前馈模型),其中,模型154A2的训练权重(W3和W4)表示训练后的神经网络模型的各种节点的训练权重。下面参照图6更详细地描述训练这种模型的示例。
[0107] 图4图示了评分模型154A将用于针对插槽对多个候选值以及无差异值和空值进行评分的示例。在图4中,提供了话语表示401,该话语表示401是对话的当前对话回合的用户和系统话语的话语表示。插槽特征402也被图示并且是当前对话回合的插槽特征。进一步图示了候选值特征4031-N,其是当前对话回合的候选值特征。如本文描述的,候选值特征4031-N中的每一个特定于所评分的对应候选值。例如,候选值特征4031可以特定于候选值“6pm”,候选值特征4032可以特定于候选值“7pm”等。
[0108] 在图4中,话语表示401、插槽特征402和第一候选值的候选值特征4031被应用作为到候选值评分模型154A1的输入。使用候选值评分模型154A1的学习权重W1和W2处理所应用的输入以生成输出O1。进一步地,话语表示401、插槽特征402和第二候选值的候选值特征4032被应用作为到候选值评分模型154A1的输入。它们可以应用于相同的候选值评分模型(即,在生成输出O1之后)或其复制品。所应用的输入使用候选值评分模型154A1的学习权重W1和W2处理以生成输出O2。如通过省略号指示的,可以通过将话语表示401、插槽特征402和候选值特征4033-N的一个对应的候选值特征应用于候选值评分模型154A1来为附加候选值生成附加输出。
[0109] 在图4中,应用话语表示401和插槽特征402作为无差异评分模型154A2的输入(没有应用任何候选值特征)。使用无差异评分模型154A2的学习权重W3和W4处理所应用的输入以生成输出O3。
[0110] 输出O1、O2、O3(和通过候选值评分模型154A1生成的任何其他输出)以及空值404被应用作为到softmax层154A3的输入。在一些实施方式中,如果基于对话针对插槽尚未识别出候选值,则空值404可以是第一值(例如,“1”),否则为第二值(例如,“0”)。作为到softmax层154A3的输入而应用的每个输入(例如,输出O1、O2、O3和空值404)可以是分对数。这些输入通过softmax层154A3处理以生成概率375。例如,概率375可以是应用于softmax层的每个输入的归一化概率,从而为每个候选值以及无差异值和空值提供对应概率。例如,第一概率可以对应于输出O1,因此,可以是与候选值特征4031相关联的候选值的概率。而且,例如,第二概率可以对应于输出O2,因此,可以是与候选值特征4032相关联的候选值的概率。而且,例如,第三概率可以对应于输出O3,因此,可以是无差异值的概率。而且,例如,第四概率可以对应于空值404,因此,可以是空值的概率。尽管图示了经由softmax层154A3的softmax归一化,但是可以在其他实施方式中使用其他归一化。例如,可以针对每个候选值以及可选地针对无差异值和/或空值对每个分对数进行单独归一化。例如,这可以实现插槽的多个候选的规范(例如,通过用户)。
[0111] 要注意的是,在通过候选值评分模型154A1生成输出O1、O2以及可选地生成附加输出时,应用相同的话语表示401和插槽特征402,而仅所应用的候选值特征4031-N不同。而且,在通过候选值评分模型154A1生成输出O1、O2以及可选地生成附加输出时,可以使用相同的候选值评分模型154A1(或其复制品)。在生成多个候选值的分值时使用相同的候选值评分模型154A1(或其复制品)和/或使用相同的话语表示和插槽特征可以产生计算效率。而且,在许多实施方式中,在生成附加插槽的候选值的分值时,相同的候选值评分模型154A1可以用于那些附加插槽,并且相同的话语表示401可以被应用作为输入。这也可以产生计算效率。
[0112] 图5是图示了根据本文公开的实施方式的在对话期间确定对话状态并且基于对话状态执行进一步的动作的示例方法500的流程图。为了方便起见,参照执行操作的系统对图5的流程图的操作进行描述。该系统可以包括各种计算机系统的各种组件,诸如,自动化助理110的一个或多个组件。而且,尽管以特定顺序示出了方法500的操作,但是这不旨在作为限制。可以重新排序、省略或者添加一个或多个操作。
[0113] 在框550中,该系统接收用户话语和系统话语。用户话语和系统话语是包括该系统和用户的电子对话的对话回合的话语。
[0114] 在框552中,该系统从用户话语和系统话语中识别插槽和候选值。例如,该系统可以通过插槽值引擎识别插槽和候选值,该插槽值引擎使用LU模型来识别插槽和候选值。在一些实施方式中,该系统还识别插槽的插槽描述符。
[0115] 在框554中,该系统选择插槽。
[0116] 在框556中,该系统将从用户话语和系统话语中识别出的候选值中的一个或多个添加到插槽的候选集合。例如,如果候选值是针对插槽的并且如果候选值尚未包括在集合中,则该系统可以将识别出的候选值之一添加到该插槽的集合。
[0117] 在操作框557中,该系统可以填充集合或者从集合中去除现有的候选值。例如,如果在将识别出的任何候选值添加到集合之后集合中包括少于K个候选值,则该系统可以利用“填充”值来填充该集合。而且,例如,在添加识别出的候选值之前,如果添加候选值会导致集合中包括多于K个候选值,则该系统可以从集合中去除一个或多个现有的候选值。该系统可以基于来自前一对话回合中的针对现有的候选值的分值来去除那些候选值。
[0118] 在框558中,该系统基于接收到的用户话语和系统话语来生成话语表示。在框558中,该系统还生成所选的插槽的插槽特征。
[0119] 在框560中,该系统生成候选集合中的每个候选值的候选值特征。如本文描述的,在生成话语表示和候选值特征时,该系统可以基于使用双向存储器网络处理系统话语和用户话语的去词化版本来生成话语表示和候选值特征。
[0120] 在框562中,该系统生成候选集合的每个候选值的分值。该系统可以使用话语表示、插槽的插槽特征和候选值的候选值特征来生成每个候选值的分值。在一些实施方式中,该系统还生成插槽的无差异值的分值并且生成插槽的空值的分值。所生成的分值可以是归一化概率。
[0121] 在框564中,该系统确定是否存在另一插槽要处理。如果是,则该系统转回到框554并且选择另一插槽。该系统然后针对所选插槽转到框556、557、558、560和562。要注意的是,在许多实施方式中,由于在生成所有插槽和所有候选值的分值时可以使用话语表示,因此将不会在框558的后续迭代中再次生成话语表示。还有注意的是,尽管未在图5中连续示出,但是在许多实施方式中,框556、557、558、560和562的多次迭代可以并行发生,每次迭代针对不同的插槽。
[0122] 如果该系统在框564的迭代中确定已经处理了所有插槽,则该系统转到框566。
[0123] 在框566中,该系统基于针对一个或多个插槽的候选值所生成的分值来确定对话状态。
[0124] 在框568中,该系统基于所确定的对话状态来执行一个或多个进一步的动作。
[0125] 如果对话继续(例如,一个或多个进一步的动作包括基于对话状态生成下一系统话语以及在对话的下一回合中提供系统话语),该系统可以转回到框550,并且接收对话的下一回合的附加用户话语和附加系统话语。然后可以基于附加用户和系统话语执行图5的附加框,并且基于以附加用户和系统话语为基础生成的更新的分值在框566中确定更新的对话状态。这可以通过对话的多个回合来继续。
[0126] 图6是图示了根据本文公开的实施方式的训练评分模型的示例方法600的流程图。为了方便起见,参照执行操作的系统对图6的流程图的操作进行描述。该系统可以包括各种计算机系统的各种组件,诸如,一个或多个GPU、CPU和/或TPU。而且,虽然按照特定顺序示出了方法600的操作,但是这不旨在作为限制。可以重新排序、省略或者添加一个或多个操作。
[0127] 在框652中,该系统基于一个或多个域的多个插槽来生成训练实例。框652可以包括框6521和6522的多次迭代,其中,执行每次迭代以生成对应的训练实例。
[0128] 在框6521中,该系统生成训练实例的训练实例输入。训练实例输入包括:分别包括用户话语和系统话语的一个或多个对话回合;以及每个对话回合的插槽的一个或多个候选值。
[0129] 在框6522中,该系统生成训练实例的训练实例输出。训练实例输出针对每个对话回合和每个插槽指示:训练实例输入的每个候选值的标记分值。
[0130] 作为特定训练实例的一个示例,训练实例输入可以包括对话回合,该对话回合包括系统话语“There are tables available at 6pm at Cascal.Does that work(Cascal下午6点有可用的餐桌。行吗)?”以及用户话语“6pm doesn't work for me.How about 7pm(下午6点对我来说不行。晚上7点如何呢)?”。针对该对话回合,训练实例输入可以进一步包括“time”插槽的候选值“6pm”和“7pm”以及“restaurant name”插槽的候选值“Cascal”。在其他实施方式中,可以从训练实例输入中省略候选值,而是在训练期间由插槽值引擎确定候选值。训练实例输入可以进一步包括“time”和“restaurant name”插槽的描述符。针对对话回合的“time”插槽,训练实例输出可以包括概率为“1.0”的候选值“6pm”、概率为“0.0”的候选值“7pm”以及概率为“0.0”的“time”插槽的空值和无差异值。针对对话回合的“restaurant name”插槽,训练实例输出可以进一步包括概率为“1.0”的候选值“Cascal”以及概率为“0.0”的“restaurant name”插槽的空值和无差异值。针对对话回合的其他插槽,训练实例输出可以进一步包括空值的“1.0”值以及无差异值的“0.0”值。
[0131] 在框654中,该系统选择训练实例。
[0132] 在框656中,针对训练实例的每个对话回合,该系统执行图5的框554、556、557、558、560、562和564的一次或多次迭代。具体地,该系统利用对话回合的系统话语和用户话语以及评分模型的当前版本来执行那些框以在每个对话回合生成“预测的”分值。
[0133] 在框658中,针对每个对话回合和训练实例的每个插槽,该系统基于以下的比较来生成误差:(在图5的框556的迭代中生成的)针对候选值所生成的分值;以及(来自训练实例输出的)候选值的标记分值。例如,继续上述示例,假设为以下“time”插槽生成预测分值:候选值“6pm”的“0.7”、候选值“7pm”的“0.3”以及“time”插槽的空值和无差异值的“0.0”。可以基于这些预测与“6pm”的“1.0”、“7pm”的“0.0”以及“time”插槽的空值和无差异值的“0.0”的标记分值之间的差异来确定误差。
[0134] 在框660中,该系统基于所生成的误差来更新评分模型。例如,该系统可以通过评分模型向后传播误差以更新评分模型的权重。可以使用各种误差和向后传播技术。例如,可以使用相同的候选值评分模型和无差异评分模型来针对对话回合的每个插槽、针对每个插槽确定的误差以及在每个对话回合之后通过候选值评分模型和无差异评分模型向后传播的对话回合的每个插槽的累积误差生成分值。要注意的是,在许多实施方式中,将不会基于误差来更新特征模型。例如,可以在训练评分模型之前单独训练特征模型。在训练评分模型期间生成预测值时可以使用特征模型,但是特征模型可以在评分模型的训练期间保持固定-同时更新评分模型的参数。
[0135] 在框662中,该系统确定是否处理附加训练实例。如果是,则该系统转到框654,选择附加训练实例,然后基于附加的未处理的训练实例来执行框656、658和660。在一些实施方式中,在框662中,如果已经满足一个或多个训练标准(例如,阈值数量的时期已经发生和/或训练的阈值持续时间已经发生),该系统可以确定不处理任何附加的未处理的训练实例。
[0136] 在框662中,如果该系统确定不处理附加训练实例,则该系统转到框664并且训练结束。
[0137] 在一些实施方式中,框652的训练实例包括来自多个插槽和/或来自多个域的训练实例。在那些实施方式中的一些中,这种多域和/或多插槽训练使得评分模型可以用于那些插槽和/或域中的任何一个-和/或用于未看到的插槽和/或域(即,不包括在训练实例中的那些)。在一些实施方式中,该系统可以转到框666以针对新的插槽和/或域进一步训练评分模型。例如,可以生成特定于新插槽和/或新域的附加训练实例-并且可以执行模型的进一步训练以使模型适应新插槽和/或域。在许多实施方式中,其中,框652的训练实例包括来自多个插槽和/或来自多个域的训练实例,与未使用多域和/或多插槽训练相比,使评分模型适应新插槽和/或域可以经由更少的训练发生。
[0138] 图7是可以可选地使用以执行本文描述的技术的一个或多个方面的示例计算设备710的框图。在一些实施方式中,客户端设备106、自动化助理110、代理和/或其他组件中的一个或多个可以包括示例计算设备710的一个或多个组件。
[0139] 计算设备710通常包括经由总线子系统712与若干外围设备通信的至少一个处理器714。这些外围设备可以包括存储子系统724,包括例如存储器子系统725和文件存储子系统726、用户接口输出设备720、用户接口输入设备722和网络接口子系统716。输入和输出设备允许用户与计算设备710交互。网络接口子系统716将接口提供给外部网络,并且耦合至其他计算设备中的对应接口设备。
[0140] 用户接口输入设备722可以包括键盘、指向设备(诸如,鼠标轨迹球触摸板或者绘图板)、扫描仪、合并到显示器中的触摸屏、音频输入设备(诸如,语音识别系统、麦克风)和/或其他类型的输入设备。通常,术语“输入设备”的使用旨在包括将信息输入到计算设备710中或者输入到通信网络上的所有可能类型的设备和方式。
[0141] 用户接口输出设备720可以包括显示子系统、打印机、传真机或者非视觉显示器(诸如,音频输出设备)。显示子系统可以包括阴极管(CRT)、平板设备(诸如,液晶显示器(LCD))、投影设备或者用于创建可见图像的一些其他机构。显示子系统还可以提供非视觉显示器,诸如,经由音频输出设备。通常,术语“输出设备”的使用旨在包括将来自计算设备710的信息输出到用户或者输出到另一机器或计算设备的所有可能类型的设备和方式。
[0142] 存储子系统724存储提供本文描述的模块中的一些或所有的功能性的编程和数据构造。例如,存储子系统724可以包括执行图5和/或图6的(多种)方法的所选方面的逻辑。
[0143] 这些软件模块通常由处理器714单独执行或者由处理器714结合其他处理器来执行。在存储子系统中724中使用的存储器725可以包括若干存储器,该若干存储器包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)730和存储固定指令的只读存储器(ROM)732。文件存储子系统726可以向程序和数据文件提供持久存储,并且可以包括硬盘驱动器、连同关联的可移动介质的软盘驱动器、CD-ROM驱动器、光学驱动器或者可移动介质盒。可以由文件存储子系统726将实施特定实施方式的功能性的模块存储在存储子系统724中,或者存储在可由处理器714访问的其他机器中。
[0144] 总线子系统712提供用于允许计算设备710的各种组件和子系统按照预期来与彼此通信的机构。虽然将总线子系统712示意性地示出为单条总线,但是总线子系统的替代实施方式可以使用多条总线。
[0145] 计算设备710可以具有不同的类型,包括工作站、服务器、计算集群、刀片式服务器、服务器场或者任何其他数据处理系统或者输出设备。由于计算机和网络的不断变化的性质,出于图示一些实施方式的目的,图7中描绘的计算设备710的描述仅仅旨在作为特定示例。与图7中描绘的计算设备相比,计算设备710的具有更多或者更少组件的许多其他配置是可能的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈