掌桥专利:专业的专利平台
掌桥专利
首页

相关申请的交叉引用

本申请根据35U.S.C.119(E)要求于2020年8月21日提交的美国临时申请号63/068,608和2021年4月13日提交的美国临时申请号63/174,336的权益和优先权。出于所有目的,前述申请的全部内容通过援引以其全文并入本文。

技术领域

本公开总体上涉及聊天机器人系统,并且更具体地涉及用于为文本分类提供解释的技术。

背景技术

为了获得即时反应,世界各地的许多用户使用即时消息传递或聊天平台。组织经常使用这些即时消息传递或聊天平台与客户(或最终用户)进行实时会话。然而,雇用服务人员与客户或最终用户进行实时交流对于组织来说会是非常昂贵的。因此,已经开始开发聊天机器人(后文也称为“机器人”或“技能”),以与最终用户进行会话,尤其是通过因特网。最终用户或客户可以通过最终用户已经安装并使用的消息传递应用程序与机器人交流。智能机器人(通常通过人工智能(AI)提供动力)可以在实时会话中更智能地且根据上下文进行交流并且因此可以允许机器人与最终用户之间进行更加自然的会话以改善会话体验。不是最终用户去学习机器人知道如何作出回应的固定的一组关键词或命令,而是智能机器人可以能够基于自然语言的用户话语理解最终用户的意图并且相应地作出回应。

然而,聊天机器人很难构建,因为这些自动化解决方案需要某些领域中的特定知识和可能只在专业开发人员的能力范围内的某些技术的应用。作为构建这种聊天机器人的一部分,开发人员可以首先了解企业和最终用户的需求。开发人员然后可以分析并作出与例如以下各项有关的决策:选择要用于分析的数据集;准备用于分析的输入数据集(例如,在分析之前清理数据、提取、格式化和/或变换数据、执行数据特征工程等);识别用于执行分析的适当的(多种)机器学习(ML)技术或(多个)ML模型;以及改善技术或模型以基于反馈改善结果/效果。识别适当的模型的任务可以包括开发多个模型(可能并行地)、迭代地对这些模型进行测试和实验、之后识别特定的模型(或多个模型)以供使用。进一步地,基于监督式学习的解决方案通常涉及训练阶段、随后是应用(即,推理)阶段和介于训练阶段与应用阶段之间的迭代循环。开发人员可以负责仔细地实施并监测这些阶段,以实现最佳解决方案。

尽管被广泛采用,但包括神经网络模型在内的机器学习模型通常作为黑盒进行操作,通过对输入数据执行某些数学或逻辑运算来进行推理(输出)。机器学习模型的输出可以包括例如预测或分类、和/或对应的置信水平。然而,机器学习模型的输出或特定推理的输出可能不提供对机器学习模型的见解,使得用户可以理解机器学习模型的行为(诸如特定输入为何会生成特定输出),以确定模型和/或特定预测是否值得信赖以及如何改进训练数据和模型。另外,为机器学习模型开发的训练集通常是手动生成的,然后输入到机器学习模型中。训练或再训练机器学习模型的时间可能受制于生成这些训练集的能力。没有全面的方法将推理解释系统整合到再训练系统中以改进机器学习模型。

发明内容

本文所公开的技术总体上涉及聊天机器人。更具体且非限制性地,本文所公开的技术涉及用于在例如聊天机器人中为文本分类提供解释的技术。聊天机器人可以将用户话语分类为不同的类别,如用户的预定义意图。聊天机器人的分类器可以包括经训练的ML模型,该模型基于输入(例如,用户话语)生成输出(例如,意图)。分类通常是黑盒,缺乏可解释性和可说明性。

本文所公开的技术为分类提供了解释,使得聊天机器人拥有者可以确定分类器和/或特定分类是否值得信赖以及如何基于解释来改进训练话语和分类器。本文描述了各个实施例,包括方法、系统、存储有可由一个或多个处理器执行的程序、代码或指令的非暂态计算机可读存储介质等。

根据各种实施例,提供了一种计算机实施的方法,所述方法包括:由聊天机器人系统接收解释所述聊天机器人系统的意图分类器对话语的推理结果的请求;从所述意图分类器获得对所述话语的所述推理结果;基于所述话语选择一个或多个锚点,所述一个或多个锚点中的每个锚点包括所述话语中的一个或多个锚点词;对于所述一个或多个锚点中的每个锚点,改变所述话语中不属于所述锚点的锚点词的一个或多个词,以生成所述话语的变体;从所述意图分类器获得对所述话语的所述变体的推理结果;基于对所述话语的所述推理结果和对所述话语的所述变体的所述推理结果,确定与所述一个或多个锚点中的每个锚点相关联的相应置信水平;以及生成报告,所述报告包括所述一个或多个锚点中具有最高置信水平的锚点。

在一些实施例中,确定所述置信水平包括确定对所述话语的所述推理结果与对所述话语的所述变体的所述推理结果中的每个推理结果之间的匹配或不匹配。

在一些实施例中,选择所述一个或多个锚点包括使用集束搜索技术对所述一个或多个锚点进行一轮或多轮选择。

在一些实施例中,所述报告包括JavaScript对象表示法(JSON)文件。

在一些实施例中,所述报告包括置信水平大于阈值的锚点。

在一些实施例中,所述计算机实施的方法进一步包括将所述话语的所述变体和对所述话语的所述变体的所述推理结果存储在数据库或基于云的存储结构中。

根据各种实施例,提供了一种计算机实施的方法,所述方法包括:由聊天机器人系统接收多个训练结果,所述多个训练结果包括多个话语和多个对应的置信度值;将所述多个训练结果与阈值进行比较;基于所述比较,获得置信度值小于或等于所述阈值的一个或多个话语;确定与所获得的一个或多个话语相对应的一个或多个训练类别;以及基于所述一个或多个训练类别,使用所述一个或多个话语来训练机器学习模型。

在一些实施例中,所述计算机实施的方法进一步包括基于所述多个话语中的话语与所述话语的对应预测训练类别之间的匹配或不匹配来确定所述多个对应置信度值中的每个对应置信度值。

在一些实施例中,所述计算机实施的方法进一步包括基于所述多个训练结果的所述多个话语来生成一个或多个合成话语。

在一些实施例中,所述计算机实施的方法进一步包括基于所获得的一个或多个话语来生成一个或多个合成话语。

在一些实施例中,确定所述一个或多个训练类别包括接收指示所述一个或多个话语中的特定话语和所述一个或多个训练类别中的特定对应训练类别的输入。

在一些实施例中,所述计算机实施的方法进一步包括接收指示所述阈值的输入。所述输入可以通过将所述阈值输入到交互式界面元素中而从交互式界面的用户接收。

在一些实施例中,所述一个或多个训练类别是一个或多个正确意图,所述一个或多个正确意图中的每个正确意图与用于再训练所述机器学习模型的所述一个或多个话语中的话语相对应。

在一些实施例中,将所述多个训练结果与阈值进行比较包括计算表示至少所述一个或多个置信度值与所述阈值之间的数值差异的至少一个或多个差值,并且获得所述一个或多个话语包括选择差值指示所述置信度值小于或等于所述阈值的话语。

在一些实施例中,所述计算机实施的方法进一步包括将所述一个或多个话语分组为训练批次并将所述训练批次输入到所述机器学习模型中。

在一些实施例中,所述机器学习模型被构造为意图分类器,所述意图分类器包括通过使用目标函数进行学习的多个模型参数,并且训练所述机器学习模型包括使所述目标函数最小化或最大化,所述目标函数衡量预测意图与正确意图之间的差异。

根据各种实施例,提供了一种系统,所述系统包括一个或多个数据处理器以及包含指令的非暂态计算机可读存储介质,所述指令当在所述一个或多个数据处理器上执行时使所述一个或多个数据处理器执行本文所公开的一种或多种方法的部分或全部。

根据各种实施例,提供了一种计算机程序产品,所述计算机程序产品有形地体现在非暂态机器可读存储介质中并且包括被配置成使一个或多个数据处理器执行本文所公开的一种或多种方法的部分或全部的指令。

在一些实施例中,将用于训练机器学习模型的多个话语与置信度阈值进行比较。确定置信度值等于或低于所述置信度阈值的多个话语。将所述多个话语呈现在综合用户界面中,用于选择特定话语的预期意图之间的对应关系,以用于再训练机器学习模型。所述多个话语由话语生成引擎改变以形成用于再训练机器学习模型的一个或多个改变的话语。所述一个或多个改变的话语也可以呈现在综合用户界面上,以选择相同或不同的预期意图进行再训练。这些话语可以作为综合再训练界面的一部分进行显示,以用于解释意图分类解释并生成再训练数据集以改进机器学习模型。

本文所公开的技术和基础设施可以允许机器人设计者通过显示话语中词的相对重要性来理解为什么将话语分类到特定类中,这可以允许机器人设计者改进机器人的分类器以用于未来的话语分类。

可以用多种方式并且在多种上下文中实施上文和下文所描述的技术。如下文更详细地描述的,参考以下附图提供了几种示例实施方式和上下文。然而,以下实施方式和上下文仅是许多实施方式和上下文中的一些。

附图说明

图1是并入了示例性实施例的分布式环境的简化框图。

图2描绘了根据各种实施例的分布式系统,所述分布式系统实施了用于使用一个或多个消息传递应用程序与最终用户通信的机器人系统。

图3描绘了根据各种实施例的集成系统,所述集成系统包括机器人系统和用于监测、分析、可视化并改善机器人系统的性能的机器人分析系统。

图4是简化流程图,图示了根据各种实施例的用于开发机器人的过程的示例。

图5是简化流程图,图示了根据各种实施例的用于解释推理结果的过程的示例。

图6图示了根据各种实施例的用于为文本分类提供解释的系统的示例。

图7图示了根据各种实施例的用于为文本分类提供解释的系统的示例。

图8A图示了根据各种实施例的在解释计算期间的模拟CPU使用的示例。图8B图示了根据各种实施例的在解释计算期间的模拟存储器使用的示例。

图9A图示了根据各种实施例的在解释计算期间的模拟CPU使用的示例。图9B图示了根据各种实施例的在解释计算期间的模拟存储器使用的示例。

图10A图示了根据某些实施例的在解释计算期间的模拟CPU使用的示例。图10B图示了根据各种实施例的在解释计算期间的模拟存储器使用的示例。

图11是简化流程图,图示了根据各种实施例的用于使用人工话语来再训练模型的过程的示例。

图12图示了根据各种实施例的用于使用人工话语来再训练模型的示例界面。

图13图示了根据各种实施例的用于使用人工话语来再训练模型的示例界面。

图14图示了根据各种实施例的用于解释推理结果的示例界面。

图15图示了根据各种实施例的用于解释推理结果的示例界面。

图16图示了根据各种实施例的用于解释推理结果的示例界面。

图17图示了根据各种实施例的用于解释推理结果的示例界面。

图18图示了根据各种实施例的对话语的分类的解释的输出的示例。

图19描绘了用于实施各种实施例的分布式系统的示例的简化框图。

图20是用于实施各种实施例的基于云的系统环境的示例的简化框图。

图21图示了用于实施各种实施例的计算机系统的示例。

具体实施方式

引言

本公开总体上涉及聊天机器人。更具体且非限制性地,本文所公开的技术涉及在聊天机器人中为文本分类提供解释。聊天机器人可以将用户话语分类为不同的类别,如用户的某些预定义意图。分类器通常是黑盒,缺乏可解释性和可说明性。用户可以知道分类结果,但可能不理解为何特定输入被分类到对应的类中。本文所公开的技术可以提供对分类的解释,使得可以基于解释来改进训练话语和分类器并且用户可以获得对分类结果的置信度。本文描述了各个实施例,包括方法、系统、存储有可由一个或多个处理器执行的程序、代码或指令的非暂态计算机可读存储介质等。

企业可能希望创建用于各种目的的聊天机器人系统。聊天机器人系统可以包括用于基于用户话语识别最终用户意图的一个或多个用户意图分类引擎和用于根据确定的最终用户意图来智能地且根据上下文编写消息以回应用户话语的一个或多个对话引擎。然而,构建聊天机器人系统(包括可以基于用户话语确定最终用户的意图的用户意图分类引擎和用于智能地且根据上下文生成回应的对话引擎两者)是具有挑战性的任务,这部分地是由于自然语言的微妙性和不确定性以及输入空间的维度(例如,可能的用户话语)和输出空间的大小(意图数)。

聊天机器人的分类器可以包括经训练的机器学习(ML)模型,所述模型通过最终用户话语来推断最终用户意图。ML模型通常作为黑盒进行操作,通过对输入(例如,用户话语)执行某些数学或逻辑运算以基于所述输入来生成输出(例如,意图)。ML模型通常缺乏可解释性和可说明性,这意味着聊天机器人拥有者对聊天机器人的构建方式缺乏具体的了解,可能无法理解聊天机器人为何在给定某些输入的情况下生成某些输出。更具体地,ML模型的输出可以包括例如,分类(或另一种预测)和/或该预测的对应置信水平(即,聊天机器人确定预测的输出意图与话语输入相匹配的紧密程度),但可能不提供对ML模型的见解,使得用户可以理解模型的行为(诸如特定输入为何会生成特定输出),以确定ML模型和/或特定预测是否值得信赖以及如何改进训练数据和ML模型。

此外,没有办法自动且全面地生成和使用训练数据来纠正ML模型所存在的已确定的行为问题。例如,给出一份报告,客户端可能理解ML模型如何做出某些错误的预测,但仍然会留下错误的模型。客户端可能会尝试通过寻求新的训练数据集或尝试创建它们自己的训练数据集来再训练ML模型从而纠正这些问题。客户端无法知道它们找到或创建的任何训练数据集将纠正报告中出现的特定问题。

因此,需要不同的方法来解决这些问题。在各种实施例中,提供了一种计算机实施的方法,所述方法包括:接收解释聊天机器人系统的意图分类器对话语的推理结果的请求;从所述意图分类器获得对所述话语的所述推理结果;选择一个或多个锚点,其中,所述一个或多个锚点中的每个锚点可以包括所述话语中的一个或多个锚点词;对于所述一个或多个锚点中的每个锚点,改变所述话语中不属于所述锚点的锚点词的一个或多个词,以生成所述话语的变体;从所述意图分类器获得对所述话语的所述变体的推理结果;基于对所述话语的所述推理结果和对所述话语的所述变体的所述推理结果,确定与所述一个或多个锚点中的每个锚点相关联的置信水平;以及生成报告,所述报告包括所述一个或多个锚点中具有最高置信水平的锚点。在一些实施例中,选择所述一个或多个锚点可以包括使用集束搜索技术对所述一个或多个锚点进行一轮或多轮选择。话语的变体、对话语的变体的推理结果、以及报告可以在数据库中。

本文所公开的技术为分类提供了解释,使得聊天机器人拥有者可以确定分类器和/或特定分类是否是值得信赖的(以便基于分类或预测来采取动作)以及如何基于解释来改进训练话语和分类器。例如,使用在生成报告时使用的新话语,可以再训练ML模型。新话语类似于寻求报告的原始话语。因此,如果已知意图应当在新话语作为输入的情况下进行预测,则可以使用新话语来再训练ML模型以改进未来的预测。因为新话语已经生成,并且因为它们类似于寻求报告的原始话语,所以可以使用新话语以更高效且实用的方式再训练ML模型。

如本文所使用的,“聊天机器人”、“机器人”、“技能”或“技能机器人”可以指被设计成模拟与人类最终用户的会话(尤其是通过因特网)的计算机程序。可以设计单独的技能来与最终用户交互并完成特定类型的任务,如订购食物、进行预订、更改联系信息、技术支持和客户服务。每个技能可以通过视觉、音频或文本消息与UI元素(如按钮、表格、列表等)的组合来帮助最终用户完成任务。

如本文所使用的,术语“意图”可以指最终用户期望技能为其执行的动作或任务的类别。术语“实体”可以指从用户输入中识别使技能能够完成任务的信息的变量。术语“部件”可以指技能可以用来回应最终用户的各种功能,如输出文本、从后端返回信息以及执行自定义逻辑。术语“对话流”可以指技能-用户交互的定义并且可以描述技能如何根据用户输入进行回应和表现。术语“通道”可以指用于允许技能访问消息传递平台或客户端消息传递应用程序的平台特定配置。单个技能可以为其配置有多个通道,使得所述技能可以在最终用户可能更喜欢使用的不同服务或平台上同时运行。

如本文所使用的,“话语”或“消息”可以指在会话期间交换的一个或多个句子,其中,会话可以指可以包括一个或多个话语或消息的通信会话。会话可以包括一个或多个阶段或状态。会话流可以是包括相同的阶段或状态以及从阶段(或状态)到阶段(或状态)的相同转换的多个会话的抽象化。每个会话可以是对应的会话流的特定实例。会话(或会话流)的状态(或阶段)可以与用于与其他机器人系统或人进行会话的机器人系统所维护的状态机的状态相关联。在一些情况下,状态可以对应于最终用户的意图或目标。如本文所使用的,最终用户可以指机器人系统的最终用户,如通过消息传递应用程序(application)或平台与机器人系统进行会话的人或另一种实体。例如,最终用户可以是拥有机器人系统的企业的客户或客户端。如本文所使用的,机器人系统的用户可以指机器人系统的拥有者、操作人员、管理员或开发人员。

在以下描述中,出于解释的目的,阐述了具体细节以便提供对本公开的示例的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践各种示例。随后的描述仅提供了示例并且不旨在限制本公开的范围、适用性或配置。而是,随后对示例的描述将为本领域技术人员提供用于实施示例的使能描述。应当理解,在不脱离所附权利要求中阐述的本公开的精神和范围的情况下,可以对元件的功能和布置进行各种改变。附图和描述不旨在是限制性的。电路、系统、网络、过程和其他部件可以以框图形式示出为部件,以免在不必要的细节上模糊示例。在其他实例中,可以示出公知的电路、过程、算法、结构和技术,而没有不必要的细节,以避免模糊示例。本文所公开的传授内容还可以应用于如移动应用程序、非移动应用程序、桌面应用程序、web应用程序、企业应用程序等各种类型的应用程序。进一步地,本公开的传授内容不限于特定的操作环境(例如,操作系统、设备、平台等),相反,可以应用于多个不同的操作环境。

此外,应注意,可以将单独的示例描述为被描绘成流程图、流图、数据流图、结构图或框图的过程。虽然流程图可以将操作描述为顺序过程,但是许多操作可以并行地或同时地执行。另外,可以重新布置操作的顺序。当过程的操作完成时,所述过程终止,但是可以具有图中没有包括的另外的步骤。过程可以对应于方法、函数、进程、子例程、子程序等。当过程对应于函数时,过程的终止可以对应于所述函数返回到调用函数或主函数。

词语“示例”或“示例性”在本文中用于意指“用作示例、实例或说明”。在本文中被描述为“示例性”或“示例”的任何实施例或设计不必被解释为比其他实施例或设计更优选或有利。

