用于并行处理的混合客户端/服务器架构的制作方法

文档序号:11851420阅读:368来源:国知局
用于并行处理的混合客户端/服务器架构的制作方法与工艺

分布式网络通常对更多的计算资源具有访问权,且因此能够相对高效地执行复杂的处理任务。另外,驻留于分布式网络上的应用可以频繁地被更新,并且因此倾向于并入较新的功能。由于这些因素,曾经在本地设备上执行的许多服务现在利用可以作为分布式网络的一部分的远程设备来执行。然而,远程服务通常被实现为使得它们能够由许多不同的客户端来使用。由于此,一般化的远程服务可能对能够用于为具体用户提供高度个性化的信息没有访问权。此外,在许多情形下,客户端设备上的个人数据不能转移到远程设备。因此,难以按照对个人执行个性化任务的方式来使用远程服务。

实施例正是针对这些以及其他的一般考虑给出的。而且,虽然已经论述了相对具体的问题,应当理解实施例不应限于解决在

背景技术:
中所确定的具体的问题。



技术实现要素:

本公开的实施例涉及,通过在客户端设备的本地的服务以及通过网络与客户端设备通信的远程服务,提供对在诸如平板计算机、智能手机或任何其他计算系统等客户端设备处接收到的输入进行共享处理的混合客户端/服务器架构。当客户端设备接收到来自用户的输入、来自设备本地的过程或应用的数据、来自设备传感器(例如,麦克风、GPS、加速度计等)的数据或者来自远程设备或过程的数据时,客户端设备可以分析数据以判定:除了可能发生在设备上的对数据的任何处理之外,发送数据给远程服务以进行处理是否恰当和/或高效。如果该设备判定数据应当被提供给远程服务(例如,在诸如服务器等远程设备上和/或在远程设备的分布式网络上执行的应用),则客户端设备将数据(以及任何相关的命令或信息)发送到远程服务以便处理。同时,本地设备也开始利用本地服务处理数据。远程服务可以接收数据并且开始除了可以在设备上执行的任何处理之外的处理。远程服务可以与设备同时或者基本同时地处理数据,可以在设备完成数据处理之前就开始处理数据,或者可以在另外的时间处理数据。在实施例中,本地服务和远程服务在处理期间交换数据。这样做,可以增强本地服务和远程服务的处理能力。

在实施例中,可以采用混合客户端/服务器架构来基于用户与客户端设备的交互而生成有关于她的推断(inference)。在实施例中,推断可以标识有关人的信息,包括她喜欢的和不喜欢的、她的习惯、她计划参加的即将到来的事件等。在实施例中,推断可以是基于用户的习惯、位置、日历、web历史、搜索历史、联系人、设备使用等等的与个人有关和/或相关的信息的任何类型的标识或判定。客户端设备上的本地推断服务可以处理可能不适合发送到远程设备的一些数据(比方说例如私有数据),或者可能通过网络进行发送是低效率的数据(比方说例如加速度计数据),来生成关于用户的初始推断。在更具体的实施例中,初始推断可以不包括私有数据,或者可以被抽象以去除任何私有数据。在判定初始推断不包括私有信息时,推断可以被发送到远程推断服务以便进一步处理。远程推断服务可以充分利用可供远程设备和/或远程设备的分布式网络使用的额外的数据,来提供增强的推断。增强的推断可以存储在用户配置文件中,并且用于对设备与用户的交互进行定制。

在又一实施例中,混合客户端/服务架构可被采用,以基于本地订阅和远程订阅来生成混合订阅。可以在本地订阅(诸如监视用户位置的本地服务)与远程服务(诸如输送新闻更新的远程服务)之间标识关系。服务之间的关系可被充分利用以创建基于本地和远程服务的组合来将通知智能地呈现给用户的混合服务。

本公开的进一步的实施例提供了能够将由本地自然语言表达(NLE)评估过程或服务以及远程自然语言表达(NLE)评估过程或服务两者所提供的益处充分利用并且融合的混合客户端/服务架构。在实施例中,NLE过程接收作为自然语言的输入,并且解释NLE以标识命令、数据等。示范性的NLE评估过程是语音识别器。然而,对于本文公开的实施例可以采用其他NLE评估过程,比方说例如,文本评估过程。混合客户端/服务器架构提供了这样的系统:其中自然语言表达可以既在本地评估又通过远程服务来评估。本地和远程评估服务可以交换能够被每个服务用来更新和增强语音识别结果的解释。混合客户端/服务架构还可以被充分利用来为第三方开发者提供定义第三方知识库(例如,由第三方提供的数据和/或规则、第三方语法、第三方提示等)的能力,第三方知识库可用来辅助与具体应用有关的自然语言表达的评估。第三方知识库可由基于本地或远程的NLE评估过程来使用,以便可选地扩增它们的内置的评估NLE的能力,从而改善结果。

提供该发明内容以便以简化的形式来引入下面的具体实施方式中进一步描述的概念的选集。该发明内容不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。

附图说明

下面参考附图描述了非限制性的且非穷举性的实施例,在附图中:

图1是能够在客户端设备和分布式网络上执行共享处理数据的混合客户端/服务器系统100的实施例。

图2是使用混合客户端/服务器架构进行共享处理数据的方法200的实施例。

图3是生成最终结果的方法300的实施例。

图4是混合客户端/服务器推断系统400的实施例。

图5是利用混合客户端/服务器架构生成推断的方法500的实施例。

图6图示出能够编写混合订阅的混合客户端/服务器系统600的示范性的实施例。

图7图示出用于生成混合订阅警告的方法700的示范性的实施例。

图8是用于增强语音识别的混合客户端/服务器系统800的实施例。

图9是使用混合客户端/服务器架构进行共享语音处理的方法900的实施例。

图10是用于选择或生成自然语言表达的一个或多个解释的方法1000的实施例。

图11是用于在语音识别过程中标识第三方提示的方法1100的实施例。

图12是用于电影应用的示范性的第三方语法1200的实施例。

图13是用于通信应用的示范性的第三方语法1300的实施例。

图14图示出用于执行本公开的一个或多个实施例的平板计算设备。

图15图示出适合于实现本文公开的一个或多个实施例的计算环境的框图。

图16A图示出执行本文公开的一个或多个实施例的移动计算设备的一个实施例。

图16B是适合于实践本文公开的一个或多个实施例的示范性的移动计算设备的简化框图。

图17是适合于实践本文公开的一个或多个实施例的示范性的分布式计算系统的简化框图。

具体实施方式

下文参考构成了各个实施例的一部分以及示出具体的示范性的实施例的附图来更全面地描述各个实施例。然而,实施例可通过多种不同的形式来实现,而不应解释为限于本文阐述的实施例;相反,这些实施例被提供以使本公开将是透彻的以及完备的,并且将向本领域技术人员充分传达实施例的范围。实施例可以实现为方法、系统或设备。因此,实施例可以采取硬件实现方式、全软件实现方式或者组合软件和硬件方面的实现方式的形式。下面的详细说明因此不应在限制的意义上考量。

本公开的实施例涉及一种将设备专用(device specific)的过程解耦并且允许对要在客户端设备与分布式网络(也称为“云”)上拆分的数据进行处理的混合客户端/服务器架构。分布式网络可以包括经由比方说例如因特网等网络与客户端设备通信的一个或多个远程设备。在一些方面,分布式网络可以具有更多可用的资源(例如,存储器和处理能力),其与在客户端设备上执行任务相比允许执行更大的任务且允许更快地完成任务。因此,分布式网络可以提供远程服务(例如,过程或应用,云服务等),其提供除了驻留在客户端设备上的本地服务之外的额外功能。然而,在一些情形下,可能不期望将完成任务所必须的信息提供给分布式网络。例如,诸如隐私担忧、带宽使用、功耗等原因可能使得不期望将某些类型的信息发送到分布式网络以便处理。由于这些考虑导致的局限性可通过采用混合客户端/服务器架构来克服,该混合客户端/服务器架构允许通过客户端设备上的本地服务以及在可以是分布式网络的部分的一个或多个远程设备(例如,一个或多个服务器)上执行的远程服务来进行共享任务处理。然而,在其他实施例中,远程设备可以不是分布式网络的部分。公开的实施例进一步提供了在处理期间本地服务与远程服务之间的信息交换。在实施例中,这些信息可以包括通过单个过程或者对于单个过程可用的不同数据集所生成的结果。

本公开的实施例采用了混合客户端/服务器架构来增强诸如生产应用、日历应用和地图应用、设备通知、设备功能等。在其他实施例中,混合客户端/服务器架构可被采用来增强客户端设备上的应用诸如个人数字助理等,或者设备的其他用户体验(UX)元素。在实施例中,混合客户端/服务器架构可被采用来生成充分利用本地设备和一个或多个远程设备的力量来解释和处理数据。本文公开的混合客户端/服务器实施例可用于提供增强的推断、混合订阅以及增强的自然语言表达评估(例如,语音识别、文本处理等)、标识用户可能感兴趣或者与用户相关的信息,以及其他用途。这些特征可用于基于特定用户的喜欢的、不喜欢的和/或模式,来智能地更新应用、应用或设备的UX元素、提供额外的信息给设备等。

图1是能够进行共享处理数据的混合客户端/服务器系统100的实施例。共享数据处理可以包括与设备同时或者基本同时地,并行地,和/或在远程服务或本地服务完成处理数据之前,通过一个或多个本地服务(例如,在客户端设备上执行的服务、应用、过程等)和远程服务数据对数据的处理。在其他实施例中,共享处理可以包括通过分布式网络和一个或多个设备上的不同服务进行处理,以执行共同的任务、标识共同的解决方案,达到共同的结果,等等。混合客户端/服务器系统100包括经由通信网络110与分布式网络112通信的至少一个客户端设备102。通信网络110可以是任何类型的有线网络或无线网络或者有线网络和无线网络的组合。这种网络的非限制示例包括局域网(LAN)、广域网(WAN)、简易老式电话服务(POTS)网络、蜂窝数据网、卫星数据网、Wi-Fi网络和/或因特网。在实施例中,客户端设备102可以是智能手机、平板设备、膝上型设备、个人计算机或任何其他类型的能够通过网络交换数据的计算设备。在实施例中,分布式网络112可以是能够共享网络资源并且跨设备协调动作以产生结果的计算设备、数据存贮和软件的分布式系统。构成分布式网络112的计算设备、数据存贮和软件远离客户端设备102定位。在实施例中,分布式网络112可以能够执行分布式程序以执行任务。任务的组件可以散布在作为分布式网络112的部分的多个计算设备上,其中每个计算设备执行任务的组件并且利用消息将与任务有关的数据在彼此之间传达。作为分布式网络112的部分的单个计算设备和数据存贮可以通过诸如LAN、WAN或任何其他类型的网络的网络连接。

混合客户端/服务器系统允许通过客户端设备102和分布式网络112并行地处理。执行数据的共享处理的能力利用由客户端设备和分布式网络所提供的不同的能力和数据存贮。例如,客户端设备可以包含在分布式网络上不能得到的个人数据,诸如用户联系人、日历信息、当前位置。因此,本文公开的系统和方法可以采集信息,信息可以包括个人可标识信息(PII),用于例程商业目的,诸如但不限于,安全审计、产品支持、产品改进、产品注册以及用户注册。如本文所使用的,PII广义地包含了用户不想要其他人知道的任何事物。这通常意味着关于用户采集的或者由用户提供的任何数据,除非用户明确地授权组织共享该信息。PII的一些常见示例是姓名、生日、SSN、账户名和电话号码。可以被视为PII的其他数据包括IP地址、公司名称和位置信息。为了隐私的原因,有的人可能选择不使他或她的位置被跟踪和传送,但是有些人将选择自动允许传送他们的位置。

