技术领域
[0003] 本公开一般而言涉及机器学习技术,并且更特别地,涉及使用正向增强与后处理和负向增强的组合进行数据增强以提高意图预测模型对不同实体值的稳健性的技术。
相关背景技术
[0004] 人工智能/机器学习(AI/ML)具有许多应用。举例来说,世界各地的许多用户都在即时消息传递或聊天平台上以便获得即时反应。组织经常使用这些即时消息传递或聊天平
台与客户(或最终用户)进行实时交谈。然而,组织雇用服务人员来与客户或最终用户进行
实时通信的成本可能非常高。已经开始开发聊天机器人或机器人来模拟与最终用户的交
谈,尤其是通过互联网进行交谈。最终用户可以通过最终用户已经安装和使用的消息传递
应用来与机器人通信。通常由人工智能(AI)提供支持的智能机器人可以在实时交谈中更智
能地进行上下文交流,因此可以允许机器人与最终用户之间进行更自然的交谈,以改善交
谈体验。与最终用户学习机器人知道如何进行响应的一组固定的关键字或命令不同,智能
机器人可以能够基于用户的自然语言话语(utterance)来理解最终用户的意图并相应地做
出响应。
具体实施方式
[0024] 在以下描述中,为了解释的目的,阐述了具体细节,以便提供对某些实施例的透彻理解。但是,显然,各种实施例可以在没有这些具体细节的情况下实践。各图和描述并非旨在限制。本文使用的词语“示例性”表示“用作示例、实例或说明”。本文中描述为“示例性”的任何实施例或设计不一定被解释为优选或优于其它实施例或设计。
[0025] 介绍
[0026] AI/ML具有许多应用。作为示例性应用的数字助理是一种人工智能驱动的界面,其可以帮助用户以自然语言交谈的方式完成各种任务。对于每个数字助理,客户可以组装一
种或多种技能。技能(本文中也称为聊天机器人、机器人、或技能机器人)是专注于特定类型任务(诸如跟踪库存、提交时间卡和创建费用报告)的个体机器人。当最终用户与数字助理
进行互动时,数字助理评估最终用户输入并将交谈路由到适当的聊天机器人和路由来自适
当的聊天机器人的交谈。数字助理可以通过各种通道提供给最终用户,诸如
Messenger、SKYPE Messenger或短消息服务(SMS)。通道
将聊天从各种消息传递平台上的最终用户来回传送到数字助理及其各种机器人。这些通道
也可以支持用户代理升级、事件发起的交谈和测试。
[0027] 意图允许聊天机器人理解用户希望聊天机器人做什么。意图是指经由用户请求和语句传达给聊天机器人的用户意图,这些用户请求和语句也称为话语(例如,获取账户余
额、进行购买等)。如本文所使用的,话语或消息可以指在与聊天机器人交谈期间交换的一组词语(例如,一个或多个句子)。可以通过提供说明某个用户动作的名称(例如,订购披萨)并编译一组现实生活中的用户语句或通常与触发该动作相关联的话语来创建意图。由于聊
天机器人的认知源自这些意图,因此可以从稳健(一到二十个话语)且变化的数据集创建每
个意图,使得聊天机器人可以解释不明确的用户输入。一组丰富的话语使聊天机器人能够
在其接收到如“忘记这个订单!”或“取消投递!”之类的消息——含义相同但表达方式不同的消息——时理解用户想要做什么。总的来说,这些意图以及属于这些意图的话语构成了
聊天机器人的训练语料库。通过使用语料库训练算法,客户可以将该算法转变为模型,该模型用作将(一个或多个)最终用户输入解析为单一意图的参考工具。客户可以通过多轮意图
测试和意图训练来提高聊天机器人的认知敏锐度。
[0028] 训练机器学习(ML)模型存在一些挑战。一个问题是实体值(或实体敏感性)的稳健性,因为当实体值发生变化时,模型会产生具有不同置信度水平的不同输出。因此,对于仅因实体值不同而不同的输入话语,得到的模型预测可以识别不同的类别,并且有时还会识
别不同的预测置信度水平。例如,当输入话语“给Peter加薪”更改为“给James加薪”时,模型可能会输出不同的类别或不同的置信度水平。另一个问题是ML模型可以使用实体值作为预
测的快捷方式,使得实体值与其意图输出类别之间存在意图实体关联。例如,如果输入话语包含名字和金额,那么ML模型可能会学习并预测关于汇款的意图,这可能导致模型错误地
预测以下话语的关于汇款的意图:“Katy Smith是否从我的账户中扣除了20美元?”。作为另一个示例,如果输入的话语包含名字和日期,那么模型可能会学习并预测关于创建会议记
录的意图,这可能导致模型错误地预测以下话语的关于创建会议记录的意图:“Katy Smith的生日是12月19日吗?”。
[0029] 因而,需要不同的方法来解决模型预测对实体值变化的敏感性的挑战。本公开中描述的实体感知数据增强技术通过利用对训练数据中的实体值的各种正向、负向和多阶段
增强的组合,为训练ML模型提供了进步和改进,以使其更多地关注输入话语的整体上下文
而不是各个实体值变化。在各种实施例中,提供了一种方法,该方法包括:获得意图预测模型的第一组训练数据,其中第一组训练数据包括话语和意图标签;使用经训练的NER模型从第一组训练数据中提取命名实体;取决于对超参数的调整要求,将一种或多种数据增强技
术应用于第一组训练数据,以产生第二组训练数据;应用附加增强技术来增强第二组训练
数据以创建后处理的增强训练数据,其中附加增强技术包括将第二组训练数据内的命名实
体的至少一个或多个实体值替换为同一实体类型的随机值;组合第一组训练数据和后处理
的增强训练数据以生成扩展训练数据来训练意图预测模型;以及将经训练的意图预测模型
部署到聊天机器人系统。
[0030] 机器人和分析系统
[0031] 机器人(也称为技能、聊天机器人、聊天者机器人或谈话机器人)是可以与最终用户执行交谈的计算机程序。机器人通常可以通过使用自然语言消息的消息传递应用来对自
然语言消息(例如,问题或评论)进行响应。企业可以使用一个或多个机器人通过消息传递
应用与最终用户通信。消息传递应用可以包括例如上层(over‑the‑top,OTT)消息传递通道(诸如Facebook Messenger、Facebook WhatsApp、WeChat、Line、Kik、Telegram、Talk、Skype、Slack或SMS)、虚拟私人助理(诸如Amazon Dot、Echo或Show、Google Home、Apple HomePod等)、扩展了具有聊天能力的本地或混合/响应移动应用或web应用的移动和web应
用扩展、或基于语音的输入(诸如具有使用Siri、Cortana、Google Voice或其它言语输入进行交互的接口的设备或应用)。
[0032] 在一些示例中,机器人可以与统一资源标识符(URI)相关联。URI可以使用字符串来标识机器人。URI可以用作一个或多个消息传递应用系统的网络钩子(webhook)。URI可以包括例如统一资源定位符(URL)或统一资源名称(URN)。机器人可以被设计为从消息传递应
用系统接收消息(例如,超文本传输协议(HTTP)后调用消息)。HTTP post调用消息可以从消息传递应用系统定向到URI。在一些示例中,消息可能不同于HTTP post调用消息。例如,机器人可以从短消息服务(SMS)接收消息。虽然本文的讨论是指机器人接收作为消息的通信,但应该理解的是,消息可以是HTTP post调用消息、SMS消息或两个系统之间的任何其它类
型的通信。
[0033] 最终用户通过交谈式交互(有时称为交谈式用户界面(UI))与机器人交互,就像最终用户与其它人交互一样。在一些情况下,交谈式交互可以包括最终用户对机器人说“您
好”,并且机器人用“嗨”回应并询问最终用户它如何提供帮助。最终用户还通过其它类型的交互与机器人交互,诸如交易式交互(例如,与至少经过训练以将资金从一个账户转移到另一个账户的银行机器人)、信息式交互(例如,与至少经过训练以检查用户的剩余假期时间
的人力资源机器人)和/或零售交互(例如,与至少经过训练以讨论退回购买商品或寻求技
术支持的零售机器人)。
[0034] 在一些示例中,机器人可以智能地处置最终用户交互,而无需机器人的管理员或开发人员的干预。例如,最终用户可以向机器人发送一个或多个消息以实现期望的目标。消息可以包括某些内容,诸如文本、表情符号、音频、图像、视频或传达消息的其它方法。在一些示例中,机器人可以自动将内容转换成标准化形式并生成自然语言响应。机器人也可以
自动提示最终用户输入附加输入参数或请求其它附加信息。在一些示例中,机器人也可以
发起与最终用户的通信,而不是被动地响应最终用户的话语。
[0035] 与机器人的交谈可以遵循包括多个状态的特定交谈流程。该流程可以基于输入定义接下来将发生什么。在一些示例中,可以使用包括用户定义的状态(例如,最终用户意图)和在状态中或从一个状态到另一个状态要采取的动作的状态机来实现机器人。交谈可以基
于最终用户输入采取不同的路径,这可能会影响机器人对流程做出的决定。例如,在每个状态下,基于最终用户的输入或话语,机器人可以确定最终用户的意图,以便确定要采取的适当的下一个动作。如本文和话语上下文中所使用的,术语“意图”是指提供话语的用户的意图。例如,用户可能打算与机器人进行交谈以订购披萨,其中用户的意图将通过话语“订购披萨”来表示。用户意图可以针对用户希望机器人代表用户执行的特定任务。因此,反映用户的意图的话语可以被表述为问题、命令、请求等。
[0036] 在机器人配置的上下文中,术语“意图”在本文中也用于指将用户的话语映射到机器人可以执行的特定任务/动作或任务/动作类别的配置信息。为了区分话语的意图(即,用户意图)和机器人的意图,后者有时在本文中被称为“机器人意图”。机器人意图可以包括与意图相关联的一组一个或多个话语。例如,订购披萨的意图可以具有表达订购披萨的愿望的话语的各种排列。这些相关联话语可以用于训练机器人的意图分类器,以使意图分类器
随后能够确定来自用户的输入话语是否与订购披萨的意图相匹配。机器人意图可以与用于
开始与用户的交谈并处于某种状态的一个或多个对话流相关联。例如,订购披萨意图的第
一个消息可能是问题“您想要哪种披萨?”。除了相关联的话语之外,机器人意图还可以包含与意图相关的命名实体。例如,订购披萨意图可以包括用于执行订购披萨任务的变量或参
数(例如,配料1、配料2、披萨类型、披萨尺寸、披萨数量等)。实体的值通常是通过与用户交谈获得的。
[0037] 图1是结合根据某些实施例的聊天机器人系统的环境100的简化框图。环境100包括数字助理构建器平台(DABP)102,其使DABP 102的用户104能够创建和部署数字助理或聊
天机器人系统。DABP 102可以用于创建一个或多个数字助理(或DA)或聊天机器人系统。例
如,如图1中所示,表示特定企业的用户104可以使用DABP 102为该特定企业的用户创建和
部署数字助理106。例如,DABP 102可以被银行用来创建一个或多个数字助理以供银行的客户使用。同一DABP 102平台可以被多个企业用来创建数字助理。作为另一个示例,餐馆(例如,披萨店)的所有者可以使用DABP 102来创建和部署使餐馆的客户能够订购食物(例如,
订购披萨)的数字助理。
[0038] 出于本公开的目的,“数字助理”是通过自然语言交谈帮助数字助理的用户完成各种任务的工具。数字助理可以仅使用软件来实现(例如,数字助理是使用可由一个或多个处理器执行的程序、代码或指令来实现的数字工具)、使用硬件来实现、或者使用硬件和软件的组合来实现。数字助理可以实施或实现在各种物理系统或设备中,诸如计算机、移动电话、手表、电器、车辆等。数字助理有时也被称为聊天机器人系统。因而,出于本公开的目的,术语“数字助理”和“聊天机器人系统”是可互换的。
[0039] 数字助理(诸如使用DABP 102构建的数字助理106)可以用于经由数字助理与其用户108之间的基于自然语言的交谈来执行各种任务。作为交谈的一部分,用户可以向数字助理106提供一个或多个用户输入110并从数字助理106得到响应112。交谈可以包括输入110
和响应112中的一个或多个。经由这些交谈,用户可以请求由数字助理执行一个或多个任
务,并且作为响应,数字助理被配置为执行用户请求的任务并以对用户的适当响应来响应。
[0040] 用户输入110一般是自然语言形式并且被称为话语。用户话语110可以是文本形式,诸如当用户键入句子、问题、文本片段或甚至单个词语并将其作为输入提供给数字助理
106时。在一些示例中,用户话语110可以是音频(audio)输入或言语(speech)形式,诸如当用户说出或讲出作为输入提供给数字助理106的某些内容时。话语通常是用户所说的语言。
例如,话语可以是英语,或某种其它语言。当话语是言语形式时,该言语输入被转换成该特定语言的文本形式话语,然后由数字助理106处理该文本话语。可以使用各种言语到文本处理技术来将言语或音频输入转换成文本话语,该文本话语然后由数字助理106处理。在一些示例中,言语到文本的转换可以由数字助理106自身完成。
[0041] 话语(其可以是文本话语或言语话语)可以是片段、句子、多个句子、一个或多个词语、一个或多个问题、上面提到的类型的组合等。数字助理106被配置为将自然语言理解(NLU)技术应用于话语以理解用户输入的含义。作为针对话语的NLU处理的一部分,数字助
理106被配置为执行处理以理解话语的含义,这涉及识别与话语对应的一个或多个意图和
一个或多个实体。在理解话语的含义后,数字助理106可以响应于所理解的含义或意图来执行一个或多个动作或操作。出于本公开的目的,假设话语是由数字助理106的用户直接提供的文本话语或者是输入的言语话语到文本形式的转换的结果。然而,这并不旨在以任何方
式进行限制或限定。
[0042] 例如,用户输入可以通过提供诸如“我想订购披萨”的话语来请求订购披萨。在接收到这种话语后,数字助理106被配置为理解话语的含义并采取适当的动作。适当的动作可以涉及,例如,用请求用户输入关于用户想要订购的披萨的类型、披萨的尺寸、披萨的任何配料等的问题来对用户进行响应。由数字助理提供的响应106也可以是自然语言形式并且通常是与输入的话语相同的语言。作为生成这些响应的一部分,数字助理106可以执行自然语言生成(NLG)。对于订购披萨的用户,经由用户和数字助理106之间的交谈,数字助理可以指导用户提供用于披萨订购所需的所有信息,然后在交谈结束时使披萨被订购。数字助理
106可以通过向用户输出指示披萨已被订购的信息来结束交谈。
[0043] 在概念层面,数字助理106响应于从用户接收到的话语执行各种处理。在一些示例中,这个处理涉及处理步骤的序列或流水线,包括例如理解输入的话语的含义、确定响应于话语而要执行的动作、在适当的情况下使动作被执行、响应于用户话语而生成要向用户输
出的响应、向用户输出响应等。NLU处理可以包括解析接收到的输入的话语以理解话语的结构和含义、精炼(refine)和重构话语以便为话语构建更易于理解的形式(例如,逻辑形式)
或结构。生成响应可以包括使用NLG技术。
[0044] 由数字助理(诸如数字助理106)执行的NLU处理可以包括各种NLP相关任务,诸如句子解析(例如,令牌化、词形还原、识别句子的词性标签、识别句子中的命名实体、生成依赖树来表示句子结构、将句子拆分为子句、分析单个子句、解析照应,执行分块等)。在某些示例中,NLU处理由数字助理106自身执行。在一些其它示例中,数字助理106可以使用其它资源来执行NLU处理的部分。例如,可以通过使用解析器、词性标注器和/或NER处理输入的话语句子来识别该句子的句法和结构。在一种实施方式中,对于英语,使用诸如由斯坦福
NLP组提供的解析器、词性标注器和命名实体辨识器来分析句子结构和句法。这些是作为斯坦福CoreNLP工具包的一部分提供的。
[0045] 虽然本公开中提供的各种示例显示了英语语言的话语,但这仅意味着作为示例。在某些示例中,数字助理106还能够处置英语以外的语言的话语。数字助理106可以提供被
配置用于对不同语言执行处理的子系统(例如,实现NLU功能的组件)。这些子系统可以被实现为可插拔单元,可以使用来自NLU核心服务器的服务调用来调用这些单元。这使得NLU处
理对于每种语言具有灵活性和可扩展性,包括允许不同的处理顺序。可以为各种语言提供
语言包,其中语言包可以注册能够从NLU核心服务器提供服务的子系统的列表。
[0046] 数字助理(诸如图1中描绘的数字助理106)可以通过各种不同的通道(诸如但不限于经由某些应用、经由社交媒体平台、经由各种消息服务和应用以及其它应用或通道)对其用户108可用或可访问。单个数字助理可以具有为其配置的几个通道,使得它可以在不同的服务上同时运行和被访问。
[0047] 数字助理或聊天机器人系统一般包含一个或多个技能或与一个或多个技能相关联。在某些实施例中,这些技能是单独的聊天机器人(称为技能机器人),它们被配置为与用户交互并完成特定类型的任务,诸如跟踪库存、提交工时卡、创建费用报告、订购食物、检查银行账户、进行预订、购买小工具等。例如,对于图1中描绘的实施例,数字助理或聊天机器人系统106包括技能116‑1、116‑2、116‑3等。出于本公开的目的,术语“技能(skill)”和“多个技能(skills)”分别与术语“技能机器人(skill bot)”和“多个技能机器人(skill
bots)”同义使用。
[0048] 与数字助理相关联的每个技能通过与用户的交谈来帮助数字助理的用户完成任务,其中交谈可以包括由用户提供的文本或音频输入以及由技能机器人提供的响应的组
合。这些响应可以是给用户的文本或音频消息的形式和/或使用呈现给用户以供用户进行
选择的简单用户接口元素(例如,选择列表)。
[0049] 技能或技能机器人可以通过多种方式关联或添加到数字助理。在一些情况下,技能机器人可以由企业开发,然后使用DABP 102添加到数字助理。在其它情况下,可以使用
DABP 102开发和创建技能机器人,然后将其添加到使用DABP 102创建的数字助理。在还有
其它情况下,DABP 102提供在线数字商店(称为“技能商店”),其提供针对一系列任务的多种技能。通过技能商店提供的技能也可以暴露各种云服务。为了将技能添加到正在使用
DABP 102生成的数字助理,DABP 102的用户可以经由DABP 102访问技能商店,选择期望的
技能,并指示所选择的技能将被添加到使用DABP 102创建的数字助理。来自技能商店的技
能可以按原样或以修改后的形式添加到数字助理(例如,DABP 102的用户可以选择和克隆
技能商店提供的特定技能机器人,对所选择的技能机器人进行定制或修改,然后将修改后
的技能机器人添加到使用DABP 102创建的数字助理)。
[0050] 可以使用各种不同的体系架构来实现数字助理或聊天机器人系统。例如,在某些实施例中,可以使用主机器人/子(或从)机器人范式或体系架构来实现使用DABP 102创建
和部署的数字助理。根据这种范式,数字助理被实现为主机器人,该主机器人与作为技能机器人的一个或多个子机器人交互。例如,在图1所示的实施例中,数字助理106包括主机器人
114和作为主机器人114的子机器人的技能机器人116‑1、116‑2等。在某些示例中,数字助理
106自身被认为充当主机器人。
[0051] 根据主‑子机器人体系架构实现的数字助理使数字助理的用户能够通过统一的用户界面(即,经由主机器人)与多个技能进行交互。当用户与数字助理互动时,由主机器人接收用户输入。然后,主机器人执行处理以确定用户输入的话语的含义。主机器人然后确定用户在话语中请求的任务是否可以由主机器人自己处置,否则主机器人选择适当的技能机器
人来处置用户请求并将交谈路由到所选择的技能机器人。这使得用户能够通过共用的单个
界面与数字助理交谈,并且依然提供使用被配置为执行特定任务的若干个技能机器人的能
力。例如,对于为企业开发的数字助理,数字助理的主机器人可以与具有特定功能性的技能机器人(诸如用于执行与客户关系管理相关的功能的客户关系管理(CRM)机器人、用于执行
与企业资源规划相关的功能的企业资源规划(ERP)机器人、用于执行与人力资本管理相关
的功能的人力资本管理(HCM)机器人等)对接。以这种方式,数字助理的最终用户或消费者
只需要知道如何通过共用的主机器人界面来访问数字助理,而在幕后提供有多个技能机器
人来处置用户请求。
[0052] 在某些示例中,在主机器人/子机器人基础设施中,主机器人被配置为知道技能机器人的可用列表。主机器人能够访问识别各个可用技能机器人的元数据,并且对于每个技
能机器人,该技能机器人的能力包括该技能机器人可以执行的任务。在接收到话语形式的
用户请求后,主机器人被配置为从多个可用的技能机器人中识别或预测可以最好地服务或
处置该用户请求的特定技能机器人。然后,主机器人将该话语(或该话语的一部分)路由到
该特定的技能机器人以进行进一步处置。因此,控制从主机器人流到该技能机器人。主机器人可以支持多个输入和输出通道。在某些示例中,可以借助一个或多个可用技能机器人执
行的处理来执行路由。例如,如下面所讨论的,技能机器人可以被训练来推断话语的意图并确定所推断的意图是否与技能机器人配置有的意图相匹配。因此,由主机器人执行的路由
可以涉及技能机器人向主机器人传达关于该技能机器人是否已配置有适合处置该话语的
意图的指示。
[0053] 虽然图1中的实施例示出了包括主机器人114和技能机器人116‑1、116‑2和116‑3的数字助理106,但这并不旨在进行限制。数字助理可以包括提供数字助理功能的各种其它组件(例如,其它系统和子系统)。这些系统和子系统可以仅以软件(例如,存储在计算机可读介质上并且可由一个或多个处理器执行的代码、指令)、仅以硬件、或以使用软件和硬件的组合的实施方式来实现。
[0054] DABP 102提供使DABP 102的用户能够创建包括与数字助理相关联的一个或多个技能机器人的数字助理的基础设施以及各种服务和特征。在一些情况下,可以通过克隆现
有的技能机器人来创建技能机器人,例如,克隆由技能商店提供的技能机器人。如前面所指示的,DABP 102提供技能商店或技能目录,其供应用于执行各种任务的多个技能机器人。
DABP 102的用户可以从技能商店克隆技能机器人。根据需要,可以对所克隆的技能机器人
进行修改或定制。在一些其它情况下,DABP 102的用户使用由DABP 102提供的工具和服务
从头开始创建技能机器人。如前面所指示的,DABP 102提供的技能商店或技能目录可以供
应用于执行各种任务的多个技能机器人。
[0055] 在某些示例中,在高级别上,创建或定制技能机器人涉及以下步骤:
[0056] (1)配置新技能机器人的设置
[0057] (2)为技能机器人配置一个或多个意图
[0058] (3)为一个或多个意图配置一个或多个实体
[0059] (4)训练技能机器人
[0060] (5)为技能机器人创建对话流
[0061] (6)根据需要向技能机器人添加自定义组件
[0062] (7)测试和部署技能机器人
[0063] 下面简要介绍上述每个步骤。
[0064] (1)配置新技能机器人的设置——可以为技能机器人配置各种设置。例如,技能机器人设计者可以为正被创建的技能机器人指定一个或多个调用名称。这些调用名称然后可
以被数字助理的用户用于显式地调用技能机器人。例如,用户可以在用户的话语中输入调
用名称以显式地调用对应的技能机器人。
[0065] (2)为技能机器人配置一个或多个意图以及相关联的示例话语——技能机器人设计者为正被创建的技能机器人指定一个或多个意图(也称为机器人意图)。然后基于这些指
定的意图训练技能机器人。这些意图表示技能机器人被训练为推断输入的话语的类别或
类。在接收到话语后,经训练的技能机器人推断话语的意图,其中所推断的意图是从用于训练该技能机器人的预定义的意图集中选择的。然后,技能机器人基于为该话语推断的意图
采取适当的动作来对话语进行响应。在一些情况下,技能机器人的意图表示技能机器人可
以为数字助理的用户执行的任务。每个意图被赋予意图标识符或意图名称。例如,对于为银行训练的技能机器人,为该技能机器人指定的意图可以包括“CheckBalance(检查余额)”、“TransferMoney(转账)”、“DepositCheck(兑现支票)”等。
[0066] 对于为技能机器人定义的每个意图,技能机器人设计者还可以提供代表并说明该意图的一个或多个示例话语。这些示例话语旨在表示用户可能针对该意图而输入到技能机
器人的话语。例如,对于CheckBalance意图,示例话语可以包括“我的储蓄账户余额是多
少?”、“我的支票账户中有多少钱?”、“我的账户中有多少钱”等。因而,典型用户话语的各种排列可以被指定为意图的示例话语。
[0067] 意图及其相关联的示例话语被用作训练数据来训练技能机器人。可以使用各种不同的训练技术。作为这种训练的结果,生成预测模型,该预测模型被配置为将话语作为输入并输出由预测模型为该话语推断的意图。在一些情况下,输入的话语被提供给意图分析引
擎,该引擎被配置为使用经训练的模型来预测或推断输入的话语的意图。然后,技能机器人可以基于所推断的意图采取一个或多个动作。
[0068] (3)为技能机器人的一个或多个意图配置实体——在一些情况下,可能需要附加的上下文来使技能机器人能够正确地对用户请求进行响应。例如,可能存在用户输入话语
在技能机器人中解析为相同意图的情况。例如,在上面的示例中,话语“我的储蓄账户余额是多少?”和“我的支票账户里有多少钱?”两者都解析为相同的CheckBalance意图,但这些话语是询问不同事情的不同请求。为了澄清此类请求,一个或多个实体被添加到意图中。使用银行技能机器人示例,定义了称为“支票”和“储蓄”的值的称为AccountType(账户类型)的实体可以使技能机器人能够解析用户请求并做出适当的响应。在上面的示例中,虽然话
语被解析为相同的意图,但对于这两个话语,与AccountType实体相关联的值是不同的。这使得技能机器人能够为这两个话语执行可能不同的动作,即使它们解析为相同的意图。可
以针对为技能机器人配置的某些意图指定一个或多个实体。因此,实体用于向意图自身添
加上下文。实体有助于更完整地描述意图并使技能机器人能够完成用户请求。
[0069] 在某些示例中,存在两种类型的实体:(a)由DABP 102提供的内置实体,以及(2)可以由技能机器人设计者指定的自定义实体。内置实体是可以用各种机器人使用的通用实体。内置实体的示例包括但不限于与时间、日期、地址、数字、电子邮件地址、持续时间、重复时间段、货币、电话号码、URL等相关的实体。自定义实体用于更加定制化的应用。例如,对于银行技能,AccountType实体可以由技能机器人设计者定义,其使得能够通过检查用户输入的关键字(如支票、储蓄和信用卡等)来进行各种银行交易。
[0070] (4)训练技能机器人——技能机器人被配置为以话语的形式接收用户输入,解析或以其它方式处理接收到的输入,并识别或选择与接收到的用户输入相关的意图。如上面
所指示的,必须为此训练技能机器人。在某些实施例中,基于为技能机器人配置的意图和与这些意图相关联的示例话语(统称为训练数据)来训练技能机器人,使得技能机器人可以将
用户输入的话语解析为该机器人配置的意图之一。在某些示例中,技能机器人使用预测模
型,该模型使用训练数据进行训练并允许技能机器人辨别用户说了什么(或在一些情况下,试图说什么)。DABP 102提供可以被技能机器人设计者用来训练技能机器人的各种不同的
训练技术,包括各种基于机器学习的训练技术、基于规则的训练技术和/或它们的组合。在某些示例中,训练数据的一部分(例如,80%)用于训练技能机器人模型,而另一个部分(例如,剩余的20%)用于测试或验证该模型。一旦经过训练,经训练的模型(有时也称为经训练的技能机器人)就可以用于处置和响应用户话语。在某些情况下,用户的话语可以是只要求单个答案而不要求进一步交谈的问题。为了处置此类情况,可以为技能机器人定义Q&A(问
答)意图。这使得技能机器人能够输出对用户请求的回复,而无需更新对话定义。Q&A意图以与常规意图相似的方式被创建。用于Q&A意图的对话流可以与用于常规意图的对话流不同。
[0071] (5)为技能机器人创建对话流——为技能机器人指定的对话流描述了当响应于接收到的用户输入而解析出针对技能机器人的不同意图时技能机器人如何反应。对话流定义
技能机器人将采取的操作或动作(例如,技能机器人如何对用户话语进行响应、技能机器人如何提示用户进行输入、技能机器人如何返回数据)。对话流就像技能机器人所遵循的流程图。技能机器人设计者使用诸如标记(markdown)语言之类的语言来指定对话流。在某些实
施例中,称为OBotML的YAML版本可以用于指定技能机器人的对话流。用于技能机器人的对
话流定义充当交谈自身的模型,即,让技能机器人设计师编排技能机器人与技能机器人所
服务的用户之间的交互的模型。
[0072] 在某些示例中,用于技能机器人的对话流定义包含三个部分:
[0073] (a)上下文部分
[0074] (b)默认过渡部分
[0075] (c)状态部分
[0076] 上下文部分——技能机器人设计者可以定义在上下文部分中的交谈流中使用的变量。可以在上下文部分中命名的其它变量包括但不限于:用于错误处置的变量、用于内置实体或自定义实体的变量、使技能机器人能够辨识和保留用户首选项的用户变量等。
[0077] 默认过渡部分——可以在对话流状态部分或在默认过渡部分中定义技能机器人的过渡。默认过渡部分中定义的过渡充当回退,并在状态内没有定义适用的过渡或者无法
满足触发状态过渡所需的条件时被触发。默认过渡部分可以用于定义允许技能机器人优雅
地处置意外用户动作的路由。
[0078] 状态部分——对话流及其相关操作被定义为一系列过渡状态,这些状态管理对话流内的逻辑。对话流定义内的每个状态节点都命名提供对话中该点处所需功能的组件。因
此,状态是围绕组件而构建的。状态包含特定于组件的特性,并对在该组件执行之后被触发的到其它状态的过渡进行定义。
[0079] 可以使用状态部分来处置特殊情况场景。例如,有时可能您希望为用户提供暂时离开他们互动的第一技能以便在数字助理内的第二技能中做一些事情的选项。例如,如果
用户正在与购物技能进行交谈(例如,用户已进行了一些购买选择),那么用户可能想要跳
转到银行技能(例如,用户可能想要确保他/她有足够的钱用于购买),然后返回购物技能以完成用户的订单。为了解决这个问题,可以将第一技能中的动作配置为发起与同一数字助
理中的不同第二技能的交互,然后返回原始流。
[0080] (6)向技能机器人添加自定义组件——如上所述,在技能机器人的对话流中指定的状态对提供对应于该状态所需的功能的组件进行命名。组件使技能机器人能够执行功
能。在某些实施例中,DABP 102提供用于执行广泛功能的一组预配置的组件。技能机器人设计者可以选择这些预配置的组件中的一个或多个,并将它们与技能机器人的对话流中的状
态相关联。技能机器人设计者还可以使用由DABP 102提供的工具来创建自定义或新组件,
并将自定义组件与技能机器人的对话流中的一个或多个状态相关联。
[0081] (7)测试和部署技能机器人——DABP 102提供使技能机器人设计者能够测试正在开发的技能机器人的几个特征。然后可以部署技能机器人并将其包括在数字助理中。
[0082] 虽然上面的描述描述了如何创建技能机器人,但类似的技术也可以用于创建数字助理(或主机器人)。在主机器人或数字助理级别,可以为数字助理配置内置系统意图。这些内置系统意图用于识别数字助理自身(即,主机器人)可以处置而无需调用与该数字助理相
关联的技能机器人的一般任务。为主机器人定义的系统意图的示例包括:(1)退出:当用户发信号通知期望退出数字助理中的当前交谈或上下文时适用;(2)帮助:当用户请求帮助或指导时适用;以及(3)未解决的意图:适用于与退出和帮助意图不能很好匹配的用户输入。
数字助理还存储关于与数字助理相关联的一个或多个技能机器人的信息。此信息使主机器
人能够选择特定技能机器人来处置话语。
[0083] 在主机器人或数字助理级别,当用户向数字助理输入短语或话语时,数字助理被配置为执行处理以确定如何路由该话语和相关交谈。数字助理使用路由模型来确定这一
点,该模型可以是基于规则的、基于AI的、或其组合。数字助理使用路由模型来确定与用户输入的话语对应的交谈是要路由到特定技能进行处置、是由数字助理或主机器人自身根据
内置系统意图进行处置,还是在当前交谈流中作为不同的状态进行处置。
[0084] 在某些实施例中,作为此处理的一部分,数字助理确定用户输入的话语是否显式地使用其调用名称来识别技能机器人。如果用户输入中存在调用名称,那么将它视为对与
该调用名称对应的技能机器人的显式调用。在这种场景中,数字助理可以将用户输入路由
到被显式调用的技能机器人以进行进一步处置。如果没有特定或显式调用,那么在某些实
施例中,数字助理评估接收到的用户输入的话语并计算与数字助理相关联的系统意图和技
能机器人的置信度分数。为技能机器人或系统意图计算的分数表示用户输入代表该技能机
器人被配置为执行的任务或代表该系统意图的可能性。任何具有超过阈值(例如,置信阈值路由参数)的相关联计算置信度分数的系统意图或技能机器人都将被选择作为用于进一步
评估的候选。然后,数字助理从识别出的候选中选择特定的系统意图或技能机器人以进一
步处置用户输入的话语。在某些实施例中,在一个或多个技能机器人被识别为候选之后,与这些候选技能相关联的意图被评估(根据针对每个技能的意图模型)并且确定每个意图的
置信度分数。一般而言,具有超过阈值(例如,70%)的置信度分数的任何意图都被视为候选意图。如果选择了特定技能机器人,那么用户话语被路由到该技能机器人以进行进一步处
理。如果选择了系统意图,那么根据所选择的系统意图由主机器人自身执行一个或多个动
作。
[0085] 图2是根据某些实施例的主机器人(MB)系统200的简化框图。MB系统200可以仅用软件、仅用硬件或硬件和软件的组合来实现。MB系统200包括预处理子系统210、多意图子系统(MIS)220、显式调用子系统(EIS)230、技能机器人调用器240和数据存储库250。图2中描绘的MB系统200仅仅是主机器人中组件布置的示例。本领域的普通技术人员将认识到许多
可能的变体、替代方案和修改。例如,在一些实施方式中,MB系统200可以具有比图2中所示的更多或更少的系统或组件、可以组合两个或更多个子系统、或者可以具有不同的子系统
配置或布置。
[0086] 预处理子系统210接收来自用户的话语“A”202,并通过语言检测器212和语言解析器214处理该话语。如上面所指示的,话语可以以各种方式提供,包括音频或文本。话语202可以是句子片段、完整句子、多个句子等。话语202可以包括标点符号。例如,如果话语202以音频形式提供,那么预处理子系统210可以使用言语到文本转换器(未示出)将音频转换成文本,该转换器将标点符号插入到结果文本中,例如,逗号、分号、句号等。
[0087] 语言检测器212基于话语202的文本检测话语202的语言。处置话语202的方式取决于语言,因为每种语言都有自己的语法和语义。在分析话语的语法和结构时,要考虑语言之间的差异。
[0088] 语言解析器214解析话语202以提取话语202中各个语言单元(例如,词语)的词性(POS)标签。POS标签包括例如名词(NN)、代词(PN)、动词(VB)等。语言解析器214还可以令牌化话语202的语言单元(例如,将每个词语转换成单独的令牌)并对词语进行词形还原。词形还原是如词典中表示的一组词语的主要形式(例如,“run”是run、runs、ran、running等的词形还原)。语言解析器214可以执行的其它类型的预处理包括对复合表达式进行分块,例如,将“credit”和“card”组合成单个表达式“credit card”。语言解析器214还可以识别话语
202中词语之间的关系。例如,在一些实施例中,语言解析器214生成依赖关系树,该依赖关系树指示话语的哪一部分(例如,特定名词)是直接宾语,话语的哪一部分是介词,等等。语言解析器214执行的处理结果形成提取信息205,并与话语202自身一起作为输入提供给
MIS220。
[0089] 如上面所指示的,话语202可以包括多于一个句子。为了检测多个意图和显式调用,即使话语202包括多个句子,也可以将其视为单个单元。但是,在某些实施例中,可以例如由预处理子系统210执行预处理,以在多个句子中识别单个句子,以进行多意图分析和显式调用分析。一般而言,无论话语202是在单个句子的级别上处理还是作为包含多个句子的单个单元处理,MIS220和EIS230产生的结果基本相同。
[0090] MIS220确定话语202是否表示多个意图。虽然MIS220可以检测到话语202中存在多个意图,但MIS220执行的处理不涉及确定话语202的意图是否与已为机器人配置的任何意
图匹配。替代地,确定话语202的意图是否与机器人意图匹配的处理可以由MB系统200的意
图分类器242或技能机器人的意图分类器执行(例如,如图3中所示)。MIS220执行的处理假
定存在可以处置话语202的机器人(例如,特定技能机器人或主机器人自身)。因此,MIS220执行的处理不需要了解聊天机器人系统中有哪些机器人(例如,向主机器人注册的技能机
器人的身份)或了解已经为特定机器人配置了哪些意图。
[0091] 为了确定话语202包含多个意图,MIS220应用来自数据存储库250中的一组规则252的一个或多个规则。应用于话语202的规则取决于话语202的语言,并且可以包括指示存在多个意图的句型(sentence pattern)。例如,句型可能包含并列连词,该并列连词连接句子的两个部分(例如,连接词),其中每个部分对应单独的意图。如果话语202与句型匹配,那么可以推断话语202表示多个意图。应该注意的是,具有多个意图的话语不一定具有不同的意图(例如,针对不同机器人的意图或针对同一机器人内的不同意图的意图)。替代地,话语可以具有相同意图的单独实例(例如,“使用支付账户X订购披萨,然后使用支付账户Y订购披萨”)。
[0092] 作为确定话语202表示多个意图的一部分,MIS220还确定话语202的哪些部分与每个意图相关联。对于包含多个意图的话语中表示的每个意图,MIS220构造新的话语以代替
原始话语进行单独处理,例如,话语“B”206和话语“C”208,如图2中所描绘的。因此,原始话语202可以被分成两个或更多个单独的话语,每次处置一个话语。MIS220使用提取出的信息
205和/或通过对话语202自身的分析来确定应该首先处置两个或更多个话语中的哪一个。
例如,MIS220可以确定话语202包含指示应该首先处置特定意图的标记词。与该特定意图对应的新形成的话语(例如,话语206或话语208中的一个)将首先被发送以由EIS230进行进一
步处理。在第一个话语触发的交谈结束(或被暂时中止)之后,下一个最高优先级的话语(例如,话语206或话语208中的另一个)随后可以被发送到EIS230进行处理。
[0093] EIS230确定其接收的话语(例如,话语206或话语208)是否包含技能机器人的调用名称。在某些实施例中,聊天机器人系统中的每个技能机器人都被指派唯一的调用名称,该名称将该技能机器人与聊天机器人系统中的其它技能机器人区分开来。调用名称列表可以
作为数据存储库250中的技能机器人信息254的一部分进行维护。当话语包含与调用名称匹
配的词语时,该话语被视为显式调用。如果没有显式调用机器人,那么EIS230接收到的话语被视为非显式调用话语234并且被输入到主机器人的意图分类器(例如,意图分类器242)以
确定使用哪个机器人来处置话语。在一些情况下,意图分类器242将确定主机器人应处置非显式调用的话语。在其它情况下,意图分类器242将确定将话语路由到进行处理的技能机器人。
[0094] EIS230提供的显式调用功能具有几个优点。它可以减少主机器人必须执行的处理量。例如,当存在显式调用时,主机器人可能不必进行任何意图分类分析(例如,使用意图分类器242),或者可能必须进行简化的意图分类分析以选择技能机器人。因此,显式调用分析可以使得能够对特定技能机器人进行选择,而无需诉诸意图分类分析。
[0095] 此外,可能存在多个技能机器人之间功能重叠的情况。例如,如果两个技能机器人处置的意图重叠或彼此非常接近,那么可能会发生这种情况。在这种情况下,主机器人可能难以仅基于意图分类分析来识别选择多个技能机器人中的哪一个。在这种场景中,显式调用可以消除要使用的特定技能机器人的歧义。
[0096] 除了确定话语是显式调用之外,EIS230还负责确定是否应将话语的任何部分用作显式调用的技能机器人的输入。特别地,EIS230可以确定话语的一部分是否与调用无关。
EIS230可以通过分析话语和/或分析提取出的信息205来执行此确定。EIS230可以将与调用
无关的话语部分发送给被调用的技能机器人,而不是发送EIS230接收到的整个话语。在一
些情况下,被调用的技能机器人的输入仅通过去除话语的与调用相关的任何部分来形成。
例如,“我想使用Pizza Bot订购披萨”可以被缩短为“我想订购披萨”,因为“使用Pizza Bot”与披萨机器人的调用相关,但与披萨机器人要执行的任何处理无关。在一些情况下,EIS230可以重新格式化要发送给被调用机器人的部分,例如,以形成完整句子。因此,
EIS230不仅确定存在显式调用,而且还确定在存在显式调用时要发送给技能机器人的内
容。在一些情况下,可能没有任何文本要输入到被调用的机器人。例如,如果话语是“Pizza Bot”,那么EIS230可以确定正在调用披萨机器人,但没有文本要由披萨机器人处理。在这种场景中,EIS230可以向技能机器人调用器240指示没有要发送的内容。
[0097] 技能机器人调用器240以各种方式调用技能机器人。例如,技能机器人调用器240可以响应于接收到指示235而调用机器人,该指示235指示特定技能机器人已被选择为显式
调用的结果。指示235可以由EIS230与针对显式调用的技能机器人的输入一起发送。在这种场景中,技能机器人调用器240将交谈的控制权转交给显式调用的技能机器人。显式调用的技能机器人将通过将输入视为独立的话语来确定对来自EIS230的输入的适当响应。例如,
响应可以是执行特定动作或在特定状态下开始新交谈,其中新交谈的初始状态取决于从
EIS230发送的输入。
[0098] 技能机器人调用器240可以调用技能机器人的另一种方式是通过使用意图分类器242进行隐式调用。可以使用机器学习和/或基于规则的训练技术训练意图分类器242,以确定话语表示特定技能机器人被配置为执行的任务的可能性。意图分类器242在不同类别上
进行训练,每个技能机器人一个类别。例如,每当向主机器人注册新技能机器人时,与新技能机器人相关联的示例话语列表可以用于训练意图分类器242以确定特定话语表示新技能
机器人可以执行的任务的可能性。作为该训练的结果而产生的参数(例如,机器学习模型的参数的一组值)可以作为技能机器人信息254的一部分进行存储。
[0099] 在某些实施例中,意图分类器242使用机器学习模型来实现,如本文进一步详细描述的。机器学习模型的训练可能涉及输入来自与各种技能机器人相关联的示例话语的至少
一个话语子集,以生成关于哪个机器人是处置任何特定训练话语的正确机器人的推断作为
机器学习模型的输出。对于每个训练话语,可以提供用于训练话语的正确机器人的指示作
为基本事实信息。然后可以适配机器学习模型的行为(例如,通过反向传播)以最小化生成
的推断和基本事实信息之间的差异。
[0100] 在某些实施例中,意图分类器242针对向主机器人注册的每个技能机器人确定置信度分数,该置信度分数指示技能机器人能够处置话语(例如,从EIS230接收到的非显式调用话语234)的可能性。意图分类器242还可以确定已配置的每个系统级意图(例如,帮助、退出)的置信度分数。如果特定置信度分数满足一个或多个条件,那么技能机器人调用器240
将调用与特定置信度分数相关联的机器人。例如,可能需要满足阈值置信度分数值。因此,意图分类器242的输出245是系统意图的识别或特定技能机器人的识别。在一些实施例中,
除了满足阈值置信度分数值之外,置信度分数还必须超过下一个最高置信度分数一定获胜
边际。当多个技能机器人的置信度分数各自超过阈值置信度分数值时,施加这样的条件将
使得能够路由到特定的技能机器人。
[0101] 在基于对置信度分数的评估识别机器人之后,技能机器人调用器240将处理移交给识别出的机器人。在系统意图的情况下,识别出的机器人是主机器人。否则,识别出的机器人是技能机器人。此外,技能机器人调用器240将确定为识别出的机器人提供什么作为输入247。如上面所指示的,在显式调用的情况下,输入247可以基于话语的与调用无关的一部分,或者输入247可以什么都没有(例如,空串)。在隐式调用的情况下,输入247可以是整个话语。
[0102] 数据存储库250包括一个或多个计算设备,这些计算设备存储由主机器人系统200的各种子系统使用的数据。如上面所解释的,数据存储库250包括规则252和技能机器人信
息254。规则252包括例如用于由MIS220确定话语何时表示多个意图以及如何拆分表示多个
意图的话语的规则。规则252还包括用于由EIS230确定将显式调用技能机器人的话语的哪
些部分发送给技能机器人的规则。技能机器人信息254包括聊天机器人系统中的技能机器
人的调用名称,例如,向特定主机器人注册的所有技能机器人的调用名称的列表。技能机器人信息254还可以包括意图分类器242用于确定聊天机器人系统中每个技能机器人的置信
度分数的信息,例如,机器学习模型的参数。
[0103] 图3是根据某些实施例的技能机器人系统300的简化框图。技能机器人系统300是可以仅用软件、仅用硬件或硬件和软件的组合来实现的计算系统。在某些实施例中,诸如图
1中所绘出的实施例中,技能机器人系统300可以用于在数字助理内实现一种或多种技能机
器人。
[0104] 技能机器人系统300包括MIS 310、意图分类器320和交谈管理器330。MIS 310类似于图2中的MIS220,并且提供类似的功能,包括可操作以使用数据存储库350中的规则352来确定:(1)话语是否表示多个意图,并且如果是,那么(2)如何将话语拆分为针对多个意图中的每个意图的单独话语。在某些实施例中,由MIS 310应用的用于检测多个意图和用于拆分话语的规则与由MIS220应用的那些规则相同。MIS 310接收话语302和提取出的信息304。提取出的信息304类似于图1中的提取出的信息205,并且可以使用语言解析器214或技能机器
人系统300本地的语言解析器生成。
[0105] 意图分类器320可以以与上面结合图2的实施例讨论的意图分类器242类似的并且如本文进一步详细描述的方式进行训练。例如,在某些实施例中,意图分类器320使用机器学习模型来实现。意图分类器320的机器学习模型针对特定技能机器人进行训练,使用与该特定技能机器人相关联的示例话语的至少一个子集作为训练话语。每个训练话语的基本事
实将是与训练话语相关联的特定机器人意图。
[0106] 话语302可以直接从用户接收或通过主机器人供应。当话语302通过主机器人供应时,例如,在图2中所绘出的实施例中作为通过MIS 220和EIS230处理的结果供应时,可以绕过MIS 310,以避免重复MIS220已执行的处理。但是,如果话语302例如在路由到技能机器人之后发生的交谈期间直接从用户接收,那么MIS 310可以处理话语302以确定话语302是否
表示多个意图。如果是,那么MIS 310应用一个或多个规则将话语302拆分为针对每个意图
的单独话语,例如,话语“D”306和话语“E”308。如果话语302不表示多个意图,那么MIS 310将话语302转发到意图分类器320进行意图分类,而不拆分话语302。
[0107] 意图分类器320被配置为将接收到的话语(例如,话语306或308)与和技能机器人系统300相关联的意图进行匹配。如上面所解释的,技能机器人可以被配置有一个或多个意图,每个意图包括与意图相关联并用于训练分类器的至少一个示例话语。在图2的实施例
中,主机器人系统200的意图分类器242被训练以确定各个技能机器人的置信度分数和系统
意图的置信度分数。类似地,意图分类器320可以被训练以确定与技能机器人系统300相关
联的每个意图的置信度分数。意图分类器242执行的分类是在机器人级别,而意图分类器
320执行的分类是在意图级别,因此更细粒度。意图分类器320可以访问意图信息354。意图信息354包括与技能机器人系统300相关联的每个意图的话语列表,这些话语表示并说明意
图的含义,并且通常与该意图可执行的任务相关联。意图信息354还可以包括对该话语列表进行训练产生的参数。
[0108] 交谈管理器330接收作为意图分类器320的输出的特定意图的指示322,该特定意图由意图分类器320识别,作为与输入到意图分类器320的话语的最佳匹配。在一些情况下,意图分类器320无法确定任何匹配。例如,如果话语针对系统意图或不同技能机器人的意
图,那么意图分类器320计算的置信度分数可能低于阈值置信度分数值。当发生这种情况
时,技能机器人系统300可以将话语提交给主机器人进行处置,例如,路由到不同的技能机器人。但是,如果意图分类器320成功识别技能机器人内的意图,那么交谈管理器330将发起与用户的交谈。
[0109] 由交谈管理器330发起的交谈是特定于意图分类器320识别出的意图的交谈。例如,交谈管理器330可以使用被配置为执行针对识别出的意图的对话流的状态机来实现。状态机可以包括默认起始状态(例如,当在没有任何附加输入的情况下调用意图时)和一个或
多个附加状态,其中每个状态都与技能机器人要执行的动作(例如,执行购买交易)和/或要呈现给用户的对话(例如,问题、响应)相关联。因此,交谈管理器330可以在接收到识别意图的指示322时确定动作/对话335,并且可以响应于交谈期间接收到的后续话语来确定附加
动作或对话。
[0110] 数据存储库350包括一个或多个计算设备,这些设备存储由技能机器人系统300的各种子系统使用的数据。如图3中所绘出的,数据存储库350包括规则352和意图信息354。在某些实施例中,数据存储库350可以集成到主机器人或数字助理的数据存储库中,例如,图2中的数据存储库250中。
[0111] 图4示出了图示聊天机器人系统400的各方面的框图,该聊天机器人系统400被配置为基于文本数据训练一个或多个模型。如图4中所示,聊天机器人系统400在本示例中执
行的实体辨识包括各个阶段:预测模型训练阶段410,用于构建和训练模型;评估阶段415,用于评估训练模型的性能;以及实现阶段420,用于实现一个或多个聊天机器人。预测模型训练阶段410构建和训练要由其它阶段(本文中可以单独称为预测模型425或统称为预测模
型425)使用的一个或多个预测模型425a‑425n(“n”表示任何自然数)。例如,预测模型425可以包括用于编码话语的模型、用于确定话语表示特定技能机器人被配置为执行的任务的可
能性的另一个模型、用于从话语中预测第一类型的技能机器人的意图的另一个模型、以及
用于从话语中预测第二类型的技能机器人的意图的另一个模型。根据本公开,在其它示例
中可以实现还有的其它类型的预测模型。
[0112] 预测模型425可以是机器学习(“ML”)模型,诸如卷积神经网络(“CNN”),例如,初始神经网络、残差神经网络(“Resnet”),或循环神经网络,例如,长短期记忆(“LSTM”)模型或门控循环单元(“GRU”)模型、深度神经网络(“DNN”)的其它变体(例如,用于单一意图分类的多标签n二进制DNN分类器或多类DNN分类器)。预测模型425还可以是被训练用于自然语言处理的任何其它适合的ML模型,诸如朴素贝叶斯分类器、线性分类器、支持向量机、装袋
(Bagging)模型(诸如随机森林模型)、提升(Boosting)模型、浅层神经网络、或一种或多种此类技术的组合——例如,CNN‑HMM或MCNN(多尺度卷积神经网络)。聊天机器人系统400可以采用相同类型的预测模型或不同类型的预测模型来辨识话语中的一个或多个实体、确定
话语表示特定技能机器人被配置为执行的任务的可能性、从话语中预测第一类型的技能机
器人的意图、以及从话语中预测第二类型的技能机器人的意图。根据本公开,在其它示例中可以实现还有的其它类型的预测模型。
[0113] 为了训练各种预测模型425,训练阶段410由三个主要组件组成:数据集准备430、数据增强435和模型训练440。数据集准备430包括加载数据资产445、将数据资产445拆分为训练和验证集445a‑n以便系统可以训练和测试预测模型425、以及执行基本预处理的过程。
将数据资产445拆分为训练和验证集445a‑n可以随机执行(例如,90/10%或70/30%),或者可以根据更复杂的验证技术(诸如K倍交叉验证、留一交叉验证、留一组交叉验证、嵌套交叉验证等)执行拆分,以最小化采样偏差和过度拟合。
[0114] 训练数据445a至少可以包括来自与一个或多个技能机器人相关联的示例话语的话语子集。如上面所指示的,话语可以以各种方式提供,包括音频或文本。话语可以是句子片段、完整句子、多个句子等。例如,如果话语以音频形式提供,那么数据准备430可以使用言语到文本转换器(未示出)将音频转换成文本,该转换器将标点符号插入到结果文本中,
例如,逗号、分号、句号等。在一些情况下,示例话语由客户端或客户提供。在其它情况下,示例话语是从先前的话语库中自动生成的(例如,从库中识别特定于聊天机器人被指定学习
的技能的话语)。预测模型425的训练数据445a可以包括输入文本或音频(或文本或音频帧
的输入特征)以及与输入文本或音频(或输入特征)对应的标签450,例如,作为值矩阵或表。
例如,对于每个训练话语,可以将预测模型425推断的正确实体、意图及其分类的指示作为标签450中的基本事实信息提供。然后可以适配预测模型425的行为(例如,通过反向传播)
以最小化针对各种实体的所生成的推断与基本事实信息之间的差异。
[0115] 数据增强435包括使用训练数据445a作为锚定话语来生成具有任意数量的语言和格式的多组上下文和实体值的正向话语和负向话语以使预测模型425提供改进的话语表示
的过程。通过使用训练数据445a作为锚定话语来生成具有任意数量的语言和格式的多组上
下文和实体值的正向话语和负向话语,预测模型425能够更好地提供话语的表示。生成包括多个操作,这些操作通常包括:(i)使用训练数据的话语作为锚定话语并使用翻译、扰动和/或增强操作生成正向话语;以及(ii)使用锚定话语并使用增强和/或采样操作生成负向话
语。将锚定话语、正向话语和负向话语一起用于无监督对比损失框架,以从预先训练的句子编码模型中提取知识,以学习在意图分类任务中表现良好的新句子编码模型。
[0116] 模型425的训练过程包括选择模型425的超参数,并执行将来自增强训练数据445a的子集的话语输入到模型425中以找到最大化或最小化目标函数(例如,最小化模型425的
损失函数)的一组模型参数(例如,权重和/或偏差)的迭代操作。超参数是可以被调整或优
化以控制模型425的行为的设置。大多数模型显式定义控制模型不同方面(诸如存储器或执
行成本)的超参数。但是,可以定义附加的超参数以使模型适配特定场景。例如,超参数可以包括模型的隐藏单元或层的数量、模型的学习率、卷积核宽度、或模型的参数数量。每次训练迭代都可能涉及为模型425(配置有一组定义的超参数)找到一组模型参数,以便使用该
组模型参数的目标函数的值小于在前一次迭代中使用不同组模型参数的目标函数的值。可
以构造目标函数来测量使用模型425推断的输出与使用标签150注释到增强训练数据445a
的子集的基本事实之间的差异。
[0117] 一旦识别了该组模型参数,模型425就已被训练,并且可以使用测试数据445b的子集(测试或验证数据集)对其进行测试或验证。测试或验证过程包括使用诸如K倍交叉验证、留一交叉验证、留一组交叉验证、嵌套交叉验证等验证技术将来自测试数据445b的子集的
话语输入到模型425中的迭代操作,以调整超参数并最终找到一组最佳超参数。一旦获得一组最佳超参数,就可以将来自测试数据445a的子集的保留测试集输入到模型425中以获得
输出(在这个示例中为一个或多个已辨识实体),并且使用诸如Bland‑Altman方法和
Spearman排名相关系数之类的相关技术将输出与基本事实实体进行评估。此外,可以在实
体辨识评估阶段415中计算分析结果452中的性能度量,诸如错误率、准确率、精确率、召回率、接收者操作特性曲线(ROC)等。分析结果452中的度量可以用于实体辨识评估阶段415,以分析模型425用于辨识实体的性能。
[0118] 模型训练阶段410输出一个或多个经训练的模型,诸如实体辨识模型455。实体辨识模型455可以在预测模型训练阶段410和/或实现阶段420中部署和使用,以实现一个或多
个聊天机器人。例如,实体辨识模型455可以用于在各组训练数据中生成命名实体465,并且命名实体与标签450(例如,意图标签)一起可以用于训练其它预测模型425,诸如意图预测
模型。替代地,一个或多个聊天机器人可以被配置有经训练的实体辨识模型455,以从一个或多个聊天机器人用户接收话语,例如文本数据460,并提取从一个或多个聊天机器人用户接收到的各种话语的实体465。实体465可以是从文本数据460获得的提取信息(例如,分别
在图2和图3中描述的提取信息205;304)的一部分,并且可以用于诸如意图分类之类的下游处理。
[0119] 实体感知数据增强技术
[0120] 出于本申请的目的,实体类型可以指命名实体的类型或命名实体所属的类别,诸如人、组织和地点。实体值可以指实体类型内的单个命名实体(词语或短语)。例如,如上文关于输入话语“给Peter加薪”和“给James加薪”所讨论的,词语Peter和James是实体值,并且它们都属于实体类型“人”。实体类型的来源可以包括由云服务提供商生成的系统实体和由客户提供的自定义实体。
[0121] 存在不同方法执行实体感知增强。已经发现,随机实体值增强在降低实体敏感性方面比使用训练集中的命名实体进行增强具有更好的改进。本公开中公开的新型随机实体
值增强技术不仅仅是在输入话语和实体规范化上应用不同的实体值,还可以生成新的句
子,其中命名实体被通过具有各种增强率的增强包(例如,faker python包)随机采样的实
体值替换,以实现最佳性能。还可以对意图训练数据执行附加平衡(例如,分层批次平衡和源平衡)。最后,还可以基于实体类型(例如,人、组织、数字、日期等)应用随机实体值。例如,涉及某些实体类型(例如,人)的随机实体值可以实现更好的性能。所有这些技术都有助于
提高随机实体值增强的性能。下表说明了这两种不同方法之间的改进比较:
[0122]
[0123]
[0124] 在上表中,随机命名实体增强方法的改进数在232~315之间,而使用训练集中命名实体的实体增强方法的改进数在108~197之间。改进列中的数字是指意图预测模型使用
特定方法正确预测的话语总数,该总数超过基线模型(即,没有实体感知增强)正确预测的
话语总数。回归列中的数字是指在基线模型中正确预测但在使用新方法训练的新模型中变
得不正确的话语总数。上述数字是跨测试数据集累积的。本公开中描述的所提出的增强技
术提供了良好的准确性并且具有低推断时间,因为它们在部署期间不需要太多工作(例如,在推断时不需要NER模型)。训练时间可能更长,但推断时间应该相同。
[0125] 在某些实施例中,数据增强可以通过使用底层数据分布生成合成样本来扩大数据集。本公开中描述的实体感知数据增强技术包括正向和负向实体感知数据增强。正向数据
增强创建域中样本,而负向数据增强创建域外(或分布外(OOD))样本。正向实体感知增强技术解决了意图预测的模型对实体值变化的稳定性。正向实体感知数据增强有两种操作模
式:多样化模式和增强多样化(AD)模式。
[0126] 多样化模式通过对来自诸如简单数据增强(“EDA”)和噪声增强或其组合的增强技术的正向增强话语执行实体值替换操作来后处理正向增强的子集,并且不引入单独的额外
训练数据桶。在某些实施例中,替换操作可以包括用相同实体类型的随机值替换命名实体
的至少一个或多个实体值。在多样化模式的非限制性示例中,对于EDA增强话语“grant
Peter a promotion”,词语“Peter”还可以替换为“Luke”以生成话语“grant Luke a promotion”。在另一个示例中,对于噪声增强话语“Melbourne is a city;give Peter a raise on August 20th”,词语“Peter”和“August 20th”还可以替换为“Sara”和“next Friday”以生成话语“Melbourne is a city;give Sara a raise on next Friday”。换句话说,多样化模式可以被认为是两阶段增强技术,其中第一阶段包括使用诸如EDA和噪声之类的技术进行正向增强,而第二阶段包括对增强数据进行附加的替换操作(即,后处理)。下面将更详细地描述EDA和噪声技术。
[0127] 在某些实施例中,EDA使用以下操作之一从训练数据中的输入话语生成正向话语:同义词替换(即,从句子中随机选择非停止词的n个词语,并用这些词语中的每一个替换为
其同义词之一);随机插入(即,找到句子中随机词语的随机同义词,并将同义词插入到句子中的随机位置中);随机交换(即,随机选择话语中的两个词语并交换它们的位置);以及随机删除(即,以概率p随机去除句子中的每个词语)。例如,对于输入话语“give Peter a
raise”,词语“give”可以用同义词“grant”替换,以生成话语“grant Peter a raise”。同样,对于输入话语“give Peter a raise on August 20th”,可以去除词语“August 20th”来生成话语“give Peter a raise on”。
[0128] 噪声增强通过向输入话语添加一个或多个词语(即,添加有噪声的域中上下文)从训练数据中的输入话语生成正向话语。例如,对于输入话语“give Peter a raise on
August 20th”,可以在“give Peter a raise on August 20th”之前添加词语“Melbourne is a city”,以生成正向话语“Melbourne is a city;give Peter a raise on August
20th”。
[0129] 另一方面,增强多样化(AD)模式包括两个部分,正向EA增强和多样化模式增强。在某些实施例中,实体感知(EA)增强部分通过从域中储存库中随机采样实体值对输入话语中所有检测到的命名实体执行随机实体值替换操作,并将生成的话语作为额外的EA增强训练
数据引入(即,该模式引入单独的额外训练数据桶)。如上面所讨论的,多样化模式增强部分也对来自EDA、噪声或其组合的现有增强话语执行。因此,AD模式可以生成多个增强话语训练集——一个来自EA增强,另一个或其它来自后处理EDA和/或噪声增强。在一些实施例中,EA增强部分和多样化模式的第一阶段(例如,EDA、噪声或组合)可以并行执行,然后执行多样化模式的第二阶段(即,对EDA和/或噪声增强数据进行后处理)。
[0130] 此外,在某些实施例中,EA增强可以包括增强率配置,从而允许执行EA技术的多个操作。例如,当AD模式的增强率被设置为2时,对于输入话语“grant Peter a promotion”,配置率2可以执行EA增强以生成两个话语:“grant James a raise”和“grant Sara a raise”,以及多样化模式的话语“grant Luke a promotion”(上面关于仅用Luke替换Peter的多样化模式讨论的)。AD模式是EA数据增强方法的综合应用。但是,使用哪种模式的选择可以是超参数,或者由可以调整的超参数控制或取决于可以调整的超参数。例如,当训练数据小时,除了EA增强之外的附加多样化模式增强可能会有所帮助。在一些情况下,超参数调整可能只需要多样化模式。由于EA增强技术为训练模型引入了更多实体值,因此训练模型
可以学习平等对待实体值,以解决实体值敏感性问题。换句话说,在使用EA增强训练模型之后,两个输入话语“give Peter a raise on August 20th”和“give John a raise on
September 4th”应该产生相同的输出预测。
[0131] 负向增强技术解决了第二个挑战,其中机器学习模型使用实体值作为预测的捷径。因此,本文描述的技术将训练数据中的实体值作为OOD数据引入,因此训练模型可以学习这些域外实体值与域中意图无关。负向实体感知数据增强可以包括KAT加上无上下文实
体,以及KAT加上随机上下文中实体作为OOD。没有实体感知的负向数据增强可以包括KAT、SWAT和OOD,并且可以提高模型在域外测试中的性能和对停止词的敏感性。
[0132] 关键字增强技术(“KAT”)是一种负向增强技术,并且可以有实体感知或无实体感知。无实体感知的KAT增强会采样包含域中训练数据中存在但与语料库上下文不同的关键
字的话语,并将它们添加为OOD。KAT的目标是通过在不同的OOD上下文中使用训练数据中存在的关键字来最大限度地减少这些关键字朝某些意图的拉动。例如,对于训练话语“What is a dynamic entity(什么是动态实体)”,KAT可能会将词语“dynamic”和“entity”识别为关键字,从而用以下负向话语增强训练集:“but the information on the dynamics of population was often quite misleading(但关于人口动态的信息往往具有误导性)”,以及“does society really exist as an entity over and above the agglomeration of men?(社会真的作为超越人类聚集的实体而存在吗?)”
[0133] KAT加上无上下文增强的实体通过去除命名实体周围的域中上下文信息来生成在训练数据中作为负向域外示例出现的实体值,因此训练模型可能不会注意到特定的实体
值,因为它们除了域中示例之外还显示为域外示例。例如,对于输入话语“give Peter a raise on August20th”,KAT加上无上下文增强的实体通过去除实体值周围的上下文
(“give”和“raise”)来生成负向示例,并且结果话语变为“Peter August20th”。
[0134] KAT加上随机上下文中实体作为OOD增强生成在随机上下文中作为域外示例出现在训练数据中的实体值。在某些实施例中,随机上下文是从域外语料库中采样的。域外语料库具有诸如人名(即,人实体类型)之类的令牌,然后通过基于实体类型替换实体值来生成
随机上下文(例如,将Person类型的令牌替换为实体值“Peter”)。由于实体值与域中类别没有关联,因此这种增强可以有助于打破与域中意图类别的关联。例如,对于输入话语
“create$20expense for my uber ride to the airport(为我Uber乘车去机场产生20美
元费用)”,可以将实体值“$20”放在随机上下文中以生成话语“the minimum wage in some cities is$20(一些城市的最低工资为20美元)”。
[0135] 在某些实施例中,KAT增强生成的话语示例应该通过确保域中示例和域外示例的嵌入向量的距离高于阈值来远离域中示例的话语,使得训练模型不会观察到来自相同意图
的正向数据和负向数据,以避免混淆训练模型。嵌入向量是通过将话语示例放入语言模型
中创建的。例如,给定生成KAT版本的输入话语,使两个话语(即,域中示例和域外示例)通过语言模型以生成嵌入向量。这两个嵌入向量之间的距离应高于阈值。阈值可以是可以调整
以找出最佳距离的超参数。
[0136] SWAT通过识别训练数据中输入话语中的所有停止词和非停止词、保留输入话语中的停止词、以及用随机停止词替换输入话语中的所有非停止词来生成话语。停止词通常指
短语、句子和/或话语中对短语、句子和/或话语的含义没有贡献的那些词。但是,在自然语言处理(“NLP”)应用中,停止词通常指短语、句子和/或话语中从话语中被过滤掉使得命名实体辨识和/或意图分类模型关注话语中的实体值和其它上下文信息的那些词。停止词列
表可以由用户或客户提供和/或可以通过给定语言的公开可用和众所周知的停止词列表获
取。例如,对于输入话语“do you offer a one day trial membership”,通过去除非停止词“offer”、“day”、“trial”和“membership”,并插入停止词“to”、“say”、“a”和“likely”,生成话语“do you to a one say a likely”。以这种方式,输入话语中的停止词模式得以保留。通过用停止词替换所有非停止词,停止词增强话语的含义和意图类别与输入话语的含
义和意图类别不同。
[0137] OOD增强是一种负向增强技术,但不是实体感知的(即,不对OOD桶执行实体值替换),并且它识别不在域中(即,与特定域或特定任务相关)的一个或多个话语并将这些一个或多个话语视为负向话语。例如,话语可以对应于一个或多个不同的域。在一些情况下,一个域中的话语可以被视为负向话语。在一些情况下,两个或更多个域中的话语可以被视为
负向话语。前述示例并非旨在限制。用户或客户可以选择一个或多个域。替代地或附加地,可以取决于聊天机器人或意图分类器的特定任务或域自动选择一个或多个域。因而,不在
域中(即,不在一个或多个期望域中)的话语被视为负向话语。例如,对于所选择的域食品订购,训练语料库中不属于食品订购域的锚定话语可以被视为负向话语。训练语料库中的话
语可以被标注有一个或多个域。因而,在确定话语的一个或多个域时可以参考这些标签。替代地或附加地,可以使用域辨识模型和/或本领域中已知的其它模型来确定一个或多个域。
[0138] 图5是图示使用实体感知数据增强对预测模型进行整体调整的过程的简化流程图。图5中所绘出的处理可以在由相应系统、硬件或其组合的一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)中实现。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图5中呈现并在下面描述的过程500旨在是说明性而非限制性的。
虽然图5描绘了以特定顺序或次序发生的各种处理步骤,但这并不是限制性的。在某些替代实施例中,这些步骤可以以某种不同的次序执行,或者一些步骤也可以并行执行。在某些实施例中,诸如在图1‑4中所绘出的实施例中,图5中描绘的处理可以由预处理子系统(例如,预处理子系统210或预测模型训练阶段410)执行。
[0139] 在步骤502处,数据处理系统(例如,关于图4描述的聊天机器人系统400)获得一组包含话语的数据,用于训练意图预测模型。在步骤504处,该组数据被拆分成一组训练数据和一组测试和/或验证数据(评估数据集作为一个或多个预测模型的目标)。训练数据包括
话语和意图标签。在步骤506处,基于由NER模型支持的实体类型提取该组训练数据内的命
名实体,以准备数据增强。取决于考虑模型的超参数需求要应用的数据增强的类型和模式,该过程可以使用一种或多种或几种增强技术的组合,并按照下面将要讨论的不同流程进
行。
[0140] 仅对于正向增强,可以应用步骤EA 510、EDA 520和噪声522中的任意一个或多个来生成增强训练数据(或话语)。在步骤550处,针对方框502中的该组扩展训练数据和由这
些步骤(即,510、520和522中的一个或多个)生成的增强训练数据来训练预测模型(例如,意图预测模型),以学习用于辨识和分类话语内的实体的参数。这些步骤可以并行执行或以某种期望次序执行。
[0141] 仅对于正向增强多样化模式,过程转到步骤EDA 520或步骤噪声522或两者、然后多样化模式增强步骤540,以生成增强训练数据(或话语)。在步骤550处,针对方框502中的该组扩展训练数据和通过这些步骤(即,520&540和/或522&540)的增强训练数据来训练预
测模型,以学习用于对话语中表达的意图进行分类的参数。如上面关于多样化模式所讨论
的,步骤540的结果是EDA增强或噪声增强的后处理结果,而不是新的训练数据。
[0142] 对于正向增强AD模式,应用步骤EA 510和上述多样化模式步骤(即,520&540和/或522&540)来生成增强训练数据(或话语)。在某些实施例中,步骤EA 510和多样化模式的第
一阶段(520和/或522)可以并行且同时执行,然后执行步骤540。在步骤550处,针对方框502中的该组扩展训练数据和通过EA增强和多样化模式增强(例如,后处理的EDA和/或后处理
的噪声)的增强训练数据来训练预测模型,以学习用于对话语中表达的意图进行分类的参
数。
[0143] 对于负向增强,可以应用步骤SWAT 528和KAT相关增强530中的任意一个或多个来生成增强训练数据(或话语)。步骤530可以包括KAT、KAT加上无上下文实体、KAT加上随机上下文中实体作为OOD以及OOD增强。可以并行或按特定顺序应用这些增强技术中的一种或多
种来生成增强训练数据(或话语)。在步骤550中,针对方框502中的该组扩展训练数据和通
过步骤528和/或步骤530的增强训练数据来训练预测模型。
[0144] 正向增强和负向增强的步骤,诸如510‑530可以并行执行,但作为后处理步骤的步骤540应在EDA步骤520和噪声步骤522已经执行之后执行。
[0145] 在560处,在用于意图分类的一组或多组测试和/或验证数据上测试和/或验证一个或多个预测模型。执行并分析测试和/或验证以获得对一个或多个预测模型的修订评估,并且,如果有的话,获得对需要添加到一组或多组训练数据中的附加信息(例如,附加名词或文本格式)的理解,以提高一个或多个预测模型对以各种语言和/或文本格式的话语表达
的意图进行分类的性能。
[0146] 此后,基于对一个或多个预测模型的训练和测试的评估,可以迭代地重复步骤510‑560,直到评估证明一个或多个预测模型对于对以各种语言和/或文本格式的话语表达的意图进行分类具有最佳性能。一旦一个或多个预测模型被训练和/或实现由各种工具确
定的最佳性能。在步骤570处,可以将经训练的预测模型部署在聊天机器人系统内(例如,作为技能机器人的一部分),以对以各种语言和/或文本格式的话语表达的意图进行分类。例
如,可以接收话语,可以由一个或多个预测模型分析该话语以确定该话语是否属于意图之
一。
[0147] 说明性系统
[0148] 图6描绘了分布式系统600的简化图。在所示示例中,分布式系统600包括经由一个或多个通信网络610耦合到服务器612的一个或多个客户端计算设备602、604、606和608。客户端计算设备602、604、606和608可以被配置为执行一个或多个应用。
[0149] 在各种示例中,服务器612可以适于运行一个或多个服务或软件应用,该服务或软件应用使得能够实现本公开中描述的一个或多个实施例。在某些示例中,服务器612还可以提供可以包括非虚拟和虚拟环境的其它服务或软件应用。在一些示例中,这些服务可以作
为基于web的服务或云服务,诸如在软件即服务(SaaS)模型下,提供给客户端计算设备602、
604、606和/或608的用户。操作客户端计算设备602、604、606和/或608的用户进而可以利用一个或多个客户端应用与服务器612交互以利用由这些组件提供的服务。
[0150] 在图6所描绘的配置中,服务器612可以包括实现由服务器612执行的功能的一个或多个组件618、620和622。这些组件可以包括可以由一个或多个处理器执行的软件组件、硬件组件或其组合。应该认识到的是,各种不同的系统配置是可能的,其可以与分布式系统
600不同。因此,图6中所示的示例是用于实现示例系统的分布式系统的一个示例并且不旨
在进行限制。
[0151] 用户可以使用客户端计算设备602、604、606和/或608来执行一个或多个应用、模型或聊天机器人,这些应用、模型或聊天机器人可以生成一个或多个事件或模型,然后可以根据本公开的教导来实现或服务这些事件或模型。客户端设备可以提供使客户端设备的用
户能够与客户端设备交互的接口。客户端设备也可以经由该接口向用户输出信息。虽然图6仅描绘了四个客户端计算设备,但可以支持任意数量的客户端计算设备。
[0152] 客户端设备可以包括各种类型的计算系统,诸如便携式手持式设备、通用计算机,诸如个人计算机和膝上型计算机、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息传送设备、传感器和其它感测设备等。这些计算设备可以运行各种类型和版本的软件应用和操作系统(例如,Microsoft Apple 或类
TM
UNIX操作系统、Linux或类Linux操作系统,诸如Google Chrome OS),包括各种移动操作系TM
统(例如,Microsoft Windows Windows Android 、
Palm )。便携式手持式设备可以包括蜂窝电话、智能电话(例如,
)、平板电脑(例如, )、个人数字助理(PDA)等。可穿戴设备可以包括
Google 头戴式显示器和其它设备。游戏系统可以包括各种手持式游戏设备、具有
互联网功能的游戏设备(例如,具有或不具有 手势输入设备的Microsoft
游戏机、Sony 系统、由 提供的各种游戏系统以及
其它)等。客户端设备可以能够执行各种不同的应用,诸如各种与互联网相关的应用、通信应用(例如,电子邮件应用、短消息服务(SMS)应用),并且可以使用各种通信协议。
[0153] (一个或多个)网络610可以是本领域技术人员熟悉的任何类型的网络,其可以使用多种可用协议中的任何一种来支持数据通信,包括但不限于TCP/IP(传输控制协议/互联
网协议)、SNA(系统网络体系架构)、IPX(互联网分组交换)、 等。仅仅作为示
例,(一个或多个)网络610可以是局域网(LAN)、基于以太网的网络、令牌环、广域网(WAN)、互联网、虚拟网络、虚拟专用网(VPN)、内联网、外联网、公共电话交换网(PSTN)、红外网络、无线网络(例如,在任何电气和电子协会(IEEE)1002.11协议套件、 和/或任
何其它无线协议下操作的网络)和/或这些和/或其它网络的任意组合。
[0154] 服务器612可以由一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、 服务器、中档服务器、大型计算机、机架安装的服务器等)、
服务器场、服务器集群或任何其它适当的布置和/或组合组成。服务器612可以包括运行虚
拟操作系统的一个或多个虚拟机,或者涉及虚拟化的其它计算体系架构,诸如可以被虚拟
化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活的池。在各种示例中,
服务器612可以适于运行提供前述公开中描述的功能的一个或多个服务或软件应用。
[0155] 服务器612中的计算系统可以运行一个或多个操作系统,包括以上讨论的任何操作系统以及任何商用的服务器操作系统。服务器612还可以运行各种附加服务器应用和/或
中间层应用中的任何一种,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务
器、CGI(通用网关接口)服务器、 服务器、数据库服务器等。示例性数据库服务器
包括但不限于可从 (国际商业机器)
等商购获得的数据库服务器。
[0156] 在一些实施方式中,服务器612可以包括一个或多个应用以分析和整合从客户端计算设备602、604、606和608的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于从一个或多个第三方信息源和连续数据流接收到的
馈送、 更新或实时更新,其可以包括与传感器数据应用、金融报
价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等相关的实时事件。服务器612还可以包括经由客户端计算设备602、604、606和608的一个或多个显示设备显示数据馈送和/或实时事件的一个或多个应用。
[0157] 分布式系统600还可以包括一个或多个数据储存库614、616。在某些示例中,这些数据储存库可以用于存储数据和其它信息。例如,数据储存库614、616中的一个或多个可以用于存储信息,诸如与聊天机器人性能或生成的模型相关的信息,以供服务器612在根据各种实施例执行各种功能时使用的聊天机器人使用。数据储存库614、616可以驻留在各种地
点。例如,服务器612使用的数据储存库可以在服务器612本地或可以远离服务器612并且经由基于网络的连接或专用连接与服务器612通信。数据储存库614、616可以是不同类型的。
在某些示例中,服务器612使用的数据储存库可以是数据库,例如关系数据库,诸如由
Oracle 公司和其它供应商提供的数据库。这些数据库中的一个或多个可
以适于响应于SQL格式的命令来事项数据库中数据的存储、更新和检索。
[0158] 在某些示例中,应用还可以使用数据储存库614、616中的一个或多个来存储应用数据。应用使用的数据储存库可以是不同类型的,诸如,例如键‑值存储储存库、对象存储储存库或文件系统支持的通用存储储存库。
[0159] 在某些示例中,本公开中描述的功能可以经由云环境作为服务来提供。图7是根据某些示例的其中各种服务可以被提供为云服务的基于云的系统环境的简化框图。在图7中
描绘的示例中,云基础设施系统702可以提供一个或多个云服务,这些服务可以由使用一个或多个客户端计算设备704、706和708的用户请求。云基础设施系统702可以包括一个或多
个计算机和/或服务器,这些计算机和/或服务器可以包括上面针对服务器612描述的这些。
云基础设施系统702中的计算机可以被组织为通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置和/或组合。
[0160] (一个或多个)网络710可以促进客户端704、706和708与云基础设施系统702之间的通信和数据交换。(一个或多个)网络710可以包括一个或多个网络。网络可以是相同的或不同的类型。(一个或多个)网络710可以支持一种或多种通信协议,包括有线和/或无线协
议,以促进通信。
[0161] 图7中描绘的示例仅仅是云基础设施系统的一个示例,并且不旨在进行限制。应该认识到的是,在一些其它示例中,云基础设施系统702可以具有比图7所示的组件更多或更
少的组件、可以组合两个或更多个组件,或者可以具有不同的组件配置或布置。例如,虽然图7描绘了三个客户端计算设备,但是在替代示例中可以支持任何数量的客户端计算设备。
[0162] 术语“云服务”通常用于指由服务提供商的系统(例如,云基础设施系统702)根据需要并且经由诸如互联网之类的通信网络使用户可使用的服务。典型地,在公共云环境中,组成云服务提供商系统的服务器和系统与客户自己的内部服务器和系统不同。云服务提供
商的系统由云服务提供商管理。客户因此可以利用由云服务提供商提供的云服务,而不必
为服务购买单独的许可证、支持或硬件和软件资源。例如,云服务提供商的系统可以托管应用,并且用户可以经由互联网按需订购和使用应用,而用户不必购买用于执行应用的基础
设施资源。云服务旨在提供对应用、资源和服务的轻松、可扩展的访问。几个提供商提供云服务。例如,由加利福尼亚州Redwood Shores的Oracle 公司提供了几种
云服务,诸如中间件服务、数据库服务、Java云服务等。
[0163] 在某些示例中,云基础设施系统702可以使用诸如软件即服务(SaaS)模型、平台即服务(PaaS)模型、基础设施即服务(IaaS)模型以及包括混合服务模型的其它模型之类的不
同模型提供一个或多个云服务。云基础设施系统702可以包括一套应用、中间件、数据库以及使得能够供给各种云服务的其它资源。
[0164] SaaS模型使得应用或软件能够作为服务通过如互联网的通信网络交付给客户,而客户不必为底层应用购买硬件或软件。例如,SaaS模型可以用于为客户提供对由云基础设
施系统702托管的按需应用的访问。由Oracle 公司提供的SaaS服务的示
例包括但不限于用于人力资源/资本管理、客户关系管理(CRM)、企业资源计划(ERP)、供应链管理(SCM)、企业绩效管理(EPM)、分析服务、社交应用及其它的各种服务。
[0165] IaaS模型通常用于向客户提供基础设施资源(例如,服务器、存储装置、硬件和联网资源)作为云服务,以提供弹性计算和存储能力。Oracle 公司提供了各
种IaaS服务。
[0166] PaaS模型通常用于提供平台和环境资源作为服务,其使得客户能够开发、运行和管理应用和服务,而客户不必采购、构建或维护此类资源。由Oracle 公司
提供的PaaS服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务
(DBCS)、数据管理云服务、各种应用开发解决方案服务,以及其它服务。
[0167] 云服务通常基于按需自助服务、基于订阅、弹性可缩放、可靠、高度可用和安全的方式提供。例如,客户可以经由订阅订单订购由云基础设施系统702提供的一个或多个服务。然后,云基础设施系统702执行处理,以提供客户的订阅订单中所请求的服务。例如,用户可以使用话语来请求云基础设施系统采取某个动作(例如,意图),如上所述,和/或为本文描述的聊天机器人系统提供服务。云基础设施系统702可以被配置为提供一种或甚至多
种云服务。
[0168] 云基础设施系统702可以经由不同的部署模型来提供云服务。在公共云模型中,云基础设施系统702可以由第三方云服务提供商拥有,并且云服务被提供给任何普通公众客
户,其中客户可以是个人或企业。在某些其它示例中,在私有云模型下,可以在组织内(例如,在企业组织内)操作云基础设施系统702,并向组织内的客户提供服务。例如,客户可以是企业的各个部门,诸如人力资源部门、工资部门等,甚至是企业内的个人。在某些其它示例中,在社区云模型下,云基础设施系统702和所提供的服务可以由相关社区中的几个组织共享。也可以使用各种其它模型,诸如上面提到的模型的混合。
[0169] 客户端计算设备704、706和708可以是不同类型的(诸如图6中描绘的客户端计算设备604、606和608),并且可以能够操作一个或多个客户端应用。用户可以使用客户端设备与云基础设施系统702交互,诸如请求由云基础设施系统702提供的服务。例如,用户可以使用客户端设备来从聊天机器人请求信息或动作,如本公开中描述的。
[0170] 在一些示例中,由云基础设施系统702执行的用于提供服务的处理可以涉及模型训练和部署。这种分析可以涉及使用、分析和操纵数据集来训练和部署一个或多个模型。这种分析可以由一个或多个处理器执行,可能并行地处理数据,使用数据来执行模拟等。例
如,大数据分析可以由云基础设施系统702执行,用于生成和训练用于聊天机器人系统的一个或多个模型。用于这种分析的数据可以包括结构化数据(例如,存储在数据库中或根据结构化模型结构化的数据)和/或非结构化数据(例如,数据Blob(二进制大对象))。
[0171] 如在图7的示例中所描绘的,云基础设施系统702可以包括基础设施资源730,其用于促进由云基础设施系统702提供的各种云服务的供给。基础设施资源730可以包括例如处
理资源、存储或存储器资源、联网资源等。在某些示例中,可用于服务从应用请求的存储的存储虚拟机可以是云基础设施系统702的一部分。在其它示例中,存储虚拟机可以是不同系统的一部分。
[0172] 在某些示例中,为了促进这些资源的高效供给以支持由云基础设施系统702为不同客户提供的各种云服务,可以将资源捆绑成各组资源或资源服务(也称为“群聚(pod)”)。
每个资源服务或群聚可以包括一种或多种类型的资源的预先集成和优化的组合。在某些示
例中,可以为不同类型的云服务预先供给不同的群聚。例如,可以为数据库服务供给第一组群聚,可以为Java服务供给第二组群聚,其中第二组群聚可以包括与第一组群聚中的群聚
不同的资源组合。对于一些服务,可以在服务之间共享为供给服务而分配的资源。
[0173] 云基础设施系统702自身可以内部使用服务732,服务732由云基础设施系统702的不同组件共享并且促进云基础设施系统702的服务供给。这些内部共享的服务可以包括但
不限于安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、用于启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
[0174] 云基础设施系统702可以包括多个子系统。这些子系统可以用软件或硬件或其组合来实现。如图7所示,子系统可以包括用户接口子系统712,该用户接口子系统712使得云基础设施系统702的用户或客户能够与云基础设施系统702交互。用户接口子系统712可以
包括各种不同的接口,诸如web接口714、在线商店接口716(其中由云基础设施系统702提供的云服务被广告并且可由消费者购买)和其它接口718。例如,客户可以使用客户端设备,使用接口714、716和718中的一个或多个来请求(服务请求734)由云基础设施系统702提供的
一个或多个服务。例如,客户可以访问在线商店、浏览由云基础设施系统702提供的云服务,并且为客户希望订阅的由云基础设施系统702提供的一个或多个服务下订单。服务请求可
以包括识别客户和客户期望订阅的一个或多个服务的信息。例如,客户可以为云基础设施
系统702提供的服务下订单。作为订单的一部分,客户可以提供识别要为其提供服务的聊天机器人系统的信息以及可选的用于聊天机器人系统的一个或多个凭证。
[0175] 在某些示例中,诸如图7中描绘的示例,云基础设施系统702可以包括被配置为处理新订单的订单管理子系统(OMS)720。作为该处理的一部分,OMS 720可以被配置为:为客户创建账户(如果尚未创建);接收来自客户的账单和/或会计信息,该账单和/或账单信息
将用于针对向客户提供所请求的服务向客户计费;验证客户信息;在验证后,为客户预订订单;已经编排各种工作流程以准备用于供给的订单。
[0176] 一旦被正确地验证,OMS 720就可以调用订单供给子系统(OPS)724,其被配置为为订单供给资源,包括处理资源、存储器资源和联网资源。供给可以包括为订单分配资源,以及配置资源以促进由客户订单所请求的服务。为订单供给资源的方式和供给资源的类型可
以取决于客户已订购的云服务的类型。例如,根据一个工作流程,OPS 724可以被配置为确定所请求的特定云服务,并且识别可能已经针对该特定云服务而被预先配置的多个群聚。
为订单分配的群聚的数量可以取决于所请求的服务的大小/数量/级别/范围。例如,可以基于服务所支持的用户的数量、正在请求的服务的持续时间等来确定要分配的群聚的数量。
然后,可以针对特定的请求客户定制所分配的群聚,以提供所请求的服务。
[0177] 在某些示例中,如上所述的设置阶段处理可以由云基础设施系统702作为供应处理的一部分来执行。云基础设施系统702可以生成应用ID并从云基础设施系统702自身提供
的存储虚拟机中或从除云基础设施系统702以外的其它系统提供的存储虚拟机中为应用选
择存储虚拟机。
[0178] 云基础设施系统702可以向发出请求的客户发送响应或通知744以在所请求的服务现在准备好使用时进行指示。在一些情况下,可以将信息(例如,链接)发送给客户,使客户能够开始使用和利用所请求服务的益处。在某些示例中,对于请求服务的客户,响应可以包括由云基础设施系统702生成的聊天机器人系统ID和识别由云基础设施系统702为与聊
天机器人系统ID对应的聊天机器人系统选择的聊天机器人系统的信息。
[0179] 云基础设施系统702可以向多个客户提供服务。对于每个客户,云基础设施系统702负责管理与从客户接收到的一个或多个订阅订单相关的信息、维护与订单相关的客户
数据,以及向客户提供所请求的服务。云基础设施系统702还可以收集关于客户对已订阅的服务的使用的使用统计信息。例如,可以针对使用的存储量、传输的数据量、用户的数量以及系统正常运行时间和系统停机时间量等收集统计信息。该使用信息可以用于向客户计
费。计费可以例如按月周期进行。
[0180] 云基础设施系统702可以并行地向多个客户提供服务。云基础设施系统702可以存储这些客户的信息,包括可能的专有信息。在某些示例中,云基础设施系统702包括身份管理子系统(IMS)728,其被配置为管理客户信息并提供所管理的信息的分离,使得与一个客
户相关的信息不可被另一个客户访问。IMS 728可以被配置为提供各种与安全相关的服务,诸如身份服务,诸如信息访问管理、认证和授权服务、用于管理客户身份和角色及相关能力的服务,等等。
[0181] 图8图示了计算机系统800的示例。在一些示例中,计算机系统800可以用于在分布式环境以及上述各种服务器和计算机系统内实现任何数字助理或聊天机器人系统。如图8
所示,计算机系统800包括各种子系统,包括经由总线子系统802与多个其它子系统通信的
处理子系统804。这些其它子系统可以包括处理加速单元806、I/O子系统808、存储子系统
818和通信子系统824。存储子系统818可以包括非暂态计算机可读存储介质,其包括存储介质822和系统存储器810。
[0182] 总线子系统802提供用于使计算机系统800的各种组件和子系统按照期望彼此通信的机制。虽然总线子系统802被示意性地示为单条总线,但是总线子系统的替代示例可以利用多条总线。总线子系统802可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、使用任何各种总线体系架构的局部总线等。例如,此类体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线,其可以实现为根据
IEEEP1386.1标准制造的夹层(Mezzanine)总线,等等。
[0183] 处理子系统804控制计算机系统800的操作,并且可以包括一个或多个处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。处理器可以包括单核或多核处理器。可以
将计算机系统800的处理资源组织成一个或多个处理单元832、834等。处理单元可以包括一个或多个处理器、来自相同或不同处理器的一个或多个核心、核心和处理器的组合、或核心和处理器的其它组合。在一些示例中,处理子系统804可以包括一个或多个专用协处理器,诸如图形处理器、数字信号处理器(DSP)等。在一些示例中,处理子系统804的一些或全部可以使用定制电路来实现,诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。
[0184] 在一些示例中,处理子系统804中的处理单元可以执行存储在系统存储器810中或计算机可读存储介质822上的指令。在各个示例中,处理单元可以执行各种程序或代码指
令,并且可以维护多个并发执行的程序或进程。在任何给定的时间,要执行的程序代码中的一些或全部可以驻留在系统存储器810中和/或计算机可读存储介质822上,包括可能在一
个或多个存储设备上。通过适当的编程,处理子系统804可以提供上述各种功能。在计算机系统800正在执行一个或多个虚拟机的情况下,可以将一个或多个处理单元分配给每个虚
拟机。
[0185] 在某些示例中,可以可选地提供处理加速单元806,以用于执行定制的处理或用于卸载由处理子系统804执行的一些处理,从而加速由计算机系统800执行的整体处理。
[0186] I/O子系统808可以包括用于向计算机系统800输入信息和/或用于从或经由计算机系统800输出信息的设备和机制。一般而言,术语“输入设备”的使用旨在包括用于向计算机系统800输入信息的所有可能类型的设备和机制。用户接口输入设备可以包括,例如,键盘、诸如鼠标或轨迹球之类的指向设备、并入到显示器中的触摸板或触摸屏、滚轮、点击轮、拨盘、按钮、开关、小键盘、带有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备还可以包括使用户能够控制输入设备并与之交互的诸如
Microsoft 运动传感器的运动感测和/或姿势识别设备、Microsoft 360
游戏控制器、提供用于接收使用姿势和口语命令的输入的界面的设备。用户接口输入设备
还可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄图片和/或进行菜
单选择时的“眨眼”)并将眼睛姿势转换为到输入设备(例如,Google )的输入的
Google 眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令
与语音识别系统(例如, 导航器)交互的语音识别感测设备。
[0187] 用户接口输入设备的其它示例包括但不限于,三维(3D)鼠标、操纵杆或指示杆、游戏板和图形平板、以及音频/视频设备,诸如扬声器、数字相机、数字摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪、以及眼睛注视跟踪设备。此外,用户接口输入设备可以包括,例如,医疗成像输入设备,诸如计算机断层摄影、磁共振成像、位置发射断层摄影、以及医疗超声检查设备。用户接口输入设备也可以包括,例如,音频输入设备,诸如MIDI键盘、数字乐器等。
[0188] 一般而言,术语“输出设备”的使用旨在包括所有可能类型的设备和用于从计算机系统800向用户或其它计算机输出信息的机制。用户接口输出设备可以包括显示子系统、指示器灯或诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(CRT)、诸如利用液晶显示器(LCD)或等离子体显示器的平板设备、投影设备、触摸屏等。例如,用户接口输出设备可以包括但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备和调制解调器。
[0189] 存储子系统818提供用于存储由计算机系统800使用的信息和数据的储存库或数据存储库。存储子系统818提供了用于存储提供一些示例的功能的基本编程和数据构造的
有形非暂态计算机可读存储介质。存储子系统818可以存储软件(例如,程序、代码服务、指令),该软件在由处理子系统804执行时提供上述功能。软件可以由处理子系统804的一个或多个处理单元执行。存储子系统818还可以提供根据本公开的教导的认证。
[0190] 存储子系统818可以包括一个或多个非暂态存储器设备,包括易失性和非易失性存储器设备。如图8所示,存储子系统818包括系统存储器810和计算机可读存储介质822。系统存储器810可以包括多个存储器,包括用于在程序执行期间存储指令和数据的易失性主
随机存取存储器(RAM)以及其中存储有固定指令的非易失性只读存储器(ROM)或闪存。在一
些实施方式中,基本输入/输出系统(BIOS)可以典型地存储在ROM中,该基本输入/输出系统(BIOS)包含有助于例如在启动期间在计算机系统800内的元件之间传递信息的基本例程。
RAM通常包含当前由处理子系统804操作和执行的数据和/或程序服务。在一些实施方式中,系统存储器810可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。
[0191] 举例来说而非限制,如图8所示,系统存储器810可以加载正在被执行的可以包括各种应用(诸如Web浏览器、中间层应用、关系型数据库管理系统(RDBMS)等)的应用程序
812、程序数据814和操作系统816。作为示例,操作系统816可以包括各种版本的MicrosoftApple 和/或Linux操作系统、各种商用 或类UNIX
操作系统(包括但不限于各种GNU/Linux操作系统、Google OS等)和/或移动操
作系统,诸如iOS、 Phone、 OS、 OS、 OS
操作系统,以及其它操作系统。
[0192] 计算机可读存储介质822可以存储提供一些示例的功能的编程和数据构造。计算机可读介质822可以为计算机系统800提供计算机可读指令、数据结构、程序服务和其它数
据的存储。当由处理子系统804执行时,提供上述功能的软件(程序、代码服务、指令)可以存储在存储子系统818中。作为示例,计算机可读存储介质822可以包括非易失性存储器,诸如硬盘驱动器、磁盘驱动器、诸如CD ROM、DVD、 (蓝光)盘或其它光学介质的光盘
驱动器。计算机可读存储介质822可以包括但不限于, 驱动器、闪存存储器卡、通用串
行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带等。计算机可读存储介质822也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪
存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如基于固态RAM、动态RAM、静态RAM、DRAM的SSD、磁阻RAM(MRAM)SSD),以及使用基于DRAM和基于闪存存储器的SSD的组合的混合SSD。
[0193] 在某些示例中,存储子系统818还可以包括计算机可读存储介质读取器820,其还可以连接到计算机可读存储介质822。读取器820可以接收并且被配置为从诸如盘、闪存驱
动器等的存储器设备读取数据。
[0194] 在某些示例中,计算机系统800可以支持虚拟化技术,包括但不限于处理和存储器资源的虚拟化。例如,计算机系统800可以提供用于执行一个或多个虚拟机的支持。在某些示例中,计算机系统800可以执行诸如促进虚拟机的配置和管理的管理程序之类的程序。可以为每个虚拟机分配存储器、计算(例如,处理器、核心)、I/O和联网资源。每个虚拟机通常独立于其它虚拟机运行。虚拟机通常运行其自己的操作系统,该操作系统可以与由计算机
系统800执行的其它虚拟机执行的操作系统相同或不同。因而,计算机系统800可以潜在地
同时运行多个操作系统。
[0195] 通信子系统824提供到其它计算机系统和网络的接口。通信子系统824用作用于从计算机系统800接收数据以及向其它系统传输数据的接口。例如,通信子系统824可以使得
计算机系统800能够经由互联网建立到一个或多个客户端设备的通信信道,以用于从客户
端设备接收信息以及向客户端设备发送信息。例如,当计算机系统800用于实现图1中描绘
的机器人系统120时,通信子系统可以用于与为应用选择的聊天机器人系统进行通信。
[0196] 通信子系统824可以支持有线和/或无线通信协议两者。在某些示例中,通信子系统824可以包括用于(例如,使用蜂窝电话技术、高级数据网络技术(诸如3G、4G或EDGE(全球演进的增强数据速率)、Wi‑Fi(IEEE 802.XX族标准)、或其它移动通信技术、或其任意组合)接入无线语音和/或数据网络的射频(RF)收发器组件、全球定位系统(GPS)接收器组件和/
或其它组件。在一些示例中,作为无线接口的附加或替代,通信子系统824可以提供有线网络连接(例如,以太网)。
[0197] 通信子系统824可以以各种形式接收和传输数据。在一些示例中,除了其它形式之外,通信子系统824还可以以结构化和/或非结构化的数据馈送826、事件流828、事件更新
830等形式接收输入通信。例如,通信子系统824可以被配置为实时地从社交媒体网络的用
户和/或诸如 馈送、 更新、诸如丰富站点摘要(RSS)馈送的web馈
送的其它通信服务接收(或发送)数据馈送826,和/或来自一个或多个第三方信息源的实时
更新。
[0198] 在某些示例中,通信子系统824可以被配置为以连续数据流的形式接收本质上可能是连续的或无界的没有明确结束的数据,其中连续数据流可以包括实时事件的事件流
828和/或事件更新830。生成连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
[0199] 通信子系统824也可以被配置为将数据从计算机系统800传送到其它计算机系统或网络。数据可以以各种不同的形式传送给一个或多个数据库,诸如结构化和/或非结构化数据馈送826、事件流828、事件更新830等,该一个或多个数据库可以与耦合到计算机系统
800的一个或多个流传输数据源进行通信。
[0200] 计算机系统800可以是各种类型中的一种,包括手持便携式设备(例如,蜂窝电话、 计算平板、PDA)、可穿戴设备(例如,Google 头戴式
显示器)、个人计算机、工作站、大型机、信息站、服务器机架或任何其它数据处理系统。由于计算机和网络不断变化的性质,对图8中绘出的计算机系统800的描述旨在仅仅作为具体示
例。具有比图8中所绘出的系统更多或更少组件的许多其它配置是可能的。基于本文所提供的公开内容和教导,应当认识到的是,存在实现各种示例的其它方式和/或方法。
[0201] 虽然已经描述了特定的示例,但是各种修改、变更、替代构造以及等同物都是可能的。示例不限于在某些特定数据处理环境内的操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用一系列特定的事务和步骤描述了某些示例,但是对于本领域技术人员来说清楚的是,这并不旨在进行限制。虽然一些流程图将操作描述为顺序处理,但是许多操作可以并行或同时执行。此外,操作的次序可以被重新布置。处理可能具有图中未包括的其它步骤。上述示例的各种特征和方面可以被单独使用或联合使用。
[0202] 另外,虽然已经使用硬件和软件的特定组合描述了某些示例,但是应该认识到的是,硬件和软件的其它组合也是可能的。某些示例可以仅用硬件或仅用软件或其组合来实
现。本文描述的各种处理可以以任何组合在相同的处理器或不同的处理器上实现。
[0203] 在将设备、系统、组件或服务描述为被配置为执行某些操作或功能的情况下,这样的配置可以通过以下方式来实现,例如,通过设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作,诸如通过执行计算机指令或代码,或处理器或核心被编程为执行存储在非暂态存储介质上的代码或指令,或其任意组合来执行操作。进
程可以使用各种技术进行通信,包括但不限于用于进程间通信的常规技术,并且不同对的
进程可以使用不同的技术,或者同一对进程可以在不同时间使用不同的技术。
[0204] 在本公开中给出了具体细节以提供对示例的透彻理解。然而,可以在没有这些具体细节的情况下实践示例。例如,已经示出了众所周知的电路、处理、算法、结构和技术,而没有不必要的细节,以避免使示例模糊。本描述仅提供示例性示例,并且不旨在限制其它示例的范围、适用性或配置。相反,示例的先前描述将为本领域技术人员提供用于实现各种示例的使能描述。可以对元件的功能和布置进行各种改变。
[0205] 因而,说明书和附图应被认为是说明性的而不是限制性的。然而,将清楚的是,在不脱离权利要求书所阐述的更广泛的精神和范围的情况下,可以对其进行添加、减少、删除以及其它修改和改变。因此,虽然已经描述了具体的示例,但是这些示例并不旨在进行限制。各种修改和等同形式均在所附权利要求的范围内。
[0206] 在前述说明书中,参考其具体示例描述了本公开的方面,但是本领域技术人员将认识到本公开不限于此。上述公开的各种特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛的精神和范围的情况下,可以在超出本文描述的环境和应用的任何数
量的环境和应用中利用示例。因而,本说明书和附图被认为是说明性的而不是限制性的。
[0207] 在前面的描述中,为了说明的目的,以特定顺序描述了方法。应该认识到的是,在替代示例中,可以以与所描述的顺序不同的顺序来执行这些方法。还应该认识到的是,上述方法可以由硬件组件执行或可以实施在机器可执行指令的序列中,这些指令可以用于使机器,诸如通用或专用处理器或用指令编程的逻辑电路执行方法。这些机器可执行指令可以
存储在一个或多个机器可读介质上,诸如CD‑ROM或其它类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡,闪存,或适合存储电子指令的其它类型的机器可读介质。替代地,这些方法可以通过硬件和软件的组合来执行。
[0208] 在组件被描述为被配置为执行某些操作的情况下,这种配置可以通过例如设计电子电路或其它硬件来执行操作、通过对可编程电子电路(例如,微处理器或其它合适的电子电路)进行编程来执行操作,或其任意组合来完成。
[0209] 虽然本文已经详细描述了本申请的说明性示例,但是应该理解的是,本发明构思可以以其它方式被不同地实施和采用,并且所附权利要求旨在被解释为包括这样的变型,
除了受现有技术的限制。
[0210] 实施例可以通过使用计算机程序产品来实现,该计算机程序产品包括计算机程序/指令,该计算机程序/指令在由处理器执行时,使得处理器执行本公开中描述的任何方
法。