术语“机器可读存储介质”或“计算机可读存储介质”包括但不限于便携式或非便携式存储设备、光学存储设备和能够存储、包含或携带(多个)指令和/或数据的各种其他介质。机器可读存储介质或计算机可读存储介质可以包括非暂态介质,数据可以存储在所述非暂态介质中并且不包括无线地或通过有线连接传播的载波和/或暂态电子信号。非暂态介质的示例可以包括但不限于磁盘或磁带、如光盘(CD)或数字通用盘(DVD)等光学存储介质、闪速存储器、存储器或存储器设备。计算机程序产品可以包括代码和/或机器可执行指令,所述代码和/或机器可执行指令可以表示进程、函数、子程序、程序、例程、子例程、模块、软件包、类或者指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容来耦接到另一个代码段或硬件电路。信息、自变量、参数、数据等可以通过任何适合的手段(包括存储器共享、消息传递、令牌传递、网络传输等)传递、转发或传输。

此外,可以由硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实施示例。当在软件、固件、中间件或微代码中实施时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可以存储在机器可读介质中。(多个)处理器可以执行必要任务。可以以各种配置提供一些图中描绘的系统。在一些示例中,可以将系统配置成分布式系统,其中,系统的一个或多个部件跨一个或多个网络分布在云计算系统中。在将部件描述为“被配置成”执行某些操作的情况下,这种配置可以通过例如将电子电路或其他硬件设计成执行该操作、通过对电子电路(例如,微处理器或其他适合的电子电路)进行编程或控制以执行操作或其任何组合来完成。

机器人和分析系统

机器人(也称为技能、聊天机器人、交谈机器人或谈话机器人)是可以执行与最终用户的会话的计算机程序。机器人通常可以通过使用自然语言消息的消息传递应用程序对自然语言消息(例如,问题或评论)作出回应。企业可以使用一个或多个机器人系统通过消息传递应用程序与最终用户交流。消息传递应用程序(所述消息传递应用程序可以被称为通道)可以是最终用户已经安装并且熟悉的最终用户优选的消息传递应用程序。因此,为了与机器人系统聊天,最终用户不需要下载并安装新的应用程序。消息传递应用程序可以包括例如过顶(OTT)消息传递通道(如Facebook Messenger、Facebook WhatsApp、微信、Line、Kik、Telegram、Talk、Skype、Slack或SMS)、虚拟私人助理(如Amazon Dot、Echo或Show、Google Home、Apple HomePod等)、本地或混合扩展的移动和web应用程序扩展/具有聊天功能的响应式移动应用程序或web应用程序、或基于声音的输入(如具有使用Siri、微软小娜(Cortana)、谷歌之音(Google Voice)或用于交互的其他语音输入的设备或应用程序)。

在一些示例中,机器人系统可以与统一资源标识符(URI)相关联。URI可以使用一串字符标识机器人系统。URI可以用作一个或多个消息传递应用程序系统的webhook(网络挂接)。URI可以包括例如统一资源定位符(URL)或统一资源名称(URN)。机器人系统可以被设计成从消息传递应用程序系统接收消息(例如,超文本传送协议(HTTP)post调用消息)。HTTP post调用消息可以涉及来自消息传递应用程序系统的URI。在一些实施例中,消息可以不同于HTTP post调用消息。例如,机器人系统可以从短消息服务(SMS)接收消息。虽然本文的讨论可以将机器人系统接收到的通信称作消息,但是应理解,消息可以是HTTP post调用消息、SMS消息或两个系统之间的任何其他类型的通信。

最终用户可以通过会话式交互(有时称为会话式用户接口(UI))与机器人系统交互,正如人之间的交互那样。在一些情况下,交互可以包括最终用户对机器人说“Hello(你好)”以及机器人用“Hi(嗨)”回应并询问最终用户机器人可以如何提供帮助。在一些情况下,交互还可以是与例如银行业机器人的交易式交互,如将钱从一个账户转移到另一个账户;与例如HR机器人的信息式交互,如检查假期结余;或与例如零售机器人的交互,如讨论退回已购商品或寻求技术支持。

在一些实施例中,机器人系统可以在没有与机器人系统的管理员或开发人员交互的情况下智能地处置最终用户交互。例如,最终用户可以向机器人系统发送一个或多个消息以便实现期望的目标。消息可以包括某种内容,如文本、表情符号、音频、图像、视频或传达消息的其他方法。在一些实施例中,机器人系统可以将内容转换成标准化形式(例如,利用适当的参数针对企业服务的表述性状态转移(REST)调用)并且生成自然语言回应。机器人系统还可以提示最终用户输入另外的输入参数或请求其他另外的信息。在一些实施例中,机器人系统还可以发起与最终用户的交流,而不是被动地回应最终用户话语。本文所描述的是用于识别机器人系统的显式调用并确定被调用的机器人系统的输入的各种技术。在某些实施例中,显式调用分析是由主机器人基于检测到话语中的调用名称而执行的。响应于检测到调用名称,话语可以细化以供输入到与调用名称相关联的技能机器人。

与机器人的会话可以遵循包括多个状态的特定会话流。所述流可以基于输入来定义接下来会发生什么。在一些实施例中,可以使用包括用户定义的状态(例如,最终用户意图)和在状态中或状态之间要采取的动作的状态机来实施机器人系统。会话可以基于最终用户输入来采用不同的路径,这可能会影响机器人针对流作出的决定。例如,在每个状态下,基于最终用户输入或话语,机器人可以确定最终用户的意图以便确定要采取的下一个适当动作。如本文所使用的且在话语的上下文中,术语“意图”是指提供话语的用户的意图。例如,用户可以打算让机器人参与用于订购披萨的会话,使得用户的意图可以通过话语“Order pizza(订购披萨)”来表示。用户意图可以涉及用户希望聊天机器人代表用户执行的特定任务。因此,话语可以表达为反映用户的意图的问题、命令、请求等。意图可以包括最终用户想要完成的目标。

在聊天机器人的配置的上下中,本文所使用的术语“意图”是指用于将用户的话语映射到聊天机器人可以执行的特定任务/动作或特定种类的任务/动作的配置信息。为了区分话语的意图(即,用户意图)与聊天机器人的意图,本文中有时将后者称为“机器人意图”。机器人意图可以包括与意图相关联的一组一个或多个话语。例如,订购披萨的意图可以具有表达下订单购买披萨的期望的话语的各种排列。这些相关联的话语可以用于训练聊天机器人的意图分类器以使意图分类器能够随后确定来自用户的输入话语是否与订购披萨意图相匹配。机器人意图可以与用于启动与用户在某个状态中的会话的一个或多个对话流相关联。例如,针对订购披萨意图的第一消息可以是问题“What kind of pizza would youlike?(你想要哪种披萨?)”。除了相关联的话语之外,机器人意图可以进一步包括与意图有关的命名实体。例如,订购披萨意图可以包括用于执行订购披萨的任务的变量或参数,例如馅料1、馅料2、披萨类型、披萨大小、披萨数量等。实体的值通常是通过与用户交谈获得的。

图1是并入了示例性实施例的分布式环境100的简化框图。分布式环境100包括使企业能够为其最终用户创建并部署数字助理的数字助理构建器平台(DABP)102。DABP102可以用于创建一个或多个数字助理(DA)。DABP 102可以被多个企业用于为其最终用户创建数字助理。例如,如图1所示,代表特定企业的用户104可以使用DABP 102来为特定企业的最终用户创建并部署数字助理106。例如,餐馆(例如,披萨店)可以使用DABP 102来创建并部署使餐馆的客户能够订购食物(例如,订购披萨)的数字助理。

出于本公开的目的,“数字助理”是指通过自然语言会话来帮助数字助理的最终用户完成各种任务的实体。可以仅使用软件(例如,数字助理是使用可由一个或多个处理器执行的程序、代码或指令实施的数字实体)、使用硬件或使用硬件和软件的组合来实施数字助理。数字助理可以在如计算机、移动电话、手表、器具、车辆等各种物理系统或设备中体现或实施。数字助理有时也称为聊天机器人系统。

例如,如图1所示,最终用户108可以使用数字助理106通过与数字助理106的基于自然语言的会话来执行各种任务。作为会话的一部分,用户可以提供一个或多个用户输入110并从数字助理106获得返回的响应112。经由这些会话,用户可以请求由数字助理执行一个或多个任务,并且作为回应,数字助理可以执行用户请求的任务并以适当的回应来回应用户。

用户输入110可以呈自然语言并且可以被称为话语。用户话语可以呈文本形式(例如,当用户打字输入某些内容作为到数字助理106的输入时)或呈音频输入或语音形式(例如,当用户说出某些内容作为到数字助理106的输入时)。话语通常呈最终用户108所说的语言。当用户输入呈语音形式时,可以将用户输入转换成所述特定语言的文本话语,并且然后由数字助理106对文本话语进行处理。可以使用各种语音到文本处理技术将语音或音频输入转换成文本话语,所述文本话语然后由数字助理106来处理。

由用户输入或通过将语音输入转换成文本形式而生成的文本话语可以是文本片段、句子、多个句子等。数字助理106被配置成将自然语言理解(NLU)技术应用于文本话语以理解用户输入的含义。作为针对话语的NLU处理的一部分,数字助理106被配置成执行用于理解话语的含义的处理,所述处理涉及识别对应于话语的一个或多个意图和一个或多个实体。在理解话语的含义后,数字助理106可以响应于理解的含义或意图来执行一个或多个动作或操作。

例如,用户输入可以请求订购披萨,例如,“我想要订购一个披萨”。数字助理106被配置成理解话语的含义并采取适当的动作,所述适当的动作可以涉及以要求用户输入最终用户期望订购的披萨的类型、披萨的大小、披萨的任何馅料等的问题来回应最终用户。数字助理106提供的回应还可以呈自然语言形式,这可以涉及数字助理106执行的自然语言生成(NLG)处理。一旦数字助理106从用户得到必要信息,那么,数字助理106就可以进行披萨订购。数字助理106可以通过输出指示披萨已经订购的信息来结束与最终用户的会话。

在某些实施例中,作为输入由数字助理106接收的话语经受一系列处理步骤或处理步骤的流水线。这些步骤可以包括例如对话语进行语法分析、理解话语的含义、细化并重组话语以开发话语的更加可理解的结构,确定要响应于话语而执行的动作、使动作被执行、生成响应于用户话语生成而要输出到最终用户的回应、输出对最终用户的回应等。

数字助理(如数字助理106)执行的NLU处理可以包括如句子语法分析(例如,标记化、按屈折变化形式进行归类、识别句子的词性标签、识别句子中的命名实体、生成依存树来表示句子结构、将句子分成子句、分析单独的子句、解析指代、执行组块等)等各种NLP有关处理。在某些实施例中,NLU处理或其部分可以由数字助理106自身执行。在一些其他实施例中,数字助理106可以使用其他资源来执行NLU处理的部分。例如,句子的句法和结构可以通过使用语法分析器、词性标签器和/或命名实体识别器处理句子来识别。在一种实施方式中,针对英语语言,使用由斯坦福自然语言处理(NLP)小组提供的语法分析器、词性标签器和命名实体识别器来分析句子结构和句法。这些是作为斯坦福CoreNLP工具包的一部分提供的。

虽然本公开中提供的各个示例示出了英语语言的话语,但是这仅意味着作为示例。在某些实施例中,数字助理106还能够处置除英语以外的语言的话语。在某些实施例中,数字助理106提供被配置成用于处理不同语言的子系统(例如,实施NLU功能的部件)。这些子系统可以实施为可以使用服务调用从NLU核心服务器调用的可插单元。这使NLU处理对于每种语言而言是灵活且可扩展的,包括允许不同的处理顺序。可以为每种相应的语言提供语言包,其中,所述语言包可以注册可以从NLU核心服务器提供服务的子系统的列表,并且如果需要的话,还可以利用提供的通用子系统。

可以通过各种不同的通道(如但不限于通过某些应用程序(也称为应用程序(app))、通过社交媒体平台、通过各种消息传递服务和应用程序以及其他应用程序或通道)使数字助理(如数字助理106)对其最终用户而言是可用的。单个数字助理可以为自身配置几个通道,使得单个数字助理可以同时在不同的服务上运行并通过不同的服务进行访问。

数字助理包含一个或多个技能或与一个或多个技能相关联。在某些实施例中,这些技能是被设计成与最终用户交互并完成特定类型的任务(如跟踪库存、提交时间卡、创建费用报告、订购食物、检查银行账户、进行预定、购买小部件等)的单独的聊天机器人。例如,针对图1所描绘的实施例,数字助理106包括技能机器人116-1、116-2、116-3等。如上文所描述的,在本公开中,术语“技能(skill)”和“技能(skills)”分别与术语“技能机器人(skillbot)”和“技能机器人(skill bots)”同义地使用。

与数字助理相关联的每个技能机器人通过与最终用户的会话来帮助数字助理的最终用户完成任务,其中,所述会话可以包括由最终用户提供的文本或音频输入和由技能机器人提供的回应的组合。这些回应可以呈以下形式:给最终用户的文本或音频消息和/或使用呈现给最终用户以供最终用户进行选择的简单的用户界面元素(例如,选择列表)。

存在各种方法可以将技能或技能机器人添加到数字助理。在一些实例中,可以由企业开发技能机器人,并且然后将其添加到使用DABP 102的数字助理。在其他实例中,可以使用DABP 102开发并创建技能机器人,并且然后将其添加到使用DABP 102创建的数字助理。在又其他实例中,DABP 102提供在线数字商店(称为“技能商店”),所述在线数字商店提供涉及广泛范围的任务的多个技能。通过技能商店提供的技能可以展示各种云服务。DABP102的用户可以通过DABP 102访问技能商店、选择期望的技能并且将所选技能添加到使用DABP 102创建的数字助理。来自技能商店的技能可以按原来的样子或以修改后形式添加到数字助理。例如,DABP 102的用户可以选择并克隆技能商店提供的特定技能机器人、对所选技能机器人进行定制或修改并且然后将修改后的技能机器人添加到使用DABP 102创建的数字助理。

在某些实施例中,使用DABP 102创建并部署的数字助理是使用主机器人/次(或子)机器人范式或架构实施的。根据该范式,数字助理被实施为与是技能机器人的一个或多个次机器人交互的主机器人。例如,在图1所描绘的实施例中,数字助理106包括主机器人114和是主机器人114的次机器人的技能机器人116-1、116-2、116-3等。在某些实施例中,数字助理106自身充当主机器人。

根据主-次机器人架构实施的数字助理使数字助理的最终用户能够通过统一用户界面与多个技能交互。当最终用户与数字助理接洽时,用户输入由主机器人接收,所述主机器人然后处理用户输入以识别用户请求。基于处理,主机器人确定用户请求是否可以由主机器人自身处理。如果确定用户请求可能未被主机机器人处理,则主机机器人选择适当的技能机器人用于处理用户请求并将会话路由到所选技能机器人。这使最终用户能够通过通用的单个界面与被配置成执行特定任务的几个技能机器人交谈并且使用所述几个技能机器人。例如,针对为企业开发的数字助理,数字助理的主机器人可以与具有特定功能的技能机器人接口连接,如用于执行与客户关系管理有关的功能的客户关系管理(CRM)机器人、用于执行与企业资源规划有关的功能的企业资源规划(ERP)机器人、用于执行与人力资本管理有关的功能的人力资本管理(HCM)机器人等。以此方式,数字助理的最终用户或客户只需要知道如何访问数字助理。

在主机器人/次机器人基础设施中,主机器人被配置成了解技能机器人的列表。主机器人可以访问识别了各种可用技能机器人的元数据,并且针对每个技能机器人,技能机器人的能力包括可以由技能机器人执行的任务。在接收到话语形式的用户请求之后,主机器人被配置成从多个可用技能机器人中识别或预测可以最好地服务或处理用户请求的特定的技能机器人。然后,主机器人将话语(或话语的一部分)路由到该特定技能机器人以进行进一步的处置。因此,控制从主机器人流动到技能机器人。主机器人可以支持多个输入通道和输出通道。

虽然图1的实施例示出了数字助理106包括主机器人114以及技能机器人116-1、116-2和116-3,但这并不旨在是限制性的。数字助理可以包括提供数字助理的功能的各种其他部件(例如,其他系统和子系统)。这些系统和子系统可以仅在软件(例如,存储在计算机可读介质上并且可由一个或多个处理器执行的代码、指令)中、仅在硬件中或通过软件和硬件的组合实施。

DABP 102提供了使DABP 102的使用能够创建包括与数字助理相关联的一个或多个技能机器人的数字助理的基础设施以及各种服务和特征。例如,技能机器人可以通过克隆现有技能机器人、克隆现有技能机器人并且然后对技能机器人进行修改来创建,或者可以使用DABP 102所提供的工具和服务从头创建。在某些实施例中,DABP 102提供技能商店或技能目录,所述技能商店或技能目录提供了用于执行各种任务的多个技能机器人。DABP102的用户可以从技能商店克隆技能机器人并创建新的技能机器人。

DABP 102还使用户(例如,技能机器人设计者)能够从头创建技能机器人。在某些实施例中,在高层级,创建技能机器人涉及以下操作:

(1)为新技能机器人配置设置;

(2)为技能机器人配置一个或多个意图;

(3)针对一个或多个意图配置实体;

(4)训练技能机器人;

(5)为技能机器人创建对话流;

(6)将自定义部件添加到技能机器人;以及

(7)测试并部署技能机器人。

(1)为新技能机器人配置设置—技能机器人设计者可以为正在创建的技能机器人指定一个或多个调用名称。这些调用名称可以在话语中用于显式地识别并调用数字助理中的技能机器人。技能机器人设计者还可以为技能机器人指定示例话语。这些示例话语代表技能机器人的话语。当接收到用户输入时,数字助理的意图分析引擎将用户输入与这些示例话语进行比较以确定是否要调用特定的技能机器人。

(2)为技能机器人配置一个或多个意图—技能机器人设计者可以为正在创建的技能机器人配置一个或多个意图(也称为机器人意图)。这些意图识别技能机器人可以为数字助理的最终用户执行的任务。每个意图都被赋予了名称。例如,针对被配置成帮助用户执行各种银行交易的技能机器人,意图可以由技能机器人设计者针对技能机器人指定,如“查询余额”、“转账”、“存款查询”等。对于每个意图,技能机器人设计者指定代表并说明意图的含义并且通常与所述意图执行的任务相关联的一组示例话语。例如,针对“查询余额”意图,示例话语可以包括“我的储蓄账户余额是多少?”、“我的活期存款账户里有多少钱?”、“我的账户里有多少钱”等。典型的用户请求和语句的排列也可以指定为意图的示例话语。

(3)针对技能机器人的一个或多个意图配置实体—在一些实例中,可能需要另外的上下文来使技能机器人能够适当地回应用户请求。例如,可能存在其中两个或更多个用户输入话语解析成技能机器人中的相同意图的情况。例如,在以上示例中,话语“我的储蓄账户余额是多少?”和“我的活期存款账户里有多少钱?”均解析成相同的“查询余额”意图,但是这些话语是请求不同事情的不同请求。为了阐明这种请求,将一个或多个实体添加到意图。使用银行业技能示例,被称为“账户类型”的实体(所述实体定义了被称为“活期存款”和“储蓄”的值)可以使技能机器人能够对用户请求进行语法分析并适当地作出回应。可以针对为技能机器人配置的某些意图指定一个或多个实体。因此,实体用于将上下文添加到意图自身。实体帮助更充分地描述意图并使技能机器人能够完成用户请求。在某些实施例中,有两种类型的实体:(a)DABP 102提供的内置实体;以及(2)可以由技能机器人设计者指定的自定义实体。内置实体是可以与各种机器人一起使用的通用实体。内置实体的示例包括但不限于与时间、日期、地址、数字、电子邮件地址、持续时间、循环时间段、货币、电话号码、URL等有关的实体。自定义实体用于更多定制的应用程序。例如,针对银行业技能,“账户类型”实体可以被技能机器人设计者定义为通过检查用户输入的关键字(如“活期存款”、“储蓄”、“信用卡”等)来实现各种银行业交易。