客户端设备可以包含不同类型的硬件和软件组件,使得可以生成数据或以其他方式提供数据用于由客户端设备102和/或分布式网络112处理。在实施例中,客户端设备102的硬件和软件组件也可以用来处理数据。另一方面,分布式网络112具有更多的处理能力以及对可用于处理从客户端设备102接收到的数据的更多的数据和信息的访问权。混合客户端/服务器100提供充分利用客户端设备102和分布式网络112的不同力量的能力,来达到当处理数据集时的改进的判定或结果。在实施例中,混合客户端/服务器系统还包括协调服务118,其对客户端112的和分布式网络112的对数据的共享处理进行协调。在实施例中,协调服务可以确定何种数据发送到分布式网络112进行处理,确定客户端设备102或分布式网络112何时达到最终结果,和/或从由客户端112和分布式网络112提供的一组结果确定最佳结果。在实施例中,协调服务118可以驻留于客户端设备102上、分布式网络112上,或者不同的设备上。

一般地,客户端设备102可以生成和/或接收数据,并且在生成或接收数据时标识与接收到的数据有关的任务或过程。客户端设备102还可以将数据经由通信网络110发送到分布式网络112,同时利用诸如本地服务108A-C等一个或多个本地服务108来处理数据。在客户端设备112本地地处理数据的同时,分布式网络112从客户端接收正在由设备处理的数据或者正在由设备处理的数据的子集,并且开始利用诸如远程服务116A-C等一个或多个远程服务116来处理接收到的数据。在实施例中,在处理期间得到的结果和/或判定可以在它们生成时在客户端设备102(也称为客户端102或本地设备102)与分布式网络112之间共享。共享结果可由客户端设备102和分布式网络112两者使用来更新它们自己的判定和/或结果,或者可以作为输入被接收到正在处理数据的服务以细化由客户端102和/或分布式网络112所生成的判定和/或结果。在实施例中,在共享初始判定之后,最终结果或判定可以由客户端102和分布式网络112两者来生成。最终结果或判定可由另外的服务诸如协调服务118来分析,以确定最佳结果或判定。最佳结果或判定可由客户端102达到,由分布式网络112达到,由客户端102和分布式网络112两者达到,或者由客户端102和分布式网络所达到的结果的组合来达到。然后,改进的结果或判定可以提供给客户端设备102、分布式网络112或两者。在实施例中,改进的结果可以是给定正在被处理的数据的情况下最可能的结果,具有最高置信度的结果是正确的,和/或可以是对标识正确结果的另外动作(例如,提示用户选择正确的结果)的判定。在实施例中,客户端设备102可以基于由协调服务118确定的最终结果来执行动作。

一般地,客户端设备102包括信号路由器104、客户端数据106和本地服务108。信号路由器接收一个或多个数据。数据可以包括用户请求或查询、命令或任何其他类型的数据。该数据可由用户输入生成,例如通过语音或用户与客户端设备102的用户输入组件的交互。数据还可以通过其他设备组件来生成,诸如设备时钟、加速度计、GPS组件和/或作为客户端设备102的部分的任何其他软件或硬件组件。在另外的实施例中,数据可由客户端设备102经由网络从远程设备接收。在接收到数据时,信号路由器104可以判定数据是否应当发送给分布式网络112。在做出该判定时,信号路由器可以判定将全部接收到的和/或生成的数据、接收到的和/或生成的数据的子集发送到分布式网络112,或者不将任何接收到的和/或生成的数据发送到分布式网络112。在实施例中,是否发送数据的判定可以基于策略,诸如隐私策略,客户端设备102和/或分布式网络112能力、用户请求和/或协议要求。本领域技术人员可以意识到,其他的客户端侧决策可由于各种原因做出,以限制何种数据发送到分布式网络112。无论信号路由器104判定为是否提供数据、或数据的子集到分布式网络112,信号路由器可以将数据提供给本地服务108进行处理。在实施例中,调用哪个本地服务处理数据的判定可以通过信号路由器或者通过作为客户端设备操作系统的部分或以其他方式与本地服务相关联的控制器来做出。

本地服务108可以包括驻留在客户端设备102上的一个或多个服务,诸如服务108A-C。本地服务可以是软件(例如,应用、过程等)、硬件编码功能、或硬件和软件的组合。本地服务108提供处理数据的能力,从而做出判定、生成结果、执行数据转换、执行动作或以其他方式分析数据。示范性的本地服务108可用于根据作为客户端设备102的部分的组件或应用的要求来得出推断、标识命令、执行动作、生成警告、监视订阅、执行语音识别、或以其他方式处理数据。本领域技术人员将意识到,任意数量的本地服务108可以驻留于客户端设备102上,如图1所示的本地服务1108A至本地服务N 108C所示的。此外,本领域技术人员将意识到,本地服务108所采用的过程可以根据接收到的数据的类型、本地服务涉及的应用或组件、用户请求等而变化。因此,客户端设备102上的应用可以提供其自身的一个或多个本地服务,其能够添加到一组本地服务108以根据应用要求来处理数据。本文公开的实施例因此允许有通过添加新的应用和/或经由软件更新来修改的本地服务的动态库。

在实施例中,本地服务108可使用客户端数据106来辅助处理数据。在实施例中,客户端数据106包括驻留于客户端设备102上或以其他方式对于客户端设备102为可用的全部数据。示范性的数据包括但不限于,设备位置、用户联系人、设备用途(例如,所访问的网站、呼叫的电话号码、一些动作的时间等)、设备组件信息(例如,蜂窝信息、GPS信息、加速度计数据)、第三方应用数据(例如,本地应用数据、可以包含语法和/或提示的第三方知识库)等。在实施例中,第三方应用可以提供有关其可以执行的动作类型或其能够满足的用户意图的指示。该指示可用于辅助确定本地和/或远程语音系统如何处理数据和/或对结果进行路由。在具体的实施例中,一些而不是全部的客户端数据106可与分布式网络112共享。例如,由于隐私限制或设备能力,将全部的客户端数据106发送到分布式网络112可能不是最优的。隐私限制可禁止客户端设备102传送某些数据,诸如用户联系人、已进行的电话呼叫、设备位置等。在其他实施例中,该信息可发送到分布式网络112。隐私限制可通过用户、通过法律或法规、或者通过第三方如网络载体(network carrier)来选择和施加。在其他实施例中,隐私限制可基于设备类型来选择。例如,用于起居室设备诸如游戏控制台的隐私限制,可能不同于用于电话的隐私限制。不同的限制可由用户来确定或者通过应用和/或服务提供商自动地确定。此外,设备能力可以禁止特定类型的客户端数据106的共享。例如,通过某些设备组件(诸如加速度计)生成的数据的量可能要求大量的带宽来传输数据到分布式网络112。该限制可能会耗尽设备电池(通过要求持续的连接来执行大量的数据传输)或者会导致增加金钱成本来购买额外的数据(例如从蜂窝载体)。此外,一些客户端数据106可以在客户端设备106上更高效地处理。在这些情形下,本地服务108可以更好地被安置(situate)以充分利用客户端数据106来处理数据。

分布式网络112可以包括远程数据114以及远程服务116,诸如远程服务116A-C。在实施例中,分布式网络112可以接收由信号路由器104确定的数据的至少一个子集。分布式网络可以调用一个或多个远程服务116来与设备102的本地服务108并行地、作为附加地、同时地或者基本同时地处理接收到的数据。在实施例中,远程服务116可在处理接收到的数据时充分利用分布式网络112的更大的计算能力。远程服务116也可以使用远程数据114来辅助对从客户端设备102接收到的数据的处理。远程数据114可以包括设备不可用的数据,诸如来自第三方源的数据(新闻提供商、股票数据、航班数据等),以及太大而不能存储在客户端设备102上的语言语法(例如,电影列表、电视节目、城市名称、用户可能请求动作的不同方式,等等)。

在给定本地设备102与分布式网络112之间的处理能力的差别的情况下,本地服务108和远程服务116可以具有不同的能力,并且对可被充分利用来处理数据以基于从客户端设备102接收到的数据做出判定或者生成结果的不同数据源具有访问权。这会使得通过本地服务108或者远程服务116来生成不同的判定或结果。然而,因为本地服务108和远程服务116两者都可以处理相关数据,所以本地服务108和远程服务116可以交换它们生成的任何数据、结果和/或判定,使得其他服务可以进一步处理交换的数据以确认、更新或以其他方式生成更佳的结果和/或判定。数据可以实时地(例如,当用户正在讲话或打字时,等等)交换,或者在输入信号已经完全输入之后但是在完成最终分析之前交换数据。在这样做时,混合客户端/服务器系统100充分利用本地设备102和分布式网络112两者的独特的数据和能力,响应于由本地设备102标识和/或生成的用户动作、用户查询、用户请求或事件来做出改进的判定并且提供改进的结果。

在实施例中,在生成结果和/或判定时,客户端设备102和分布式网络112可以将结果发送到协调服务118。在实施例中,协调服务可以分析来自本地服务108和远程服务116的结果以确定最终的结果和/或判定。在实施例中,协调服务118可以分析机器学习(例如,在短语&词语层级、域、n最佳列表重叠处(overlap of n-best list)由本地和/或远程服务生成的结果的置信度)、当前用户状态(近期他们采取了何种动作、他们是否正在驾驶,等等)、神经网络、排名系统、计分系统、置信系统、高斯模型、分类模型和/或采用任何其他类型的算法、模型和/或基于规则的机制来基于从本地服务108和/或远程服务116接收到的结果来生成最终结果。本领域技术人员将意识到由协调服务118所采用的算法或模型的类型可以根据从本地服务108接收到的结果或判定的类型或者基于将被请求的动作或输出的类型而变化。在实施例中,在拾取最终的一个或多个结果时,协调服务118可以将结果返回客户端设备102。在实施例中,最终结果的列表可能被区分优先次序。在另外的实施例中,最终结果可以随着可用于判定最终意图的以对话形式的信息或其他UX输出一起发送。在接收到来自协调服务118的最终结果时,客户端设备102可以执行动作,存储结果,或者基于接收到的结果来生成用户体验。

虽然本文关于图1所描述的实施例已经关于协调服务118根据从本地服务108和/或远程服务116接收到的结果确定最终结果进行了描述,但是在其他实施例中,协调服务118还可以从远程服务116和本地服务108接收初始结果并且基于该初始结果来做出判定。例如,在接收到来自服务之一的结果时,协调服务118可以确定正确的结果已经被标识且提供最终结果,而不等待来自其他服务的初始结果。在实施例中,因为通过客户端设备102接收到的数据可能已经通过期待实时回应的用户来提供,所以协调服务118可标识出迟滞,诸如来自本地服务108或远程服务118之一的延迟的回应,并且生成最终结果以确保用户以及时的方式接收回应。在又一实施例中,协调服务118可以判定是否应当将初始结果在本地服务108与远程服务116之间共享。例如,来自本地服务108的结果可以包括由于隐私策略而不应当被分发的数据。在这样的实施例中,协调服务118可以禁止结果被传输到分布式网络112或者对初始结果进行抽象以去除任何受保护的数据且将经抽象的结果发送到分布式网络。然而,在其他实施例中,远程服务116和本地服务108可以判定是否应当将初始结果共享。