(4)训练技能机器人—技能机器人被配置成接收用户输入、语法分析或以其他方式处理接收到的用户输入并且识别或选择与接收到的用户输入相关的意图。为了使这种情况发生,可以训练技能机器人。在某些实施例中,基于为技能机器人配置的意图和与意图相关联的示例话语(统称为训练数据)来训练技能机器人,使得技能机器人可以将用户输入解析成其配置的意图中的一个意图。在某些实施例中,技能机器人由使用训练数据进行训练并且允许技能机器人辨别最终用户说出(或者,在一些情况下,正试图说出)的内容的模型来表示。DABP 102提供可以被技能机器人设计者用于训练技能机器人的各种不同的训练技术,包括各种基于机器学习的训练技术、基于规则的训练技术和/或其组合。在某些实施例中,训练数据的一部分(例如,80%)用于训练技能机器人模型并且另一部分(例如,其余20%)用于测试或验证模型。一旦训练过,那么,技能机器人就可以用于处理并回应用户话语。在某些情况下,用户的话语可以是仅需要单一的回答并且无需另外的会话的问题。为了处理这种情况,可以为技能机器人配置Q&A(问与答)意图。这使技能机器人能够在不必更新对话框定义的情况下输出对用户请求的回复。Q&A意图是以与常规意图类似的方式创建的。然而,针对Q&A意图的对话流与常规意图不同。

(5)为技能机器人创建对话流——为技能机器人指定的对话流描述了在响应于接收到的用户输入来解析技能机器人的不同意图时,技能机器人如何反应。对话流定义了技能机器人将采取的操作或动作(例如,技能机器人如何回应用户话语、技能机器人如何提示用户进行输入、技能机器人如何返回数据等)。对话流像技能机器人所遵循的流程图一样。技能机器人设计者使用如标底语言等语言指定对话流。在某些实施例中,可以使用被称为OBotML的YAML版本来指定技能机器人的对话流。针对技能机器人的对话流定义充当会话自身的模型,所述模型是使技能机器人设计者精心策划技能机器人与技能机器人所服务的最终用户之间的交互的模型。

在某些实施例中,对话流定义包含三个部分:

(a)上下文部分;

(b)默认转变部分;以及

(c)状态部分

上下文部分——技能机器人设计者可以在上下文部分中定义会话流中使用的变量。可以在上下文部分中命名的其他变量包括但不限于:针对错误处理的变量、针对内置实体或自定义实体的变量、使技能机器人能够识别并坚持用户偏好的用户变量等。

默认转变部分——技能机器人的转变可以在对话流状态部分中或在默认转变部分中定义。在默认转变部分中定义的转变充当后备并且当状态内没有定义适用的转变或触发状态转变所需的条件无法得到满足时被触发。默认转变部分可以用于定义允许技能机器人得体地处置出乎意料的用户动作的路由。

状态部分——对话流及其有关操作被定义为管理对话流内的逻辑的暂时状态的序列。对话流定义内的每个状态节点都命名一个部件,所述部件提供所述对话中的那个时候所需的功能。因此,状态是围绕部件构建的。状态包含特定于部件的性质并且定义了在部件执行之后被触发的向其他状态的转变。

特殊情况场景可以使用状态部分来处置。例如,有时可能期望为最终用户提供用于暂时让最终用户与之接洽的第一技能进行数字助理内的第二技能中的事情的选项。在一个示例中,如果最终用户忙于与购物技能进行会话(例如,用户已做出一些购买选择),则最终用户可能想要跳转至银行业技能(例如,最终用户可能想要确保他/她有足够的钱用于购买)并且然后返回到购物技能以完成最终用户的订单。为了解决这一点,第一技能中的动作可以被配置成发起与相同数字助理中的第二不同技能的交互并且然后返回到原始流。

(6)将自定义部件添加到技能机器人——如上文所描述的,技能机器人的对话流中指定的状态对状态提供所需的功能的部件进行了命名。部件使技能机器人能够执行功能。在某些实施例中,DABP 102提供了用于执行广泛范围的功能的一组预先配置的部件。技能机器人设计者可以选择这些预先配置的部件中的一个或多个并且将其与技能机器人的对话流中的状态相关联。技能机器人设计者还可以使用DABP 102提供的工具创建自定义部件或新的部件并且将自定义部件与技能机器人的对话流中的一个或多个状态相关联。

(7)测试并部署技能机器人—DABP 102提供了使技能机器人设计者能够测试正在开发的技能机器人的几个特征。然后,可以将技能机器人部署并包括在数字助理中。

虽然以上描述描述了如何创建技能机器人,但是还可以使用类似的技术来创建数字助理(或主机器人)。在主机器人或数字助理层级,可以为数字助理配置内置系统意图。这些内置系统意图用于识别数字助理自身(即,主机器人)在不调用与数字助理相关联的技能机器人的情况下可以处理的一般任务。针对主机器人定义的系统意图的示例包括:(1)退出(Exit),这在最终用户发出想要退出数字助理中的当前会话或上下文的信号时适用;(2)帮助(Help),这在最终用户请求帮助或定向时适用;以及(3)未解析意图(UnresolvedIntent),适用于与Exit意图和Help意图不太匹配的用户输入。数字助理还存储关于与数字助理相关联的一个或多个技能机器人的信息。

在主机器人或数字助理层级,当最终用户向数字助理输入短语或话语时,数字助理被配置成执行用于确定如何路由会话的处理。数字助理使用路由模型来确定这一点,所述路由模型可以是基于规则的、基于人工智能的或其组合。数字助理使用路由模型来确定对应于用户输入的会话是要被路由到特定的技能以进行处理、要由数字助理或主机器人自身按照内置系统意图进行处理、还是要被处理成当前会话流中的不同状态。

在某些实施例中,作为此处理的一部分,数字助理确定用户输入是否使用其调用名称识别技能机器人。用户输入中存在的调用名称可以被视为对应于调用名称的对技能机器人的显式调用。在这种场景下,数字助理可以将用户输入路由到显式调用的技能机器人以进行进一步处置。在某些实施例中,如果没有特定的调用,则数字助理评估接收到的用户输入并针对与数字助理相关联的系统意图和技能机器人计算置信度得分。针对技能机器人或系统意图计算的得分表示用户输入代表技能机器人被配置为执行的任务或代表系统意图的可能性有多大。选择相关联的计算的置信度得分超过阈值(例如,置信度阈值路由参数)的任何系统意图或技能机器人作为候选以进行进一步的评估。然后,数字助理从识别的候选中选择特定的系统意图或技能机器人用于对用户输入进行进一步的处理。在某些实施例中,在一个或多个技能机器人被识别为候选之后,对与那些候选技能相关联的意图进行评估(根据每个技能的意图模型)并且将置信度得分应用于每个意图。置信度得分超过阈值的任何意图通常均被视为候选流。如果选择了特定的技能机器人,则将用户输入路由到所述技能机器人以进行进一步的处理。如果选择了系统意图,则根据所选系统意图执行一个或多个动作。

如上文所描述的,技能(也称为机器人、聊天机器人、交谈机器人、技能机器人或谈话机器人)是可以执行与最终用户的会话的计算机程序。机器人通常可以通过使用自然语言消息的消息传递应用程序对自然语言消息(例如,问题或评论)作出回应。企业可以使用一个或多个机器人系统通过消息传递应用程序与最终用户交流。消息传递应用程序(所述消息传递应用程序可以被称为通道)可以是最终用户已经安装并且熟悉的最终用户优选的消息传递应用程序。因此,最终用户无需学习编程语言并下载和安装新应用程序即可与机器人系统聊天。消息传递应用程序可以包括例如过顶(OTT)消息传递通道(如FacebookMessenger、Facebook WhatsApp、微信、Line、Kik、Telegram、Talk、Skype、Slack或SMS)、虚拟私人助理(如Amazon Dot、Echo或Show、Google Home、Apple HomePod等)、本地或混合扩展的移动和web应用程序扩展/具有聊天功能的响应式移动应用程序或web应用程序、或基于声音的输入(如具有使用Siri、微软小娜(Cortana)、谷歌之音(Google Voice)或用于交互的其他语音输入的设备或应用程序)。

在一些示例中,机器人系统可以与统一资源标识符(URI)相关联。URI可以使用一串字符标识机器人系统。URI可以用作一个或多个消息传递应用程序系统的webhook(网络挂接)。URI可以包括例如统一资源定位符(URL)或统一资源名称(URN)。机器人系统可以被设计成从消息传递应用程序系统接收消息(例如,超文本传送协议(HTTP)post调用消息)。HTTP post调用消息可以涉及来自消息传递应用程序系统的URI。在一些实施例中,消息可以不同于HTTP post调用消息。例如,机器人系统可以从短消息服务(SMS)接收消息。虽然本文的讨论可以将机器人系统接收到的交流称作消息,但是本领域普通技术人员将认识到,消息可以是HTTP post调用消息、SMS消息或两个系统之间的任何其他类型的交流。

最终用户可以通过会话式交互(有时称为会话式用户界面(UI))与机器人系统交互,正如人与人之间的交互那样。在一些情况下,交互可以包括最终用户对机器人说“Hello(你好)”以及机器人用“Hi(嗨)”回应并询问最终用户机器人可以如何提供帮助。在一些情况下,交互还可以是与例如银行业机器人的交易式交互,如将钱从一个账户转移到另一个账户。交互还可以是与例如人力资源(HR)机器人的信息式交互,如检查假期结余。交互可以是与例如零售机器人的交互,如讨论退回已购商品或寻求技术支持。

在一些实施例中,机器人系统可以在没有与机器人系统的管理员或开发人员交互的情况下智能地处置最终用户交互。例如,最终用户可以向机器人系统发送一个或多个消息以便实现期望的目标。消息可以包括某种内容,如文本、表情符号、音频、图像、视频或传达消息的其他方法。在一些实施例中,机器人系统可以将内容转换成标准化形式(例如,利用适当的参数针对企业服务的表述性状态转移(REST)调用)并生成自然语言回应。机器人系统还可以提示最终用户输入另外的输入参数或请求其他另外的信息。在一些实施例中,机器人系统还可以发起与最终用户的交流,而不是被动回应最终用户话语。

与机器人的会话可以遵循包括多个状态的特定会话流。所述流可以基于输入来定义接下来会发生什么。在一些实施例中,可以使用包括用户定义的状态(例如,最终用户意图)和在状态中或状态之间要采取的动作的状态机来实施机器人系统。会话可以基于最终用户输入来采用不同的路径,这可能会影响机器人针对流作出的决定。例如,在每个状态下,基于最终用户输入,机器人可以确定最终用户的意图,以便确定要采取的适当的下一个动作。

意图可以包括最终用户想要完成的目标。意图将最终用户输入映射到后端系统可以为最终用户执行的动作。因此,基于最终用户以自然语言说出的短语,机器人可以将最终用户话语映射到特定的用例或工作,如订购披萨、获取账户余额、转账、进行购买、获得回报等。人类会话在本质上通常是非线性的。最终用户在会话期间通常可以分成不同的状态。例如,如果最终用户想要将资金从A账户转移到接受方,则最终用户可以通过例如要求机器人向接受方支付晚餐的费用来开始与机器人系统的会话。机器人可以用例如“使用哪个账户?”来回应。最终用户可以选择活期存款账户,但随后可能会意识到自己不确定账户中的余额。因此,最终用户可以切换上下文以请求余额和最近的交易等。换句话说,最终用户可能会触发流和状态的改变,例如,从转账到查询余额并且然后到最近的交易。在某个时间点,最终用户可以决定返回原始意图—向接受者付款。因此,机器人系统的一个任务是从自然语言话语动态地确定最终用户意图。

机器人可以使用自然语言处理(NLP)引擎和/或机器学习模型(例如,意图分类器)将最终用户话语映射到特定意图。例如,基于机器学习的NLP引擎可以学习理解并分类来自最终用户的自然语言会话并且从会话中提取必要的信息,以便能够采取精确的动作,如执行交易或从后端记录系统中查找数据。

图2描绘了根据某些实施例的分布式系统200,所述分布式系统200实施了用于使用消息传递应用程序与最终用户通信的机器人系统。系统200可以包括机器人系统220、一个或多个消息传递应用程序系统215和一个或多个最终用户设备(如一个或多个移动设备210)。在一些示例中,消息传递应用程序可以安装在电子设备(例如,台式计算机、膝上型计算机、移动设备210等)上。虽然本文的讨论将参考移动设备和消息传递应用程序,但是本领域普通技术人员将认识到,可以使用任何电子设备,并且可以使用任何消息传递平台或消息传递应用程序,如

可以通过如消息传递应用程序系统215等消息传递平台来促进消息传递应用程序。移动设备210可以通过第一网络(例如,因特网)连接到消息传递应用程序系统215。消息传递应用程序系统215可以是由如Facebook、腾讯、谷歌、微软等第三方提供的消息传递平台。消息传递应用程序系统215可以管理通过消息传递应用程序跨多个移动设备或其他最终用户设备发送和接收的内容。

机器人系统220(例如,在一个或多个服务器上实施的)也可以通信地连接到消息传递应用程序系统215以发送和接收消息。消息传递应用程序系统215与机器人系统220之间的通信可以通过第二网络(例如,因特网)。第一网络和第二网络可以是相同的网络,或者它们可以是相似的或完全不同的网络。消息传递应用程序系统215可以使用因特网将内容(例如,消息或来自消息的信息)从移动设备210路由到机器人系统220。在一些实施例中,内容的目的地(例如,机器人系统220的标识)可以作为名义收件人包括在内容中。在一些实施例中,机器人系统220还可以被配置成与两个或更多个消息传递应用程序系统215通信。

如上文所讨论的,在最终用户之间或在最终用户与机器人系统之间交换的内容可以包括例如文本、表情符号、音频、媒体(例如,图片、视频、链接)或传达消息的任何其他方法。由机器人系统220从例如

机器人系统220可以使用连接器230从消息传递应用程序系统215接收内容,所述连接器充当消息传递应用程序系统215与机器人系统220之间的接口。在一些实施例中,连接器230可以归一化来自消息传递应用程序系统215的内容,使得机器人系统220可以分析跨不同消息传递应用程序系统的内容。内容归一化处理可以包括将来自每种类型的消息传递应用程序的内容格式化成通用格式以进行处理。在一些实施例中,对于每个消息传递应用程序(例如

当消息处理器250变得可用时,消息输入队列240可以将内容发送到消息处理器250。在一些实施例中,消息处理器250可以从消息输入队列240拉取内容。如下文详细地描述的,消息处理器250可以对消息进行语法分析并确定语法分析的消息的意图。在一些实施例中,消息处理器250可以包括自然语言处理器252和意图确定子系统254。自然语言处理器252可以对消息进行语法分析并执行某种语义分析,如识别主语、谓语(例如,动作)和/或宾语。意图确定子系统254可以基于语法分析的消息来确定最终用户意图。如上文所描述的,意图可以包括消息的目的。例如,消息的目的可以是订购披萨、订购计算机、转账、询问关于派送的问题等。在一些实施例中,可以更具体地定义或阐明要采取的动作的与意图相关联的参数(所述参数可以被称为实体)也可以通过自然语言处理器252和/或意图确定子系统254从消息中提取。

在由消息处理器250基于内容确定最终用户意图之后,可以将确定的意图(以及与意图相关联的参数)发送到动作引擎260。动作引擎260可以用于基于如上文所描述的意图(以及与意图相关联的参数)和状态机的当前状态(或上下文)来确定要执行的动作。例如,动作引擎260可以将某些出站内容作为回应发送到消息输出队列270和/或可以向一些企业服务(例如企业服务225)发送命令或从其中取得信息。消息输出队列270可以将出站内容发送到连接器230。连接器230然后可以将出站内容发送到由动作引擎260指示的消息传递应用程序系统,所述消息传递应用程序系统可以与消息传递应用程序系统215相同或不同。消息传递应用程序系统215然后可以将出站内容转发到移动设备210上的消息传递应用程序。

机器人系统220可以与一个或多个企业服务(例如,企业服务225)、用于存储和/或分析机器人系统220接收的消息的一个或多个存储系统或用于向机器人系统220提供内容的内容系统通信。企业服务225可以与一个或多个连接器230、动作引擎260或其任何组合通信。企业服务225可以以类似于消息传递应用程序系统215的方式与连接器230通信。企业服务225可以将内容发送到连接器230以与一个或多个最终用户相关联。企业服务225还可以将内容发送到连接器230以使机器人系统220执行与最终用户相关联的操作。动作引擎260可以与企业服务225通信,以从企业服务225获得信息和/或指示企业服务225采取由动作引擎260识别的动作。

在一些实施例中,机器人系统220可以包括一个或多个计时器。计时器可以使动作引擎260在一段时间过去之后使用连接器230和消息传递应用程序系统215将内容发送给最终用户。在一些实施例中,计时器可以类似于最终用户或企业服务225向机器人系统220发送内容。例如,计时器可以向机器人系统220发送消息以便如来自最终用户的消息将会被分析的那样进行分析。

在一个特定实施例中,最终用户可以使用移动设备210通过消息传递应用程序系统215向机器人系统220发送消息。消息可以包括如“你好”或“嗨”等问候语。机器人系统可以确定与最终用户的新会话已经开始并启动状态机。在一些实施例中,机器人系统可以识别最终用户的一个或多个特性。例如,机器人系统可以通过消息传递应用程序系统使用与最终用户相关联的配置文件来识别最终用户的名称。使用所述一个或多个特性,机器人系统可以通过消息传递应用程序回应最终用户。回应可以包括给最终用户的消息,所述消息对从最终用户接收的消息作出回应。例如,回应可以包括带有最终用户的名称的问候语,如“嗨,汤姆,我能为您做什么?”。取决于与机器人系统相关联的企业,机器人系统可以继续进行以完成企业的目标。例如,如果机器人系统与披萨派送企业相关联,则机器人系统可以向最终用户发送询问最终用户是否想要订购披萨的消息。机器人系统与最终用户之间的会话可以从那里继续,来回地进行,直到机器人系统完成会话或最终用户停止回应机器人系统为止。

在一些实施例中,机器人系统可以发起与最终用户的会话。机器人系统发起的会话可以响应于与最终用户的先前会话。例如,最终用户可以在先前会话中订购披萨。机器人系统然后可以在披萨准备好后发起会话。在一些实施例中,当从与机器人系统相关联的企业接收到指示时,机器人系统可以确定披萨已经准备好(例如,员工向机器人系统发送披萨已经准备好的消息)。会话可以包括发送给最终用户的指示披萨已准备好的消息。

在一些实施例中,机器人系统可以通过与消息传递应用程序不同的消息传递应用程序向最终用户发送先前消息已接收到的消息。例如,机器人系统可以确定使用短消息服务(SMS)而不是

在一些实施例中,机器人系统可以基于计时器来确定开始会话。例如,机器人系统可以确定在披萨被订购之后为最终用户安排为期一周的计时器。为期一周的计时器到期可能会导致机器人系统与最终用户开始新的会话以用于订购另一个披萨。计时器可以由企业配置并由机器人系统实施。

如上文所描述的,在一些实施例中,动作引擎260可以向一些企业服务225发送命令或从其中取得信息。例如,当机器人系统220(更具体地,消息处理器250)确定要检查余额的意图时,机器人系统220可以确定要检查几个账户(例如,活期存款或储蓄账户)中的哪个账户的余额。如果最终用户输入“我的储蓄账户中的余额是多少”,则机器人系统220可以提取“储蓄”并将命令发送到银行服务器以检查余额并且然后通过消息将接收到的余额信息发送给最终用户。如果最终用户最初仅说出“我的账户中的余额是多少?”,则机器人系统220可以向最终用户发送提示最终用户进一步指定特定账户的消息,或者可以取得最终用户的所有账户的信息并将账户信息发送给最终用户以供最终用户进行选择。

在一些实施例中,机器人系统可以在会话之间维护信息。信息可以在以后使用,使得机器人系统无需每次在最终用户与机器人系统之间开始新的会话时都询问一些问题。例如,机器人系统可以存储关于最终用户的先前披萨订单的信息。在新的会话中,机器人系统可以向最终用户发送询问最终用户是否想要与上次相同的订单的消息。

在一些实施例中,机器人系统220可以将与最终用户相关联的信息存储在缓存中。在将出站消息从连接器230发送到消息传递应用程序系统之后,缓存可以写入数据库中以保存信息。在其他实施例中,缓存可以在不同时间(例如,在特定事件之后、在每个事件之后、在一定时间之后或用于确定何时写入数据库中的任何其他度量)写入数据。

当识别出减速时,机器人系统220可以允许缩放每个部件。例如,如果机器人系统220识别出到达连接器230的消息数超过阈值,则可以将一个或多个另外的连接器添加到连接器230。另外,消息输入队列、消息处理器、动作引擎实例和消息输出队列的数量可以取决于减速发生的位置而增加。在这种实施方式中,可以添加另外的部件而不必添加其他另外的部件。例如,可以添加连接器,而不必添加动作引擎的另外的实例。在一些实施方式中,机器人系统220的一个或多个部件或部件的一部分可以在虚拟机上运行。通过在虚拟机上运行,另外的虚拟机可以如期望的那样启动。

如上文所描述的,构建机器人系统(如可以基于最终用户话语来确定最终用户的意图的用户意图分类引擎)是具有挑战性的任务,这部分地是由于自然语言的微妙性和不明确性以及输入空间的维度(例如,可能的最终用户话语)和输出空间的大小(意图数)。这样,为了改善机器人系统的性能和与机器人系统的用户体验,可能需要监测、调试和修改新的机器人系统。在许多情况下,在不使用分析或优化工具的情况下,可能难以更具体地识别机器人系统的性能低于期望性能的根本原因和确定如何改善机器人系统。

在一些情况下,机器人拥有者、开发人员或管理员可能想要监测机器人的操作状态并且了解正在如何使用机器人以及最终用户在何处放弃了机器人,以改善机器人。例如,机器人拥有者、开发人员或管理员可能想要知道哪些机器人会话是成功的以及哪些会话不成功,以识别并诊断机器人系统的性能不佳元素。

根据一些实施例,分析系统可以与机器人系统集成。分析系统可以监测在最终用户与机器人系统之间的会话期间发生的事件、聚合并分析收集到的事件并且在图形用户界面上以不同的概括层级(如所有会话、不同类别的会话和单独的会话)以图形方式提供关于会话的信息。例如,图形用户界面可以显示用于筛选或选择某些类型的会话或单独的会话的选项并且例如通过可视化会话的路径以图形方式显示选择的信息。分析系统还可以提供建议、选项或其他信息,以用于改善机器人系统。

图3描绘了根据某些实施例的集成系统300,所述集成系统300包括机器人系统(如机器人系统220)和用于监测、分析、可视化并改善机器人系统的性能的机器人分析系统。如所图示的,机器人系统可以包括连接器330以及如对话引擎312、意图建模器314、实体解析器316和自定义部件318等多个机器人引擎310。机器人系统还可以包括数据库340、管理应用程序编程接口(API)350、用户界面354和UI服务器352。机器人分析系统可以包括收集器355、丰富引擎360、数据库370和REST服务器380。机器人分析系统还可以包括用户界面392和UI服务器390。机器人分析系统的收集器355可以收集在机器人系统处发生的事件305。来自机器人分析系统的反馈394可以通过用户界面392和用户界面354提供到机器人系统。

连接器330可以通过一个或多个通道(如通道320和322)充当机器人系统与一个或多个最终用户之间的接口。每个通道可以是消息传递应用程序,如消息传递通道(如Facebook Messenger、Facebook WhatsApp、微信、Line、Kik、Telegram、Talk、Skype、Slack或SMS)、虚拟私人助理(如Amazon Dot、Echo或Show、Google Home、Apple HomePod等)、本地或混合扩展的移动和web应用程序扩展/具有聊天功能的响应式移动应用程序或web应用程序、或基于声音的输入(如具有使用Siri、微软小娜、谷歌之音或用于交互的其他语音输入的设备或应用程序)。在一些实施例中,连接器130可以归一化来自不同通道的内容,使得机器人系统可以分析跨不同消息传递应用程序系统的内容。内容归一化处理可以包括将来自每种类型的消息传递应用程序的内容格式化成通用格式以进行处理。在一些实施例中,针对每个通道,机器人系统可以包括一个或多个连接器。

意图建模器314可以用于确定与最终用户话语相关联的最终用户意图。在一些实施例中,用于基于机器人系统从最终用户接收的一个或多个消息来确定最终用户的意图的意图建模器314可以使用自然语言处理器来对词形(动词、名词、形容词)加标签、查找词元/词干(跑(runs)/跑(running)/跑(ran)->跑(run))并且对实体加标签(德克萨斯州->位置(LOCATION))。在一些实施例中,意图建模器314可以归一化消息。例如,“Mary跑到德克萨斯州”可以变成“PERSON跑到LOCATION”。意图建模器还可以包括用于检测最终用户消息中具有相同含义的单词的逻辑。例如,如果训练数据集包括:“Mary跑到德克萨斯州”和“Bob走到底特律”、两者均映射到相同的意图并且跑/走出现在同一组意图中,则意图建模器314可以了解到,出于意图解析的目的,跑=走。在一个说明性示例中,“Mary跑到德克萨斯州”可以变成“PERSON跑到LOCATION”,并且“Bob走到底特律”可以变成“PERSON走到LOCATION”。在图示的示例中,两个句子都可以与相同的意图相关联,因为出于意图解析的目的,“名词跑到名词”与“名词走到名词”相同。在另一个示例中,“我想要订购大的奶酪披萨”和“我想要订购小的意大利辣香肠披萨”都可以归一化为“我想要订购Bots_PizzaSize Bots_Toppings(机器人_披萨大小机器人_馅料)披萨”。

在归一化之后,可以确定单词的出现可以表明某个意图的概率。在一些示例中,可以使用基本概率算法来组合概率,正如所述概率是独立的那样。例如,如果“订购”暗示订购披萨的概率为20%并且“披萨”暗示订购披萨的概率为10%,则总概率将为1-(1-0.2)(1-0.1)=28%。一些概率可以基于单词的存在或基于某些语言元素(如否定或人称代词的存在)。

另一个规则层级可以是模板规则,所述模板规则是单词的组合。在一些示例中,训练数据集中的每一个句子一旦被归一化就可以自动成为规则。在这种示例中,训练数据集可以包括非常少量的短句。模板规则可以返回概率1。可以通过归纳过程从规则生成新规则。例如,以下句子可以属于跟踪花费:“我上个月在汽油上花了多少钱?”和“我五月份在食物上花了多少钱?”。句子可以用来归纳“我花了多少钱”的规则,因为这是它们之间共享的部分。在其他示例中,训练数据集可以包括短语“我花了多少钱”以达到相同的结果。

上文所描述的示例允许意图的定义不包括重复项,如命名实体的变化(例如,“向Sue汇款”和“向Bob汇款”)。但是,可以使用其中一个或两个单词不同的类似句子进行训练。类似的句子可以允许模型学习哪些单词可能具有相同的意图解析含义以及哪些单词可能是常见的拼写错误。

如果特定的单词或一组单词(如动词)对意图很重要,则可以通过针对该意图使更多示例使用这种单词(及其同义词)以及针对其他意图使更少示例带有这种单词来操纵概率。

还可以提供示例以防止模型作出错误断言。例如,特定的子短语或仅针对某个意图出现的单词可能导致错误断言。类似地,可以防止模型合成使用属于不同意图的类似句子来进行训练的广泛规则。

实体解析器316可以识别与最终用户意图相关联的实体(例如,对象)。例如,除了通过意图建模器314识别的最终用户意图(如“订购披萨”)之外,实体解析器316还可以解析如披萨类型、馅料等与意图相关联的实体。

对话引擎312可以用于处理最终用户与机器人系统之间的会话。例如,对话引擎312可以基于通过意图建模器314识别的最终用户意图和通过实体解析器316识别的与最终用户意图相关联的实体来回应最终用户话语。在一些实施例中,对话引擎312可以使用包括用户定义的状态(例如,最终用户意图)和在状态中或状态之间要采取的动作的状态机来处理与最终用户的会话。

自定义部件318可以包括用于特定机器人系统的定制模块。例如,财务机器人可以包括可以用于例如查询余额、转移资金或支付账单的自定义部件。

数据库340可以用于存储机器人系统的数据,如分类模型的数据、会话日志等。管理API 350可以被机器人系统的管理员或开发人员用于管理机器人系统,如再训练分类模型、编辑意图或以其他方式修改机器人系统。管理员或开发人员可以使用用户界面354和UI服务器352来管理机器人系统。

在机器人系统运行时可以生成各种事件。事件可以基于机器人系统中包括的一个或多个指令来生成。例如,当机器人系统已经进入到特定状态时,可以生成事件,其中,所述特定状态由机器人系统的管理员或开发人员定义。在事件生成时,事件可以由机器人分析系统收集、存储并分析。当捕获事件时,还可以收集与事件相关联的另外的信息,其中,所述另外的信息可以指示事件在其中生成的当前上下文。

例如,会话事件可以通过对话引擎312生成。会话事件可以包括机器人系统从最终用户设备接收的消息(称为msg_received)。msg_received可以包括以下参数或变量中的一个或多个:消息的内容、消息由机器人系统接收的时间、接收到的消息的语言、设备性质(例如,版本或名称)、操作系统性质(例如,版本或名称)、地理位置性质(例如,因特网协议地址、纬度、经度等)、识别信息(例如,用户ID、会话ID、机器人系统ID、承租者ID等)、时间戳(例如,设备创建的、设备发送的、收集器得到的时间戳)、通道等。

会话事件还可以包括由机器人系统发送到最终用户设备的消息(称为msg_sent)。msg_sent可以包括以下各项中的一项或多项:消息的内容(例如,消息的文本或HTML)、消息由机器人系统发送的时间、消息的语言、消息的创建器(例如,机器人系统或最终用户设备)、设备性质、操作系统性质、浏览器性质(例如,版本或名称)、应用程序性质(例如,版本或名称)、地理位置性质(例如,因特网协议地址、纬度、经度等)、识别信息(例如,用户ID、会话ID、机器人系统ID、承租者ID等)、通道(例如,Facebook或Webhook)等。

对话引擎312还可以生成对话状态执行事件。如上文所描述的,对话引擎312可以使用状态机来确定与最终用户的会话流。状态机可以包括一组状态和状态之间的转变规则。对话引擎312可以针对每个最终用户会话执行状态机,并且对话状态执行事件可以是针对对话引擎312逐句通过以处理最终用户话语的每个状态而产生的。对话状态执行事件的属性可以包括例如状态名称、部件名称、下一个动作、实体匹配、意图匹配、变量、用户查询语句、回应语句、执行时间、交流语言、设备性质、操作系统性质、地理位置性质、识别信息、时间戳、通道等。状态名称可以是当前执行的状态或“错误状态”的名称。部件名称可以是针对当前状态执行的机器人部件的名称。下一个动作可以是要执行的下一个动作。实体匹配可以是在当前消息中解析的实体。意图匹配可以是用得分值解析的意图。变量可以是当前状态的变量值。查询语句可以是由最终用户发送的消息。回应语句可以是发送给最终用户的消息。执行时间可以是完成的状态执行的时间戳。交流语言可以是交谈的消息的语言。设备性质和/或操作系统性质可以与和机器人系统交互的最终用户相关联。浏览器性质和/或应用程序性质可以与和机器人系统交互的最终用户相关联。地理位置性质可以是与机器人系统交互的最终用户的位置。

由于意图建模器314的执行,可能会发生意图解析事件。意图建模器314可以使用经过训练的或以其他方式定义的分类模型基于最终用户话语从一组意图中识别最终用户意图。可以捕获意图分类的结果作为意图解析事件属性,所述意图解析事件属性可以包括例如最终意图分类结果(例如,识别出的意图)和与所述一组意图中的每个相应的意图相关联的置信度得分。

实体解析器316可以生成实体解析器事件。实体是与最终用户意图相关联的对象。当创建出机器人系统时,可以确定实体定义规则。例如,除了解析如“订购披萨”等最终用户意图之外,机器人系统还可以使用实体解析器316来解析如披萨大小、馅料等相关联的实体。可以在实体解析时捕获实体解析器事件。与实体解析器事件相关联的属性的示例可以包括实体名称、所应用的规则、搜索项、所解析的状态、查询语句、实体类型、执行时间、交流语言、设备性质、操作系统性质、浏览器性质、应用程序性质、地理位置性质、识别信息、时间戳、通道等。实体名称可以是当前被解析的实体的名称。所应用的规则可以是例如前述的、之后的或聚合的。搜索项可以是来自、到、目的地、原点等。所解析的状态可以是针对实体解析的对话状态。查询语句可以是包含实体值的消息。实体类型可以是系统或得到的。执行时间可以是实体解析的时间戳。交流语言可以是交谈的消息的语言。设备性质和/或操作系统性质可以与和机器人系统交互的最终用户相关联。浏览器性质和/或应用程序性质可以与和机器人系统交互的最终用户相关联。地理位置性质可以是与机器人系统交互的最终用户的位置。

自定义部件还可以生成如预定义事件或自定义事件等事件。预定义事件可以是在执行自定义部件时捕获的性质。预定义事件的属性的示例可以包括:部件名称、事件名称、有效载荷、执行时间、交流语言、设备性质、操作系统性质、浏览器性质、应用程序性质、地理位置性质、识别信息、时间戳、通道等。部件名称可以是当前被执行的自定义部件的名称。事件名称可以是invoked(调用)、invocation_failed(调用失败)、replied(回答)、replied_failed(回答失败)等。有效载荷可以是失败的原因(在失败的情况下)、堆栈跟踪等。执行时间可以是指示事件何时发生的时间戳。交流语言可以是交谈的消息的语言。设备性质和/或操作系统性质可以与和机器人系统交互的最终用户相关联。浏览器性质和/或应用程序性质可以与和机器人系统交互的最终用户相关联。地理位置性质可以是与机器人系统交互的最终用户的位置。

自定义部件还可以在自定义部件的执行期间下发自定义事件。自定义事件的属性的示例可以包括部件名称、事件名称、自定义有效载荷、执行时间、交流语言、设备性质、操作系统性质、浏览器性质、应用程序性质、地理位置性质、识别信息、时间戳、通道等。部件名称可以是当前被执行的自定义部件的名称。事件名称可以是用户定义的事件名称(例如,Balance_Retrieved(余额取得))。例如,有效载荷可以是{“数量(amount)”:“100美金(USD100)”,“账户(account)”:“活期存款(checking)”}。执行时间可以是指示事件何时发生的时间戳。交流语言可以是交谈的消息的语言。设备性质和/或操作系统性质可以与和机器人系统交互的最终用户相关联。浏览器性质和/或应用程序性质可以与和机器人系统交互的最终用户相关联。地理位置性质可以是与机器人系统交互的最终用户的位置。

错误事件和超时事件也可以在执行期间由机器人系统生成。当错误发生时,可以生成错误事件。当最终用户会话在一段时间内已经不活跃时,可以生成超时事件,所述超时事件可以被配置在通道处。

在机器人系统与最终用户进行会话并且生成对应的事件时,机器人分析系统可以收集事件和另外的信息。例如,收集器355可以收集事件和另外的信息并将收集到的信息发送到队列。在一些实施例中,收集器355可以是可配置的并且可以被编程成如期望的那样收集上文所描述的不同事件和/或事件属性。例如,收集器355可以被配置成捕获对话状态属性、意图解析属性、实体解析属性以及错误属性和超时属性。在一些实施例中,收集器355还可以被配置成收集关于由除机器人系统以外的系统生成的事件395的信息。

丰富引擎360可以对收集到的事件和其他信息执行验证和丰富并且将收集到的事件和其他信息写入数据库370。例如,基于收集到的IP地址,丰富引擎360可以确定与IP地址相关联的最终用户的位置。作为另一个示例,丰富引擎360可以从收集到的信息中提取某些特征,如确定最终用户所使用的web浏览器或通道。REST服务器380可以分析丰富的事件和其他信息并基于某个聚合度量372来生成各种报告。报告可以通过UI服务器390在用户界面392上向机器人系统的拥有者、管理员或开发人员显示。机器人系统的拥有者、管理员或开发人员可以向机器人系统提供反馈394以用于改善机器人系统。

图4是简化流程图400,图示了根据某些实施例的用于开发技能的过程的示例。所述过程可以包括在410处创建意图、在420处训练技能、在430处创建实体、在440处集成自定义部件、在450处创建对话流、在460处测试技能、在470处路由到通道以及在480处审阅用于改善技能的见解报告。

在410处,可以创建技能的意图。意图描述了技能可以帮助其最终用户完成的各种动作。例如,如果技能使用户能够执行各种银行业交易,则技能的意图可以包括例如“查询余额”或“转账”。意图不仅描述技能可以做什么,而且还可以是技能的智能的组成部分。意图使技能能够识别用户输入,因为每个意图可以具有与其相关联的一组典型的用户语句(即,话语)。虽然这些话语可以共享相同的含义,但是它们可以是不同的(例如,“我的储蓄账户余额是多少?”和“我的活期存款账户中有多少钱?”)。

在420处,当技能对用户输入进行语法分析时,可以训练技能来推断用户意图。具体地,可以用意图及其话语(统称为训练数据)来训练技能,使得技能可以将用户输入解析成意图中的一个意图。经过训练的技能不仅可以识别属于每个意图的样本短语,而且还可以识别与每个意图相对应的类似短语。

在430处,可以创建技能的实体。在一些实施例中,技能可能需要另外的某个上下文来完成用户请求。虽然一些用户请求可以被解析成相同的意图(例如,“我的储蓄账户余额是多少?”和“我的活期存款账户中有多少钱?”都将会解析成“查询余额”意图),但它们请求的是不同的事情。为了阐明请求,可以将一个或多个实体添加到意图。使用银行业技能示例,实体“账户类型”(所述实体定义了如“活期存款”和“储蓄”等值)可以使技能能够对用户请求进行语法分析并适当地作出回应。

在440处,可以将自定义部件集成到技能中。在将部件集成到技能中之前,技能可以识别用户输入,但可能无法对其作出回应。部件可以使技能能够执行其功能。部件可以执行功能(如基于已从最终用户的消息中解析出的意图来输出文本)或执行特定于特定技能的任务(如查询账户余额)。

在450处,可以创建对话流。对话流描述了在解析不同意图出时技能如何反应。对话流定义了技能机器人将采取的操作或动作(如技能机器人如何回应用户话语、技能机器人如何提示终用户进行输入、技能机器人如何返回数据等)。在一些实施例中,对话流可以是以如YAML的版本(例如,OBotML)等简单的标底语言描述的流程图。

在460处,可以在开发并部署于例如上文所描述的数字助理中之后测试技能。可以通过使用一个或多个对话流与技能进行一个或多个会话来测试技能。

可选地,在470处,可以将技能路由到用于用户消息传递和其他能力的一个或多个通道。例如,如果技能不会被添加到数字助理,则可以将技能添加到一个或多个用户消息传递通道。用户可以通过这些用户消息传递通道中的一个或多个(如各种消息传递平台、专有消息传递应用程序和网页)与技能聊天。技能将会在这些通道中的任何一个通道上运行,无论它们是纯文本的还是可以支持滚动卡、UI元素、图像和其他非文本内容。除了与用户接口连接的通道之外,还可以将技能路由到其他通道(如将技能链接到客户支持系统的通道或路由来自提示技能发起会话的外部应用程序的通知的通道)。

在480处,开发人员可以审阅见解报告以改善技能。例如,开发人员可以审阅与技能有关的见解报告,以查明客户是否按预期使用了技能。见解报告可以包括例如高层级使用情况度量和会话趋势、意图的单独视图、它们的执行路径和会话抄本。见解报告可以提供关于技能对其客户的支持程度以及技能阻止其客户完成任务的地方的不同观点。这些见解报告不仅可以让开发人员快速地发现问题,还可以暗示可以改善技能的意图解析的用户输入。

在一些实施例中,可以生成技能的不同版本。在一些实施例中,技能可以是包括两个或更多个有关技能以执行如上文所描述的更复杂的功能的复合技能。例如,复合技能A可以包括技能B和技能C,其中,例如,来自技能B的输出可以用作到技能C的输入。

如上所述,机器人可以使用机器学习模型(例如,意图分类器)将最终用户话语映射到特定意图。尽管被广泛采用,但包括神经网络模型在内的机器学习模型通常作为黑盒进行操作,通过对输入数据执行某些数学或逻辑运算来进行推理(输出)。机器学习模型的输出可以包括例如预测或分类、和/或对应的置信水平。然而,模型或特定推理的输出可能不提供对模型的见解,使得用户可以理解模型的行为以及推理背后的原因。因此,用户可能难以确定模型和/或特定推理是否是值得信赖的,使得用户可以基于推理做出决策或采取动作或者可以选择部署模型。例如,当使用机器学习进行医疗诊断或恐怖主义检测时,可能不会盲目相信预测结果而采取动作,因为后果可能是灾难性的。还需要在部署模型之前对模型进行整体评估。目前,模型通常使用准确性度量或基于可用验证数据集的其他统计数据进行评估。然而,现实世界的数据往往有很大的差异,并且进一步地,评估度量可能并不代表产品的目标。

就机器人系统的分类器而言,机器人拥有者或开发人员在将分类器部署在机器人系统中之前可能想要了解例如分类器为何从某一用户话语中推断出特定用户意图,而从不同用户话语中推断出不同用户意图。获得对分类器的见解还可以帮助机器人开发人员减少用于训练分类器的训练数据(例如,训练话语),或者更智能地生成更有用的训练数据来改进分类器。

根据某些实施例,机器人系统可以包括意图分类器和推理解释引擎。推理解释引擎可以提供对由意图分类器对各个用户话语的推理的见解。例如,推理解释引擎可以识别某些词或词的组合,所述词或词的组合致使意图分类器从话语中以一定置信水平做出某种推理。推理解释引擎可以包括例如局部代理模型或作用域规则模型。

代理模型被训练以近似底层黑盒模型的预测。可解释代理模型的目的是使用可解释代理模型(例如,预测函数)来尽可能准确地近似底层模型的预测。代理模型可以通过以下方式获得:(1)选择数据集,所述数据集可以是与用于训练底层黑盒模型相同的数据集或相同数据集的子集,也可以是来自同一分布的新数据集;(2)对于所选数据集,使用底层黑盒模型生成预测;(3)选择可解释的模型类型(例如,线性模型、决策树等);(4)使用所选数据集和由底层黑盒模型做出的预测来训练可解释模型,以生成代理模型;以及(5)确定代理模型如何很好地复制底层黑盒模型的预测,并在必要时再训练代理模型。然后可以解释经过训练的代理模型。

局部可解释的模型无关的解释(LIME)不是训练全局代理模型,而是侧重于训练局部代理模型以解释个体预测。在LIME中,目标是了解机器学习模型为何会做出某种预测。LIME生成一个新数据集,所述新数据集包括输入样本的变体(例如,置换样本)和由底层机器学习模型做出的对应预测。然后使用这个新数据集来训练可解释模型。可解释模型可以是例如最小绝对收缩和选择算子(Lasso)或决策树。经训练的可解释模型可以是底层机器学习模型对输入样本的变体的预测的良好近似(局部保真),但不需要是对所有输入样本的良好全局近似。局部代理模型可以通过以下方式获得:(1)选择可能需要对底层机器学习模型的预测进行解释的感兴趣样本;(2)扰动感兴趣样本并通过底层机器学习模型生成对扰动样本的预测;(3)根据扰动样本与感兴趣样本的接近程度对扰动样本进行加权;以及(4)使用扰动样本和由底层机器学习模型做出的对应预测来训练经加权的可解释模型。然后可以通过解释经训练的可解释模型来解释由底层机器学习模型对感兴趣样本的预测。

作用域规则模型的示例是锚定技术。锚定技术可以通过找到充分“锚定”预测的决策规则来解释黑盒机器学习模型(例如,分类器)的个体预测。规则在其他特征值的变化不影响预测的情况下锚定预测。一种示例锚定技术可以利用强化学习技术与图形搜索算法相结合,以将模型调用的数量(以及因此运行时间)降到最低,同时仍然能够从局部最优中恢复。锚定技术利用基于扰动的策略来生成针对黑盒机器学习模型预测的局部解释。在锚定技术中,没有使用代理模型,而是用易于理解的IF-THEN规则来表达所产生的解释。这些规则是有作用域的并且是可重用的。例如,锚定可能包括覆盖范围的概念,其指定了规则可能适用的其他(可能未见的)实例。

寻找锚点可能涉及解决探索或多臂老虎机(MAB)问题,所述问题源于强化学习学科。为了找到锚点,在一轮或多轮中,可以为要解释的实例创建邻居或扰动并对所述邻居或扰动进行评估。在每一轮中,可以通过调用模型来创建和评估与当前观察到的规则(例如,锚点)相匹配的扰动。MAB可以用于使用顺序选择来高效地探索和利用不同的策略(称为臂,类似于投币机)。在给定的设置中,每个候选规则都被视为可以拉取的臂。每次拉取候选规则时,都会评估相应的邻居,并且因此可以获得关于候选规则的效用的更多信息(例如,精度,表示规则对要解释的实例的描述程度)。当不存在候选规则的效用超过某个阈值的统计置信度时,可以使用更多的样本。在随后的每一轮中,上一轮的最佳候选可以通过尚未包含在其中的附加特征谓词进行扩展。

上述过程可以组合成集束搜索过程,所述集束搜索过程是一种图搜索算法且是广度优先算法的一种变体。集束搜索过程将每一轮的B个最佳候选规则带到下一轮(其中,B为集束宽度)。然后使用这B个最佳候选规则来创建新规则。集束搜索过程最多可以包括特征计数(x)轮,因为每个特征最多可以包括在规则中一次。在每一轮i中,集束搜索过程生成具有i个谓词的候选,并选择其中的B个最佳候选规则。因此,通过将B设置得越高,算法会更有可能避免局部最优,但可能会使用大量的模型调用,从而可能增加计算负荷。

解释推理结果的技术

在一些实施例中,用于托管聊天机器人的客户端的面向客户端的服务实施用于解释推理结果的技术,如本文所述。所描述的技术为客户端(例如,托管/拥有聊天机器人的实体)提供实用性,使得客户端能够使用全面的解释来审阅聊天机器人操作和这些操作的结果。打开ML分类的“黑盒”以供客户查看,以便审阅并改进聊天机器人系统。在一些实施例中,这些技术作为面向客户端的系统和界面的一部分来执行,客户端可以通过所述系统和界面来审阅客户端所托管的聊天机器人的各方面。例如,客户端可以通过界面来审阅客户端所托管的聊天机器人的列表以及与这些聊天机器人的功能相关的各种报告和建议。

界面中的聊天机器人列表可以进一步包括与一段时间内同各种聊天机器人相关联的各种交互相关的信息。例如,客户端可以查看包括聊天机器人在一段时间内已经接收到的话语在内的各种交互。包括话语在内的各种交互可能与聊天机器人预测的特定推理结果或缺乏推理结果相关联。推理结果是聊天机器人对特定话语进行解释的结果。例如,推理结果可以包括但不限于聊天机器人对话语的分类结果(例如,对与话语相对应的意图/服务的预测)、分类确定的置信度阈值(例如,特定意图/服务与话语预测性关联所需的置信水平阈值)等。客户端通过了解如何针对特定话语生成推理结果来得到巨大的价值和实用性。

图5是简化流程图500,图示了根据某些实施例的用于解释推理结果的过程的示例。图5所描绘的处理可以以由相应系统的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)、硬件或其组合实施。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图5所呈现的且下文所描述的方法旨在是说明性的而非限制性的。尽管图5描绘了以特定序列或顺序发生的各个处理步骤,但这并不旨在是限制性的。在某些替代性实施例中,步骤可以以某种不同的顺序执行或者一些步骤还可以并行地执行。在某些实施例中,诸如在图1至图4中描绘的实施例中,图5中描绘的处理可以由预处理子系统来执行以根据某些实施例来解释推理结果。机器学习模型可以包括例如神经网络模型或任何其他机器学习模型,并且可以用作例如基于用户话语对用户意图进行分类的分类器。