已经描述了示范性的混合客户端/服务器系统,本公开现在将描述通过客户端设备和分布式网络进行共享数据处理的示范性的方法。图2是使用混合客户端/服务器架构(诸如图1所示的架构)进行共享处理数据的方法200的实施例。由于本文公开的系统和方法的共享本质,图2描绘了由客户端设备以及远程设备(诸如分布式网络上的服务器)两者执行的操作。在图示的实施例中,操作202-216由客户端设备(诸如客户端设备102(图1))来执行,而操作218-226可以通过服务器计算机(其是分布式网络(诸如分布式网络112(图1))的部分)来并行地、作为附加地、同时地或者基本同时地执行。

流程开始于操作202,其中客户端设备接收一个或多个数据。在实施例中,该一个或多个数据可以由用户动作生成,用户动作诸如用户与设备的输入组件(例如,小键盘、触摸屏或用于识别语音和/或音乐的麦克风,以及其他组件)的交互。在替代实施例中,在操作202处接收到的一个或多个数据可通过客户端设备的组件、驻留于客户端设备上的应用和/或通过与客户端设备通信的远程设备或应用来生成。在实施例中,流程同时或者基本同时地继续到操作204和206。在操作204处,对发送数据的至少一个子集到分布式网络以便进行共享处理做出判定。在实施例中,如果数据不包含私有数据,不要求对于作为分布式网络的部分的远程服务为不可用的能力,并且传输不是资源密集的,则可以在操作204处发送给分布式网络。在替代实施例中,关于要发送的数据的类型的判定可以在操作206期间做出,这将在下文进行进一步详述。在操作218处,分布式网络接收数据或至少数据的至少一个子集。在替代的实施例中,操作204和206可顺序地执行。

在实施例中,关于在操作204中何种数据发送给分布式网络而进行判定的同时,客户端设备还可以在操作206处开始处理接收到的数据。在实施例中,在操作202处接收到的数据可以涉及用户请求。通常期望尽快提供对用户请求的回应以增强用户体验。因此,在接收到数据时,方法200在实施例中提供在客户端设备处对数据的立即处理,同时关于数据是否应当由分布式网络处理做出判定。在实施例中,在操作206处,可通过驻留于客户端设备上的一个或多个本地服务来处理信号。本领域技术人员将意识到,在操作206处执行的处理可以基于在操作202处接收到的数据的类型而不同。例如,在实施例中,在操作206处处理信号可以执行动作,生成推断,触发警告,执行语音识别,或者执行任何其他类型的动作或计算。在操作206处执行的处理的示范性的实施例将在下文中关于图5-11进行进一步详述。在实施例中,在操作206处,本地服务可能能够使用客户端数据和组件来处理数据。

在客户端设备在操作206中处理数据的同时,分布式网络可以在操作220中处理数据的至少一个子集。在实施例中,数据的子集包括在操作202中接收到的数据中的一些而不是全部。类似于操作206,本领域技术人员将意识到,在操作206处执行的处理可以基于在操作202处接收到的数据的类型而不同。例如,在实施例中,在操作206中处理数据可以执行动作,生成推断,触发警告,执行语音识别,和/或执行任何其他类型的动作或计算。下文将关于图5-11进一步详述在操作206中执行的处理的示范性的实施例。在实施例中,在操作220,一个或多个远程服务可使用由分布式网络提供的远程数据和/或增强的处理能力来处理数据的子集。因此,通过在操作206和220中分别由设备和远程设备并行地、作为附加地、同时地、或者基本同时地执行的处理,充分利用不同的数据集和/或能力来生成有关在操作202处接收到的数据的结果或判定。

关于操作206,随着客户端设备利用本地服务处理信号,其可以生成一个或多个结果。在实施例中,结果可以是在操作206执行过程中生成的初始结果。在操作208处生成和提供的结果可以是由本地服务生成的判定或结论。在另外的实施例中,结果可以是由本地服务在处理数据的同时标识或以其他方式生成的命令、提示或数据。在操作208中,初始结果可提供给远程设备。如本文所使用的,术语“初始结果”可以是指部分判定和/或不完全分析。在其他实施例中,术语“初始结果”可以是指在进一步处理时可能变化的最初判定或分析。类似地,在操作222中,远程服务也可以生成初始结果。初始远程服务结果(本文还称为“远程结果”)可以是部分结论、判定、命令、提示等。初始的本地和远程服务结果可以由于对于不同处理为可用的处理能力以及数据的差别而不同。在实施例中,操作208和222允许客户端设备和分布式网络在结果生成时发送结果。换言之,数据可以在生成时交换,而无需本地服务和/或远程服务在交换数据之前完成。因此,在操作208和222中交换初始结果为本地服务和远程服务提供了将原本可能对于改进数据的处理来说是不可用的数据并入的能力,并且可以进而提供改进的结果。

在交换初始结果时,流程从操作206继续到操作210以及从操作220继续到操作224。在操作210中,本地服务结果(本文还称为“本地结果”)是用初始远程服务结果来更新的。在一个实施例中,用初始远程服务结果更新本地服务结果可能要求客户端设备利用初始远程服务结果作为额外的输入来重新处理数据和本地服务结果。在这样的实施例中,在操作206中执行的本地服务可以利用由初始远程服务结果提供的额外数据来再次执行。在另外的实施例中,在一个或多个本地服务仍处理数据的同时,可以接收初始远程服务结果。在这样的实例中,一个或多个本地服务可以在完成之前处理初始远程服务结果,从而更新本地服务结果,而无需用初始远程服务结果重新处理数据。在实施例中,在操作210中更新本地服务结果可使得生成中间的本地服务结果。

类似地,在操作224中,用初始本地服务结果来更新远程服务结果。在一个实施例中,用初始本地服务结果更新远程服务结果可能要求服务器设备利用初始本地服务结果作为额外的输入来重新处理数据、数据的子集和远程服务结果。在这样的实施例中,在操作220中执行的远程服务可以利用由初始本地服务结果提供的额外的数据来再次执行。在另外的实施例中,在一个或多个远程服务仍处理数据的同时,可以接收初始本地服务结果。在这样的实例中,一个或多个远程服务也可以在完成之前处理初始本地服务结果,从而更新远程服务结果,而无需重新处理数据和初始远程服务结果。在操作224中更新初始远程服务结果之后,流程继续到操作226,在操作226中,将中间的远程服务结果提供给客户端或另外的组件或过程,诸如协调服务(例如,协调服务118(图1))或仲裁器,这将在下文结合图8-11进行进一步详述。在实施例中,中间的远程服务结果可以是在从本地设备接收到初始结果之后以其他方式生成、更新或重新处理的判定、结果、命令、提示或数据。

返回设备操作,在操作210中更新本地服务结果之后,流程继续到可选的操作212。在操作212中,中间的本地服务结果可与中间的远程服务结果进行比较。在实施例中,可利用中间的远程服务结果作为额外的输入,再次执行一个或多个本地服务。在另一实施例中,可以利用机器学习、神经网络、排名系统、计分系统、置信系统、高斯模型、分类模型来执行比较,或者采用任何其他类型的算法或模型来根据一组中间结果生成最佳结果。下文参考图3更详细说明操作212。

流程继续到操作214,在该操作中客户端设备生成最终结果。该最终结果可以是在操作206或210中生成的本地服务结果之一。在其他实施例中,最终结果可以是在可选的操作212中生成或标识的结果。在其他实施例中,不是在操作214中生成最终结果,而是客户端可以从例如协调服务或远程设备接收最终结果。在实施例中,最终结果可包括单个结果、多个结果或者结果的网格(lattice)。

流程继续到操作216,在该操作中设备基于在操作214中生成的最终结果来执行动作。本领域技术人员将意识到,动作的类型取决于在操作214中生成的结果。例如,设备可以执行动作(例如,执行web搜索,呼叫联系人或者对联系人进行文本编辑、显示地图、进行预定,更新配置文件信息,等)。在其他实施例中,如果在操作214中确定了需要澄清的多个结果,则在操作216中,设备可以向用户显示多个结果并且允许用户选择正确的结果。

虽然图2图示出客户端与远程设备之间的结果的单次交换,但是在实施例中,远程设备和客户端可以多次交换结果和/或执行更新的处理,直到客户端和远程设备中的一者或两者确定已经达到满意的结果。在另外的实施例中,根据接收到的数据的类型,可以执行多次数据交换作为处理操作206和220和/或更新操作210和224的部分。例如,如果接收到的数据要求语音识别,则客户端和远程设备两者都可以执行语音识别并且交换它们的初始结果。在接收到初始结果时,客户端和远程设备两者都可以更新它们的结果。除了更新结果之外,客户端和远程设备还可以执行额外的处理,诸如域检测。通过域检测生成的结果可以随后在客户端与远程设备之间交换,此时,每一方将再次更新它们的结果。在完成域检测时,客户端和远程设备两者可以再次处理结果来执行进一步的语言理解。例如,客户端和远程设备可各自分析它们的结果来执行意图检测、上下文判定、实体检测和数据库查找。来自该额外分析的结果还可以在客户端和远程设备之间交换,从而允许各方进一步基于个体的判定来更新结果。因此,本领域技术人员将意识到可以调用多个本地和远程服务,并且在方法200执行期间可以发生多次交换。

图3是生成最终结果的方法300的实施例。在实施例中,方法300可以通过协调服务或仲裁器来执行。方法300可通过客户端设备、通过可能是分布式网络的部分的远程设备(例如,服务器)或者通过既不是分布式网络的部分也不是客户端的另一远程设备来执行。在实施例中,在图3中所描述的操作可以在图2的操作212或214中来执行。流程在操作302开始,在操作302接收到第一结果。在实施例中,第一结果可以来自客户端设备(例如,通过本地服务生成)或分布式网络(例如,通过远程服务生成)。流程继续到判定操作304,其中方法300判定第二结果是否被接收到的。在实施例中,第二结果可从客户端或远程设备接收到。如果第二结果没有接收到,则流程分支到“否(NO)”到操作306。

在操作306中,方法300判定等待时间是否已到期。在实施例中,结果可以响应于用户请求而生成。在这样的实施例中,如果做决策过程挂起或者用户必须等待长时间来得到结果,则用户体验降级。在这样的实施例中,即使已经接收到其他结果,也可以仅利用第一结果来生成最终结果,从而最小化用户等待时间。等待时间可以预先确定,或者可以基于请求的类型或正在生成的结果的类型[based on the type or request or type of request being generated]而动态地确定。如果等待时间没有到期,则流程分支到“否”并且返回决策操作304。

如果等待时间已经到期,则流程分支到“是(YES)”到操作308,在该操作308中,可以仅利用第一结果来生成最终结果。在实施例中,生成最终结果可能要求对第一结果执行额外的操作。在其他实施例中,生成最终结果可以包括选择未经修改的初始结果作为最终结果。流程继续到操作312,其中最终结果被提供给客户端设备、分布式网络中的远程设备、不是分布式网络的部分的其他远程设备、和/或由本地设备、分布式网络中的远程设备以及其他远程设备组成的组合。