在510处,接收解释对话语的推理结果的请求。具体地,从实体接收请求,以获得与聊天机器人对话语进行语法分析而生成的推理结果相关的报告。例如,托管聊天机器人的客户端可以生成并发送请求,所述请求被接收作为过程500的一部分,以生成供客户端查看的报告,其中详细说明了聊天机器人在输入话语时在之前的某个时间输出的推理结果。

如本文所述,推理结果是包括与聊天机器人应用程序如何语法分析和解释话语相关的一些数据在内的结果或预测。在一些实施例中,解释推理结果的请求是从实体接收的,诸如托管聊天机器人应用程序的客户端,所述聊天机器人应用程序得到对话语的推理结果。例如,聊天机器人可以接收来自客户端客户的话语,并响应性地基于客户的话语采取某种动作。请求可以例如通过命令行或客户端可访问的用户界面来提交。引起动作的过程将生成推理数据,所述推理数据有助于解释聊天机器人应用程序在给定客户话语的情况下引起动作的方式。推理结果可以包含例如基于聊天机器人应用程序对话语的处理而属于话语的分类结果,这对于客户端了解聊天机器人应用如何运作是有用的。

在一些实施例中,由客户端托管的聊天机器人应用程序包括基于用户话语对用户意图进行分类的分类器。例如,分类器可以是聊天机器人系统的子系统,包括机器学习模型,所述模型被训练为将话语作为输入,并输出所述话语的预测分类。在一些实施例中,分类器是经训练的神经网络机器学习模型,所述模型被配置为将包括在话语中的输入映射到神经网络模型的各个节点。然后可以处理神经网络模型的各个节点以产生对应于话语分类的输出结果。分类可以例如是聊天机器人预测话语将对应的意图/服务。在一些实施例中,上述推理结果的分类结果由分类器生成。

在一些实施例中,系统在计算机存储器中存储与聊天机器人系统实时做出的推理结果和分类相关的数据。例如,当聊天机器人接收到话语时,系统可以存储接收到的话语。在聊天机器人输出预测数据(例如,与预测意图相关的数据)之后,系统可以将预测数据作为推理结果的一部分进行存储。客户端可以审阅存储在系统处的这些信息,以确定接收到的话语以及由聊天机器人由此生成的推理结果。当客户端确定聊天机器人出现问题,或者在其他方面对聊天机器人的功能不满意时,客户端可以请求一份报告,解释对话语的推理结果。在一些实施例中,存储与话语和推理结果相关的数据的系统与执行过程500的系统相同。

在520处,从分类器获得话语的分类结果。具体地,当话语被输入到聊天机器人时,可以利用分类器(诸如510中的那个聊天机器人系统的分类器或类似的分类器)来复制分类结果。例如,一旦客户端在报告请求中指定的话语和聊天机器人系统已知,就可以将话语输入到聊天机器人系统或类似系统,以获得分类结果作为输出(例如,被预测与话语相对应的意图)。

在一些实施例中,通过将话语输入到分类器、例如输入到包括在分类器中的机器学习模型中,获得分类结果。获得分类结果将允许系统确定分类结果作为在步骤510中请求解释的推理结果的一部分。然后可以获得分类结果作为输出,以执行过程500的进一步步骤。在一些实施例中,分类结果被保存为使用分类器的聊天机器人应用程序的先前操作的一部分。例如,当客户端的客户向聊天机器人应用程序发送话语时,聊天机器人应用程序的分类器可以生成分类结果并将分类结果存储在本地或外部系统(诸如客户端数据库)处。然后可以在520处从数据库获得分类结果。

在一些实施例中,分类结果包括对应于预测意图/服务的分类数据,所述预测意图/服务对应于如由聊天机器人预测的话语。例如,分类数据可以包括与话语相关的数据、对话语的一个或多个预测意图/服务、以及与一个或多个预测意图/服务对应于话语的置信程度相对应的一个或多个置信度值。在一些实施例中,与经训练的神经网络机器学习模型的节点之间的对应程度相对应的置信度值,如由分类器在对话语进行语法分析时使用。

在一些实施例中,分类器是模拟聊天机器人系统操作的传真分类器。例如,系统可以将分类器存储为没有对应聊天机器人模型的单独分类器。系统可以使用分类器来获得使用话语的分类结果,而不需要整个聊天机器人系统来对话语进行语法分析。系统可以存储例如由聊天机器人系统使用的、与分类器相对应的经训练机器学习模型,因为可能只需要分类器来执行步骤520。在一些实施例中,托管传真分类器的系统与执行过程500的系统相同。

一旦获得分类结果,则在530处,选择包括话语中的锚点词在内的一组新锚点,并且通过用相似的词替换话语中的非锚点词来生成合成话语。具体地,构成话语的词的子集被分组为一组锚点,表示对生成推理结果具有相对重要性的词的分组。不在这组锚点中的词被替换为相似的词,以形成合成话语。例如,可以将话语中的一个或多个词指定为锚点词,表示被预测为比话语中其他词对分类相对更重要的词。然后将未指定为锚点的词替换为相似的词,以形成新的合成话语,所述合成话语与原始话语在语义上不同、但在语境上相似。

替换非锚点词的结果将是生成合成话语,由于相似词的替换,所述合成话语与原始话语保持一定的相似性。在一些实施例中,从话语中选择一个或多个锚点词包括确定话语中包括的与较高程度的唯一性相对应的一个或多个词(例如,该词或短语的已知同义词较少)。在一些实施例中,锚点词是在话语中最不可能被替换以形成相似话语的词。例如,话语“I want to order a pizza(我想要订购一个披萨)”包含词“I(我)”、“want(想)”、“to(要)”、“order(订购)”、“a(一个)”、以及“pizza(披萨)”。在这个短语中,词“I”和“pizza”对应的替代性相似词比其他词少,因此有可能是锚点词的候选。例如,短语“I desire topurchase one pizza(我期望购买一个披萨)”是与“Iwant to order a pizza”类似的短语,因为前者可能对应于与后者相似的意图。相比之下,短语“John wants to order atreehouse(约翰想要订购一个树屋)”不是类似的短语,尽管这些词“want(s)”、“to”、“order”和“a”被当作这两个短语之间的锚点词。

可以以允许生成如本文所述的合成话语所必需的任何方式来进行对一组新锚点的选择。在一些实施例中,选择一组锚点包括使用集束排序算法来选择话语中锚点词的潜在候选。例如,过程可以基于某种启发法(诸如上述唯一性度量)来确定锚点词的一个或多个最佳候选。然后可以选择一个或多个附加词来构成这组锚点。未被选入这组锚点的所有词将是在合成话语中被替换为非锚点词的非锚点词。在一些实施例中,一组锚点只有当这组锚点满足启发式锚点选择阈值时才会被选择(例如,分组中每个词的平均唯一性得分必须达到或超过唯一性阈值,该分组才可能被选择作为一组锚点)。

步骤530允许生成新合成话语,这些新合成话语与原始话语不同,但可以用于测试对于分类后话语之间的相似性和差异性的推理结果。通过将锚点作为这些新话语中的常量,新话语将在词的层面上揭示出话语的特定推理结果是如何确定的。例如,话语的这些新合成变体也可以由分类器分类以确定新话语的一个或多个预测意图。

在540处,从分类器获得合成话语的分类结果以及所选的这组锚点的置信水平。具体地,在530中生成的每个合成话语被输入到分类器模型,以获得对合成话语的分类预测结果。例如,对于在530中生成的每个合成话语,合成话语将被输入到作为在520中使用的分类器的一部分操作的ML模型,以获得对合成话语的分类结果。如果ML模型被训练为在给定输入话语的情况下输出预测意图/技能,则ML模型将在给定输入到ML模型的一个或多个合成话语的情况下输出一个或多个预测意图/技能。基于合成话语的预测意图/技能,确定在530中选择的这组锚点的置信度值。置信度值可以对应于与生成的合成话语和这些合成话语的预测意图/技能相关的任何度量。在一些实施例中,一组锚点的置信度值是分类结果与原始话语的分类结果相同的所生成的合成话语的百分比。例如,如果针对一组锚点生成100个合成话语,并且这100个合成话语中的87个合成话语被确定为对应于与在520中获得的预测意图分类结果相匹配的预测意图,则这组锚点的置信度值可能是87%或0.87。