返回操作304,如果已经接收到第二结果,则流程分支“是(YES)”到操作310。在操作310中,基于第一结果和第二结果生成最终结果。在一个实施例中,生成最终结果可以包括:将第一结果和第二结果提供给过程或算法来基于第一结果和第二结果生成新的最终结果。在另一实施例中,生成最终结果可以包括选择第一结果或第二结果中的一个作为最终结果。该选择可以基于机器学习、神经网络、排名系统、计分系统、置信系统、高斯模型、分类模型来确定,或者采用任何其他类型的算法或模型来选择最佳答案。在生成最终结果时,流程继续到操作312,在该操作312中,最终结果提供给客户端设备、提供给可以是分布式网络的部分的服务器,或者提供给两者。

虽然图3已经被描述为接收两个结果,在另外的实施例中,多于两个的结果可用来生成最终结果。另外地,多个本地服务和/或远程服务可用于处理数据。本文所描述的实施例可用于以基本同时的方式在执行于设备和/或分布式网络上的多个服务之间交换数据。例如,通过设备上的麦克风接收到的输入可由本地语音识别过程、本地音乐识别过程、远程语音识别过程和/或远程音乐识别过程来处理。本文公开的实施例可用于在同时执行的多个过程之间交换结果。在另外的实施例中,在操作308或310中生成的最终结果可进一步被处理、分析或者与其他结果组合以生成额外的和/或改进的最终结果。

已经描述了代表了操作中的通用混合客户端/服务器架构的系统和方法,本公开现在将描述可利用混合客户端/服务器架构来采用的另外的实施例。可能期望的是将某些信息维持在客户端设备上。这样的信息可能涉及个人用户信息,比方说例如,用户的联系人、约会和/或在一天的任何既定时间的位置。然而,个人数字助理应用的执行可通过标识出用户的某些特性诸如所喜欢的、所不喜欢的和/或习惯来改进。个人数字助理的功能可通过提供如下的机制来进一步扩增:其中个人数字助理可以标识出这样的特性,而不必请用户明确地提供和/或定义特性。这样做允许个人数字助理应用随时间推移而学习用户,以及针对用户行为的变化进行调节。可采用各种推断服务来基于用户与客户端设备的交互、用户位置、用户的常用联系人等来标识和更新有关用户的特性。然而,客户端设备经常缺乏精确地得出这样的推断所需的资源(例如,处理能力、可用的存储器等)。另一方面,分布式网络具有确定这些推断的资源,但是没有做出推断所需的用户数据,这些数据可能驻留于客户端设备上。使得问题进一步复杂化的是,由用户限定的或按法律限定的隐私策略可能禁止做出这样的推断所需的个人数据被传输到远程设备。混合客户端/服务器架构可被采用,在维持用户数据的隐私的同时提供得到推断所需的资源。

图4是混合客户端/服务器系统400的实施例。混合客户端/服务器系统400可以包括客户端设备402以及分布式网络410,它们经由通信网络410来通信。虽然系统400可以包括如在图1的混合客户端/服务器系统100中所描述的类似的组件,为图示简单,与图1所提供的说明类似的方式操作的组件(例如,图1的信号路由器104)没有被包含在图4中。在实施例中,客户端设备402包括一个或多个推断服务,诸如本地推断服务404。在实施例中,本地推断服务404接收客户端数据406作为输入。客户端数据406包括诸如在特定时间点的设备位置、用户联系人信息、用户的安排或约会和/或其他类型的个人输入等数据。因为本地推断服务404位于设备402上,所以客户端数据406保持在客户端设备402上,并且因此,当客户端数据406被本地推断服务404访问时,没有违反隐私限制。本地推断服务404对客户端数据406进行操作来生成本地推断。本领域技术人员将意识到,根据要确定的推断的类型,可以在设备404上采用许多不同类型的推断服务。例如,可采用本地推断服务来标识喜爱的位置,同时联系人推断服务能够被采用来标识喜爱的联系人。推断服务的操作可基于服务的类型而不同。

作为示例,在客户端设备上的位置服务可以有规律地在一天之内的不同时点跟踪用户的位置。在获取了足够量的位置数据之后,位置服务可以基于时间和位置来生成位置推断。如果在确定的时间段(例如,一个月)内,用户的设备在夜间有规律地位于特定位置,则本地推断服务404可以判定该位置是用户的家。在其他实施例中,判定可不基于时间,而是基于置信值来确定需要多少数据来做出精确的判定。本领域技术人员将意识到,在不偏离本公开的精神的前提下,判定可基于任意数量的因素。类似地,如果用户在日间有规律地位于特定的位置,则推断服务404可以判定该位置是用户的工作场所。作为另一示例,如果用户经常呼叫特定联系人、与特定联系人通过电子邮件和/或写文本来通信,则推断服务可确定该联系人为家庭成员、朋友或原本应当添加到喜爱列表的联系人。虽然本文描述了本地推断服务的具体示例,但是本领域技术人员将意识到,可采用不同类型的推断服务,而不偏离本公开的精神。

虽然本地推断服务404能够从用户的个人数据和喜欢得出有限的推断,但是本地推断服务404经常缺乏得出完整推断的能力。例如,本地推断服务404可以将特定的位置标识为用户的家或工作场所,但是它可能不能够标识出家庭地址或者用户营业地点。然而,在分布式网络412上的远程推断服务414,诸如远程推断服务414A-C,可以足够精准和/或具有生成更完整推断所需的数据。在实施例中,由本地推断服务404生成的推断可以被抽象以去除个人数据并且经由通信网络410或协调服务418发送到远程推断服务414。在一个实施例中,本地推断服务404可以生成抽象结论并且发送请求以获得来自远程推断服务414的进一步的推断。在其他实施例中,协调服务可以生成抽象。在替代的实施例中,本地推断服务可以确定位置,但是不能够将其标识为家或工作场所,直至接收到来自远程推断服务的额外的信息为止。例如,如果位置推断服务判定用户在被远程推断服务(或本地推断服务)表明其是购物商场的位置度过夜晚,并且在被远程推断服务(或本地推断服务)表明其为居住区域的位置度过白天,则本地推断服务404可以判定用户在夜间工作,并且商场是用户的工作地,而白天位置是用户的家。

返回家庭和工作场所的示例,与用户的家相关联的位置可以从提供给远程推断服务414的推断或数据中提取。在将位置信息发送给远程推断服务414之前,可从位置信息中除去任何个人数据(诸如关于该位置是用户家的指示)。然后,远程推断服务404可以充分利用远程数据416来得出有关位置信息的进一步的推断和/或结论。在实施例中,远程数据416可以包括现实世界数据,诸如但不限于,地图数据、地址簿、第三方记录等。远程推断服务414可以交叉引用自本地推断服务404抽象的数据与远程数据416,从而关于位置推断提供额外的信息和/或得出额外结论。例如,远程推断服务414可以对位置信息执行逆地理码查找以确定用户家和/或工作场所的地址。在示例的扩展中,该地址随后可以与地址数据存贮进行交叉引用以确定用户工作场所的名称。通过使用混合架构,对于客户端设备402不可用的额外的信息可被推断出,而无需将任何个人数据从客户端设备402传输到分布式网络412。

通过远程推断服务414确定的额外的推断数据可以提供给协调服务418。协调服务418可以将本地推断服务404生成的本地推断与远程推断服务414生成的额外的推断信息进行组合,以创建更新的推断。协调服务418随后可以将更新的推断存储到用户配置文件420中。例如,通过推断信息的组合,用户配置文件420可更新以表明他们居住在华盛顿州Redmond,ABC街道123号,并且用户在微软公司工作。

更新的用户配置文件420可以存储在客户端设备402上。在替代的实施例中,用户配置文件可以存储在分布式网络中,或者部分地存储在分布式网络和所述设备中。客户端设备402上的用户体验(UX)生成器408可使用来自更新的用户配置文件的信息来提供更好的用户体验。例如,因为用户配置文件表明用户工作在微软公司,所以UX生成器可以自动向用户显示有关微软公司的新闻故事,在早晨和/或晚上自动显示用户家与微软公司之间的地图和/或交通信息,等等。因此,以及除了其他益处之外,混合客户端/服务器推断系统400克服了之前确定的隐私限制以及设备局限性,来提供个人数字助理持续地学习用户以及因此为用户提供更相关且更需要的信息的能力。

图5是利用混合客户端/服务器架构生成推断的方法500的实施例。由于本文公开的系统和方法的共享本质,图5描绘了在分布式网络上通过客户端设备和计算设备诸如服务器执行的操作。在图示的实施例中,操作502-512是由客户端设备执行的,诸如客户端设备402(图4),而操作514-516可与由作为分布式网络(诸如分布式网络412(图4))的部分的服务器计算机并行地、作为附加地、同时地、或者基本同时地执行。虽然图5图示出具体的次序,本领域技术人员将意识到,本文公开的系统和方法可以采用其他类型的次序。例如,数据可源自于分布式网络,源自其他设备,或者源自分布式网络、设备和/或其他设备的组合。

流程从操作502开始,其中客户端设备接收一个或多个数据。在实施例中,一个或多个数据可通过设备组件(例如,GPS信号,呼入电话或电子邮件,等)生成,或者通过用户动作(诸如用户与设备的输入组件(例如,小键盘、触摸屏、用于标识语音的麦克风)的交互)来生成。在可替代的实施例中,在操作502处接收到的一个或多个数据可通过客户端设备的组件生成,通过驻留于客户端设备上的应用生成,或者通过与设备通信的远程设备或应用生成。在实施例中,流程继续到操作504。在操作504中,做出判定,数据不能发送到本地设备。在实施例中,数据不能发送到远程设备,因为其包含有被用户偏好或隐私法禁止从设备中传出的受保护或隐私数据。

流程继续到操作506,在该操作中通过一个或多个本地推断服务来处理数据以生成一个或多个本地推断。如之前所述,用于生成这样的推断的处理可根据所确定的推断、接收到的数据的类型和/或推断类型和数据类型的组合而不同。例如,关于图4所描述的家和工作场所推断可以在操作506中生成。在操作506中生成一个或多个推断之后,流程继续到决策操作508,在该操作中对本地推断是否应当发送到远程服务以便进一步处理做出判定。例如,在实施例中,本地推断可以包含不能被抽象或泛化的隐私信息。在这些情况下,流程分支“否(NO)”到操作510,其中本地推断被保存到用户配置文件,可以访问用户配置文件以提供增强的用户体验。

另一方面,如果在操作506中生成的本地推断不包含受保护或隐私信息,或者如果本地推断可被进一步抽象或泛化以去除受保护的或隐私数据,则本地推断数据被发送到远程设备,并且流程分支“是(YES)”到操作514,在操作514,可以是分布式网络的部分的诸如服务器的远程设备接收本地推断数据。在实施例中,本地推断数据可以是通过本地推断服务生成的结论或结果和/或与结论或结果相关的数据,诸如地址、标识符、名称、话题(例如,体育、新闻类别等)。流程继续到操作516,在该操作中,可通过驻留于远程设备上和/或在分布式网络中的一个或多个远程推断服务来处理本地推断。在实施例中,分布式网络中的远程推断服务可以对客户端设备不可用的额外的数据(例如,远程数据416(图4))和/或服务(例如,逆地理码查找)具有访问权。远程推断服务可以处理本地推断以标识与本地推断相关联的额外的信息(例如,地址、工作场所名称、关系)。在其他实施例中,远程推断服务可以标识与本地推断相关的其他类型的服务(例如,地图/交通数据,新闻源,第三方资源,等等)。在操作516中通过远程推断服务进行的处理可以生成更新的推断或者确定可能与推断相关联的额外的信息(例如,到新闻源或第三方资源的连接)。在操作518中,与本地推断相关的经更新的推断和/或信息可发送给客户端设备,其中经更新的推断被保存到用户配置文件,可访问该用户配置文件以提供增强的用户体验。