在一些实施例中,每个预测分类可以对应于与特定预测意图/技能对应于输入话语的置信水平相关联的置信度度量。例如,在ML模型是经训练的神经网络ML模型的一些实施例中,置信度度量可以基于在处理输入话语时经训练的神经网络的节点之间的以数值方式得到的对应关系度量。在这些实施例中,当输出预测意图/技能时,更高的置信度度量将对应于经训练的神经网络的节点之间相对更高的对应程度。在一些实施例中,相关联的一组锚点的置信度值可以部分地从针对相关联的这组锚点生成的每个合成话语的置信度度量中得到。

合成话语的分类结果对于确定用于基于话语预测意图/技能的聊天机器人的各方面很有用。例如,原始话语和合成话语两者可能与同一预测意图/技能相关联。因此,可以合理地推断出原始话语与合成话语之间共用的锚点词是生成原始话语的推理结果的主要因素。相反,当原始话语和合成话语不共用同一预测意图/技能时,可以合理推断出原始话语与合成话语之间共用的锚点词不是推理结果的主要因素,或者ML模型在处理话语中的某些词或短语时功能失调。由于这些和类似的原因,生成的合成话语的分类结果对确定原始话语的推理结果非常有价值。

在550处,识别与最高置信水平相关联的一组锚点。具体地,可以选择对应于最高置信水平的一组锚点的置信度值,以包括在针对510中接收到的请求而要响应性发送的报告中。例如,过程500可以包括基于选择的多组锚点来生成多组合成话语。在查看有关推理结果的报告时,具有最高置信度值的多组锚点最有可能是最有价值的。因此,在550处,可以将在540中生成和获得的分类结果和置信水平与先前生成的其他组锚点的置信水平进行比较。在所比较的多组锚点中具有(多个)最高置信水平的这组锚点和对应的合成话语可以被识别并保存以用于稍后包括在报告中。

在一些实施例中,多组锚点可以基于阈值置信水平而被包括在报告中,而不是基于每组锚点中所选的单个最高置信度值。例如,置信度阈值可以用作多组锚点将被包括或不被包括在报告中的报告分界值。如果每组锚点的置信水平超过置信度阈值,则这组锚点和对应的合成话语将被包括在报告中。

530-550处的操作可以迭代地执行多轮,例如,在上述集束搜索过程中,其中在每一轮中可以将不同的词的组合用作锚点。在一个示例中,在第一轮中,可以将话语中的每个词用作锚点词,以生成话语的变体作为合成话语,所述合成话语可以由分类器进行分类,并且在第一轮之后可以选择具有置信水平的锚点。在一些实施例中,在第二轮中,可以将第一轮中选择的锚点词与话语中的另一个词的任意组合用作锚点的锚点词,以生成话语的更多变体作为合成话语;合成话语可以由分类器进行分类;可以将分类结果与原始话语的分类结果进行比较,并且在第二轮之后可以选择具有最高置信水平的锚点。

在一些实施例中,在第二轮中,可以选择并使用在第一轮中未选择的锚点词的新组合以生成合成话语,然后将如上所述的那样对所述合成话语进行分类和比较。当已经选择了所有重要的锚点并且已经针对这些锚点生成了合成话语时,操作530-550的迭代可以停止。例如,唯一性阈值可以用作集束搜索的一部分。一旦在530处选择了满足唯一性阈值的所有组的锚点,迭代就可以在550处停止并且过程500可以前进到560。

在560处,基于在550处进行多轮的结果,可以生成报告。报告可以包括一组或多组锚点以及这组锚点的对应置信水平。在一些实施例中,报告可以包括合成话语的分类结果。基于报告,用户可以了解哪个词或词的组合致使分类器从原始话语中推断出特定意图。例如,报告可能会显示原始话语“I want to order a pizza”以及合成话语,诸如“Idesireto purchase one pizza”。报告可能表明,例如原始话语和合成话语两者都被预测为对应于相似的意图,例如,名为“订购食物(ORDER FOOD)”的意图,具有相似的置信水平。因此,用户可以从报告中推断出,共用锚点词“I”和“Pizza”是确定意图相同的主要因素,并且是导致这组特定锚点的置信度值相对较高的原因。

以下表1示出了JSON文件中示例报告的解释部分。报告包括分类器对原始话语“money available(钱可用)”的推理结果。报告还包括:对于每个锚点,使用所述锚点生成的原始话语的变体;分类器的对应分类结果;以及基于原始话语的变体的分类结果与原始话语的分类结果之间的匹配数和不匹配数而确定的相应精度。例如,当锚点仅包括词“available”时,原始话语的变体可能包括“#available”、“amenities available”、“bicycles available”、“+available”、“2017available”等。分类器可以将这些话语分类为与意图“balances(余额)”相关联,这与原始话语的分类结果相匹配。然而,分类器可以将话语“commercially available(可商用)”、“only available(仅可用)”、“universallyavailable(普遍可用)”和“Currently available(当前可用)”分类为与意图“unresolvedintent(未解析意图)”相关联,这与原始话语的分类结果不匹配。报告显示,与锚点“available”相关联的精度约为47.5%。当锚点同时包含词“money”和词“available”时,精度约为100%。

表1示例报告的解释部分(JSON格式)

/>

/>

/>

/>

/>

/>

图6图示了根据某些实施例的用于解释推理结果的系统600的示例。例如,系统600可以是用于致使实施过程500或如本文所述的类似过程的系统。系统600包括用户界面605、管理API 610、意图服务器615、网关620、工作流引擎625(例如,服务器)、以及数据库或云存储设备630。意图服务器615可以包括基于用户话语推断用户意图的分类器。工作流引擎625可以(例如,用python代码)执行应用程序635,以执行以上例如关于图5的过程500描述的分类解释。

客户端可以使用异步调用通过用户界面605和管理API 610向网关620提交具有分类查询(例如,话语)的解释请求。例如,客户端可以利用客户端设备与用户界面605进行交互以查看聊天机器人的各方面或者以其他方式与同聊天机器人相关联的服务进行交互。在一些实施例中,客户端可以使用系统600来查看聊天机器人在之前某一时间处理的话语、以及针对该话语生成的推理结果。例如,客户端可能使用特定的聊天机器人作为他们自己服务的一部分。

客户端可能会注意到,处理了特定的话语并且生成了针对话语的意料之外的推理结果(例如,话语“I would like to order a pizza”被预测为对应于处理客户退款的请求)。然后,客户端可以请求对基于话语的推理结果的解释,如510中所述。客户端可以在用户界面605处输入该请求,所述用户界面然后将请求路由到管理API 610。管理API 610可以是作为与客户端所使用的客户端设备分开的聊天机器人解释系统的一部分操作的API。

在一些实施例中,在管理API 610接收到异步调用后,管理API 610将调用转发到意图服务器615以路由到网关620。在其他实例中,在管理API 610接收到异步调用后,管理API 610将调用直接转发到网关620。在意图服务器615接收到调用的实例中,意图服务器615将调用转发到网关620。网关620为解释请求提供工作标识符,并且工作标识符经由意图服务器615、管理API 610和用户界面605被返回给用户。网关620通过将解释请求和相关联的工作标识符转发到工作流引擎625来发起用于处理解释请求的工作流。工作标识符可以是例如与诸如过程500等报告生成过程相对应的标识符。

工作流引擎625执行应用程序635以执行分类解释,例如,使用上面讨论的集束搜索技术。应用程序635可以在一轮或多轮中使用各种锚点生成新话语((例如,平均约500到2000个新话语),所述新话语是原始话语(即,解释请求内的分类查询)的变体),并将所述新合成话语馈送到意图服务器615。在一些实例中,应用程序635使用缓存来确保只有唯一的话语被提交给意图服务器615。例如,由应用程序635生成的一些合成话语可以是先前从聊天机器人系统的用户有组织地接收到的已知话语。意图服务器615公开API以从工作流引擎625获得意图列表和新话语。工作流引擎625基于获得的意图列表来生成对新话语的分类结果。根据诸如过程500等过程,应用程序635可以基于前一(或多)轮的分类结果来确定锚点的置信水平,选择具有最高置信水平的锚点,基于所选锚点来确定新锚点,基于新锚点来生成新的查询,并将新的查询馈送到意图服务器615。包括锚点、新合成话语、合成话语的分类结果、与锚点相关联的置信水平或其任何组合的结果可以与工作标识符一起由工作流引擎825和/或意图服务器815发送到数据库或云存储设备830(例如,对象存储器),以进行存储。

图7图示了根据某些实施例的用于取得推理结果的解释的系统700的示例。与系统600一样,系统700可以包括用户界面705、管理API 710、意图服务器715、网关720、以及数据库或云存储设备730。用户可以使用异步调用通过例如用户界面705和管理API710向网关720提交带有工作标识符的解释结果请求。在一些实例中,在管理API 710接收到异步调用后,管理API 710将调用转发到意图服务器715以路由到网关720。在其他实例中,在管理API710接收到异步调用后,管理API 710将调用直接转发到网关720。在意图服务器715接收到调用的实例中,意图服务器715将调用转发到网关720。网关720基于工作标识符取得包括锚点、合成话语、合成话语的分类结果、与锚点相关联的置信水平或其任何组合的结果。结果经由意图服务器715、管理API 710和用户界面705被返回给用户。可以使用多个工作标识符一次执行多个解释结果请求。

图8A图示了根据某些实施例的在解释计算期间的模拟CPU使用的示例。在图示的示例中,要分类和解释的话语是“another agent question(另一个代理问题)”。运行时间约为234秒。具体地,图8A图示了与完成请求所需的时间相比用于执行推理结果解释的中央处理单元(CPU)资源使用水平。

图8B图示了根据某些实施例的在解释计算期间的模拟存储器使用的示例。具体地,图8B图示了与完成请求所需的时间相比用于执行推理结果解释的存储器资源使用水平。

图9A图示了根据某些实施例的在解释计算期间的模拟CPU使用的示例。在图示的示例中,要分类和解释的话语是“I would like to have a large cheese pizza with atall glass of coke(我想要一个大奶酪披萨和一大杯可乐)”。运行时间约为933秒。具体地,图9A图示了与完成请求所需的时间相比用于执行推理结果解释的中央处理单元(CPU)资源使用水平。

图9B图示了根据某些实施例的在解释计算期间的模拟存储器使用的示例。具体地,图9B图示了与完成请求所需的时间相比用于执行推理结果解释的存储器资源使用水平。

图10A图示了根据某些实施例的在解释计算期间的模拟CPU使用的示例。在图示的示例中,要分类和解释的话语是“question(问题)”。运行时间约为101秒。具体地,图10A图示了与完成请求所需的时间相比用于执行推理结果解释的中央处理单元(CPU)资源使用水平。

图10B图示了根据某些实施例的在解释计算期间的模拟存储器使用的示例。具体地,图10B图示了与完成请求所需的时间相比用于执行推理结果解释的存储器资源使用水平。

生成训练数据集的技术

如上所述,生成包括合成话语的指示、合成话语的预测意图/技能以及合成话语的对应置信度值的报告对于确定聊天机器人系统如何处理接收到的话语是有用的。报告可以用于确定聊天机器人系统中存在的一些缺陷。例如,聊天机器人系统可能会错误地处理话语中的某些锚点词,并将错误的意图/技能预测为与该话语相关联。尽管消除ML确定的“黑盒”对于识别聊天机器人系统的缺陷非常有用,但随后必须对聊天机器人系统进行再训练,以防止错误的预测再次发生。

对聊天机器人进行训练和再训练的过程很困难,而且需要大量资源。例如,首先必须识别聊天机器人ML模型的缺陷区域。然后,必须生成训练数据集,以有效减少这些缺陷。训练数据集将包括多组训练话语以及与训练话语相对应的“基本事实”意图/技能。然后,将使用训练话语、使用基本事实意图/技能对ML模型进行训练以细化模型,从而更好地预测话语的意图/技能。获得训练数据集很困难,并且手动选择和构建训练数据集效率低下且需要大量资源。

图11是简化流程图,图示了根据某些实施例的用于使用合成话语来再训练模型的过程的示例。图11所描绘的处理可以以由相应系统的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)、硬件或其组合实施。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图11所呈现的且下文所描述的方法旨在是说明性的而非限制性的。尽管图11描绘了以特定序列或顺序发生的各个处理步骤,但这并不旨在是限制性的。在某些替代性实施例中,步骤可以以某种不同的顺序执行或者一些步骤还可以并行地执行。在某些实施例中,诸如在图1至图5中描绘的实施例中,图11中描绘的处理可以由预处理子系统来执行以根据某些实施例使用合成话语来再训练模型。机器学习模型可以包括例如神经网络模型或任何其他机器学习模型,并且可以用作例如基于用户话语对用户意图进行分类的分类器。

更具体地,过程1100描述了用于获得训练数据集并再训练ML模型以基于输入话语预测意图/技能的过程。如上所述,参考图5和过程500,生成与原始话语的一组锚点和作为聊天机器人系统的一部分操作的ML模型相对应的多个合成话语。作为过程500的一部分而生成的合成话语可以用于识别ML模型所存在的缺陷,具体是处理原始话语和类似话语所存在的缺陷。在这种情况下,使用原始话语和/或类似话语以及对应的基本事实对ML模型进行再训练以改进模型功能是有益的。应当理解,在步骤530-550中生成的合成话语是用于再训练机器学习模型的最佳候选。

过程1100可以可选地开始于过程500的550,其中,识别具有最高置信水平的一组锚点。在一些实施例中,过程1100开始于过程550可以完成框530-550的迭代的最后一次迭代并且具有最高置信水平的一组锚点被识别时。这组锚点和对应的合成话语随后被用作过程1100的一部分以生成用于再训练ML模型的训练数据集。在一些实施例中,过程1100与图5的560并行操作。具体地,合成话语可以在生成包括这组锚点的报告的同时在过程1100中使用。

过程1100继续到1110,其中,接收一个或多个话语,每个话语对应于一个或多个置信水平中的置信水平。在过程1100开始于过程500的步骤550的一些实施例中,一个或多个话语是作为报告生成过程的一部分而生成的合成话语。例如,响应于接收到解释推理结果的请求,执行过程500的系统还可以自动生成用于与请求中指定的话语相关的特定ML模型的再训练数据集。

在其他实施例中,一个或多个话语是在之前的某个时间存储在计算机存储器中的话语。例如,一个或多个话语可以是与由将根据过程1100再训练的ML模型所预测的预测意图/技能相对应的话语。话语可能先前已经被存储以用于未来对ML模型进行训练,例如,作为过程500的先前迭代的一部分。

每个话语对应一个置信水平。如本文所述,置信水平表示一组锚点与特定话语相关的强度,其基于这组锚点的合成话语被分类为与特定话语相同的意图/技能的比例。例如,每个合成话语可以对应于用于生成合成话语的一组锚点的已确定置信度值。在一些实施例中,每个合成话语独立地对应于置信度值。例如,在给定特定话语作为输入的情况下对特定意图/技能进行预测时,经训练的神经网络ML模型的节点之间的对应程度可以用于确定合成话语的置信水平。在过程1100开始于过程500的550的一些实施例中,一个或多个合成话语已经对应于如在过程500的步骤540中确定的置信水平。

在1120处,将在1110中接收到的一个或多个置信度值与置信度阈值进行比较。具体地,将一个或多个置信度值中的每个置信度值与置信度阈值进行比较,以确定未达到或超过阈值的置信度值的子集。在各种实施例中,置信度阈值是对应于特定话语的预测意图/技能的相对可允许对应程度的值。例如,训练数据集通常在ML模型已经不能以高置信程度预测与训练数据集的话语相关联的意图/技能时对训练ML模型最有用。训练的结果将是ML模型将在训练之后以更高的置信水平预测与相似话语相对应的意图/技能。因此,最有用的是,选择与落在或低于期望置信度阈值的置信水平相对应的话语,以其包括在训练数据集中。与高于阈值的置信水平相对应的话语可能对训练ML模型有用,但不会像与低于阈值的置信水平相对应的话语那样高效地影响模型的训练。

在一些实施例中,置信水平阈值可以基于来自与聊天机器人系统和ML模型相关联的实体的一些输入来确定。具体地,拥有或操作聊天机器人系统的实体,以及因此ML模型可以指定置信度阈值以优化新训练数据集的生成。例如,托管聊天机器人系统的客户端可以决定将置信度阈值设置为某个值,这样能够生成足够的训练数据集,但要保持训练数据集足够小,以便在一定时间量内再训练模型。在一些实施例中,可以基于与在1110中接收到的话语相关联的度量来向客户端建议供使用的置信度阈值。

在1130处,确定训练话语的子集,训练话语的子集中的每个话语对应于小于或等于置信度阈值的置信度值。与小于或等于置信度阈值的置信水平相对应的接收到的一个或多个话语中的任何话语将被包括在训练话语的子集中并最终用于再训练模型。例如,置信度阈值可以设置为值0.80(或80%置信度)。对应于一个或多个话语中的第一话语的置信度值可以为0.90(或话语对应于特定意图/技能的置信度为90%)。对应于第二话语的置信度值可以为0.67(或67%)。第一话语被确定为不属于训练话语的子集,因为其对应的置信水平大于置信度阈值。第二话语被确定为属于训练话语的子集,因为其对应的置信水平小于或等于置信度阈值。在一些实施例中,阈值可以进一步指定可以获得话语的特定标准,例如,训练话语的子集仅包含与小于或等于置信度阈值的置信度值相对应的话语的标准。本领域的普通技术人员将理解,可以使用与阈值相关的任何标准。例如,在替代性实施例中,为了微调ML模型以便特别地预测话语的特定意图/技能,可以仅选择概率大于或等于阈值的话语。对于客户端而言,了解哪些话语对应于置信度较低的预测以了解如何再训练ML模型通常很重要。在一些情况下,客户端还可能请求对具有更高置信度值的话语分类进行解释,以了解模型为何以更高的置信率对意图/技能进行预测。

在1140处,确定对应于训练话语的子集的一个或多个训练类别。具体地,一个或多个训练类别是与将用于训练ML模型的训练话语的子集相关联的基本事实。例如,客户端可以访问训练话语的子集的列表。然后,客户端可以为训练话语的子集中的每个话语选择基本事实意图/技能,以形成完整的训练数据集。在一些实施例中,一个或多个训练类别可以用话语可以对应的、作为ML模型的正确基本事实预测的交互式可能意图/技能列表来表示。可以从与ML模型相关联的一个或多个已知意图的交互式列表中选择基本事实意图。选择后,基本事实意图就被用于创建新的训练数据集。本文描述了与训练话语的子集相关联的基本事实意图的交互式列表,包括在下面的图12中。

在1150处,基于确定的一个或多个训练类别,使用训练话语的子集来训练模型。可以将新的训练数据集输入到一个或多个ML模型以训练ML模型。例如,确定的训练话语的子集用于根据在1140中确定的基本事实训练类别对经训练的ML模型进行再训练。一个结果是,先前被分类为由报告(例如,在560中生成的报告)确定的错误预测意图/技能的话语将被用于训练ML模型,以便更高效地预测类似话语的正确意图/技能。另一个结果是,先前被分类为正确预测意图/技能、但置信水平低于可接受置信水平(即,置信度阈值)的话语被用于进一步加强正确的模型预测行为。

在图11中未描绘的各种实施例中,可以生成类似于在1110中接收的一个或多个话语且基于置信度阈值的一个或多个新合成话语。例如,为了创建用于再训练模型的更全面的训练数据集,可以基于词或短语替换来生成一个或多个新合成话语,类似于过程500的步骤530。新合成话语可以基于以上在530中描述的锚点替换或另一技术。例如,可以响应于确定训练话语的子集处于或低于置信度阈值而生成一个或多个新合成话语。这些人工话语可以包括在再训练数据集中并且可以对应于由用户设置的已确定的训练类别。例如,如果训练数据集必须包含一定大小的话语,则可以生成一个或多个新合成话语并将其用于补充训练数据集。在其他实施例中,为了满足训练数据集中所需的话语数量,可以自动提高或降低置信度阈值。

在图11中未描绘的各种实施例中,训练话语的子集在用于再训练ML模型之前会经历基于上下文的过滤过程。基于上下文的过滤过程将细化话语以符合特定于环境的上下文。例如,客户服务聊天机器人可能属于禁止污秽或攻击性言语模式的上下文环境。在再训练之前,可以对所获得的一个或多个话语和/或合成话语进行过滤以移除话语中的所有污秽或攻击性语言。例如,在训练模型之前,可以将污秽词替换为非污秽性的相似词,以减少新训练的ML模型中的污秽偏见。在另一示例中,机器学习模型可能属于被禁止在对查询的任何响应中包含个人识别信息的上下文环境。可以对训练话语的子集进行过滤以将话语中的任何专有名词或个人识别信息替换为通用信息/词。过滤过程可以包括任何过滤,以实现特定于环境的训练过程的目标。

可以迭代地执行过程1100的框1110-1150,其中,基于先前再训练的结果迭代地生成训练话语的子集。例如,在对模型进行再训练1150之后,可以修改训练数据集中的话语以生成与训练话语的子集具有相似话语的测试数据集。可以将测试数据集输入到新训练的ML模型,以预测测试数据集中每个话语的分类。然后,可以使用测试数据集中的话语和话语的对应置信度值来重复过程1100的步骤1110以进一步再训练ML模型。在各种实施例中,迭代地重复操作1110-1150直到所生成话语的置信度值都不小于或等于阈值。

图12图示了根据某些实施例的用于使用合成话语来再训练模型的示例界面。具体地,图12描绘了用于生成用于再训练机器学习模型的训练数据集的示例界面1200。图12中描绘的界面可以由诸如客户端或用户等实体用来生成用于改进ML模型的功能的训练数据集。界面1200包括阈值字段1210。阈值字段1210可以是显示如在过程1100中使用的置信度阈值的字段。阈值字段1210可以是界面1200的交互部分,客户端可以操纵所述交互部分来输入置信度阈值。例如,如以上参考图11所描述的,可以设置置信度阈值,以用于确定与高于置信度阈值的置信水平(例如,如图12所描绘的“置信度得分”)不对应的训练话语的子集。

如图12所描绘的,接收到的一个或多个话语显示在界面1200上的综合列表中。例如,如图12所描绘的,界面1200包括话语列表1220。在一些实施例中,话语列表1220是接收到的一个或多个话语(诸如在过程1100的步骤1110中接收到的话语)的列表。关于图12值得注意的是,获得并在话语列表1220中显示的话语是相似话语的变体,并且可以是以上关于过程500和具体的框530描述的用于合成话语生成的过程的结果。界面1200包括预测意图列表1230。预测意图列表1230与话语列表1220并排显示,以便作为综合界面的一部分来示出所显示的话语被预测为对应的意图。例如,话语列表1220中描绘的话语与意图列表1230中的先前在分类结果步骤(例如,过程500的540)中预测的预测意图并排显示。

界面1200包括置信度得分列表1240。置信度得分列表1240可以与话语列表1220和预测意图列表1230并排显示,以便作为综合界面的一部分来示出同预测意图以及与所述预测意图一起显示的输入话语相关的对应置信水平。界面1200包括交互式意图选择器1250。交互式意图选择器1250是界面1200的交互式元素,所述交互式元素允许使用界面的客户端选择对应于对应话语的基本事实意图以包括在训练数据集中,例如,作为过程1100的一部分1140。在交互式意图选择器1250中选择的话语可以用作对应话语的基本事实意图,并致使所述话语包括在训练话语的子集中,只要所述话语与小于或等于置信度得分的置信度得分相关联。因此,使用界面1200的客户端可以生成具有话语的综合训练数据集,而不需要从头开始手动创建新的训练话语。

图13图示了根据某些实施例的用于使用合成话语来再训练模型的示例界面。具体地,图13描绘了图12的带有附加交互字段的综合界面1200。阈值输入字段1300是指定的置信度阈值可以输入到其中的交互式阈值字段。阈值输入字段1300可以对应于用户已经与之交互后的阈值字段1210。图13中描绘的界面的用户可以利用界面来执行本文描述的方法,包括图11中描述的过程。例如,用户可以首先在阈值输入字段1300中指定置信度阈值,所述置信度阈值将被用作过程1100和具体的框1120和1130的一部分。输入置信度阈值将用于确定要包含在训练数据集中以用于训练ML模型的话语的子集。

在各种实施例中,在图13中未描绘,按钮或其他交互式元素可以耦合到显示的话语,所述交互式元素当与之交互时将致使生成与显示的话语相似的合成话语。客户端可以选择界面的交互式按钮或元素以开始基于客户端进行的输入生成一组训练数据集。在各种实施例中,只有由客户端使用所显示话语旁边的复选框手动选择的话语才会被用于再训练数据,而不是只有与达到或低于置信度阈值的置信度值相关联的话语。下面以JavaScript对象表示法(JSON)脚本示出了根据某些实施例的生成合成话语的示例。例如,由下面的脚本描述的合成话语的生成可以用于诸如530和/或过程1100的合成话语生成过程。

表2生成合成话语的示例的解释部分(JSON格式)

/>

/>

具体地,示出了用于生成基于特定话语的相似合成话语的步骤。这些步骤对应于创建用于再训练模型的一组合成话语(不是手动编写的话语或从话语储存库中获取的话语)。作为再训练数据生成的一部分,生成合成话语并将其添加到数据对象“utterances_with_similar_predictions(话语具有相似预测)”。这些话语是用“b’Add”命令添加的。

用于请求报告并生成训练数据集的组合界面

图14图示了根据某些实施例的用于解释推理结果作为训练数据集生成过程的一部分的示例界面。具体地,图14描绘了根据某些实施例的用于显示给定话语的情况下对一个或多个推理结果的综合分析的界面1400。例如,图14包含交互式界面1400,其显示了在给定某一输入话语的情况下与机器学习模型进行的预测相关联的推理结果。界面1400描绘了根据某些标准而显示的各个推理结果的列表。如图14所描绘的,显示了推理结果包括将输入话语分类为与意图“unresolvedIntent”意图相匹配的所有话语。对应的话语连同对应的推理结果一起显示在界面1400上。

推理结果包括被预测与所述话语最密切对应的意图、以及可能已经与话语相对应的其他意图。例如,在第一行中,显示“add another song to the Cita Romnticaplaylist(将另一首歌曲添加到浪漫约会播放列表)”的话语以及在推理结果中确定的话语的各个方面。除了被预测与话语相对应的“unresolvedIntent”意图之外,还显示“净胜比数(win margin)”。净胜比数为与结果意图是对应于话语的预测概率相对应的得分。在一些实施例中,净胜比数是表示主要意图/技能被预测为对应于话语的第一置信度值与表示次要意图/技能被预测为对应于所述话语的第二置信度值之间的计算差值。

推理报告还包括意图得分图表,示出了潜在可预测意图的细分、以及话语与预测意图之间的对应关系的相对置信水平。推理报告包括交互式意图选择字段。交互式意图选择字段可以在建议按钮附近呈现,所述建议按钮当与之交互时将自动填充具有建议的对应意图的字段。自动填充字段可以用于生成话语和基本事实训练类别对,以包含在用于再训练模型的训练数据集中。例如,客户端可以选择话语“add another song to the CitaRomntica playlist”旁边的复选框。然后,客户端可以按下按钮,诸如界面1400的“AddExample(添加示例)”按钮,以致使生成训练数据点,所述训练数据点包括话语以及由客户端选择的对应基本事实意图。然后,可以将训练数据点包括在训练数据集中,以在将来训练聊天机器人系统的ML模型。

界面1400还包括用于分析推理结果队列的按钮。例如,客户端可以按下“Add toAnalyze Queue(添加到分析队列)”按钮来请求与给定对应话语的情况下的推理结果相关的解释报告(如图5的过程500中描述的),而不是按下“添加示例”按钮来生成训练数据点。

图15图示了根据某些实施例的用于解释推理结果的示例界面。具体地,图15描绘了在已经选择推理结果和对应话语之后用于介绍分析队列的类似于界面1400的界面。通知1500可以被包括在界面上以通知用户所选推理结果已经被添加到已经请求的推理结果队列中。例如,通过使用界面1400中的复选框选择推理结果并点击“Analyze Queue(分析队列)”按钮,可以针对与所选推理结果和话语相关联的对应话语和ML模型发起诸如过程500等过程。通知1500然后可以提醒用户正在分析特定的推理结果并且正在生成解释报告。

图16图示了根据某些实施例的用于解释推理结果的示例界面。具体地,图16描绘了在话语已经被话语分析工具(诸如利用过程500的话语分析工具)分析之后的类似于界面1400/1500的界面。通知1600可以被包括在界面上以通知用户所选推理结果/话语已经被分析并且报告准备好供查看。

图17图示了根据某些实施例的用于解释推理结果的示例界面。具体地,图17描绘了在解释报告未决且尚未完成生成时的与界面1400/1500/1600类似的界面。例如,当界面的客户端或用户在等待解释报告生成时,用户可以看到图17中描绘的显示界面,以告知用户解释分析尚未完成。

下面以JavaScript对象表示法(JSON)脚本的形式示出了根据某些实施例的提交对话语的分类结果进行解释的请求的示例。

表3生成合成话语的示例的解释部分(JSON格式)

/>

/>

/>

在所示的示例中,可以通过输入查询(例如,话语“money available”)、随后是命令“getexplain”来提交请求。如图所示,可以针对查询和解释请求生成JavaScript对象表示法(JSON)文件。

图18图示了根据某些实施例的对话语的分类的解释的输出的示例。在图示的示例中,分析的话语是如上表所示的“another agent question”。输出可以包括指向报告的链接1810、例如作为过程500的530的一部分而被选择的锚点列表1820、以及锚点列表1820中的每组锚点的对应置信水平1830。例如,与锚点集“问题(question)”相关联的置信水平可能约为33.8%,对应于0.33的置信度度量,即对输入话语的正确意图进行预测。与使用锚点词“question(问题)”和“another(另一个)”的锚点“question another(问题另一个)”相关联的置信度约为100%。这表示在给定锚点词的情况下预测的完全准确的正确答案(例如,ML模型先前已经在这些锚点词上进行了大量训练)。

图19描绘了用于实施一些实施例的分布式系统1900的简化图。在图示的示例中,分布式系统1900包括经由一个或多个通信网络1910耦接到服务器1912的一个或多个客户端计算设备1902、1904、1906和1908。客户端计算设备1902、1904、1906和1908可以被配置为执行一个或多个应用程序。

在各种示例中,服务器1912可以被适配成运行实现本公开所描述的一个或多个实施例的一个或多个服务或软件应用程序。在某些示例中,服务器1912还可以提供可以包括非虚拟环境和虚拟环境的其他服务或软件应用程序。在一些示例中,这些服务可以作为基于web的服务或云服务(如在软件即服务(SaaS)模型下)提供给客户端计算设备1902、1904、1906和/或1908的用户。操作客户端计算设备1902、1904、1906和/或1908的用户进而可以利用一个或多个客户端应用程序来与服务器1912交互以利用这些部件所提供的服务。

在图19所描绘的配置中,服务器1912可以包括实施由服务器1912执行的功能的一个或多个部件1918、1920和1922。这些部件可以包括可以由一个或多个处理器、硬件部件或其组合执行的软件部件。应了解,可以与分布式系统1900不同的各种不同系统配置是可能的。因此,图19所示出的示例是用于实施示例系统的分布式系统的一个示例并且不旨在是限制性的。

用户可以使用客户端计算设备1902、1904、1906和/或1908来执行一个或多个应用程序,所述一个或多个应用程序可以生成然后可以根据本公开的传授内容服务的一个或多个存储请求。客户端设备可以提供使客户端设备的用户能够与客户端设备交互的接口。客户端设备还可以经由该接口向用户输出信息。尽管图19描绘了仅四个客户端计算设备,但是可以支持任何数量的客户端计算设备。