混合客户端/服务器架构还可以被采用来基于设备本地的订阅和存储在分布式网络中的订阅来创建复合的、或混合的订阅服务。在实施例中,订阅可以是这样的服务:其采集用户可能感兴趣的信息且自动地提供警告和/或信息给用户,而无需用户手动搜索信息。示范性的本地订阅包括但不限于,本地闹钟(local alarm)、位置监视(例如,当设备越过地理围栏时生成警告)、日历提醒等。示范性的远程订阅包括但不限于,订阅新闻源或体育计分,股票市场更新、订阅第三方服务(例如,监视航班状况以自动通知用户他们的航班是否延迟的服务)、交通更新,等等。一般地,本地设备订阅不涉及远程订阅。通过标识本地订阅和远程订阅以标识本地订阅与远程订阅之间的关系,可以增强个人数字助理应用。个人数字助理应用能够生成混合订阅,混合订阅自动地将不同的订阅相关联以提供增强的订阅服务。例如,可以创建将在用户当前地点有新闻价值的事件通知给用户的混合服务。

例如,混合订阅可以由监视用户位置的本地订阅和对新闻源的远程订阅构成。混合订阅可以创建提供来自新闻源的与用户的当前位置相关的新闻文章的订阅。通过混合订阅输送的内容可以随着用户的行进而动态地变更。在另一实施例中,混合订阅可以将多个远程和/或本地订阅相互关联。例如,如果用户具有对交通数据和航班状况的远程订阅以及监视用户当前位置的本地订阅,则混合订阅可以将三个订阅组合成混合订阅,该混合订阅基于交通信息生成警告,告知用户她应当何时出发去机场来确保她不会错过她的航班。虽然已经描述了混合订阅的具体示例,但是本领域技术人员将意识到,利用混合客户端/服务器架构可以生成其他类型的混合订阅。在实施例中,本地订阅和远程订阅可以利用类似的逻辑来构造,从而允许将各种订阅组合成混合订阅。

图6是能够构成混合订阅的混合客户端/服务器系统600的实施例。混合客户端/服务器系统600包括经由通信网络612通信的客户端设备602以及分布式网络614。在实施例中,客户端设备602包括包含有一个或多个本地订阅(例如,604A-C)的本地订阅集合604。如之前所述,示范性的本地订阅包括但不限于,本地闹钟、位置监视(例如,当设备越过地理围栏时生成警告)、日历提醒,等等。在实施例中,客户端设备602还可以包括本地流处理器(local stream processor)606。本地流处理器可以监视来自订阅集合604和客户端数据608的一个或多个订阅以判定订阅事件何时发生的。客户端数据608可以包括涉及客户端设备602的基于用户的位置、用户输入、设备时间等的信息。在实施例中,本地服务609可用于填充(populate)和/或生成客户端数据608,如关于图1所描述的。流处理器606将客户端数据608与设备订阅集合604进行比较以判定本地订阅事件何时已发生。本地订阅事件的示范性的例子是判定设备已经越过地理围栏。本领域技术人员将意识到,流处理器可采用各种不同的方法来判定本地订阅事件是何时发生的。当订阅事件被标识时,流处理器606执行由订阅事件所标识的动作,诸如生成警告。警告可提供给用户体验(UX)生成器610以向用户提供通知。

在实施例中,分布式网络614包括包含有与用户相关的一个或多个订阅(例如,订阅616A-C)的远程订阅集合。如之前所述,示范性的远程订阅包括但不限于,对新闻源或体育计分的订阅,对股票市场更新的订阅,对第三方服务的订阅(例如,监视航班状况以自动通知用户他们的航班是否延迟的服务),交通更新,等等。分布式网络614还可以包括远程流处理器618,其对于作为远程订阅集合616的部分的远程订阅而监视远程数据620以标识远程订阅事件。在实施例中,远程数据620可以包括现实世界数据,诸如但不限于,新闻更新、体育计分、股票市场信息或第三方提供的数据,如航班状况。远程订阅事件的示范性的示例是关于用户感兴趣的航班已经延迟或取消的判定。在实施例中,远程流处理器可以生成经由通信网络612输送给本地设备602的远程订阅事件。远程订阅可以输送到UX生成器610以提供通知给用户。

在实施例中,本地订阅集合604和远程订阅616可以由协调服务622监视。在实施例中,协调服务622可以标识本地订阅事件与远程订阅事件之间的关系。相关的本地订阅和远程订阅可以通过协调服务622组合成一个或多个混合订阅624。在生成一个或多个混合订阅624之后,协调服务可以监视本地流生成器606和远程流处理器618生成的事件以确定混合订阅条件何时被触发。当混合订阅被触发时,通知可输送到UX生成器610以将通知提供给用户。

图7图示出用于生成混合订阅警告的方法700的示范性的实施例。流程从操作702开始,其中该方法接收来自客户端设备的本地订阅。如之前所述,示范性的本地订阅包括但不限于,本地闹钟、位置监视(例如当设备越过地理围栏时生成警告)、日历提醒,等等。流程继续到操作704,在该操作中,方法700接收来自一个或多个远程设备的远程订阅。而且,如之前所论述,示范的远程订阅包括但不限于,对新闻源或体育计分的订阅、对股票市场更新的订阅,对第三方服务的订阅(例如,监视航班状况以自动通知用户他们的航班是否延迟的服务)、交通更新,等等。

在接收到本地和远程订阅之后,流程继续到操作706,在该操作中,分析订阅以判定在订阅之间是否存在关系。例如,与新闻输送有关的远程订阅可与监视客户端设备位置的本地订阅相关。可基于新闻订阅包含基于地点的信息的这一事实来确定关系。在实施例中,结构化的表示语言可用于标识本地订阅和远程订阅之间的关系。本地订阅和远程订阅本身可包含结构化表示语言的表达,并且在实施例中,本地订阅和远程订阅中的表达可针对到来的事件的流(例如,来自电话的位置数据、或者现实世界数据的变化——航班状况变化、交通事故、股票报价机移动等)进行评估。当表达中的条件满足时,事件可被提起(raised),在处理器或应用内触发动作(比方说例如协调服务),并且相关的结构化信息可以在那时从客户端设备传递到远程设备(或者反之亦然)。虽然已经在此描述了关系的具体示例,本领域技术人员将意识到,在不背离本公开的精神的前提下,可以标识其他类型的关系。如果不存在关系,则流程分支“否(NO)”且返回操作702,在操作702中接收额外的订阅。

如果存在关系,则流程分支“是(YES)”到操作708。在操作708中,创建混合订阅,其将来自本地和远程订阅的相关数据组合以生成将用户感兴趣的信息相关联以提供额外通知的混合订阅。返回之前的示例,混合订阅可以将来自远程服务的交通数据和航班状况订阅与监视用户当前位置的本地订阅合并以创建混合订阅,该混合订阅将三种订阅组合成能够生成预先警告的复合订阅,诸如基于交通信息通知用户她应当何时出发去机场从而确保赶上她的航班的警告。

流程继续到操作710,在该操作710中,方法监视来自本地和远程流处理器的数据。在决策操作712中,对是否已经基于本地和远程流处理器生成的事件触发混合订阅条件做出判定。如果没有触发混合订阅,则流程分支“否(NO)”且返回操作710,并且对本地和远程流处理器的监视继续。如果混合订阅被触发,则流程分支“是(YES)”到操作714,在操作714中,生成混合订阅警告。混合订阅警告可被输送到客户端设备的UX生成器以提供混合订阅事件的通知给用户。本领域技术人员将意识到,混合客户端/架构允许个人数字助理智能地组合用户感兴趣的信息以提供有用的相关通知,而无需用户识别各种信息源之间的复杂关系。

混合客户端/服务器架构还可以用来执行增强自然语言表达评估。自然语言表达是用户可以提供给客户端设备的命令、请求、查询或其他输入。自然语言表达区别于会受特定规则约束的构造的语言或形式语言,诸如计算机编程语言。换言之,示范性的自然语言表达是在两人之间的对话(口语或书面)所使用的言语。个人数字助理应用的实用性可通过自然语言接口来改善,允许用户利用自然语言表达将查询或请求(口语或书面)提交给个人数字助理应用。这允许用户与个人数字助理应用(或客户端设备)直观地交互,而不是强迫用户学习看起来是不自然的且用户不熟悉的基于规则的命令结构。此外,自然语言接口允许个人数字助理应用的人格化,这有益于用户与个人数字助理应用之间的促进的交互。

一种执行自然语言识别的方式是使用知识库。自然语言表达能够与知识库进行比较,所述知识库包含如语法等信息,所述信息提供用于确定自然语言表达的含义的指令。一般地,通过使得大的知识库可由语音识别过程访问,有益于语音识别的性能。由于此,客户端设备上的语音识别趋于受限制。诸如智能手机或平板设备的客户端设备简单地不具有足够的存储器来存储用于语音识别的大的知识库,也不具有对着大的知识库来分析自然语言表达所要求的处理能力。由于此,更有效的语音识别应用通常实现为能够使用分布式网络的分布式程序。这是因为,分布式网络具有为语音识别目的而存储和分析大知识库的存储容量和处理能力。然而,存储在分布式网络上的大知识库趋于泛化以便在广泛范围的用户之间使用。由于此,语音识别过程可能难以使用泛化的知识库来标识个体独有的术语,诸如个体经常使用的独特的名称或术语。

另一方面,客户端设备在具有明显小的知识库的同时可以访问个体经常使用的独特的术语,例如,经由对用户联系人存贮(例如,对于姓名)、用户模式和/或可能通常适于为了拼写检查的目的而识别俚语的重复使用的本地词典的访问,或者对客户端设备所独有的其他形式的知识的访问。由于此,驻留于客户端设备上的自然语言评估过程,通过对本地知识库的访问,可以针对于确定独特术语而提供更佳的性能。混合客户端/服务器架构的实施例提供了一种可以使用位于分布式网络上的自然语言评估过程的能力和大的知识库,以及访问在本地自然语言评估过程可访问的本地知识库中可见的独特的术语和使用模式的能力。

此外,本公开的实施例可被充分利用来为第三方开发者提供用来提供专门的知识库来辅助理解对于应用所独有的自然语言表达的能力。开发知识库(比方说例如语法)来辅助语音识别是需要专业技能的复杂的过程。由于此,第三方开发者经常缺乏修改共享知识库所要求的经验和知识,比方说例如分布式网络的知识库。然而,第三方开发者经常具有用户如何与他们的应用交互的专业知识。混合客户端/服务器架构为第三方开发者提供了将特定于可被充分利用来提供引导或提示的应用的第三方知识库(例如,由第三方提供的数据和或规则,第三方语法,第三方提示,等等)分布给位于客户端设备或分布式网络上的语音识别过程。例如,电影应用的开发者可以提供确定自然语言表达“MovieApp观看”或“MovieApp我想要观看”、紧接着电影名称或TV节目的知识库,其中术语MovieApp是应用的名称。除了确定这些短语之外,第三方知识库可以向自然语言评估过程提供提示。在提供的示例中,示范性的提示可以是该短语紧接着电影名称或TV节目。这些提示可以提供给自然语言评估过程以引导该过程到与电影或TV节目有关的特定的域、语法或知识库以帮助确定用户所请求的电影或TV节目。因此,通过允许第三方开发者提供可由客户端设备上的本地自然语言评估过程和远程自然语言评估过程两者用来解释自然语言表达的提示,客户端/服务器架构的实施例进一步增强了自然语言评估(例如,语音识别,文本识别,等等)。这些提示还可以提供关于应用能够执行何种动作的信息(例如,打电话、发送电子邮件,播放电影)等。这类信息可用于对用户意图进行解密,以及其它用途。本领域技术人员将意识到,提示还可以由第一方应用、操作系统等来提供,而不背离本公开的精神。