客户端设备可以包括各种类型的计算系统,如便携式手持设备、如个人计算机和膝上型计算机等通用计算机、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息传递设备、传感器或其他感测设备等。这些计算设备可以运行各种类型和版本的软件应用程序和操作系统(例如,Microsoft

(多个)通信网络1910可以是本领域技术人员所熟悉的可以使用各种可用协议中的任何一种支持数据通信的任何类型的网络,所述可用协议包括但不限于TCP/IP(传输控制协议/因特网协议)、SNA(系统网络架构)、IPX(因特网分组交换)、

服务器1912可以由以下各项构成:一个或多个通用计算机、专用服务器计算机(通过示例的方式包括PC(个人计算机)服务器、

服务器1912中的计算系统可以运行一个或多个操作系统,所述一个或多个操作系统包括以上所讨论的那些操作系统中的任何一个操作系统以及任何可商购获得的服务器操作系统。服务器1912也可以运行各种附加服务器应用程序和/或中间层应用程序中的任何一种应用程序,包括HTTP(超文本运输协议)服务器、FTP(文件传送协议)服务器、CGI(通用网关接口)服务器、

在一些实施方式中,服务器1912可以包括一个或多个应用程序以分析并合并从客户端计算设备1902、1904、1906和1908的用户接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于

分布式系统1900还可以包括一个或多个数据储存库1914、1916。在某些示例中,这些数据储存库可以用于存储数据和其他信息。例如,数据储存库1914、1916中的一个或多个数据储存库可以用于存储信息,如与存储虚拟机有关的信息等、将应用程序ID映射到所选存储虚拟机的应用程序的信息以及由服务器1912在执行认证功能时使用的其他信息。数据储存库1914、1916可以驻留在各种位置。例如,服务器1912所使用的数据储存库可以在服务器1912本地或者可以远离服务器1912并经由基于网络的或专用的连接与服务器1912通信。数据储存库1914、1916可以是不同类型。在某些示例中,服务器1912所使用的数据储存库可以是数据库,例如关系数据库,如由Oracle

在某些示例中,数据储存库1914、1916中的一个或多个数据储存库还可以被应用程序用来存储应用程序数据。应用程序所使用的数据储存库可以是不同类型,如例如键值存储储存库、对象存储储存库或由文件系统支持的通用存储储存库。

在某些示例中,本公开所描述的功能可以经由云环境作为服务提供。图20是用于实施一些实施例的基于云的系统环境系统2000的简化框图。在基于云的系统环境系统2000中,根据某些示例,各种服务可以作为云服务提供。在图20所描绘的示例中,云基础设施系统2002可以提供可以由用户使用一个或多个客户端计算设备2004、2006和2008请求的一个或多个云服务。云基础设施系统2002可以包括一个或多个计算机和/或服务器,所述一个或多个计算机和/或服务器可以包括以上针对服务器1912所描述的那些计算机和/或服务器。云基础设施系统2002中的计算机可以被组织成通用计算机、专用服务器计算机、服务器群、服务器集群或任何其他适当的布置和/或组合。

(多个)网络2010可以促进客户端计算设备2004、2006和2008与云基础设施系统2002之间的数据通信和交换。(多个)网络2010可以包括一个或多个网络。网络可以是相同或不同的类型。(多个)网络2010可以支持一个或多个通信协议(包括有线和/或无线协议)以促进通信。

图20所描绘的示例仅是云基础设施系统的一个示例并且不旨在是限制性的。应了解,在一些其他示例中,云基础设施系统2002可以具有比图20所描绘的那些部件更多或更少的部件、可以组合两个或更多个部件或者可以具有不同的部件配置或布置。例如,尽管图20描绘了三个客户端计算设备,但是在替代性示例中,可以支持任何数量的客户端计算设备。

术语云服务通常用于指代通过服务提供商的系统(例如,云基础设施系统2002)按需且经由如因特网等通信网络变得可用于用户的服务。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自身的室内服务器和系统不同。云服务提供商的系统由云服务提供商管理。因此,客户可以使自身利用由云服务提供商提供的云服务,而不必针对服务购买单独的许可证、支持或硬件和软件资源。例如,云服务提供商的系统可以托管应用程序,并且用户可以经由因特网按需订购并使用应用程序,而用户不必购买用于执行应用程序的基础设施资源。云服务被设计成提供对应用程序、资源和服务的容易的、可伸缩的访问。几个提供商提供云服务。例如,由加利福尼亚州红木海岸(Redwood Shores,California)的Oracle

在某些示例中,云基础设施系统2002可以使用不同的模型(如在软件即服务(SaaS)模型、平台即服务(PaaS)模型、基础设施即服务(IaaS)模型和其他模型(包括混合服务模型)下提供一个或多个云服务。云基础设施系统2002可以包括实现对各种云服务的供给的一套应用程序、中间件、数据库和其他资源。

SaaS模型使应用程序或软件能够作为服务通过如因特网等通信网络输送给客户,而客户不必购买底层应用程序的硬件或软件。例如,可以使用SaaS模型为客户提供对由云基础设施系统2002托管的按需应用程序的访问。Oracle

IaaS模型通常用于将基础设施资源(例如,服务器、存储、硬件和联网资源)作为云服务提供给客户以提供弹性计算和存储能力。由Oracle

PaaS模型通常用于提供使客户能够开发、运行并管理应用程序和服务而客户不必采购、构建或维护这种资源的平台和环境资源作为服务。由Oracle

云服务通常是以按需自助服务基础、基于订阅、可弹性伸缩、可靠、高度可用且安全的方式提供的。例如,客户可以经由订阅订单来订购由云基础设施系统2002提供的一个或多个服务。然后,云基础设施系统2002执行处理以提供客户的订阅订单中请求的服务。例如,用户可以如上文所描述的请求云基础设施系统注册应用程序并且按照应用程序的指定要求向应用程序提供服务。云基础设施系统2002可以被配置为提供一个或甚至多个云服务。

云基础设施系统2002可以经由不同的部署模型提供云服务。在公共云模型中,云基础设施系统2002可以由第三方云服务提供商拥有,并且云服务被提供给任何一般的公众客户,其中,所述客户可以是个人或企业。在某些其他示例中,在私有云模型下,可以在组织内(例如,在企业组织内)操作云基础设施系统2002,并且向组织内的客户提供服务。例如,客户可以是如人力资源部门、薪资部门等企业的各个部门或甚至是企业内的个人。在某些其他示例中,在社区云模型下,云基础设施系统2002和所提供的服务可以由有关的社区中的几个组织共享。也可以使用如以上所提到的模型的混合等各种其他模型。

客户端计算设备2004、2006和2008可以是不同类型并且可以能够操作一个或多个客户端应用程序。用户可以使用客户端设备与云基础设施系统2002交互,如请求由云基础设施系统2002提供的服务。例如,用户可以使用客户端设备请求本公开所描述的认证有关服务。

在一些示例中,由云基础设施系统2002执行的用于提供服务的处理可以涉及大数据分析。此分析可以涉及使用、分析并操纵大数据集以检测并可视化数据中的各种趋势、行为、关系等。该分析可以由一个或多个处理器执行,从而可能并行地处理数据、使用数据执行模拟等。例如,大数据分析可以由云基础设施系统2002执行,以用于基于应用程序的声明的认证有关要求来确定针对特定应用程序要选择哪个存储虚拟机。用于此分析的数据可以包括结构化数据(例如,存储在数据库中或根据结构化模型结构化的数据)和/或非结构化数据(例如,数据块(二进制大对象))。

如图20中的示例所描绘的,云基础设施系统2002可以包括被用于促进供给由云基础设施系统2002提供的各种云服务的基础设施资源2030。基础设施资源2030可以包括例如处理资源、存储或存储器资源、联网资源等。在某些示例中,可用于服务从应用程序请求的存储的存储虚拟机可以是云基础设施系统2002的一部分。在其他示例中,存储虚拟机可以是不同系统的一部分。

在某些示例中,为了促进对这些资源的高效供给以用于支持由云基础设施系统2002为不同客户提供的各种云服务,资源可以被捆绑成资源组或资源模块(也称为“群(pod)”)。每个资源模块或群可以包括一种或多种类型的资源的预先集成且优化的组合。在某些示例中,可以针对不同类型的云服务预先供给不同的群。例如,可以针对数据库服务供给第一组群、可以针对Java服务供给第二组群(所述第二组群可以包括与第一组群中的群不同的资源组合)等。对于一些服务,被分配用于供给服务的资源可以在服务之间共享。

云基础设施系统2002自身可以在内部使用由云基础设施系统2002的不同部件共享并且促进云基础设施系统2002供给服务的服务2032。这些内部共享服务可以包括但不限于安全和身份服务、整合服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高度可用性、备份和恢复服务、用于实现云支持的服务、电子邮件服务、通知服务、文件传送服务等。

云基础设施系统2002可以包括多个子系统。这些子系统可以以软件或硬件或其组合实施。如图20所描绘的,子系统可以包括使得云基础设施系统2002的用户或客户能够与云基础设施系统2002交互的用户接口子系统2012。用户接口子系统2012可以包括各种不同的接口,如web接口2014、在线商店接口2016(其中,广告并且客户可购买由云基础设施系统2002提供的云服务)和其他接口2018。例如,客户可以使用客户端设备请求(服务请求2034)由云基础设施系统2002使用接口2014、2016和2018中的一个或多个接口提供的一个或多个服务。例如,客户可以访问在线商店、浏览由云基础设施系统2002提供的云服务并且针对客户希望订阅的由云基础设施系统2002提供的一个或多个服务下订阅订单。服务请求可以包括标识客户和客户期望订阅的一个或多个服务的信息。例如,客户可以针对由云基础设施系统2002提供的服务下订阅订单。作为订单的一部分,客户可以提供识别服务要针对其提供的应用程序的信息以及应用程序的一个或多个凭证。

在某些示例(如图20所描绘的示例)中,云基础设施系统2002可以包括被配置成处理新订单的订单管理子系统(OMS)2020。作为该处理的一部分,OMS 2020可以被配置为:为客户创建账户(如果尚未创建的话);从客户接收要用于向客户开具账单以向客户提供所请求的服务的账单和/或计费信息;验证客户信息;在验证之后,为客户预订订单;并且策划各种工作流程来准备订单以进行供给。

一旦被正确地验证,那么,OMS 2020就可以调用被配置成为订单供给资源(包括处理资源、存储器资源和联网资源)的订单供给子系统(OPS)2024。供给可以包括为订单分配资源并配置资源以促进客户订单所请求的服务。为订单供给资源的方式和所供给的资源的类型可以取决于客户已经订购的云服务的类型。例如,根据一个工作流程,OPS2024可以被配置为确定正在请求的特定云服务并且识别可能已经为所述特定云服务预先配置的群的数量。为订单分配的群的数量可以取决于所请求服务的大小/量/层级/范围。例如,要分配的群的数量可以基于服务所要支持的用户的数量、正在请求的服务的持续时间等来确定。然后,可以为特定的请求客户定制分配的群以用于提供所请求服务。

在某些示例中,如上文所描述的设置阶段处理可以作为供给过程的一部分由云基础设施系统2002来执行。云基础设施系统2002可以生成应用程序ID并从云基础设施系统2002自身所提供的存储虚拟机中或从除云基础设施系统2002以外的其他系统所提供的存储虚拟机中为应用程序选择存储虚拟机。

云基础设施系统2002可以向请求客户发送回应或通知2044,以指示何时所请求服务现在已准备好使用。在一些实例中,可以向客户发送使客户能够开始使用和利用所请求服务的益处的信息(例如,链接)。在某些示例中,对于请求服务的客户,回应可以包括由云基础设施系统2002生成的应用程序ID和识别由云基础设施系统2002对应于应用程序ID为应用程序选择的虚拟机的信息。

云基础设施系统2002可以向多个客户提供服务。对于每个客户,云基础设施系统2002负责管理与从客户接收的一个或多个订阅订单有关的信息、维护与订单相关的客户数据并且向客户提供所请求服务。云基础设施系统2002还可以收集关于客户使用所订阅服务的使用情况统计数据。例如,可以收集所使用的存储量、所传送的数据量、用户的数量以及系统开机时间量和系统停机时间量等的统计数据。可以使用该使用情况信息向客户开具账单。可以例如以月为周期完成开具账单。

云基础设施系统2002可以并行地向多个客户提供服务。云基础设施系统2002可以存储这些客户的信息(可能包括专有信息)。在某些示例中,云基础设施系统2002包括被配置成管理客户信息并提供对所管理信息的分离使得与一个客户有关的信息不能被另一个客户访问的身份管理子系统(IMS)2028。IMS 2028可以被配置成提供如身份服务等各种安全有关服务,所述服务可以包括例如信息访问管理、认证和授权服务、用于管理客户身份和角色以及有关能力的服务等。

图21图示了用于实施一些实施例的计算机系统2100的示例。在一些示例中,计算机系统2100可以用于实施上文所描述的应用程序系统、访问管理系统、数据中心内的系统以及各种服务器和计算机系统中的任何一个。如图21所示,计算机系统2100包括各种子系统,所述子系统包括通过总线子系统2102与多个其他子系统通信的处理子系统2104。这些其他子系统可以包括处理加速单元2106、I/O子系统2108、存储子系统2118和通信子系统2124。存储子系统2118可以包括非暂态计算机可读存储介质,所述非暂态计算机可读存储介质包括计算机可读存储介质2122和系统存储器2110。

总线子系统2102提供用于允许计算机系统2100的各个部件和子系统按预期彼此通信的机构。虽然总线子系统2102被示意性地示出为单个总线,但是总线子系统的替代性示例可以利用多个总线。总线子系统2102可以是包括存储器总线或存储器控制器、外围总线、使用各种总线架构中的任何一种的局部总线等的几种类型的总线结构中的任何一种。例如,这种架构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线以及外围部件互连(PCI)总线(所述PCI总线可以被实施为被制造成IEEE P1386.1标准的夹层(Mezzanine)总线)等。

处理子系统2104控制计算机系统2100的操作并且可以包括一个或多个处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。处理器可以包括单核处理器或多核处理器。计算机系统2100的处理资源可以被组织成一个或多个处理单元2132、2134等。处理单元可以包括一个或多个处理器、来自相同或不同处理器的一个或多个核、核和处理器的组合或核和处理器的其他组合。在一些示例中,处理子系统2104可以包括如图形处理器、数字信号处理器(DSP)等一个或多个专用协处理器。在一些示例中,处理子系统2104的处理单元中的一些或全部可以使用如专用集成电路(ASIC)或现场可编程门阵列(FPGA)等定制电路来实施。

在一些示例中,处理子系统2104中的处理单元可以执行存储在系统存储器2110中或计算机可读存储介质2122上的指令。在各种示例中,处理单元可以执行各种程序或代码指令并且可以维护多个同时执行的程序或过程。在任何给定时间,要执行的程序代码中的一些或全部可以驻留在系统存储器2110中和/或计算机可读存储介质2122上(潜在地包括驻留在一个或多个存储设备上)。通过适合的编程,处理子系统2104可以提供上文所描述的各种功能。在计算机系统2100在执行一个或多个虚拟机的实例中,可以向每个虚拟机分配一个或多个处理单元。

在某些示例中,可以可选地提供处理加速单元2106以用于执行定制处理或用于卸载处理子系统2104所执行的处理中的一些处理,从而加速计算机系统2100所执行的总体处理。

I/O子系统2108可以包括用于向计算机系统2100输入信息和/或用于从或经由计算机系统2100输出信息的设备和机构。通常,使用术语输入设备旨在包括用于向计算机系统2100输入信息的所有可能类型的设备和机构。用户接口输入设备可以包括例如键盘、如鼠标或轨迹球等指向设备、合并到显示器中的触摸板或触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、具有话音命令识别系统的音频输入设备、麦克风以及其他类型的输入设备。用户接口输入设备还可以包括运动感测和/或姿势识别设备,如使用户能够控制输入设备并与输入设备交互的Microsoft

用户界面输入设备的其他示例包括但不限于三维(3D)鼠标、操纵杆或指向杆、游戏手柄和图形板以及音频/视频设备(如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码读取器、3D扫描仪、3D打印机、激光测距仪和眼睛注视跟踪设备)。另外,用户接口输入设备可以包括例如医学成像输入设备,如计算机断层扫描、磁共振成像、正电子发射断层扫描和医学超声检查设备。用户接口输入设备还可以包括例如音频输入设备,如MIDI键盘、数码乐器等。

通常,使用术语输出设备旨在包括用于从计算机系统2100向用户或其他计算机输出信息的所有可能类型的设备和机构。用户接口输出设备可以包括显示子系统、指示灯或如音频输出设备等非视觉显示器。显示子系统可以是阴极射线管(CRT)、平板设备(如使用液晶显示器(LCD)或等离子显示器的平板设备)、投影设备、触摸屏等。例如,用户接口输出设备可以包括但不限于在视觉上传达文本、图形和音频/视频信息的各种显示设备,如监视器、打印机、扬声器、头戴式耳机、汽车导航系统、绘图仪、话音输出设备和调制解调器。

存储子系统2118提供用于存储计算机系统2100所使用的信息和数据的储存库或数据存储。存储子系统2118提供用于存储提供一些示例的功能的基本编程和数据构造的有形非暂态计算机可读存储介质。存储子系统2118可以存储当由处理子系统2104执行时提供上文所描述的功能的软件(例如,程序、代码模块、指令)。软件可以由处理子系统2104的一个或多个处理单元执行。存储子系统2118还可以根据本公开的传授内容提供认证。

存储子系统2118可以包括一个或多个非暂态存储器设备,所述一个或多个非暂态存储器设备包括易失性存储器设备和非易失性存储器设备。如图21所示,存储子系统2118包括系统存储器2110和计算机可读存储介质2122。系统存储器2110可以包括多个存储器,所述多个存储器包括用于在程序执行期间存储指令和数据的易失性主随机存取存储器(RAM)和其中存储有固定指令的非易失性只读存储器(ROM)或闪速存储器。在一些实施方式中,包含在启动期间帮助计算机系统2100内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以存储在ROM中。RAM通常包含目前由处理子系统2104操作并执行的数据和/或程序模块。在一些实施方式中,系统存储器2110可以包括如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等多种不同类型的存储器。

通过示例而非限制的方式,如图21所描绘的,系统存储器2110可以加载正在执行的应用程序2112(所述应用程序可以包括如Web浏览器、中间层应用程序、关系数据库管理系统(RDBMS)等各种应用程序)、程序数据2114和操作系统2116。通过示例的方式,操作系统2116可以包括各种版本的Microsoft

计算机可读存储介质2122可以存储提供一些示例的功能的编程和数据构造。计算机可读存储介质2122可以为计算机系统2100提供对计算机可读指令、数据结构、程序模块和其他数据的存储。当由处理子系统2104执行时提供以上所描述的功能的软件(程序、代码模块、指令)可以存储在存储子系统2118中。通过示例的方式,计算机可读存储介质2122可以包括如硬盘驱动器、磁盘驱动器、光盘驱动器(如CD ROM、DVD、

在某些示例中,存储子系统2118还可以包括可以进一步连接到计算机可读存储介质2122的计算机可读存储介质读取器2120。读取器2120可以从如盘、闪速存储器驱动器等存储器设备接收数据并且被配置为从所述存储器设备读取数据。

在某些示例中,计算机系统2100可以支持虚拟化技术,包括但不限于对处理和存储器资源的虚拟化。例如,计算机系统2100可以提供对执行一个或多个虚拟机的支持。在某些示例中,计算机系统2100可以执行如促进对虚拟机的配置和管理的管理程序等程序。每个虚拟机可以分配有存储器、计算(例如,处理器、核)、I/O和联网资源。每个虚拟机通常独立于其他虚拟机运行。虚拟机通常运行其自身的操作系统,所述操作系统可以与由计算机系统2100所执行的其他虚拟机执行的操作系统相同或不同。因此,多个操作系统可以潜在地由计算机系统2100同时运行。

通信子系统2124提供到其他计算机系统和网络的接口。通信子系统2124用作用于从其他系统接收数据并且从计算机系统2100向其他系统传输数据的接口。例如,通信子系统2124可以使计算机系统2100能够通过因特网构建到一个或多个客户端设备的通信通道,以用于从客户端设备接收信息和/或向客户端设备发送信息。例如,当计算机系统2100用于实施图1所描绘的机器人系统120时,通信子系统可以用于与应用程序系统以及执行为应用程序选择的存储虚拟机的系统通信。

通信子系统2124可以支持有线通信协议和/或无线通信协议两者。在某些示例中,通信子系统2124可以包括用于访问无线声音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术、如3G、4G、EDGE(全球演进增强型数据速率)等先进的数据网络技术或5G、WiFi(IEEE 802.XX家族标准或其他移动通信技术或其任何组合)、全球定位系统(GPS)接收器部件和/或其他部件。在一些示例中,除了无线接口之外或代替无线接口,通信子系统2124可以提供有线网络连接性(例如,以太网)。

通信子系统2124可以接收并发射各种形式的数据。在一些示例中,除了其他形式之外,通信子系统2124还可以接收结构化和/或非结构化数据馈送2126、事件流2128、事件更新2130等形式的输入通信。例如,通信子系统2124可以被配置成从社交媒体网络和/或其他通信服务的用户实时地接收(或发送)数据馈送2126,如

在某些示例中,通信子系统2124可以被配置成接收连续数据流形式的数据,所述连续数据流可以包括(可以没有显式结束的本质上连续的或无界的)实时事件的事件流2128和/或事件更新2130。生成连续数据的应用程序的示例可以包括例如传感器数据应用程序、财务收报机、网络性能测量工具(例如,网络监测和流量管理应用程序)、点击流分析工具、汽车交通监测等。

通信子系统2124还可以被配置为将数据从计算机系统2100传送到其他计算机系统或网络。可以将数据以如结构化和/或非结构化数据馈送2126、事件流2128、事件更新2130等各种不同的形式传送到可以与耦接至计算机系统2100的一个或多个流数据源计算机通信的一个或多个数据库。

计算机系统2100可以是各种类型中的一种,包括手持便携式设备(例如,

虽然已经描述了具体示例,但是各种修改、更改、替代性构造和等同物是可能的。示例不局限于在某些具体数据处理环境中的操作,而是自由地在多个数据处理环境中操作。另外,尽管已经使用特定系列的事务和步骤描述了某些示例,但是对于本领域技术人员而言应当显而易见的是,这不旨在是限制性的。虽然一些流程图将操作描述为顺序过程,但是许多操作可以并行地或同时地执行。另外,可以重新布置操作的顺序。过程可以具有图中未包括的另外的步骤。可以单独地或联合地使用上文所描述的示例的各种特征和方面。

进一步地,虽然已经使用硬件和软件的特定组合描述了某些示例,但是应当认识到,硬件和软件的其他组合也是可能的。某些示例可以仅以硬件或仅以软件或使用其组合实施。本文所描述的各种过程可以在相同处理器或不同处理器上以任何组合实施。

在将设备、系统、部件或模块描述为被配置成执行某些操作或功能的情况下,这种配置可以例如通过将电子电路设计成执行操作、通过对可编程电子电路(如微处理器)进行编程以执行操作(如通过执行计算机指令或代码)或通过被编程成执行存储在非暂态存储器介质上的代码或指令的处理器或核或其任何组合来完成。过程可以使用包括但不限于用于过程间通信的传统技术的各种技术进行通信,并且不同的过程对可以使用不同的技术,或者相同的过程对可以在不同的时间使用不同的技术。

本公开中给出了具体细节以提供对示例的透彻理解。然而,可以在没有这些具体细节的情况下实践示例。例如,已经示出了公知的电路、过程、算法、结构和技术,而没有不必要的细节,以避免模糊示例。此描述仅提供了示例并且不旨在限制其他示例的范围、适用性或配置。而是,先前对示例的描述将为本领域技术人员提供用于实施各种示例的使能描述。可以对元件的功能和布置作出各种改变。

因此,应当从说明性而非限制性意义上看待本说明书和附图。然而,将明显的是,在不脱离权利要求中阐述的更广泛的精神和范围的情况下,可以对其作出添加、减少、删除以及其他修改和改变。因此,虽然已经描述了具体示例,但是这些示例不旨在是限制性的。各种修改和等同物均在以下权利要求的范围内。

在前述说明书中,参考本公开的具体示例描述了本公开的各方面,但是本领域技术人员将认识到,本公开并不限于此。可以单独地或联合地使用上文所描述的公开的各种特征和方面。进一步地,在不脱离说明书的更广泛的精神和范围的情况下,可以在除了本文所描述的那些环境和应用程序外的任何数量的环境和应用环境中利用示例。因此,说明书和附图应被视为说明性的而非限制性的。

在前述描述中,出于说明的目的,以特定顺序描述了方法。应当了解,在替代性示例中,可以以与所描述的顺序不同的顺序来执行方法。还应当了解,上文所描述的方法可以由硬件部件执行或者可以体现在机器可执行指令的序列中,所述指令可以用于使机器(如用所述指令编程的通用或专用处理器或逻辑电路)执行所述方法。这些机器可执行指令可以存储在一个或多个机器可读介质上,如CD-ROM或其他类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、闪速存储器或适合于存储电子指令的其他类型的机器可读介质。可替代地,方法可以由硬件和软件的组合来执行。

在将部件描述为被配置成执行某些操作的情况下,这种配置可以例如通过将电子电路或其他硬件设计成执行操作、通过对可编程电子电路(例如,微处理器或其他适合的电子电路)进行编程以执行操作或其任何组合来完成。

尽管本文已经详细描述了本申请的说明性示例,但是应当理解,可以以其他方式不同地体现并采用本发明概念,并且所附权利要求旨在被解释为包括这种变化,受现有技术限制的情况除外。

技术分类

06120115928060