图8是用于增强NLE评估的混合客户端/服务器系统800的实施例。在实施例中,NLE评估过程可以是语音识别过程或者任何其他类型的能够接收自然语言表达作为输入并且基于该输入来执行动作的过程。混合客户端/服务器系统800包括经由通信网络812通信的客户端设备802和分布式网络814。在实施例中,客户端设备804包括确定自然语言表达的信号路由器804。自然语言表达可以呈文本输入(例如,用户输入自然语言表达)或口语的形式。在实施例中,信号路由器804识别自然语言表达并且将表达发送到本地NLE评估服务806进行处理。信号路由器804还可以将自然语言表达经由通信网络812发送到远程NLE评估服务816以便与本地NLE评估服务806并行地、作为附加地、同时地或者基本同时地处理。

本地NLE评估服务806接收来自信号处理器的自然语言表达并且加载本地知识库808和第三方知识库810。在实施例中,本地知识库808可以包括用户联系人、日历事件、本地目录或任何其他本地数据。本地知识库808允许本地NLE评估过程806来确定用户所独有的术语,例如,独特的姓或俚语言辞。第三方知识库810可以包含由第三方应用开发者提供的辅助本地识别器806来确定与特定应用有关的言辞的语法和提示。图12和图13图示出第三方语法的示范性的实施例。例如,图12是用于电影应用的示范性的第三方语法1200的实施例。第三方语法200可以标识标识具体应用的命令前缀1202。例如,命令前缀1202标识应用“MovieApp”。除了标识应用之外,第三方语法可以标识作为相关应用命令的自然语言表达的各个示例。例如,语法1200标识应用“WatchShow”命令1204,随后是指示“WatchShow”命令的示范性的自然语言表达“播放Raising Hope”1206。除了标识示范性的自然语言表达1206之外,第三方语法1200提供提示1208或指令,以试图解释自然语言表达的引导NLE评估过程。在实施例中,提示不是经典NLE评估系统所采用的约束。反而,提示可以是用来引导NLE评估过程(例如,NLE服务)的信息。图13示出了用于通信应用的又一示范性的第三方语法1300。虽然已经公开了示范性的第三方语法,但是本领域技术人员将意识到,本文可改的实施例可采用其他第三方语法、提示、定义等。例如,第三方语法可被提供给不同类型的应用或者具有除了标记语言文档之外的格式,而不背离本公开的精神。

本地NLE服务806可使用本地知识库808和第三方知识库810来解析并解释从信号路由器接收到的自然语言表达。在本地NLE评估服务806正在处理自然语言表达的同时,它可以将初始结果发送到用户体验(UX)生成器824以向用户显示初始处理结果。另外,本地NLE评估服务806可以与远程NLE服务816共享其初始处理结果,比方说例如,独特联系人姓名或第三方应用提示的标识。

分布式网络814在实施例中可以包括远程NLE服务816,其与本地NLE服务806并行地、作为附加地、同时地或者基本同时地处理从信号路由器804接收到的自然语言表达。远程NLE服务816可以使用存储在远程知识库818中的信息。如之前所述,远程知识库可以比本地知识库广泛得多,从而提供远程NLE服务816可依赖以执行增强NLE评估的额外的语法和提示。另外,远程NLE评估服务816还可以接收来自第三方知识库的信息(例如,第三方语法、提示、定义等)其可以在NLE评估过程中使用。因为在实施例中,远程NLE服务816与本地NLE服务806并行地、同时地或者基本同时地处理自然语言表达,所以两个过程可以交换初始结果,每个NLE评估服务可以并入初始结果来辅助自然语言表达的解释。

混合客户端/服务器NLE评估系统800还可以包括排名服务820。排名服务820可以驻留于客户端设备802上、分布式网络814上、另一设备上、和/或在多个设备之间(例如,在客户端设备802和分布式网络814两者上)。在实施例中,排名器820接收来自本地NLE服务806和远程NLE服务的结果并且融合结果。在实施例中,排名器可以使用机器学习、神经网络、排名系统、计分系统、置信系统、高斯模型、分类模型或采用任何其他类型的算法或模型来融合来自各处理器的结果并进行排名。排名后的结果可以提供给仲裁器822,仲裁器822基于来自排名服务820的结果标识最佳结果或者判定是否存在歧义性。类似于排名服务820,仲裁器822可使用机器学习、神经网络、排名系统、计分系统、置信系统、高斯模型、分类模型或采用任何其他类型的算法或模型来判定结果是否已经达到或者结果是否需要来自用户的澄清。在实施例中,如果结果能够在多个域上进行解释,可能需要澄清。在实施例中,无论仲裁器822已经标识出单个结果或者多个歧义性的结果,一个或多个结果都可以提供给UX生成器822以便呈现给用户。如果存在歧义性,UX生成器822可以提供向用户显示多个结果以及接收来自一系列歧义性结果的正确结果的选择。

混合客户端/服务器NLE评估系统800将具有本地NLE服务806可用的独特知识库的能力与远程NLE服务816的扩大的知识库融合以增强NLE评估的结果。图9是利用混合客户端/服务器架构进行语言共享处理的方法900的实施例。由于本文公开的系统和方法的共享本质,图9描绘了可由可作为分布式网络的部分的客户端设备和远程设备诸如服务器执行的操作。在图示的实施例中,操作902-916由诸如客户端设备802(图8)的客户端设备来执行,而操作918-926可通过作为诸如分布式网络814(图8)的分布式网络的部分的远程设备并行地、作为附加地、同时地或者基本同时地执行。

流程从操作902开始,其中客户端设备接收一个或多个自然语言表达。自然语言表达可以是口语言辞或文本表达。在实施例中,流程同时或者基本同时地继续到操作904和906。在替代实施例中,操作904和906可以串行地执行。在操作904中,自然表达可以发送到分布式网络进行处理。为了向用户提供立即的反馈,客户端设备还可以在操作906中利用一个或多个本地NLE服务在本地开始处理自然语言表达。在替代的方面中,作为NLE评估器的的替代或者附加,来采用其他类型的识别过程(例如,音乐识别过程、文本识别过程、翻译过程等)。本地NLE服务可使用独特的本地知识库和/或第三方提供的知识库来解释自然语言表达。在本地处理期间,通过一个或多个本地语音识别过程生成的初始本地判定可以在操作908中提供给一个或多个远程NLE服务。将结合图11更详细描述通过在操作906和908中执行的本地NLE评估过程执行的处理的实施例。

在客户端设备正在操作906中处理自然语言表达的同时,远程设备可以在操作920中并行地、作为附加地、同时地或者基本同时地执行自然语言表达。在实施例中,远程NLE评估服务可使用分布式网络提供的扩展远程知识库和/或增强的处理能力来在操作920中处理数据的子集。因此,在操作906和920中通过设备和远程设备并行地、作为附加地、同时地或者基本同时地执行的处理分别充分利用不同的知识库和能力来生成有关在操作902中接收到的自然语言表达的结果或解释。此外,在操作906中通过客户端NLE评估服务以及在操作920中通过远程NLE评估服务生成的初始结果可以交换,如操作908和922所示。因此,在操作908和922中交换初始结果为本地NLE服务和远程NLE服务提供了合并基于否则不能为不同服务可用的不同的知识库的解释的能力,从而改善本地和远程NLE服务的语音识别。

使用交换的初始结果,流程从操作906继续到操作910以及从操作920继续到操作924。在操作910中,本地解释可以基于自然语言表达的初始远程解释来更新。在实施例中,用初始远程解释更新本地解释可能要求客户端设备利用初始远程服务结果作为本地NLE服务的附加来重新处理数据和本地服务结果。在这样的实施例中,在操作906处执行的本地NLE服务可利用远程NLE服务提供的解释再次执行。在进一步的实施例中,在一个或多个本地NLE服务仍在处理自然语言表达的同时,接收初始远程解释。在这样的实例中,一个或多个本地NLE服务可在完成之前另外地处理初始远程解释,从而更新本地服务结果,而不必根据初始远程判定来重新处理自然语言表达。在实施例中,在操作920中更新本地服务结果可以导致生成中间本地解释。

类似地,在操作924中,可以用初始本地解释来更新初始远程解释以生成中间远程解释。在操作924中更新了初始远程NLE评估服务结果之后,流程继续到操作926,在该操作926中,中间远程NLE评估服务结果被提供给客户端和/或另一组件或过程,诸如排名服务和/或仲裁器。

返回设备操作,在操作910中更新本地服务结果之后,流程继续到可选的操作912。在操作912中,中间本地解释可以与中间远程解释进行比较和/或合并。操作912将下文结合图10进行详述。

流程继续到操作914,在操作914中,客户端设备生成最终结果。在一个实施例中,最终结果可以是在操作908或910中生成的本地解释之一。在其他实施例中,最终结果可以是在可选的操作912中生成或选定的解释。在其他实施例中,不是在操作914中生成最终的解释,而是客户端可以接收例如来自仲裁器或远程设备的最终解释。在实施例中,最终结果可包括需要用户澄清的单个解释或多个解释。流程继续到操作916,在操作916中,设备基于在操作914中生成的最终解释来执行动作。

图10是用于选择或生成自然语言表达的一个或多个解释的方法1000的实施例。在实施例中,方法1000可以通过排名服务、仲裁器、或组合了排名服务和仲裁器的操作的组件来执行。方法1000可以通过客户端设备、作为分布式网络的部分的远程计算设备或者与客户端设备和/或远程设备通信的另一设备来执行。在实施例中,图9的可选的操作912可以执行方法1000的操作。流程在操作1002中开始,在该操作中接收到一个或多个初始判定。一个或多个初始判定可以从客户端设备上的本地NLE服务、在可作为分布式网络的部分的远程设备上执行的远程NLE服务或两者接收到的。

流程继续到决策操作1004。在操作1004中,方法1000判定是否应当等待来自一个或多个自然语言评估服务的后处理。在实施例中,如果初始解释被判定为精确的,具有高置信值,则可能无需执行自然语言表达的额外处理。在另一实施例中,如果存在显著的网络滞后或者如果定时器已经到期,则等待额外处理可能不利地影响用户的体验。在那些情况下,流程分支“否(NO)”到操作1006,在操作1006中,可以基于初始结果来生成最终解释。生成一个或多个最终的解释可以包括选择一个或多个初始解释并且将初始解释融合以产生一个或多个新解释。最终解释的生成可利用机器学习、神经网络、排名系统、计分系统、置信系统、高斯模型、分类模型来执行,或者采用本领域已知的任何其他类型的算法或模型。

返回操作1004,如果需要额外的处理,则流程分支“是(YES)”到操作1008,在操作1008中,接收到一个或多个中间解释。所述一个或多个中间解释可以从客户端设备上的本地NLE评估服务、远程设备上的远程NLE评估服务或两者接收。流程继续到可选的操作1010,在操作1010中,可以从第三方接收额外的解释。例如,自然语言表达或者表达的部分可以提交给第三方,诸如搜索引擎或私人拥有的(proprietary)知识库,以进行额外的解释。在这些情形下,可以在操作1010中接收第三方解释。

流程继续到操作1012,在操作1012中,将初始解释、中间解释和/或第三方解释融合。在操作1012中,机器学习技术、神经网络、排名系统、计分系统、置信系统、高斯模型、分类模型或任何其他类型的本领域已知的算法或模型可用来融合结果。在实施例中,将结果合并可以生成一个或多个经排名的解释。解释可按置信值、域、计分等来排名。流程继续到操作1014,其中一个或多个最终结果可以从融合的结果生成。在一个实施例中,生成最终解释可以包括选择最高的排名计分。在其他实施例中,可以对排名后的结果执行进一步的处理以生成一个或多个最终结果。

图11是用于在NLE评估过程中标识第三方提示的方法1100的实施例。方法1100可通过客户端设备上的本地NLE评估过程来执行。在实施例中,方法1100可以在图9所描述的操作906和908过程中执行。流程开始于操作1102,在该操作中接收自然语言表达。自然语言表达可以是口语言辞或文本输入。流程继续到操作1104,在该操作中,本地知识库被加载。在实施例中,本地知识库可以包括本地设备特有的信息。可以包含在本地知识库中的示范性的数据可以为但不限于,用户联系人、用户日历信息、本地目录输入项、本地消息、文本、呼叫等。

流程继续到操作1106,在操作1106中,加载第三方知识库。在实施例中,第三方知识库可以包括通过第三方开发者生成的语法或提示。在实施例中,第三方语法可以随同客户端设备上的应用而被安装。此外,当更新应用时,语法可以由第三方开发者持续地更新。示范性的第三方语法提供在图12-13中。第三方知识库为应用开发者提供辅助对与它们的应用相关的自然语言表达的解释的能力。这允许用户与他们的应用进行自然地交互,而无需第三方开发者开发或修改NLE评估过程。

流程继续到操作1108,在该操作中,本地NLE服务利用本地知识库和第三方知识库两者来分析自然语言表达。第三方知识库可以包括前缀,其引导本地NLE评估来评估具体的应用语法。这些前缀的一个示例可以是应用名称。当来自应用的语法被本地NLE评估过程标识为相关时,流程继续到操作1110,在该操作中,可以对照着应用语法来评估自然语言表达,以标识提示。示范性的提示包括可标识短语(identifiable phrases),紧接着是关于如何继续对表达的评估的NLE服务的指示符。例如,图12的示范性的语法1200提供了包含词语“播放(Play)”的自然语言表达的示例。根据该语法,如果动词“播放”被识别,则NLE评估应当标识紧接着动词“播放”的节目名称或节目名称的用语。在实施例中,在接收到提示时,本地识别器可以加载与节目名称或电影名称有关的语法,从而增大NLE服务正确地解释命令的可能性。虽然本文的实施例已经关于识别动词进行了说明,但是自然语言表达的其他成分可以被识别,比方说例如短语(例如,电影名称)、数字序列(例如,电话号码或邮政编码)等。

在标识一个或多个提示时,提示可以在操作1112中发送到远程NLE评估服务。如之前所述,远程NLE评估服务可以充分利用额外的处理能力和较大的知识库来执行先进的识别技术。发送第三方提示给远程NLE评估服务将额外的信息提供给远程NLE评估服务,其将过程引导到相关的域或语法。因此,远程NLE服务可以通过发送提示而借助存储在客户端设备上的第三方知识库来增强。在其他实施例中,第三方知识库可以存储在可作为分布式网络的部分的远程设备上。在这样的实施例中,客户端设备可以标识第三方NLE评估过程应当使用的作为分布式网络的部分的第三方知识库。

已经描述了使用混合客户端/服务器架构的系统和方法的各个实施例,本公开现在将描述可用于实现这些系统和方法的各种计算设备和操作环境。图14图示出可以执行本文公开的一个或多个示例的示范性的平板计算设备1400。另外,本文所描述的实施例和功能可以运行于分布式系统(例如,云计算系统)上,其中应用功能、存储器、数据存储和取回以及各种处理功能可以在分布式计算网络如因特网或内联网上彼此远程地操作。各种类型的用户界面和信息可以经由板上计算设备显示器或者经由与一个或多个计算设备相关联的远程显示单元来显示。例如,各种类型的用户界面和信息可在各类型的用户界面和信息所投影到的壁面上显示和交互。与可实现本发明实施例的多种计算系统的交互包括击键输入、触摸屏输入、语音或其他音频输入、姿势输入等,在姿势输入中关联的计算设备装备有检测(例如,照相机)功能,用于捕获和解释用于控制计算设备的功能等的用户姿势。图15-17以及关联的说明提供了可实现本发明实施例的各种操作环境的论述。然而,参考图15-17所图示和论述的设备和系统是为了示例和说明的目的,而不是对可用于实现本文所述的本发明实施例的大量的计算设备构造的限制。

图15是示出可实现本公开的实施例的示范性的计算设备1500的物理组件的框图。下述的计算设备组件可适合于上述的计算设备。在基本的配置中,计算设备1500可以包括至少一个处理单元1502以及系统存储器1504。根据计算设备的构造和类型,系统存储器1504可包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪速存储器或这些存储器的任意组合。系统存储器1504可包括适合运行应用1520的操作系统1505以及一个或多个程序模块1506。例如操作系统1505可适于控制计算设备1500的操作。此外,本公开的实施例可与图形库、其他操作系统或任何其他应用程序相结合来实现,而不限于任何特定的应用或系统。该基本配置通过虚线1508内的那些组件图示在图15中。计算设备1500可以具有附加的特征或功能。例如,计算设备1500还可以包括附加的数据存储设备(可移除和/或非可移除),比方说例如磁盘、光盘或磁带。该附加的存储由可移除存储设备1509和非可移除存储设备1510显示在图15中。

如上所述,多个程序模块和数据文件可存储在系统存储器1504中。在处理单元1502上执行的同时,程序模块1506可以执行的处理包括但不限于如本文所描述的方法的一个或多个阶段。上述过程是示例,处理单元1502可以执行其他处理。可根据本发明的实施例使用的其他程序模块可包括电子邮件以及联系人应用,文本处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用程序,定位应用,等等。

一般地,与本公开的方案一致,程序模块可以包括例程、程序、组件、数据结构以及执行特定任务或者实现特定抽象数据类型的其他类型的结构。而且,本公开的实施例可以利用其他计算机系统配置来实现,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子设备、微型计算机以及大型计算机,等等。本公开的实施例还可以实现于分布式计算环境中,其中通过通信网络链接的远程处理设备来执行任务。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。

此外,本公开的方案可以实现于包括离散的电子元件的电路、包含逻辑门的封装或集成电子芯片、使用微处理器的电路或者包含电子元件或微处理器的单个芯片中。例如,本公开的实施例可通过片上系统(SOC)来实现,在SOC中,图15所示的每个或多个组件可集成到单个集成电路中。该SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元以及各种应用功能,全部这些都集成(或“烧制”)到芯片基板上作为单个集成电路。当经由SOC来操作时,本文所描述的可以经由与单个集成电路(芯片)上的计算设备1500的其他组件集成的专用逻辑来操作。本公开的实施例还可以利用能够执行比方说例如与(AND)、或(OR)或非(NOT)的逻辑运算的其他技术来实现,包括但不限于数学技术、光学技术、流体技术以及量子技术。另外,本公开的实施例可以实现在通用计算机内或者任何其他电路或系统内。

例如,本公开的实施例可以实现为计算机过程(方法)、计算系统或制品,诸如计算机程序产品或计算机可读介质。计算机程序产品可以是能够由计算机系统读取且编码有用于执行计算机过程的指令的计算机程序的计算机存储介质。

本文所使用的术语计算机可读介质可包括计算机存储介质。计算机存储介质可以包括易失性和非易失性的、可移除和非可移除的介质,它们以用于诸如计算机可读指令、数据结构或程序模块的信息的存储的任何方法或技术来实现。系统存储器1504、可移除存储设备1509和非可移除存储设备1510都是计算机存储介质的示例(即,存储器存储)。计算机存储介质可包括RAM、ROM、电可擦除只读存储器(EEPROM)、闪速存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁盒、磁带、磁盘存储或其他磁存储设备、或任何其他能够用于存储信息且能够由计算设备800访问的有形介质。任何这样的计算机存储介质可以是计算设备1500的部分。计算机存储介质不包括载波或其他传播或调制数据信号。计算设备1500还可以具有一个或多个输入设备1512,诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可以使用诸如显示器、扬声器、打印机等输出设备1514。上述设备是示例,可以使用其他设备。

如本文所使用的术语计算机可读介质还可以包括通信介质。通信介质可通过计算机可读指令、数据结构、程序模块、或调制数据信号中的其他数据如载波或其他传输机制来具体实施,并且包括任何信息输送介质。术语“调制数据信号”可以描述其一个或多个特性以将信息编码到信号中的方式进行设定或改变的信号。通过示例而不是限制的方式,通信介质可以包括诸如有线网或直接连线连接的有线介质以及诸如声波、射频(RF)、红外和其他无线介质的无线介质。计算设备1500可以包括一个或多个通信连接1516,允许与其他计算设备1518通信。适合的通信连接1516的示例包括但不限于,RF发射器、接收器和/或收发器电路;通用串行总线(USB)、并行端口和/或串行端口,以及其他适合于与可应用计算机可读介质一起使用的连接。

图16A和16B示出了可以实现本发明的实施例的移动计算设备900,例如,移动电话、智能电话、平板个人计算机和膝上型计算机等。参考图16A,示出了用于实现各方案的示范性的移动计算设备1600的一个实施例。在基本配置中,移动计算设备1600是具有输入元件和输出元件的手持式计算机。移动计算设备1600典型地包括显示器1605以及允许用户输入信息到移动计算设备1600的一个或多个输入按钮1610。移动计算设备1600的显示器1605还可以充当输入设备(例如,触摸屏显示器)。如果包含,可选的侧部输入元件1615允许另外的用户输入。侧部输入元件1615可以是旋转开关、按钮或任何其他类型的手动输入元件。在可选的实施例中,移动计算设备1600可以包含更多或更少的输入元件。例如,在一些方案中显示器1605可以是触摸屏。在又一替选实施例中,移动计算设备1600是便携式电话系统,诸如蜂窝电话。移动计算设备1600还可以包括可选的小键盘1635。可选的小键盘1635可以是物理小键盘或产生于触摸屏显示器上的“软“小键盘。在各个实施例中,输出元件包括用于示出图形用户界面(GUI)的显示器1605、可视指示符1620(例如,发光二极管)和/或音频换能器1625(例如,扬声器)。在一些示例中,移动计算设备1600包含了用于为用户提供触反馈的振动换能器。在又一实施例中,移动计算设备1600可包含了输入端口和/或输出端口,诸如音频输入(例如,麦克风插口)、音频输出(例如,耳机插口)以及视频输出(例如,HDMI端口),用于发送信号到外部设备或者从外部设备接收信号。

虽然本文结合移动计算设备1600进行了说明,在可替代的示例中,本公开的特征可与任意数量的计算机系统来结合,诸如桌面环境、膝上型或笔记本计算机系统、多处理器系统、基于微处理器或可编程消费电子设备、网络PC、微型计算机、主机型计算机等。本公开的实施例还可以实现在分布式计算环境中,其中任务在分布式计算环境中通过经由通信网链接的远程处理设备来执行;程序可以位于本地和远程存储器存储设备中。总之,具有多个环境传感器、向用户提供通知的多个输出元件以及多个通知事件类型的任何计算机系统可以并入本公开的实施例。

图16B是示出移动计算设备的一个实施例的架构的框图。也即,移动计算设备1600可以包含系统(即,架构)1602以实现一些实施例。在一个实施例中,系统1602实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传递客户端、游戏和媒体客户端/播放器)的“智能手机”。在一些实施例中,系统1602集成为计算设备,诸如集成个人数字助理(PDA)和无线电话。

一个或多个应用程序1666可以加载到存储器1662中以及运行于操作系统1664上或者与操作系统1664关联。应用程序的示例包括电话拨号程序、电子邮件应用、个人信息管理(PIM)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息传递程序等。系统1602还包括位于存储器1662内的非易失性存储区1668。非易失性存储区1668可用于存储在系统902掉电的情况下不应丢失的永久性信息。应用程序1666可使用信息且存储信息于非易失性存储区1668中,诸如电子邮件应用使用的电子邮件或其他消息,等等。同步应用(未示出)也位于系统1602上并且被编程以与位于主机上的对应的同步应用交互以保持存储在非易失性存储区1668中的信息与存储在主机中的对应信息同步。应当意识到,其他应用可以加载到存储器1662中且运行于移动计算设备1600上。

系统1602具有电源1670,电源1670实现为一个或多个电池。电源1670可能进一步包括外部电源,诸如AC适配器或为电池补电或再充电的电力对接拖座。

系统1602还可以包括执行发送和接收射频通信的功能的无线电1672。无线电1672促进系统1602与“外界”之间经由通信载波或服务提供商之间的无线连接。向无线电1672发送以及从无线电1672接收是在操作系统1664的控制下进行的。换言之,由无线电1672接收到的通信可以经由操作系统1664散播到应用程序1666,反之亦然。

无线电1672允许系统1602与其他计算设备通信,例如通过网络。无线电1672是通信介质的一个示例。。通信介质典型地以诸如载波或其他传输机制的调制数据信号来具体实施计算机可读指令、数据结构、程序模块或其他数据并且包括任何信息输送介质。术语“调制数据信号”可以是指使其一个或多个特性以将信息编码在信号中的方式来设定或改变的信号。通过示例而不是限制的方式,通信介质包括有线网或直接接线连接的有线介质以及诸如声波、RF、红外和其他无线介质的无线介质。如本文所使用的术语计算机可读介质包括存储介质和通信介质两者。

系统1602的该实施例利用可视指示器1620来提供通知。可视指示器920可以用于提供可视通知,和/或音频接口1674可用于经由音频换能器1625产生可听的通知。在图示的实施例中,可视指示器1620是发光二极管(LED),音频换能器1625是扬声器。这些设备可以直接与电源1670耦合,从而当被激活时,它们在通知机制所规定的持续期间内保持接通,即使处理器1660和其他组件可能为了节约电池电力而关闭。LED可以被编程以保持无限接通直至用户采取措施来指示设备的加电状态。音频接口1674用来提供可听信号到用户以及从用户接收可听信号。例如,除了与音频换能器1625耦合之外,音频接口1674还可以与麦克风耦合以接收可听输入,例如促进电话对话。根据本公开的实施例,麦克风还可以充当音频传感器以促进通知的控制,如下文将要说明的。系统1602可进一步包括使得板上照相机1630的操作能够记录静像、视频流等的视频接口1676。

实现系统1602的移动计算设备1600可以具有额外的特征或功能。例如,移动计算设备1600还可以包括额外的数据存储设备(可移除的和/或非可移除的),诸如磁盘、光盘或磁带。该额外的存储由非易失性存储区1668图示在图16B中。计算机存储介质可以包括易失性的和非易失性的、可移除的和非可移除的介质,它们以存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术来实现。

通过移动计算设备1600生成或捕获以及经由系统1602存储的数据/信息可以本地地存储在移动计算设备1600上,如上所述,或者数据可以存储在可由设备经由无线电1672或者经由移动计算设备1600与关联移动计算设备1600的单独的计算设备(例如,诸如因特网的分布式计算网络中的服务器计算机)之间的有线连接访问的任意数量的存储介质上。应当意识到是,这些数据/信息可以通过移动计算设备1600经由无线电1672或者经由分布式计算网络来访问。类似地,根据公知的数据/信息传输和存储手段,包括电子邮件和协作数据/信息共享系统,这些数据/信息可轻易地在计算设备之间传输以便存储和使用。

图17是示出本文所描述的向一个或多个客户端设备提供转换后的文档的系统的架构的一个实施例。在一些实施例中,转换的文档可以存储在不同的通信信道或为其他存储类型。例如,可利用目录服务1722、web门户1724、邮箱服务1726、即时消息传递库1728或社交网站1730来存储各个文档,包括转换后的文档。系统100的各个组件使用这些类型的系统等中的任一种来实现数据利用,如本文所述。服务器1720可以将转换后的段落提供给客户端。服务器1720可以是经由网络1715在web上将转换后的段落和状态更新提供给客户端。通过示例的方式,客户端计算设备1718可以实现为计算设备1700且体现在个人计算机1718a、平板计算设备1718b和/或移动计算设备1718c(例如,智能手机)中。客户端计算设备1718的这些实施例中的任一个可以从库1116获得内容。在各个实施例中,用于在构成本公开的计算设备之间通信的网络的类型包括但不限于,互联网、内联网、广域网(WAN)、局域网(LAN)、和虚拟私有网络(VPN)。在本申请中,网络包括企业网和客户端计算设备借以访问企业网络的网络(即,客户端网络)。在一个实施例中,客户端网络是企业网络的部分。在另一实施例中,客户端网络是通过外部可用的进入点访问企业网络的单独的网络,进入点诸如为网关、远程接入协议或者公共或私人互联网地址。

在其他示例中,本公开提供了利用客户端设备来进行并行数据处理的系统和方法,包括:在所述客户端设备处接收包含所述数据的信号;将数据的至少一个子集发送到远程服务;利用本地服务处理所述数据;将初始本地服务结果发送到所述远程服务以便分析;从远程服务接收初始远程服务结果;以及生成中间本地服务结果,其中生成所述中间本地服务结果包括基于所述初始远程服务结果来更新所述初始本地服务结果。在进一步的示例中,发送数据的子集还包括:确定数据的子集不包含私有数据。在另外的示例中,本地服务是推断服务,并且其中利用本地服务处理数据包括分析私有数据来生成本地推断作为初始本地服务结果。在进一步的示例中,发送初始本地服务结果还包括:分析本地推断以判定本地推断是否能够被提供给远程服务;并且当本地推断能够提供给远程服务时,将本地推断发送到远程服务。在进一步的示例中,当本地推断无法提供给远程服务时,抽象本地推断以去除私有数据;以及将抽象的本地推断发送给远程服务。在进一步的示例中,接收初始远程服务结果还包括:从远程服务接收更新的推断,其中更新的推断包括关于本地推断的额外信息。在进一步的示例中,基于更新的推断生成用户体验。在进一步的示例中,数据包括自然语言表达,并且其中本地服务包括本地自然语言表达评估过程。在进一步的示例中,处理数据还包括:加载本地知识库;加载第三方知识库;以及利用本地知识库和第三方知识库来处理自然语言表达。在进一步的示例中,标识自然语言表达中的独特术语,其中独特术语是利用本地知识库来标识的。在进一步的示例中,标识自然语言表达中的前缀,其中前缀标识第三方应用;以及将自然语言表达与与第三方应用相关联的第三方语法进行比较。在进一步的示例中,从第三方知识库中标识至少一个提示;并且其中发送初始本地服务结果到远程服务以便进行分析包括发送来自第三方语法的至少一个提示。在进一步的示例中,接收远程服务结果;将中间本地服务结果和中间远程服务结果进行比较;以及基于比较,生成最终结果。

本文公开的进一步的方面提供了用于使用分布式网络来进行数据处理的系统和方法,包括:在分布式网络处接收数据;利用远程服务来处理数据;在数据处理过程中,生成初始远程服务结果;将初始远程服务结果发送到客户端设备;从客户端设备接收初始本地服务结果,其中初始本地服务结果是在数据处理完成之前接收到的;用初始本地服务结果更新数据的处理;基于更新,生成中间远程服务结果;以及将中间远程服务结果发送到客户端设备。在进一步的示例中,初始本地服务结果是本地推断,并且其中中间远程服务结果包括与本地推断相关的额外数据。在进一步的示例中,数据是自然语言表达,并且其中初始本地服务结果包括至少一个第三方提示。在进一步的示例中,更新数据的处理还包括:基于至少一个第三方提示来标识至少一个相关知识库;以及利用至少一个相关知识库来分析自然语言表达。在进一步的示例中,接收中间本地服务结果;以及基于中间本地服务结果来更新中间远程服务结果。

本文公开的额外的方面提供了示范性的混合客户端/服务器系统,包括:客户端设备,包括:至少一个客户端处理器;以及客户端计算机存储介质,其中编码有执行客户端方法的计算机可执行指令,所述客户端方法包括:接收自然语言表达;将自然语言表达发送到远程语音识别过程;处理自然语言表达以生成自然语言表达的初始本地解释;接收来自分布式网络的自然语言表达的初始远程解释;以及分布式网络,包括至少一个服务器,该服务器包括:至少一个服务器处理器;以及服务器计算机存储介质,其中编码有计算机可执行指令,当通过至少一个服务器处理器执行时,该计算机可执行指令执行服务器方法,该方法包括;接收来自客户端设备的自然语言表达;与客户端设备并行地处理自然语言表达以生成自然语言表达的初始远程解释;将自然语言表达的初始远程解释发送到客户端设备;接收自然语言表达的初始本地解释;基于初始本地解释更新初始远程解释以生成中间远程解释;以及将中间远程解释发送到客户端设备。在另外的示例中,初始本地解释包括至少一个第三方提示。

本文公开的实施例可以利用软件、硬件、或者软件和硬件的组合来实施以实现且执行本文公开的系统和方法。虽然在通篇公开中记述了具体的设备执行具体的功能,本领域技术人员将意识到,这些设备仅为了示例的目的而提供,可以采用其他设备来执行本文公开的功能,而不背离本公开的范围。

本公开参考附图描述了本技术的一些实施例,其中仅描述了一些可能的方面。然而,其他方面能够以多种不同的形式来实施并且本文公开的具体实施例不应解释为限于本文阐述的公开的各个方面。相反,提供这些示范性的实施例以使本公开全面且完整,并且向本领域技术人员充分传达其他可能的实施例的范围。例如,本文公开的各个实施例的方面可以在不背离本公开的范围的情况下进行修改和/或组合。

虽然在本文中描述了具体的实施例,但是技术的范围不限于那些具体的实施例。本领域技术人员将认识到其他实施例或改进也在本技术的范围和精神内。因此,公开了具体的结构、动作或介质仅作为示例性的实施例。技术的范围由随附权利要求和其中任何等同内容来限定。

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