智能自动化助理的制作方法

文档序号:25613545发布日期:2021-06-25 15:33阅读:80来源:国知局
智能自动化助理1.本申请是国际申请号为pct/us2014/040961、国际申请日为2014年6月4日、进入中国国家阶段日期为2015年11月27日、中国国家申请号为201480030811.4、发名明称为“智能自动化助理”的发明专利申请的分案申请。2.相关申请的交叉引用3.本申请要求2013年6月7日提交的名称为“intelligentautomatedassistant”的美国专利申请序列号13/913,336的优先权,该申请要求享有2012年6月8日提交的美国临时申请序列号61/657,736的权益。本申请还要求享有2011年1月10日提交的名称为“intelligentautomatedassistant”的美国临时申请序列号12/987,982的权益,该申请要求享有2010年1月18日提交的美国临时申请序列号61/294,774的权益。在此通过引用将所有上述申请全文并入本文。4.本申请还涉及:(1)2006年9月8日提交的名称为“methodandapparatusforbuildinganintelligentautomatedassistant”的美国申请序列号11/518,292;(2)2009年6月12日提交的名称为“systemandmethodforsemanticauto‑completion”的美国临时申请序列号61/186,414;(3)2012年12月21日提交的名称为“activeinputelicitationbyintelligentautomatedassistant”的美国申请序列号13/725,512(代理人案号p10575usc3/63266‑5697‑us);(4)2012年12月21日提交的名称为“determininguserintentbasedonontologiesofdomains”的美国申请序列号13/725,550(代理人案号p10575usc4/63266‑5698‑us);(5)2012年12月21日提交的名称为“serviceorchestrationforintelligentautomatedassistant”的美国申请序列号13/725,616(代理人案号p10575usc5/63266‑5699‑us);(6)2012年12月21日提交的名称为“prioritizingselectioncriteriabyautomatedassistant”的美国申请序列号13/725,656(代理人案号p10575usc6/63266‑5700‑us);(7)2012年12月21日提交的名称为“disambiguationbasedonactiveinputelicitationbyintelligentautomatedassistant”的美国申请序列号13/725,713(代理人案号p10575usc7/63266‑5701‑us);(8)2013年3月4日提交的名称为“paraphrasingofuserrequestbyautomateddigitalassistant”的美国申请序列号13/784,694(代理人案号p10575usc8/63266‑5702‑us);(9)2013年3月4日提交的名称为“maintainingcontextinformationbetweenuserinteractionswithavoiceassistant”的美国申请序列号13/784,707(代理人案号p10575usc9/63266‑5703‑us);(10)2012年12月21日提交的名称为“intentdeductionbasedonprevioususerinteractionswithavoiceassistant”的美国申请序列号13/725,742(代理人案号p10575usc10/63266‑5704‑us);以及(11)2012年12月21日提交的名称为“usingeventalerttextasinputtoanautomatedassistant”的美国申请序列号13/725,761(代理人案号p10575usc11/63266‑5705‑us),在此通过引用将所有申请全文并入本文。5.本申请涉及2009年6月12日提交的名称为“systemandmethodforsemanticauto‑completion”的美国临时专利申请序列号61/186,414,在此通过引用将其并入本文。
技术领域
:6.本发明涉及智能系统,更具体地,涉及用于智能自动化助理的各类应用。
背景技术
::7.当今的电子设备能够访问大型、增长型的和各种量的功能、服务和信息,两者都是通过互联网以及从其他来源实现的。此类设备的功能正在快速增长,因为很多消费设备、智能电话、平板电脑等能够运行软件应用以执行各种任务并提供不同类型的信息。每种应用、功能、网站或特征通常具有其自己的用户界面及其自己的操作范式,其中很多学习起来可能负担繁重或者对于用户而言无法接受。此外,很多用户可能难以甚至发现其电子设备上或各种网站上有什么功能和/或信息;因此,此类用户可能感到受挫折或受打击,或者可能就是不能有效地使用他们可用的资源。8.具体而言,初学者用户或以某种方式受损或无能为力和/或年老、繁忙、注意力分散和/或正在操作车辆的个人,可能难以有效地与其电子设备交互和/或有效地参与在线服务。此类用户尤其可能对他们可用的大量各种不相容功能、应用和网站感到有困难。9.因此,现有的系统通常难以使用和导航,通常给用户呈现不相容和难以接受的界面,它们通常使用户无法有效使用该技术。技术实现要素:10.根据本发明的各种实施例,在电子设备上实现智能自动化助理以便于用户与设备交互并帮助用户更有效地使用本地和/或远程服务。在各种实施例中,智能自动化助理利用自然语言对话以集成、会话方式与用户配合,在适当的时候调用外部服务以获得信息或执行各种动作。11.根据本发明的各种实施例,智能自动化助理集成了由不同软件部件提供的多种能力(例如,用于支持自然语言识别和对话、多模式输入、个人信息管理、任务流管理、编排分布的服务等)。此外,为了向用户提供智能界面和有用的功能,本发明的智能自动化助理在至少一些实施例中可以协调这些部件和服务。在至少一些实施例中,通过协调各种部件,诸如语言部件、对话部件、任务管理部件、信息管理部件和/或多个外部服务,实施会话界面以及获得信息和执行后续任务的能力。12.根据本发明的各种实施例,智能自动化助理可以被配置、被设计和/或用于提供各种不同类型的操作、功能和/或特征和/或组合安装其的电子设备的多种特征、操作和应用。在一些实施例中,本发明的智能自动化助理系统能够执行如下任一种或全部操作:主动启发来自用户的输入,解释用户意图,消除矛盾性解释间的歧义,在需要时请求并接收澄清信息,以及基于分辨的意图执行(或发起)动作。例如,可以通过激活电子设备上可能有的任何应用或服务和/或与电子设备上可能有的任何应用或服务交互以及通过诸如互联网的电子网络可获得的服务,来执行动作。在各种实施例中,可以经由api或通过任何其他适当机构执行外部服务的此类激活。通过这种方式,本发明的各种实施例的智能自动化助理系统能够相对于电子设备的很多不同应用和功能,并相对于可以通过互联网获得的服务,统一、简化和改善用户的体验。由此可以减轻用户的如下负担:获悉可以在设备上和联网服务上使用什么功能性,如何与此类服务交互以得到其需要的东西,以及如何解释从此类服务接收的输出;相反,本发明的助理能够充当用户和此类多样化服务之间的中介。13.此外,在各种实施例中,本发明的助理提供了会话界面,用户可能发现这种会话界面比常规图形用户界面更直观且负担更小。用户可以利用若干可用的输入和输出机构中的任一种与助理进行一种形式的会话对话,例如语音、图形用户界面(按钮和链接)、文本输入等。可以利用若干不同平台的任一种,诸如设备api、网络、电子邮件等或它们的任意组合来实现该系统。可以在此类会话上下文中向用户呈现对附加输入的请求。在给定会话之内给定的先前事件和通信以及关于用户的历史和概要分析信息的情况下,可以配合短期存储器和长期存储器,从而能够在适当上下文中解释用户输入。14.此外,在各种实施例中,可以使用从用户与设备上的特征、操作或应用交互导出的上下文信息简化该设备或其他设备上其他特征、操作或应用的操作。例如,智能自动化助理可以使用电话呼叫的上下文(诸如被呼叫人)来简化文本消息的发起(例如,以确定应当向同一人发送文本消息,而无需用户明确指定文本消息的接收者)。本发明的智能自动化助理由此能够解释指令,诸如“向他发送文本消息”,其中根据从当前电话呼叫和/或从设备上的任何特征、操作或应用导出的上下文信息解释“他”。在各种实施例中,智能自动化助理考虑各种可用上下文数据以确定使用哪个地址簿联系人,使用哪条联系人数据,使用联系人的哪个电话号码等,从而用户不需要重新手动指定此类信息。15.在各种实施例中,助理还能够考虑外部事件并相应地作出响应,例如,以发起动作,发起与用户的通信,提供提示,和/或考虑到外部事件而修改先前发起的动作。如果需要用户输入,可以再次使用会话界面。16.在一个实施例中,该系统基于交织域和任务的集合,并采用由系统能够与之交互的外部服务支持的附加功能。在各种实施例中,这些外部服务包括启用web功能的服务,以及与硬件设备自身相关的功能。例如,在智能自动化助理实现于智能电话、个人数字助理、平板电脑或其他设备上的一个实施例中,助理能够控制设备的很多操作和功能,诸如拨打电话号码、发送文本消息、设置提醒、向日历添加事件等。17.在各种实施例中,可以实现本发明的系统以在若干不同域的任一个中提供辅助。实例包括:18.·本地服务(包括特定于位置和时间的服务,诸如餐厅、电影、自动柜员机(atm)、事件和见面地点);19.·个人和社交存储器服务(包括动作项目、记事本、日历事件、共享链接等);20.·电子商务(包括在线购买项目,诸如书籍、dvd、音乐等);21.·旅行服务(包括航班、酒店、景点等)。22.本领域的技术人员将认识到,以上域的列表仅仅是示例性的。此外,可以在域的任意组合中实现本发明的系统。23.在各种实施例中,本文公开的智能自动化助理系统可以被配置或设计为包括用于自动化可通过互联网获得的数据和服务的应用的功能,以发现、查找、选择、购买、预订或订购产品和服务。除了使利用这些数据和服务的过程自动化之外,本文公开的至少一个智能自动化助理系统实施例还可以实现一次组合使用数据和服务的几个源。例如,它可以组合来自几个评论网站的关于产品的信息、检查来自多个分销商的价格和可用性,并检查其位置和时间约束,以及帮助用户找到其问题的个性化解决方案。此外,本文公开的至少一个智能自动化助理系统实施例可以被配置或设计为包括用于使对可通过互联网获得的数据和服务的使用自动化的功能,以发现、调查、选择、保留和通过其他方式了解要做的事情(包括但不限于电影、事件、表演、展览、演出和吸引人的事物);要去的地方(包括但不限于旅行目的地、酒店和要停留的其他地方、地标和其他感兴趣地点等);要吃喝的地方(诸如餐厅和酒吧),会见他人的时间和地方,以及可以在互联网上发现的任何其他娱乐或社交来源。此外,本文公开的至少一个智能自动化助理系统实施例可以被配置或设计为包括用于通过自然语言对话实现本来由具有图形用户界面的专用应用提供的应用和服务操作的功能,包括搜索(包括基于位置的搜索);导航(地图和方向);数据库查看(诸如按照名称或其他属性找到单位或人);获得天气状况和预报,检查市场商品的价格或金融事物的状态;监测航班的交通或状态;访问并更新日历和日程;管理提醒、提示、任务和项目;通过电子邮件或其他消息平台通信;以及在本地或远程操作设备(例如,拨打电话,控制光和温度,控制家庭安全设备,播放音乐或视频等)。此外,本文公开的至少一个智能自动化助理系统实施例可以被配置或设计为包括用于识别、生成和/或提供个性化建议的功能,所述建议针对活动、产品、服务、娱乐源、时间管理或受益于以自然语言交互式对话以及自动访问数据和服务的任何其他种类的建议服务。24.在各种实施例中,本发明的智能自动化助理能够控制电子设备的很多特征和操作。例如,智能自动化助理能够调用通过api或通过其他方式与设备上的功能和应用交互的服务,以执行本来可以利用设备上的常规用户界面发起的功能和操作。此类功能和操作可以包括,例如,设置闹钟、拨打电话、发送文本消息或电子邮件消息、添加日历事件等。可以在用户和助理之间的会话对话上下文中将此类功能和操作作为附件功能来执行。此类功能和操作可以由用户在此对话的上下文中指定,或者可以基于对话上下文自动执行它们。本领域的技术人员将认识到,由此可以将该助理用作控制机构,用于发起和控制电子设备上的各种操作,可以将其用作诸如按钮或图形用户界面的常规机构的替代。附图说明25.附图例示了本发明的几个实施例,与说明书一起,用于解释根据各种实施例的本发明的原理。本领域的技术人员将认识到,附图中示出的特定实施例仅仅是示例性的,并非要限制本发明的范围。26.图1是示出了智能自动化助理系统的一个实施例的实例的框图。27.图2示出了根据至少一个实施例的用户和智能自动化助理之间的交互的一个实例。28.图3是示出了根据至少一个实施例的适用于实现智能自动化助理的至少一部分的计算设备的框图。29.图4是示出了根据至少一个实施例的用于在独立计算系统上实现智能自动化助理的至少一部分的架构的框图。30.图5是示出了根据至少一个实施例的用于在分布式计算网络上实现智能自动化助理的至少一部分的架构的框图。31.图6是示出了用于例示几种不同类型的客户端和操作模式的系统架构的框图。32.图7是示出了根据一个实施例的彼此通信以实施本发明的客户端和服务器的框图。33.图8是示出了根据一个实施例的活动知识本体的片段的框图。34.图9是示出了智能自动化助理系统的另选实施例的一个实例的框图。35.图10是示出了根据一个实施例的用于一个或多个主动输入启发部件的操作的方法的流程图。36.图11是示出了根据一个实施例的用于主动键入输入启发的方法的流程图。37.图12至图21是示出了根据一个实施例的用于主动键入输入启发的一些过程的一些部分的屏幕截图。38.图22是示出了根据一个实施例的用于语音或语音输入的主动输入启发的方法的流程图。39.图23是示出了根据一个实施例的用于基于gui的输入的主动输入启发的方法的流程图。40.图24是示出了根据一个实施例的用于在对话流层次上进行主动输入启发的方法的流程图。41.图25是示出了根据一个实施例的用于主动监测相关事件的方法的流程图。42.图26是示出了根据一个实施例的用于多模式主动输入启发的方法的流程图。43.图27是示出了根据一个实施例的可以通过一个或多个域模型部件和服务编排提供的各种类型功能、操作、动作和/或其他特征的实例的一组屏幕截图。44.图28是示出了根据一个实施例的用于自然语言处理的方法的一个实例的流程图。45.图29是示出了根据一个实施例的自然语言处理的屏幕截图。46.图30和图31是示出了根据一个实施例的可以由一个或多个对话流处理器提供的各种类型的功能、操作、动作和/或其他特征的实例的屏幕截图。47.图32是示出了根据一个实施例的用于一个或多个对话流处理器部件的操作的方法的流程图。48.图33是示出了根据一个实施例的自动化调用和应答过程的流程图。49.图34是示出了根据一个实施例的用于受约束选择任务的任务流的实例的流程图。50.图35和图36是示出了根据一个实施例的受约束选择任务的操作的实例的屏幕截图。51.图37是示出了根据一个实施例的用于执行服务编排过程的过程的实例的流程图。52.图38是示出了根据一个实施例的服务调用过程的实例的流程图。53.图39是示出了根据一个实施例的多阶段输出过程的实例的流程图。54.图40和图41是示出了根据一个实施例的输出处理的实例的屏幕截图。55.图42是根据一个实施例的多模式输出处理的实例的流程图。56.图43a和图43b是示出了根据一个实施例的使用一个或多个短期个人存储器部件以在改变位置的同时维持对话上下文的实例的屏幕截图。57.图44a至图44c是示出了根据一个实施例的使用一个或多个长期个人存储器部件的实例的屏幕截图。58.图45示出了用于受约束选择任务的抽象模型的实例。59.图46示出了通过搜索过程帮助引导用户的对话流模型的一个实例。60.图47是示出了根据一个实施例的受约束选择的方法的流程图。61.图48是示出了根据一些实施例的用于利用数字助理为搜索请求和预订请求提供辅助的方法的流程图。62.图49是示出了根据一些实施例的用于利用数字助理执行餐厅搜索的方法的流程图。63.图50是示出了根据一些实施例的用于利用数字助理为娱乐相关请求提供辅助的方法的流程图。64.图51是示出了根据一些实施例的用于利用数字助理提供与特定信息域相关的信息的方法的流程图。65.图52是根据各种实施例的可以由助理1002处理的受约束选择域的一个实例。具体实施方式66.现在将参照如附图所示的各种技术的某些示例性实施例来详细描述各种技术。在以下描述中,阐述了众多具体细节,以便提供对其中描述或提到的一个或多个方面和/或特征的透彻理解。然而,对于本领域的技术人员显而易见的是,可以在不具有这些具体细节中的一些或全部的情况下实践所描述或提到的一个或多个方面和/或特征。在其他实例中,未详细描述公知的过程步骤和/或结构,以免使本文中描述或提到的一些方面和/或特征模糊不清。67.可以在本申请中描述一个或多个不同的发明。此外,对于本文描述的一个或多个发明而言,可以在本专利申请中描述众多实施例,并且仅仅出于例示的目的给出它们。描述的实施例并非要在任何意义上进行限制。从本公开可以显而易见的是,一个或多个发明可以广泛应用于众多实施例。充分详细地描述了这些实施例,以使本领域的技术人员能够实践一个或多个发明,要理解的是,可以利用其他实施例,可以作出结构、逻辑、软件、电气和其他变化而不脱离一个或多个发明的范围。因此,本领域的技术人员将认识到,可以利用各种修改和改变来实践一个或多个发明。可以参考形成本公开一部分的一个或多个特定实施例或附图来描述一个或多个发明的特定特征,在实施例或附图中通过例示,示出了一个或多个发明的具体实施例。然而,应当理解,此类特征并不限于在描述它们所参考的一个或多个特定实施例或附图中使用。本公开既不是一个或多个发明的所有实施例的文字描述,也不是必须要存在于所有实施例中的一个或多个发明的特征列示。68.本专利申请中提供的章节标题和本专利申请的标题仅仅为了方便,并非要视为以任何方式限制本公开。69.彼此通信的设备未必彼此连续通信,除非明确做出不同表述。此外,彼此通信的设备可以直接或通过一个或多个中介体间接通信。70.描述具有几个彼此通信的部件的实施例并非暗示需要所有此类部件。相反,描述了多种任选部件以例示一个或多个发明的多种可能实施例。71.此外,尽管可以按照顺序次序描述过程步骤、方法步骤、算法等,但可以配置此类过程、方法和算法以替代顺序工作。换言之,在本专利申请中可以描述的步骤的任何序列或顺序本身并非表示需要按照该顺序执行步骤。可以按照任何可行的顺序执行所述过程的步骤。此外,尽管被描述或暗示为非同时发生(例如,因为在其他步骤之后描述一个步骤),但可以同时执行一些步骤。此外,通过在附图中绘示过程来例示过程并非暗示例示的过程不包括其他变型和修改,不暗示例示的过程或其任何步骤是一个或多个发明必需的,不暗示例示的过程是优选的。72.在描述单个设备或制品时,将容易明白,可以使用超过一个设备/制品(无论它们是否合作)以替代单个设备/制品。类似地,在描述超过一个设备或制品时(无论它们是否合作),将容易明白,可以使用单个设备/制品来替代超过一个设备或制品。73.可以替代地由未明确描述为具有此类功能/特征的一个或多个其他设备替代地体现设备的功能和/或特征。因此,一个或多个发明的其他实施例不需要包括设备自身。74.有时将为了清晰起见以单数形式描述本文中描述或提到的多种技术和机构。然而,需注意,除非另行指出,否则特定实施例包括一项技术的多次重复或一种机构的多个实例化。75.尽管在智能自动化助理技术的上下文中进行描述,但可以理解,也可以在涉及人与软件的交互和/或与软件的计算机化交互的其他
技术领域
:中部署和/或应用本文描述的各个方面和技术(例如,与活动知识本体相关联的那些)。76.在以下一个或多个参考中公开了涉及智能自动化助理技术(例如,其可以由本文描述的一个或多个智能自动化助理系统实施例利用、提供和/或在其那里实施)的其他方面:77.·2010年1月18日提交的名称为“intelligentautomatedassistant”的美国临时专利申请n序列号61/295,774,在此通过引用将其公开并入本文;78.·2006年9月8日提交的名称为“methodandapparatusforbuildinganintelligentautomatedassistant”的美国专利申请序列号11/518,292,在此通过引用将其公开并入本文;以及79.·2009年6月12日提交的名称为“systemandmethodforsemanticauto‑completion”的美国临时专利申请序列号61/186,414,在此通过引用将其公开并入本文。80.硬件架构81.通常,可以在硬件或软件硬件的组合上实施本文描述的智能自动化助理技术。例如,它们可以实现于操作系统内核中、独立的用户过程中、绑定到网络应用中的库封装中、特殊构造的机器上或网络接口卡上。在具体实施例中,本文公开的技术可以实现于诸如操作系统的软件中或运行于操作系统上的应用中。82.可以将本文公开的一个或多个智能自动化助理实施例的至少一些的软件/硬件混合具体实施实现于由存储于存储器中的计算机程序选择性激活或重新配置的可编程机器上。此类网络设备可以具有多个网络接口,该网络接口可以配置或设计它们以利用不同类型的网络通信协议。用于这些机器中的一些机器的一般架构可以从本文公开的描述中获知。根据具体实施例,本文公开的各种智能自动化助理实施例的至少一些特征和/或功能可以实现于一个或多个通用网络主机上,诸如最终用户计算机系统、计算机、网络服务器或服务器系统、移动计算设备(例如,个人数字助理、移动电话、智能电话、膝上型计算机、平板电脑等)、消费电子设备、音乐播放器或任何其他适当的电子设备、路由器、交换机等,或它们的任意组合。在至少一些实施例中,本文公开的各种智能自动化助理实施例的至少一些特征和/或功能可以实现于一个或多个虚拟化计算环境中(例如,网络计算云等)。83.现在参考图3,示出了绘示适用于实施本文公开的智能自动化助理特征和/或功能的至少一部分的计算设备60的框图。计算设备60例如可以是最终用户计算机系统、网络服务器或服务器系统、移动计算设备(例如个人数字助理、移动电话、智能电话、膝上型计算机、平板电脑等)、消费电子设备、音乐播放器或任何其他适当的电子设备或它们的任意组合或部分。计算设备60可以适于通过通信网络诸如互联网,利用用于此类通信的已知协议,无论无线或有线,来与其他计算设备诸如客户端和/或服务器通信。84.在一个实施例中,计算设备60包括中央处理单元(cpu)62、接口68和总线67(诸如,外围部件互连(pci)总线)。在适当软件或固件的控制下工作时,cpu62可以负责实施与专门配置的计算设备或机器的功能相关联的特定功能。例如,在至少一个实施例中,可以配置或设计用户的个人数字助理(pda)以利用cpu62、存储器61、65和一个或多个接口68作为智能自动化助理系统工作。在至少一个实施例中,可以使得cpu62在软件模块/部件的控制下执行一种或多种不同类型的智能自动化助理功能和/或操作,软件模块/部件例如可以包括操作系统和任何适当的应用软件、驱动程序等。85.cpu62可以包括一个或多个处理器63,例如,来自motorola或intel的微处理器系列或mips微处理器系列的处理器。在一些实施例中,一个或多个处理器63可以包括用于控制计算设备60的操作的专门设计的硬件(例如,专用集成电路(asic)、电可擦除可编程只读存储器(eeprom)、现场可编程门阵列(fpga)等)。在具体的实施例中,存储器61(诸如,非易失性随机存取存储器(ram)和/或只读存储器(rom))还形成cpu62的部分。然而,可以有很多不同方式将存储器耦接到系统。存储块61可以用于多种目的,例如,高速缓存和/或存储数据、编程指令等。86.如本文所用,术语“处理器”不仅限于现有技术中称为处理器的那些集成电路,而是宽泛地指微控制器、微计算机、可编程逻辑控制器、专用集成电路和任何其他可编程电路。87.在一个实施例中,提供接口68作为接口卡(有时称为“线卡”)。通常,它们控制通过计算网络发送和接收数据包,有时支持用于计算设备60的其他外围设备。在可以提供的接口中,有以太网接口、帧中继接口、缆线接口、dsl接口、令牌环接口等。此外,可以提供各种类型的接口,诸如,通用串行总线(usb)、串行接口、以太网、火线、pci、并行接口、射频(rf)、蓝牙tm、近场通信(例如,使用近场磁场)、802.11(wifi)、帧中继、tcp/ip、isdn、快速以太网接口、千兆比特以太网接口、异步传输模式(atm)接口、高速串行接口(hssi)接口、销售点(pos)接口、光纤数据分布接口(fddi)等。通常,此类接口68可以包括适合与适当介质通信的端口。在一些情况下,它们还可以包括独立的处理器,并且在一些情况下,包括易失性和/或非易失性存储器(例如ram)。88.尽管图3中所示的系统例示了用于实施本文所述发明的技术的计算设备60的一种具体架构,但其绝不是可以实施本文所述特征和技术的至少一部分的仅有的设备架构。例如,可以使用具有一个或任意数量处理器63的架构,并且此类处理器63可以存在于单个设备中或分布于任意数量的设备间。在一个实施例中,单个处理器63处理通信以及处理路由计算。在各种实施例中,可以在智能自动化助理系统中实施不同类型的智能自动化助理特征和/或功能,该智能自动化助理系统包括客户端设备(诸如,个人数字助理或运行客户端软件的智能电话)和一个或多个服务器系统(诸如下文更详细描述的服务器系统)。89.无论网络设备配置如何,但本发明的系统可以采用一个或多个存储器或存储器模块(例如,存储块65),它们被配置为存储用于通用网络操作的数据、程序指令和/或与本文所述智能自动化助理技术的功能相关的其他信息。例如,程序指令可以控制操作系统和/或一个或多个应用的操作。还可以配置一个或多个存储器以存储数据结构、关键字分类信息、广告信息、用户点击和按压信息和/或本文所述的其他具体的非程序信息。90.因为可以采用此类信息和程序指令实现本文所述的系统/方法,所以至少一些网络设备实施例可以包括非暂态机器可读存储介质,例如,可以配置或设计其以存储用于执行本文所述各种操作的程序指令、状态信息等。此类非暂态机器可读存储介质的实例包括但不限于:磁性介质,诸如硬盘、软盘和磁带;光学介质,诸如cd‑rom盘;磁光介质,诸如软光盘和专门配置为存储和执行程序指令的硬件设备,诸如只读存储器设备(rom)、闪存存储器、忆阻器存储器、随机存取存储器(ram)等。程序指令的实例包括机器代码和文件两者,机器代码诸如是由编译器产生的代码,文件包含可以由计算机使用解释程序执行的更高等级的代码。91.在一个实施例中,本发明的系统实现于独立式计算系统上。现在参考图4,示出了绘示根据至少一个实施例的用于在独立计算系统上实现智能自动化助理的至少一部分的架构的框图。计算设备60包括一个或多个处理器63,该处理器63运行用于实现智能自动化助理1002的软件。输入设备1206可以是适于接收用户输入的任何类型,例如包括键盘、触摸屏、麦克风(例如,用于语音输入),鼠标、触控板、轨迹球、五路开关、操纵杆和/或它们的任意组合。输出设备1207可以是屏幕、扬声器、打印机和/或它们的任意组合。存储器1210可以是具有现有技术公知的结构和架构的随机存取存储器,在运行软件期间供一个或多个处理器63使用。存储设备1208可以是任何磁性、光学和/或电气存储设备,用于以数字形式存储数据;实例包括闪存存储器、磁性硬盘、cd‑rom等。92.在另一个实施例中,本发明的系统实现于分布式计算网络上,诸如具有任意数量的客户端和/或服务器的计算网络。现在参考图5,示出了绘示根据至少一个实施例的用于在分布式计算网络上实现智能自动化助理的至少一部分的架构的框图。93.在图5中所示的布置中,提供了任意数量的客户端1304;每个客户端1304可以运行用于实施本发明的客户端侧部分的软件。此外,可以提供任意数量的服务器1340,以处理从客户端1304接收的请求。客户端1304和服务器1340可以经由电子网络1361诸如互联网来彼此通信。可以利用任何已知的网络协议,例如包括有线协议和/或无线协议,实现网络1361。94.此外,在一个实施例中,服务器1340可以在需要时调用外部服务1360以获得额外的信息或参考关于与特定用户的先前交互的数据。例如,可以通过网络1361与外部服务1360进行通信。在各种实施例中,外部服务1360包括启用web的服务和/或与硬件设备自身相关或安装于其上的功能。例如,在助理1002实现于智能电话或其他电子设备上的实施例中,助理1002能够获得日历应用(“应用”)、联系人和/或其他源中存储的信息。95.在各种实施例中,助理1002能够控制其安装所在的电子设备的很多特征和操作。例如,助理1002能够调用外部服务1360,该外部服务通过api或通过其他方式与设备上的功能和应用交互,以执行本来可以利用设备上的常规用户界面发起的功能和操作。此类功能和操作可以包括,例如,设置闹钟、拨打电话、发送文本消息或电子邮件消息、添加日历事件等。可以在用户和助理1002之间的会话对话上下文中将此类功能和操作作为附件功能来执行。此类功能和操作可以由用户在诸如对话的上下文中指定,或者可以基于对话上下文自动执行它们。本领域的技术人员将认识到,由此可以将助理1002用作控制机构,用于发起和控制电子设备上的各种操作,可以将其用作诸如按钮或图形用户界面的常规机构的替代。96.例如,用户可以向助理1002提供输入,诸如“我需要明天早上8点醒来”。一旦助理1002利用本文描述的技术确定了用户意图,助理1002就能够调用外部服务1360以与设备上的闹钟功能或应用交互。助理1002代表用户设置闹铃。通过这种方式,用户可以将助理1002用作用于设置闹铃或执行设备上其他功能的常规机构的替代。如果用户的请求不明确或需要进一步澄清,则助理1002可以使用本文描述的各种技术,包括主动启发、解释、建议等来获得所需的信息,从而调用正确的服务1360并采取预期的动作。在一个实施例中,助理1002可以在调用服务1360以执行功能之前提示用户进行确认。在一个实施例中,用户可以选择性地禁用助理1002的能力,以调用特定服务1360,或者如果需要,可以禁用所有此类服务调用。97.可以利用很多不同类型的客户端1304和操作模式来实现本发明的系统。现在参考图6,示出了绘示系统架构的框图,该系统架构示出了几种不同类型的客户端1304和操作模式。本领域的技术人员将认识到,图6中所示的各种客户端1304和操作模式仅仅是示例性的,可以利用除所示那些之外的客户端1304和/或操作模式实现本发明的系统。此外,该系统可以包括单独的或任意组合的任何或所有此类客户端1304和/或操作模式。所述实例包括:98.·具有输入/输出设备和/或传感器1402的计算机设备。客户端部件可以被部署在任何此类计算机设备1402上。可以利用web浏览器1304a或用于经由网络1361实现与服务器1340通信的其他软件应用来实现至少一个实施例。输入和输出信道可以是任何类型,例如,包括视觉和/或听觉信道。例如,在一个实施例中,可以利用基于语音的通信方法实现本发明的系统,从而允许将助理的实施例用于盲人,盲人的web浏览器等同物是由语音驱动的并使用语音进行输出。99.·具有i/o和传感器1406的移动设备,可以为其将客户端实现为移动设备1304b上的应用。这包括但不限于移动电话、智能电话、个人数字助理、平板设备、联网游戏机等。100.·具有i/o和传感器1410的消费电器,为此可以将客户端实现为电器1304c上的嵌入式应用。101.·具有仪表板界面和传感器1414的汽车和其他车辆,为此可以将客户端实现为嵌入式系统应用1304d。这包括但不限于汽车导航系统、语音控制系统、车载娱乐系统等。102.·联网的计算设备,诸如路由器1418或驻留于网络或与网络交互的任何其他设备,为此可以将客户端实现为设备驻留的应用1304e。103.·电子邮件客户端1424,针对该电子邮件客户端,助理的实施例经由电子邮件形态服务器1426连接。电子邮件形态服务器1426充当通信网桥,例如,以来自用户的输入作为发送到助理的电子邮件消息,并向用户发送来自助理的输出作为回复。104.·即时消息客户端1428,针对该即时消息客户端,助理的实施例经由即时消息形态服务器1430连接。即时消息形态服务器1430充当通信网桥,以来自用户的输入作为发送到助理的消息,并向用户发送来自助理的输出作为回复消息。105.·语音电话1432,针对该语音电话,通过互联网协议语音(voip)形态服务器1430连接助理的实施例。voip形态服务器1430充当通信网桥,以来自用户的输入作为向助理讲的语音,并向用户发送来自助理的输出作为例如回复的合成语音。106.对于包括但不限于电子邮件、即时消息、论坛、分组聊天会话、实况帮助或客户支持会话等的即时消息平台,助理1002可以充当会话中的参与者。助理1002可以监测会话并利用本文描述的用于一对一交互的一种或多种技术和方法回复个人或组。107.在各种实施例中,用于实施本发明技术的功能可以分布于任意数量的客户端和/或服务器部件之间。例如,可以实施各种软件模块,用于结合本发明执行各种功能,可以通过各种方式实施此类模块以运行于服务器和/或客户端部件上。现在参考图7,示出了根据一个实施例的客户端1304和服务器1340的实例,它们彼此通信以实施本发明。图7示出了可以在客户端1304和服务器1340之间分布软件模块的一种可能布置。本领域的技术人员将认识到,图示的布置仅仅是示例性的,可以通过很多不同方式分布此类模块。此外,可以提供任意数量的客户端1304和/或服务器1340,并且可以通过任意数量的不同方式在这些客户端1304和/或服务器1340之间分布模块。108.在图7的实例中,输入启发功能和输出处理功能分布于客户端1304和服务器1340之间,其中输入启发的客户端部分1094a和输出处理的客户端部分1092a位于客户端1304处,并且输入启发的服务器部分1094b和输出处理的服务器部分1092b位于服务器1340处。以下部件位于服务器1340处:109.·完整的词汇1058b;110.·语音模式识别器1060b的完整库;111.·短期个人存储器1052b的主版本;112.·长期个人存储器1054b的主版本。113.在一个实施例中,客户端1304在本地维护这些部件的子集和/或部分,以改善响应度并减小对网络通信的依赖。可以根据公知的高速缓存管理技术维护并更新此类子集和/或部分。此类子集和/或部分包括,例如:114.·词汇1058a的子集;115.·语言模式识别器1060a的库的子集;116.·短期个人存储器1052a的高速缓存;117.·长期个人存储器1054a的高速缓存。118.可以实现额外的部件作为服务器1340的部分,例如包括:119.·语言解释器1070;120.·对话流处理器1080;121.·输出处理器1090;122.·域实体数据库1072;123.·任务流模型1086;124.·服务编排1082;125.·服务能力模型1088。126.下面将更详细地描述这些部件中的每一个。服务器1340通过在需要时与外部服务1360交互来获得附加信息。127.概念架构128.现在参考图1,示出了智能自动化助理1002的特定示例性实施例的简化框图。如本文更详细所述,智能自动化助理系统的不同实施例可以被配置、被设计和/或可用于提供各种不同类型的通常与智能自动化助理技术相关的操作、功能和/或特征。此外,如本文更详细所述,本文公开的智能自动化助理的各种操作、功能和/或特征中的很多操作、功能和/或特征可以向与智能自动化助理系统交互的不同实体实现或提供不同类型的优点和/或好处。可以利用上述任何硬件架构或利用不同类型的硬件架构实现图1中所示的实施例。129.例如,根据不同的实施例,至少一些智能自动化助理系统可以被配置、被设计和/或可用于提供各种不同类型的操作、功能和/或特征,例如,如下一种或多种(或它们的组合):130.·使可以通过互联网获得的数据和服务的应用自动发现、查找、选择、购买、预订或订购产品或服务。除了使使用这些数据和服务的过程自动化之外,智能自动化助理1002还可以实现一次组合使用数据和服务的几个源。例如,它可以组合来自几个评论网站的产品信息、检查价格和来自多个分销商的可用性,并检查其位置和时间约束,以及帮助用户找到其问题的个性化解决方案。131.·使通过互联网可获得的数据和服务的使用自动化,以发现、调查、选择、保留和通过其他方式了解要做的事情(包括但不限于电影、事件、表演、展览、演出和吸引人的事物);要去的地方(包括但不限于旅行目的地、酒店和要停留的其他地方、地标和其他感兴趣地点等);要吃喝的地方(例如,餐厅和酒吧),会见他人的时间和地方,以及可以在互联网上发现的任何其他娱乐源或社交源。132.·通过自然语言对话实现应用和服务的操作,这本来是由具有图形用户界面的专用应用提供的,专用应用包括搜索(包括基于位置的搜索);导航(地图和方向);数据库查看(诸如按照名称或其他属性找到单位或人);获得天气状况和预报,检查市场商品的价格或金融事物的状态;监测航班的交通或状态;访问并更新日历和日程;管理提醒、提示、任务和项目;通过电子邮件或其他消息平台通信;以及在本地或远程操作设备(例如,拨打电话,控制光和温度,控制家庭安全设备,播放音乐或视频等)。在一个实施例中,可以使用助理1002发起、操作和控制设备上可用的很多功能和应用。133.·为活动、产品、服务、娱乐源、时间管理提供个人建议或其他任何种类的建议服务,其受益于以自然语言进行的交互对话以及对数据和服务的自动访问。134.根据不同的实施例,可以将智能自动化助理1002提供的各种功能、操作、动作和/或其他特征的至少一部分实现于一个或多个客户端系统处,一个或多个服务器系统处和/或它们的组合处。135.根据不同的实施例,可以由自动化调用和应答过程中的至少一个实施例诸如相对于图33所示和所述的过程来实现助理1002提供的各种功能、操作、动作和/或其他特征的至少一部分。136.此外,本文描述的助理1002的各种实施例可以相对于当前现有的智能自动化助理技术包括或提供多个不同的优点和/或益处,现有技术例如是以下一种或多种(或它们的组合):137.·集成受到一组域、任务、服务和对话的明确模型约束的语音到文本和自然语言理解技术。与尝试实现通用人工智能系统的助理技术不同的是,本文描述的实施例可以应用多个约束源以将解决方案的数量减少到更易管理的大小。这样获得了更少有歧义的语言解释、更少相关域或任务,以及使服务中的意图操作化的更少方式。集中于特定域、任务和对话还使得利用人管理的词汇以及从意图到服务参数的映射实现对域和任务的覆盖是可行的。138.·通过互联网,使用api代表用户调用服务来解决用户问题的能力。与仅返回链接和内容的搜索引擎不同的是,本文描述的自动化助理1002的一些实施例可以使搜索和问题解决活动自动化。能够针对给定请求调用多个服务还为用户提供了比访问单个站点更广泛的功能,例如,以生产产品或服务或找到某事去做。139.·应用对用户请求的解释和执行中的个人信息和个人交互历史。与常规的搜索引擎或问题回答服务不同的是,本文描述的实施例使用来自个人交互历史(例如,对话历史、先前从结果进行的选择等)的信息、个人物理上下文(例如,用户的位置和时间)以及在交互上下文中收集的个人信息(例如,姓名、电子邮件地址、物理地址、电话号码、账号、偏好等)。例如,使用这些信息源使得能够:140.ο更好地解释用户输入(例如,在解释语言时,使用个人历史和物理上下文);141.ο更个性化的结果(例如,偏向于偏好或最近的选择);142.ο提高用户的效率(例如,通过使涉及签约使用服务或填写表格的步骤自动化)。143.·在解释用户输入的自然语言时使用对话历史。因为实施例可以保持个人历史并对用户输入应用自然语言理解,所以它们还可以使用对话上下文,诸如当前位置、时间、域、任务步骤和任务参数来解释新的输入。常规的搜索引擎和命令处理器会解释至少一个与对话历史无关的查询。使用对话历史的能力可以使更自然的交互成为可能,这是一种与正常人类交谈相似的交互。144.·主动输入启发,其中助理1002基于与用于解释其输入相同的模型和信息来主动指导并约束来自用户的输入。例如,助理1002可以应用对话模型以在与用户对话时建议后续步骤,在对话中他们细化请求;基于域和特定于上下文的可能性向部分键入的输入提供完成;或使用语义解释以从将语音解释为文本或将文本解释为意图的歧义解释中选择。145.·服务的明确建模和动态管理,具有动态和稳健的服务编排。所述实施例的架构使助理1002能够与很多外部服务交互,动态确定哪些服务可以为特定的用户请求提供信息,将用户请求的参数映射到不同的服务api,一次调用多项服务,集成来自多项服务的结果,在失效服务上得体地进行失效转移,和/或在api和能力演进时有效率地维持服务的实施。146.·使用活动知识本体作为构建助理1002的方法和装置,这简化了自动化助理系统的软件工程学和数据维护。活动知识本体是用于助理的数据建模和执行环境的集成。它们提供了将模型和数据的各种源(域概念、任务流、词汇、语言模式识别器、对话上下文、用户个人信息以及从域和任务请求到外部服务的映射)连接在一起的框架。本文描述的活动知识本体和其他架构创新使得构建域内的深层功能可行,统一了多个信息和服务源,并且是跨一组域这样做的。147.在至少一个实施例中,智能自动化助理1002可以用于在执行特定任务和/或操作时利用和/或生成各种不同类型的数据和/或其他类型的信息。例如,这可以包括输入数据/信息和/或输出数据/信息。例如,在至少一个实施例中,智能自动化助理1002可以用于访问、处理和/或通过其他方式利用来自一个或多个不同类型源的信息,源例如是一个或多个本地和/或远程存储器、设备和/或系统。此外,在至少一个实施例中,智能自动化助理1002可以用于生成一种或多种不同类型的输出数据/信息,例如,可以将其存储于一个或多个本地和/或远程设备和/或系统的存储器中。148.可以由智能自动化助理1002访问和/或利用的不同类型输入数据/信息的实例可包括但不限于如下一项或多项(或它们的组合):149.·语音输入:来自移动设备,诸如移动电话和平板电脑、具有麦克风的计算机、蓝牙耳麦、汽车语音控制系统、电话系统、应答服务上的录音、集成消息服务上的音频语音邮件、具有诸如时钟无线电设备的语音输入的消费应用、电话站、家庭娱乐控制系统和游戏机。150.·来自计算机或移动设备上的键盘、遥控器或其他消费电子设备上的键盘、发向助理的电子邮件消息、发向助理的即时消息或类似短消息、从多用户游戏环境中的玩家接收的文本,以及消息馈送中的流式传输的文本的文本输入。151.·来自传感器或基于位置的系统的位置信息。实例包括全球定位系统(gps)和移动电话上的辅助gps(agps)。在一个实施例中,将位置信息与明确的用户输入组合。在一个实施例中,本发明的系统能够基于已知的地址信息和当前的位置确定检测用户何时在家。以这种方式,可以对用户在家而非在外时可能感兴趣的信息类型,以及根据其是否在家而应当代表用户调用的服务和动作类型进行特定推断。152.·来自客户端设备上的时钟的时间信息。这可以包括,例如,来自电话或其他客户端设备,指示本地时间和时区的时间。此外,可以在用户请求的上下文中使用时间,例如,以解释诸如“一小时之内”和“今晚”的短语。153.·罗盘、加速度计、陀螺仪和/或行进速度数据,以及来自移动或手持式设备或嵌入式系统,诸如汽车控制系统的其他传感器数据。这还可以包括从遥控器到电器和游戏机的设备定位数据。154.·来自具有gui的任何设备上的图形用户界面(gui)的点击和菜单选择与其他事件。其他实例包括对触摸屏的触摸。155.·来自传感器和其他数据驱动的触发器,诸如闹钟、日历提醒、价格改变触发器、位置触发器、从服务器向设备上推送通知等的事件。156.本文所述实施例的输入还包括用户交互历史的上下文,包括对话和请求历史。157.可以由智能自动化助理1002生成不同类型输出数据/信息的实例可包括但不限于如下一项或多项(或它们的组合):158.·直接向输出设备和/或向设备的用户界面发送的文本输出159.·通过电子邮件向用户发送的文本和图形160.·通过消息服务向用户发送的文本和图形161.·语音输出,可以包括如下一项或多项(或它们的组合):162.ο合成语音163.ο采样的语音164.ο记录的消息165.·具有照片、富文本、视频、声音和超级链接的信息的图形布局。例如,在web浏览器中呈现的内容。166.·用于控制设备上的物理动作的致动器输出,诸如使其打开或关闭、发出声音、改变颜色、振动、控制灯等。167.·调用设备上的其他应用,诸如调用地图应用、语音拨打电话、发送电子邮件或即时消息、播放媒体、在日历、任务管理器和记事本应用和其他应用中生成条目。168.·用于控制附属或受控于设备的设备的物理动作的致动器输出,诸如操作远程相机、控制轮椅、在远程扬声器上播放音乐、在远程显示器上播放视频等。169.应当理解,图1的智能自动化助理1002仅仅是可以实施的宽范围智能自动化助理系统实施例中的一个实例。智能自动化助理系统的其他实施例(未示出)可以包括比图示(例如,在图1的示例性智能自动化助理系统实施例中)那些更多、更少和/或不同的部件/特征。170.用户交互171.现在参考图2,示出了用户和智能自动化助理1002的至少一个实施例之间的交互的实例。图2的实例假设用户正在利用输入设备1206(图4)向智能自动化助理1002讲话,输入设备可以是语音输入机构,并且输出是发往输出设备1207(图4)的图形布局,输出设备可以是可滚动屏幕。会话屏101a的特征是会话用户界面,其示出用户说的什么101b(“我想在办公室附近找个浪漫的地方吃意大利饭”)以及助理1002的响应,响应是其发现101c的概要(“好的,我找到了这些意大利餐厅,它们的评论说是离你公司近的浪漫场所:”)以及一组结果101d(示出了餐厅列表的前三个)。在该实例中,用户在列表中的第一条结果上方点击,并且结果自动打开以显示关于餐厅的更多信息,如信息屏101e中所示。信息屏101e和会话屏101a可以出现于同一输出设备上,诸如触摸屏或其他显示设备;图2所示的实例是用于同一输出设备的两个不同输出状态。172.在一个实施例中,信息屏101e示出了从多种服务收集并组合的信息,例如包括如下信息的任一种或所有:173.·门店的地址和几何定位;174.·距用户当前位置的距离;175.·来自多个源的评论;176.在一个实施例中,信息屏101e还包括助理1002可能代表用户提供的服务的一些实例,包括:177.·拨打电话以呼叫门店(“呼叫”);178.·记住这家餐厅以供将来参考(“保存”);179.·向某人发送电子邮件,包含关于这家餐厅的方向和信息(“共享”);180.·在地图上显示这家餐厅的位置和方向(“地图展示”);181.·保存关于这家餐厅的个人记事(“我的记事本”)。182.例如,如图2的实例所示,在一个实施例中,助理1002包括超越简单数据库应用的智能化。183.·处理自然语言101b中的意图的陈述,而不仅仅是关键词;184.·从该语言输入推断语义意图,诸如将“吃意大利餐的地方”解释为“意大利餐厅”;185.·将语义意图操作化成策略,用于使用在线服务并代表用户执行该策略(例如,将寻找浪漫场所的期望操作化为检查在线评论站点查找将一处地方描述成“浪漫”的策略)。186.智能自动化助理部件187.根据各种实施例,智能自动化助理1002可以包括多个不同类型的部件、设备、模块、过程、系统等,例如,可以通过使用硬件和/或硬件软件的组合对它们进行实现和/或实例化。例如,如图1的示例性实施例中所示,助理1002可以包括一个或多个以下类型的系统、部件、设备、过程等(或它们的组合):188.·一个或多个活动知识本体1050;189.·一个或多个主动输入启发部件1094(可以包括客户端部分1094a和服务器部分1094b);190.·一个或多个短期个人存储器部件1052(可以包括主版本1052b和高速缓存1052a);191.·一个或多个长期个人存储器部件1054(可以包括主版本1052b和高速缓存1052a);192.·一个或多个域模型部件1056;193.·一个或多个词汇部件1058(可以包括完整词汇1058b和子集1058a);194.·一个或多个语言模式识别器部件1060(可以包括完整库1060b和子集1560a);195.·一个或多个语言解释器部件1070;196.·一个或多个域实体数据库1072;197.·一个或多个对话流处理器部件1080;198.·一个或多个服务编排部件1082;199.·一个或多个服务部件1084;200.·一个或多个任务流模型部件1086;201.·一个或多个对话流模型部件1087;202.·一个或多个服务模型部件1088;203.·一个或多个输出处理器部件1090。204.如结合图7所述,在某些基于客户端/服务器的实施例中,这些部件中的一些或全部可以分布于客户端1304和服务器1340之间。205.出于例示的目的,现在将参考图1的示例性智能自动化助理1002实施例来更详细地描述智能自动化助理1002的具体示例性实施例的不同类型部件的至少一部分。206.活动知识本体1050207.活动知识本体1050充当一种统一基础结构,其集成来自智能自动化助理1002的实施例的其他部分的模型、部件和/或数据。在计算机和信息科学领域中,知识本体提供用于数据和知识表示的结构,诸如类/类型、关系、属性/特性及其在实例中的实例化。例如,知识本体用于构建数据和知识的模型。在智能自动化系统1002的一些实施例中,知识本体是构建诸如域模型的模型的建模框架的部分。208.在本发明的上下文中,“活动知识本体”1050还可以充当执行环境,其中按照类似知识本体的方式布置不同的处理元素(例如,具有不同的属性以及与其他处理元素的关系)。这些处理元素执行智能自动化助理1002的至少一些任务。可以提供任意数量的活动知识本体1050。209.在至少一个实施例中,活动知识本体1050可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):210.·充当建模和开发环境,集成来自各种模型和数据部件的模型和数据,包括但不限于211.ο域模型1056212.ο词汇1058213.ο域实体数据库1072214.ο任务流模型1086215.ο对话流模型1087216.ο服务能力模型1088217.·充当数据建模环境,基于知识本体的编辑工具可以在其上操作,以开发新的模型、数据结构、数据库大纲和表示。218.·充当实况执行环境,对用于域1056、任务1086和/或对话模型1087、语言模式识别器和/或词汇1058的元素的值,以及特定于用户的信息,诸如短期个人存储器1052、长期个人存储器1054中发现的信息和/或服务编排1082的结果进行实例化。例如,活动知识本体的一些节点可以对应于域概念,诸如餐厅及其属性餐厅名称。在实况执行中,这些活动知识本体节点可以被实例化以具有特定餐厅实体的身份及其名称,以及其名称如何对应于自然语言输入话语中的单词。因此,在本实施例中,活动知识本体既充当指定这些餐厅是具有名称的身份实体的概念的建模环境,还用于存储那些建模节点与来自实体数据库和自然语言解析的数据的动态绑定。219.·在智能自动化助理的部件和处理元素之间启用通信和协调,例如,220.如下一种或多种(或它们的组合):221.ο一个或多个主动输入启发部件1094222.ο一个或多个语言解释器部件1070223.ο一个或多个对话流处理器部件1080224.ο一个或多个服务编排部件1082225.ο一个或多个服务部件1084226.在一个实施例中,至少部分地利用2006年9月8日提交的名称为“methodandapparatusforbuildinganintelligentautomatedassistant”的美国专利申请序列号11/518,292中描述的各种方法和装置实施本文描述的活动知识本体1050的功能、操作、动作和/或特征的至少一部分。227.在至少一个实施例中,活动知识本体1050的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备通信来访问数据库信息的至少一部分。可以由活动知识本体1050访问不同类型数据的实例可包括但不限于如下一项或多项(或它们的组合):228.·可以从智能自动化助理1002的一个或多个部件获得的静态数据;229.·根据用户会话动态实例化的数据,例如但不限于保持特定于用户的输入和智能自动化助理1002部件间交换的输出的状态,短期个人存储器的内容,从用户会话的先前状态做出的推断等。230.通过这种方式,活动知识本体1050用于统一智能自动化助理1002中各种部件的元件。活动知识本体1050允许作者、设计者或系统构建者集成部件,使得利用其他部件的元件识别一个部件的元件。作者、设计者或系统构建者从而能够更容易地组合并集成部件。231.现在参考图8,示出了根据一个实施例的活动知识本体1050的片段的实例。该实例意在帮助例示可以由活动知识本体1050提供的各种功能、操作、动作和/或其他特征中的一些。232.图8中的活动知识本体1050包括餐厅和进餐事件的表示。在该实例中,餐厅是具有如下属性的概念1610,诸如其名称1612、提供的菜系1615及其位置1613,继而可以将其建模为具有街道地址1614的属性的结构化节点。进餐事件的概念可以被建模为包括聚餐1617(大小为1619)和时间期间1618的节点1616。233.·活动知识本体可以包括和/或参考域模型1056。例如,图8示出了链接到餐厅概念1610和进餐事件概念1616的外出就餐域模型1622。在这种情况下,活动知识本体1050包括外出就餐域模型1622;具体而言,活动知识本体1050的至少两个节点,即餐厅1610和进餐事件1616,也包括在外出就餐域模型1622中和/或被外出就餐域模型1622援引。除此之外,这种域模型表示如下概念:234.外出就餐涉及在餐厅发生的进餐事件。活动知识本体节点餐厅1610和进餐事件1616还包括在智能自动化助理的其他部件中和/或被智能自动化助理的其他部件援引,如图8中的虚线所示。235.·活动知识本体可以包括和/或援引任务流模型1086。例如,图8示出了应用于特定于域的种类的事件:进餐事件1616的事件规划任务流模型1630,其对与域无关的事件规划进行建模。在本文中,活动知识本体1050包括一般事件规划任务流模型1630,其包括节点,该节点表示规划它们时涉及的事件和其他概念。活动知识本体1050还包括进餐事件节点1616,这是特定种类的事件。在该实例中,进餐事件1616包括在域模型1622和任务流模型1630两者中或被这两个模型援引,这两个模型都包括在活动知识本体1050中和/236.或被活动知识本体1050援引。同样,进餐事件1616是活动知识本体如何能够统一由智能自动化助理的其他部件包括和/或援引的各个部件的元件的实例,如图8中的虚线所示。237.·活动知识本体可以包括和/或援引对话流模型1087。例如,图8示出了对话流模型1642,其用于获得对在概念1619中表示的约束同行人数进行实例化的交易所需的约束值。同样,活动知识本体1050提供了用于关联并统一各种部件诸如对话流模型1087的框架。在这种情况下,对话流模型1642具有约束的一般概念,该约束在这一特定实例中实例化到活动知识本体节点同行人数1619。这一特定的对话流模型1642操作于约束的抽象,独立于域。活动知识本体1050表示聚会节点1617的同行人数属性1619,这与进餐事件节点1616相关。在此类实施例中,智能自动化助理1002使用活动知识本体1050来将对话流模型1642中的约束概念与同行人数的属性1619统一为表示进餐事件概念1616的节点群集的部分,该进餐事件概念是用于外出就餐的域模型1622的部分。238.·活动知识本体可以包括和/或援引服务模型1088。例如,图8示出了与对话流步骤相关联的餐厅预订服务1672的模型,该步骤用于获得该服务执行交易所需的值。在该实例中,用于餐厅预订服务的服务模型1672指定,预订需要同行人数1619的值(要坐在预订餐桌前的人数)。概念同行人数1619是活动知识本体1050的一部分,也链接到或相关到一般对话流模型1642以用于询问用户交易约束;在这种情况下,同行人数是对话流模型1642所需的约束。239.·活动知识本体可以包括和/或援引域实体数据库1072。例如,图8示出了与活动知识本体1050中的餐厅节点1610相关联的餐厅1652的域实体数据库。活动知识本体1050表示餐厅1610的一般概念,如可以由智能自动化助理1002的各个部件所使用,并由餐厅数据库1652中关于特定餐厅的数据实例化。240.·活动知识本体可以包括和/或援引域词汇数据库1058。例如,图8示出了菜系1662的词汇数据库,诸如意大利菜、法国菜等,与每个菜系相关联的字词,诸如“法国”、“大陆”、“省内”等。活动知识本体1050包括餐厅节点1610,其与供应菜系节点1615相关,这又与菜系数据库1662中的菜系表示相关联。因此,通过活动知识本体1050来将用于诸如“法国”的菜系的数据库1662中的特定条目相关为供应菜系1615的概念的实例。241.·活动知识本体可以包括和/或援引能够映射到知识本体1050中的概念或其他表示的任何数据库。域实体数据库1072和词汇数据库1058仅仅是活动知识本体1050如何可以将数据库彼此集成以及与自动化助理1002的其他部件集成的两个实例。活动知识本体允许作者、设计者或系统构建者指定数据库中的表示和知识本体1050中的表示之间的重要映射。例如,用于餐厅数据库1652的数据库大纲可以将餐厅表示为成列编号的桌子,或者表示为来自更大企业数据库的投影,或适用于数据库1652的任何其他表示。在该实例活动知识本体1050中,餐厅1610是具有属性和关系的概念节点,与数据库表格以不同方式组织。在该实例中,知识本体1050的节点与数据库大纲的元素相关联。数据库和知识本体1050的集成提供统一的表示以用于在活动知识本体1050中更大的模型集合和数据方面解释和作用于数据库中的具体数据条目。例如,字词“法国”可以是菜系数据库1662中的条目。因为,在该实例中,数据库1662集成于活动知识本体1050中,该同一字词“法国”还具有餐厅供应的可能菜系的解释,在规划进餐事件时涉及到这种解释,这一菜系充当在使用餐厅预订服务时使用的约束,等等。活动知识本体从而能够将数据库集成到建模和执行环境中,以与自动化助理1002的其他部件互操作。242.如上所述,活动知识本体1050允许作者、设计者或系统构建者集成部件;因此,在图8的实例中,可以利用其他部件的元件,诸如餐厅预订服务1672的所需参数,识别诸如对话流模型1642中的约束的部件的元件。243.活动知识本体1050可以体现为例如模型、数据库和部件的配置,其中模型、数据库和部件之间的关系是如下任一种:244.·包含关系和/或包括关系;245.·与链接和/或指针的关系;246.·api上的界面,都在程序内部和程序之间。247.例如,现在参考图9,示出了智能自动化助理系统1002的另选实施例的实例,其中域模型1056、词汇1058、语言模式识别器1060、短期个人存储器1052和长期个人存储器1054部件是在与活动知识本体1050相关联的公共容器下被组织的,并且其他部件诸如主动输入启发部件1094、语言解释器1070和对话流处理器1080通过api关系与活动知识本体1050相关联。248.一个或多个主动输入启发部件1094249.在至少一个实施例中,一个或多个主动输入启发部件1094(如上所述,可以实现于独立配置中或包括服务器和客户端部件的配置中)可用于执行和/或实施各种功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):250.·启发、促成和/或处理来自用户或用户环境的输入,和/或关于他们的一个或多个需求或一个或多个请求的信息。例如,如果用户正在寻找餐厅,输入启发模块可以获得关于用户对位置、时间、菜系、价格等的约束或偏好。251.·方便来自各个源的不同种类输入,例如,如下一种或多种(或它们的组合):252.ο来自键盘或生成文本的任何其他输入设备的输入253.ο来自用户界面中对部分输入提供动态建议的完成的键盘的输入254.ο来自语音或语音输入系统的输入255.ο来自图形用户界面(gui)的输入,其中用户点击、选择或通过其他方式直接操控图形对象以指示选择256.ο来自生成文本并将其发送到自动化助理的其他应用的输入,其他应用包括电子邮件、文本消息或其他文本通信平台257.通过执行主动输入启发,助理1002能够在输入处理的早期阶段消除意图的歧义。例如,在通过语音提供输入的实施例中,可以向服务器1340发送波形,在服务器处提取词语并执行语义解释。然后可以使用此类语义解释的结果驱动主动输入启发,这可以为用户提供替代候选词语,以基于其语义匹配程度以及发音匹配进行选择。258.在至少一个实施例中,主动输入启发部件1094主动、自动并动态地向可以由助理1002的实施例提供的一项或多项服务作用的输入引导用户。现在参考图10,示出了绘示根据一个实施例的用于主动输入启发部件1094的操作的方法的流程图。259.该过程开始于20。在步骤21中,助理1002可以在一个或多个输入信道上提供界面。例如,用户界面可以为用户提供选项,以在会话交互的任何阶段讲话或键入或轻击。在步骤22中,用户通过在一种设施上发起输入来选择输入信道,诸如按下按钮以开始录制语音或打开界面进行键入。260.在至少一个实施例中,助理1002为选择的形态提供默认建议23。即,它在用户在该形态上输入任何输入之前提供在当前上下文中相关的选项24。例如,在文本输入形态中,助理1002可以提供常用词语的列表,这会开始文本请求或命令,例如,如下一种或多种(或它们的组合):祈使动词(例如,找到、购买、预订、获得、呼叫、检查、安排等)、名词(例如,餐厅、电影、事件、企业等)或指明谈话域的菜单样的选项(例如,天气、体育、新闻等)。261.如果用户在25中选择默认选项中的一者,并将偏好设置为自动提交30,该过程可以立即返回。这类似于常规菜单选择的操作。262.然而,初始选项可能是作为部分输入获取的,或者用户可能开始输入部分输入26。在输入的任何点处,在至少一个实施例中,用户可以选择指示部分输入是完整的22,这导致过程返回。263.在28中,无论最晚的输入是被选择的还是输入的,都将其添加到累积输入。264.在29中,给定当前的输入和关于什么构成相关和/或有意义输入的约束的其他源,系统建议下一个相关的可能输入。265.在至少一个实施例中,对用户输入的约束的源(例如,在步骤23和29中使用)是可能包括在助理1002中的各个模型和数据源中的一者或多者,其可包括但不限于如下一种或多种(或它们的组合):266.·词汇1058。例如,可以建议匹配当前输入的字词或短语。在至少一个实施例中,词汇可以与活动知识本体的任何或一个或多个节点、域模型、任务模型、对话模型和/或服务模型相关联。267.·域模型1056,其可以约束可能对域模型实例化或通过其他方式与域模型协调一致的输入。例如,在至少一个实施例中,域模型1056可用于建议将与当前输入一致的概念、关系、属性和/或实例。268.·语言模式识别器1060,其可用于识别当前输入中的成语、短语、语法结构或其他模式,并用于建议填充模式的完成。269.·域实体数据库1072,其可用于在匹配输入的域中建议可能的实体(例如,企业名称、电影名称、事件名称等)。270.·短期存储器1052,其可用于匹配任何先前的输入或先前输入的部分和/或任何其他属性或关于与用户交互历史的事实。例如,可以针对用户在会话中遇到的城市匹配部分输入,无论是假设地(例如,在查询中提到)和/或物理地(例如,从位置传感器确定)。271.·在至少一个实施例中,可以针对当前输入来匹配最近输入、请求或结果的语义解释。例如,如果用户先前请求过“实况音乐”并获得了音乐会列表,然后在主动输入启发环境中键入“音乐”,建议可以包括“实况音乐”和/或“音乐会”。272.·长期个人存储器1054,可以用于从长期存储器建议匹配项。此类匹配项可以包括,例如,如下一个或多个或任意组合:保存的域实体(例如,“最喜欢的”餐厅、电影、剧院、地点等)、待做事情项目、列表项目、日历条目、联系人/地址簿中的人名、联系人/地址簿中提到的街道或城市名称等。273.·任务流模型1086,其可用于基于任务流中下一个可能步骤来建议输入。274.·对话流模型1087,其可用于基于对话流中下一个可能步骤来建议输入。275.·服务能力模型1088,其可用于建议可能的服务以在模型中通过名称、类别、能力或任何其他属性来使用。例如,用户可以键入优选评论网站的部分名称,并且助理1002可以建议完整的命令,以查询该评论网站了解评论。276.在至少一个实施例中,一个或多个主动输入启发部件1094向用户呈现会话界面,例如,用户和助理通过以会话方式来回讲话而通信的界面。一个或多个主动输入启发部件1094可用于执行和/或实施各种类型的会话界面。277.在至少一个实施例中,一个或多个主动输入启发部件1094可用于执行和/或实施各种类型的会话界面,其中助理1002使用多层会话根据对话模型提示来自用户的信息。对话模型可以表示用于执行对话的过程,诸如启发执行服务所需的信息需要的一系列步骤。278.在至少一个实施例中,在用户正在键入、讲话或通过其他方式生成输入的同时,一个或多个主动输入启发部件1094实时向用户提供约束和引导。例如,主动启发可以引导用户来键入可以由助理1002的实施例识别和/或可以由助理1002的实施例提供的一项或多项服务来服务的文本输入。这相对于被动等候来自用户的无约束输入是有利的,因为它使得用户的工作能够集中于可能或有用的输入,和/或它使得助理1002的实施例能够在用户输入时实时应用其对输入的解释。279.至少部分地利用2006年9月8日提交的名称为“methodandapparatusforbuildinganintelligentautomatedassistant”的美国专利申请序列号11/518,292中描述的各种方法和装置实施本文描述的主动输入启发的功能、操作、动作和/或其他特征的至少一部分。280.根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合,来同时实施和/或发起一个或多个主动输入启发部件1094的多个实例或线程。281.根据不同的实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的最小阈值标准的事件来发起一个或多个主动输入启发部件1094的一个或多个不同线程或实例,所述一个或多个不同类型的最小阈值标准用于触发发起主动输入启发部件1094的至少一个实例。可以触发发起和/或实施一个或多个主动输入启发部件1094的一个或多个不同线程或实例的条件或事件的各种实例可包括但不限于如下一项或多项(或它们的组合):282.·开始用户会话。例如,在用户会话启动作为助理1002的实施例的应用时,该界面可以为用户提供机会以发起输入,例如,通过按下按钮以发起语音输入系统或点击文本字段以发起文本输入会话。283.·检测到用户输入。284.·在助理1002明确提示用户提供输入时,比如它请求对问题作出响应或提供后续步骤的菜单,以从其中做出选择时。285.·在助理1002正在帮助用户执行交易并收集用于该交易的数据例如填表时。286.在至少一个实施例中,一个或多个主动输入启发部件1094的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备通信来访问至少一部分数据库信息。可以由一个或多个主动输入启发部件1094访问的不同类型数据的实例可包括但不限于如下一项或多项(或它们的组合):287.·文本输入中可能使用的词语的数据库;288.·文本输入话语中可能使用的短语语法;289.·语音输入的可能解释的数据库;290.·先前来自用户或来自其他用户的输入的数据库;291.·来自可能是助理1002实施例的一部分的各种模型和数据源的任一种的数据,可包括但不限于如下一种或多种(或它们的组合):292.·域模型1056;293.·词汇1058;294.·语言模式识别器1060;295.·域实体数据库1072;296.·短期存储器1052;297.·长期个人存储器1054;298.·任务流模型1086;299.·对话流模型1087;300.·服务能力模型1088。301.根据不同实施例,一个或多个主动输入启发部件1094可以向例如以下一项或多项(或它们的组合)应用主动启发过程:302.·键入输入;303.·语音输入;304.·来自图形用户界面(gui)的输入,包括手势;305.·来自对话中提供的建议的输入;和306.·来自计算和/或感测的环境的事件。307.主动键入输入启发308.现在参考图11,示出了绘示根据一个实施例的用于主动键入输入启发的方法的流程图。309.该方法开始于110。助理1002例如通过输入设备1206接收111部分文本输入。部分文本输入可以包括,例如,到目前为止已经在文本输入字段中键入的字符。在任何时间,用户可以通过,例如按下回车键,指示键入的输入已完成112。如果未完成,建议发生器生成114候选建议116。这些建议可以是基于本文所述任何信息源或约束的句法、语义和/或其他种类的建议。如果选择了118该建议,变换117输入以包括选择的建议。310.在至少一个实施例中,建议可以包括当前输入的扩展。例如,对“其余”的建议可以是“餐厅”。311.在至少一个实施例中,该建议可以包括当前输入的部分的替换。例如,对“其余”的建议可以是“吃饭的地方”。312.在至少一个实施例中,该建议可以包括替换和解释当前输入的部分。例如,如果当前输入是“找到……类型的餐厅”,建议可以是“意大利”,在选择建议时,可以将整个输入改写成“找到意大利餐厅”。313.在至少一个实施例中,返回的所得输入被注释119,从而与文本输入一起保留关于在118中做出哪种选择的信息。例如,这使得字符串下方的语义概念或实体能够在其被返回时与该字符串相关联,提高了后续语言解释的准确性。314.现在参考图12至图21,示出了例示根据一个实施例的用于主动键入输入启发的一些过程的一些部分的屏幕截图。屏幕截图示出了在智能电话上实现的助理1002的实施例的实例,智能电话诸如是可购自appleinc.(cupertino,california)的iphone。通过触摸屏,包括屏幕上的键盘功能,向此类设备提供输入。本领域的技术人员将认识到,屏幕截图绘示了仅仅用于示例性的实施例,可以在其他设备上,并利用其他布局和布置来实施本发明的技术。315.在图12中,屏幕1201包括在字段1203中未提供输入时显示的一组顶级建议1202。这对应于应用于图11的没有输入的步骤114的图10的无输入步骤23。316.在图13中,屏幕1301示出了使用词汇向利用屏幕上键盘1304在字段1203中输入的部分用户输入1305提供建议的完成1303的实例。这些建议的完成1303可以是主动输入启发1094的功能的一部分。用户已经输入了部分用户输入1305,包括字符串“comm”。词汇部件1058提供了这一字符串到三个不同种类实例的映射,它们被列示为建议的完成1303:短语“社区和本地事件”是事件域的类别;“商会”是本地企业搜索域的类别,“犹太社区中心”是本地企业实例的名称。词汇部件1058可以提供数据查找和像这些的名称空间的管理。用户可以轻击继续按钮1306以指示他或她已经完成了输入;这使得助理1002以完成的文本串作为用户输入的单元继续进行下去。317.在图14中,屏幕1401示出了一个实例,其中为部分字符串“wh”1305建议的语义完成1303包括具有所键入参数的整个短语。可以使用本文所述输入约束的各种模型和源中的一个或多个模型和源来启用这些种类的建议。例如,在图14所示的一个实施例中,“whatishappeningincity(城市中正发生什么事)”是本地事件域的位置参数的主动启发;“whereisbusinessname(企业名称在哪里)”是本地企业搜索域的企业名称约束的主动启发;“whatisshowingatthevenuename(在地点名称处正展示什么)”是本地事件域的地点名称约束的主动启发;“whatisplayingatthemovietheater(电影院正在放映什么)”是本地事件域的电影院名称约束的主动启发。这些实例示出,建议的完成是由模型生成的而不是简单从先前输入的查询的数据库提取的。318.在图15中,屏幕1501示出了用户在字段1203中输入附加文本1305之后的相同实例的继续。更新建议的完成1303以匹配附加文本1305。在该实例中,使用来自域实体数据库1072的数据:名称以“f”开头的地点。需注意,这是比“f”开头的所有词语显著更小且语义更相关的一组建议。同样,通过应用模型生成建议,在这种情况下,是表示在地点处发生的本地事件的域模型,即具有名称的企业。这些建议主动启发在使用本地事件服务时会做出可能有意义的输入的输入。319.在图16中,屏幕1601示出了在用户已经选择建议的完成1303中的一者之后相同实例的继续。通过提示用户进一步指定期望的信息的类型,本文是通过呈现若干指定符1602(用户能够从其中选择),主动启发继续进行下去。在该实例中,这些指定符是由域、任务流和对话流模型生成的。域为本地事件,其包括在位置于日期发生的事件的类别,具有事件名称和特征执行者。在本实施例中,从指示应当向用户询问他们尚未输入的约束的对话流模型以及从指示这五个约束是助理可用的本地事件服务的参数的服务模型,生成向用户提供这五个选项的事实。甚至选择优选短语以用作指定符,诸如“按照类别”和“特征”,是从域词汇数据库生成的。320.在图17中,屏幕1701示出了在用户已经选择指定符1602中的一个指定符之后相同实例的继续。321.在图18中,屏幕1801示出了相同实例的继续,其中已经向字段1203添加了选择的指定符1602,并呈现了附加的指定符1602。用户能够选择指定符1602中的一个指定符和/或通过键盘1304提供附加的文本输入。322.在图19中,屏幕1901示出了相同实例的继续,其中已经向字段1203添加了所选择的指定符1602,并呈现了更多的指定符1602。在该实例中,先前输入的约束未经冗余主动启发。323.在图20中,屏幕2001示出了相同实例的继续,其中用户轻击了继续按钮1306。在框2002中示出用户的输入,消息在框2003中示出,向用户提供响应于用户输入进行查询的反馈。324.在图21中,屏幕2101示出了相同实例的继续,其中已经发现了结果。在框2102中示出消息。结果2103,包括允许用户查看更多细节的输入元素,保存了所识别的事件,购买门票,添加注释等。325.在一个屏幕2101中,以及其他显示的屏幕是可滚动的,允许用户向上滚动以查看屏幕2001或其他先前呈现的屏幕,并在需要时对查询做出改变。326.主动语音输入启发327.现在参考图22,示出了绘示根据一个实施例的用于语音或语音输入的主动输入启发的方法的流程图。328.该方法开始于221。助理1002接收121呈可听信号形式的语音或语音输入。语音到文本服务122或处理器生成可听信号的一组候选文本解释124。在一个实施例中,例如,利用可购自nuancecommunications,inc.(burlington,ma)的nuancerecognizer实现语音到文本服务122。329.在一个实施例中,助理1002采用统计语言模型来生成语音输入121的候选文本解释124。330.此外,在一个实施例中,调谐统计语言模型以查找图8中所示助理1002的各种模型中出现的词语、名称和短语。例如,在至少一个实施例中,统计语言模型是来自如下一些或全部的给定字词、名称和短语:域模型1056(例如,与餐厅和进餐事件相关的字词和短语)、任务流模型1086(例如,与规划事件相关的字词和短语)、对话流模型1087(例如,与收集餐厅预订的输入所需的约束相关的字词和短语)、域实体数据库1072(例如,餐厅名称)、词汇数据库1058(例如,菜系名称)、服务模型1088(例如,所提供服务的名称,诸如opentable)和/或与活动知识本体1050的任何节点相关联的任何词语、名称或短语。331.在一个实施例中,还调谐统计语言模型以从长期个人存储器1054查找字词、名称和短语。例如,统计语言模型可以是来自待做事项、列表项目、个人记事本、日历条目的的给定文本、联系人/地址簿中的人名、电子邮件地址、联系人/地址簿中提到的街道或城市名称等。332.排序部件分析候选解释124,并根据它们与智能自动化助理1002的语法和/或语义模型配合的程度对它们排序126。可以使用对用户输入的任何约束源。例如,在一个实施例中,助理1002可以根据解释在句法和/或语感、域模型、任务流模型和/或对话流模型等中语法解析程度如何来对语音到文本解释器的输出排序:它会评估文本解释124中词语的各种组合与活动知识本体1050的概念、关系、实体和属性及其关联模型配合得有多好。例如,如果语音到文本服务122生成两个候选解释“意大利菜午餐”和“意大利鞋午餐”,如果“意大利菜午餐”更好地匹配节点助理1002的活动知识本体1050(例如,词语“意大利”、“菜”和“午餐”全部匹配知识本体1050中的节点,它们全都由知识本体1050中的关系连接,而词语“鞋”不匹配知识本体1050或匹配不是外出就餐域网络一部分的节点),通过语义相关性126排序可以将其排列得更高。333.在各种实施例中,可以使用由助理1002为解释文本输入使用的算法或过程,包括图28所示的自然语言处理过程的任何实施例,来对语音到文本服务122生成的候选文本解释124排序和评分。334.在一个实施例中,如果排序部件126确定128来自解释124的排序最高语音解释排序高于指定阈值,可以自动选择130排序最高的解释。如果没有解释排序超过指定阈值,则向用户呈现132语音134的可能候选解释。用户然后可以在显示的选择之间选择136。335.在各种实施例中,可以通过任何输入模式实现所显示选择之间的用户选择136,包括例如结合图16所述多模式输入的任何模式。此类输入模式包括但不限于主动启发的键入输入2610、主动启发的语音输入2620、主动呈现的用于输入2640的gui等。在一个实施例中,用户能够通过例如轻击或讲话来在候选解释134之间选择。在讲话的情况下,新语音输入的可能解释受到所提供的小选择集合134的高度约束。例如,如果提供的是“您的意思是意大利菜还是意大利鞋?”,用户可以仅仅说“菜”,助理能够将此匹配到短语“意大利菜”,并不将其与输入的其他全局解释混淆。336.无论是自动选择130还是用户选择了136输入,都返回所得的输入138。在至少一个实施例中,返回的输入被注释138,使得与文本输入一起保留关于在步骤136中做出哪种选择的信息。例如,这使得字符串下方的语义概念或实体能够在字符串被返回时与该字符串相关联,提高了后续语言解释的准确性。例如,如果基于菜系=意大利菜的语义解释提供“意大利菜”作为候选解释134中的一者,那么可以与用户选择字符串“意大利菜”一起发送机器可读语义解释作为注释的文本输入138。337.在至少一个实施例中,基于作为语音到文本服务122的输出而接收的语音解释来生成候选文本解释124。338.在至少一个实施例中,通过按照其语义含义释义语音解释来生成候选文本解释124。在一些实施例中,同一语音解释可以有多个释义,提供不同的字义或同音异意替代。例如,如果语音到文本服务122指示“见面的地方”,可以将向用户呈现的候选解释释义为“见面的地方(本地企业)”和“吃饭的地方(餐厅)”。339.在至少一个实施例中,候选文本解释124包括提供校正子串。340.在至少一个实施例中,候选文本解释124包括利用本文描述的句法和语义分析校正候选解释的子串。341.在至少一个实施例中,在用户选择候选解释时,返回候选解释。342.在至少一个实施例中,为用户提供界面以在返回解释之前对其进行编辑。343.在至少一个实施例中,为用户提供界面以在返回输入之前继续做出更多语音输入。这使得能够递增地构建输入语句,在一次重复时得到句法和语义校正、建议和指导。344.在至少一个实施例中,为用户提供界面以直接从主动键入输入启发(上文结合图11所述)的方法的136前进到步骤111。这使得能够交错进行键入输入和讲话输入,在一个步骤得到句法和语义校正、建议和指导。345.在至少一个实施例中,为用户提供界面,以直接从主动键入输入启发的实施例的步骤111前进到主动语音输入启发的是实施例。这使得能够交错进行键入输入和讲话输入,在一个步骤得到句法和语义校正、建议和指导。346.基于gui的主动输入启发347.现在参考图23,示出了绘示根据一个实施例的用于基于gui的输入的主动输入启发的方法的流程图。348.该方法开始于140。助理1002在输出设备1207上呈现141图形用户界面(gui),其可以包括例如链接和按钮。用户与至少一个gui元素交互142。数据144被接收并转换146成统一格式。然后返回转换的数据。349.在至少一个实施例中,从活动知识本体的模型动态生成gui的一些元素,而不是写入计算机程序中。例如,助理1002能够提供一组约束,以指导餐厅预订服务作为屏幕上轻击的区域,每个区域表示约束和/或值的名称。例如,屏幕可能具有成排动态生成的gui布局,其具有用于约束菜系、位置和价格范围的区域。如果活动知识本体的模型改变,gui屏幕会自动变化而不会重新编程。350.主动对话建议输入启发351.图24是示出了根据一个实施例的用于在对话流层次上进行主动输入启发的方法的流程图。该方法开始于150。助理1002建议151可能的应答152。用户选择154建议的应答。将接收的输入转换156成统一格式。然后返回转换的数据。352.在至少一个实施例中,提供步骤151中提供的建议作为对话和/或任务流中的后续步骤。353.在至少一个实施例中,建议提供选项,以例如利用来自域和/或任务模型的参数细化查询。例如,可以提供选项以改变假设的请求位置或时间。354.在至少一个实施例中,建议提供选项,以在由语言解释过程或部件给出的歧义替代解释间进行选择。355.在至少一个实施例中,建议提供选项,以在由语言解释过程或部件给出的歧义替代解释间进行选择。356.在至少一个实施例中,建议提供选项,以在与对话流模型1087相关联的工作流中的后续步骤间进行选择。例如,对话流模型1087可以建议,在收集针对一个域(例如,餐厅进餐)的约束之后,助理1002应当建议其他相关的域(例如,附近的电影院)。357.对相关事件的主动监测358.在至少一个实施例中,可以将异步事件当做模拟方式中主动启发的输入的其他设施的输入处理。因此,可以提供此类事件作为助理1002的输入。一旦进行解释,就可以通过与任何其他输入类似的方式处理此类事件。359.例如,航班状态改变可以发起向用户发送提示通知。如果航班被指示晚点,则助理1002可以基于检测到的事件,通过呈现另选的航班,提出其他建议等,继续对话。360.此类事件可以是任何类型。例如,助理1002可能检测到用户刚刚到家,或者迷路(离开了指定路线)或者股票价格到达阈值,或者用户感兴趣的电视节目正在开始,或者感兴趣的音乐会正在该地区巡演。在这些情况的任一种中,助理1002能够以与如同用户自己已经发起查询基本相同的方式继续对话。在一个实施例中,事件甚至可以基于从其他设备提供的数据,例如,以告诉用户同事何时吃完午饭回来(同事的设备能够向用户的设备通知此类事件,此时,用户设备上安装的助理1002相应作出响应)。361.在一个实施例中,事件可以是来自日历、时钟、提醒程序或待做事项应用的通知或提示。例如,来自日历应用的关于晚餐日期的提示能够发起与助理1002进行关于就餐事件的对话。可以如同用户刚刚讲出或键入关于即将进行的晚餐事件的信息那样进行对话,该信息诸如是“旧金山的2人晚餐”。362.在一个实施例中,可能事件触发器162的上下文可以包括关于人、地点、时间和其他数据的信息。可以将这些数据用作助理1002的输入的部分,以用于处理的各个步骤中。363.在一个实施例中,可以使用来自事件触发器162的上下文的这些数据消除来自用户的语音或文本输入的歧义。例如,如果日历事件提示包括被邀请参加事件的人名,该信息能够帮助消除可能匹配具有相同或相似姓名的几个人的输入。364.现在参考图25,示出了绘示根据一个实施例的用于主动监测相关事件的方法的流程图。在该实例中,事件触发事件是输入的集合162。该方法开始于160。助理1002监测161此类事件。可以利用可从智能自动化助理1002的其他部件获得的模型、数据和信息针对语义相关性对检测到的事件进行过滤和排序164。例如,如果针对用户的短期或长期存储器记录指示用户在某一航班上和/或向其助理1002查询过该航班,则可以为报告航班状态变化的事件赋予更高相关性。这种排序和过滤然后可以仅呈现顶端事件供用户查看,用户然后可以选择选取一个或多个并对其做出动作。365.将事件数据转换166成统一的输入格式,并返回。366.在至少一个实施例中,助理1002可以提前提供与建议用户注意的事件相关联的服务。例如,如果航班状态的提示指示可能会错过航班,则助理1002可以向用户建议用于重新规划行程或预订酒店的任务流。367.一个或多个输入启发部件实例:368.以下实例意在帮助例示可以由一个或多个主动输入启发部件1094提供的各种功能、操作、动作和/或其他特征中的一些。369.实例:命令完成(用户可能向助理1002讲什么)370.用户正面对文本输入框,其具有一般性指示,以输入“您希望做什么?”根据上下文和用户输入,提供几种系统响应的任一种。下面示出了实例。371.案例:无输入[0372][0373]案例:第一个字词输入[0374][0375]案例:关键字词输入[0376][0377][0378]案例:提示进行讨论[0379][0380]案例:建议标准[0381][0382]案例:添加标准[0383][0384]案例:添加位置或其他约束[0385][0386][0387]案例:从约束、未知任务或域开始[0388][0389]实例:名称完成[0390]这里,用户已经键入了一些文本而未接受任何命令,或者他或她只是利用实体名称扩展了命令。系统可以根据上下文尝试完成名称。它还对域消除歧义。[0391]案例:无上下文字词[0392][0393]案例:具有上下文的名称[0394][0395][0396]实例:从集合中选择值[0397]这里,用户对系统请求作出响应,以为特定参数诸如位置、时间、菜系或流派输入值。用户可以从列表中选择或输入值。在其键入时,示出来自列表的匹配项作为选项。下面示出了实例。[0398]案例:值类选择[0399][0400]实例:重新使用以前的命令[0401]以前的查询也是要在自动完成界面中完成的选项。它们可以仅仅被匹配为字符串(在输入字段为空且没有已知约束时)或者可以在特定情况下建议它们是相关的。[0402]案例:完成以前的查询[0403][0404]实例:检索个人存储器项目[0405]助理1002可以在与用户相关联的个人存储器中记住特定事件和/或实体。可以基于此类记住的项目执行自动完成。下文给出实例。[0406]案例:完成个人存储器中的事件和实体[0407][0408]多模式主动输入启发[0409]在至少一个实施例中,一个或多个主动输入启发部件1094可以处理来自多个输入形态的输入。至少一个形态可以利用主动输入启发过程实现,该过程利用了特定种类的输入和用于从建议的选项做出选择的方法。如本文所述,它们可以是用于针对文本输入、语音输入、基于gui的输入、对话上下文中的输入和/或事件触发导致的输入的主动输入启发的过程的实施例。[0410]在至少一个实施例中,对于智能自动化助理1002的单个实例,可以支持键入输入、语音输入、gui输入、对话输入和/或事件输入中的一种或多种(或它们的组合)。[0411]现在参考图26,示出了绘示根据一个实施例的用于多模式主动输入启发的方法的流程图。该方法开始于100。能够以任意序列从输入设施的一个或多个或任意组合同时接收输入。因此,该方法包括主动启发键入输入2610、语音输入2620、基于gui的输入2640、对话上下文中的输入2650和/或起因于事件触发的输入2660。这些输入源的任一种或所有都统一成统一的输入格式2690并被返回。统一的输入格式2690使得智能自动化助理1002的其他部件能够独立于输入的特定形态而被设计和操作。[0412]为多种形态和等级提供主动指导使能够对超过隔离形态可用的那些输入进行约束和指导。例如,为了在语音、文本和对话步骤间做出选择而提供的建议种类是无关的,因此它们的组合相对于向各个形态或等级添加主动启发技术是一项显著改进。[0413]组合本文所述的多个约束源(句法/逻辑、词汇、实体数据库、域模型、任务模型、服务模型等)和可以主动应用这些约束的多个地方(语音、文本、gui、对话和异步事件)为人机交互提供了新的功能层次。[0414]一个或多个域模型部件1056[0415]一个或多个域模型1056部件包括域的概念、实体、关系、属性和实例的表示。例如,外出就餐域模型1622可能包括餐厅的概念,即具有名称和地址以及电话号码的企业,就餐事件的概念,具有同行人数以及与餐厅相关联的日期和时间。[0416]在至少一个实施例中,助理1002的一个或多个域模型部件1056可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0417]·一个或多个域模型部件1056可以由自动化助理1002用于几个过程,包括:启发输入100,解释自然语言200,向服务400派遣,以及生成输出600。[0418]·一个或多个域模型部件1056可以提供可能匹配域概念或实体的字词列表,诸如餐厅的名称,其可用于输入100的主动启发和自然语言处理200。[0419]·一个或多个域模型部件1056可以对过程中的候选词语分类,例如,以确定某词语是餐厅的名称。[0420]·一个或多个域模型部件1056可以示出用于解释自然语言的部分信息之间的关系,例如,菜系可以与企业实体相关联(例如,可以将“本地墨西哥菜”解释为“寻找风格=墨西哥的餐厅”,因为域模型1056中的信息,这种推断是可能的)。[0421]·一个或多个域模型部件1056可以组织服务编排1082中使用的关于服务的信息,例如,特定的web服务可以提供餐厅的评论。[0422]·一个或多个域模型部件1056可以例如通过提供描述概念、关系、属性和实例的规范方式,来提供用于生成自然语言释义和其他输出格式化的信息。[0423]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合,来同时实施和/或发起一个或多个域模型元件1056的多个实例或线程。例如,在至少一些实施例中,可以通过以下类型的系统、部件、系统、设备、过程、流程等中的一者或多者(或它们的组合)来执行、实施和/或发起一个或多个域模型部件1056的各个方面、特征和/或功能:[0424]·一个或多个域模型部件1056可以实现为表示概念、关系、属性和实例的数据结构。这些数据结构可以存储于存储器、文件或数据库中。[0425]·对一个或多个域模型部件1056的访问可以通过直接api、网络api、数据库查询接口等实现。[0426]·例如,可以通过编辑文件、数据库事务和/或通过使用域模型编辑工具来实现一个或多个域模型部件1056的创建和维护。[0427]·一个或多个域模型部件1056可以实现为活动知识本体1050的一部分或与其相关联,其将模型与用于服务器和用户的模型实例化进行组合。[0428]根据各种实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的最小阈值标准的事件来发起一个或多个域模型部件1056的一个或多个不同线程或实例,所述一个或多个不同类型的最小阈值标准用于触发发起一个或多个域模型部件1056的至少一个实例。例如,可以在需要域模型信息时,包括在输入启发、输入解释、任务和域识别、自然语言处理、服务编排和/或用于用户的格式化输出期间,触发一个或多个域模型部件1056的一个或多个不同线程或实例的触发发起和/或实施。[0429]在至少一个实施例中,一个或多个域模型部件1056的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备通信来访问至少一部分数据库信息。例如,来自一个或多个域模型部件1056的数据可以与其他模型建模部件相关联,其他模型建模部件包括词汇1058、语言模式识别器1060、对话流模型1087、任务流模型1086、服务能力模型1088、域实体数据库1072等。例如,域实体数据库1072中被分类为餐厅的企业可能已经通过外出就餐域模型部件中维护的类型标识符所知。[0430]一个或多个域模型部件实例:[0431]现在参考图27,示出了例示根据一个实施例的可以通过一个或多个域模型部件1056提供的各种类型功能、操作、动作和/或其他特征的实例的一组屏幕截图。[0432]在至少一个实施例中,一个或多个域模型部件1056是能够呈现屏幕103a和103b中示出的关于餐厅的信息的统一数据表示,这组合来自几个不同数据源和服务的数据,例如包括:名称、地址、企业类别、电话号码、要保存到长期个人存储器的标识符、用于通过电子邮件共享的标识符、来自多个源的评论、地图坐标、个人记事等。[0433]一个或多个语言解释器部件1070[0434]在至少一个实施例中,助理1002的一个或多个语言解释器部件1070可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0435]·分析用户输入并识别一组解析结果。[0436]ο用户输入可以包括来自用户及其设备上下文,能够对理解用户意图有贡献的任何信息,可以包括,例如,如下一种或多种(或它们的组合):字词序列、启发输入中涉及的手势或gui元素的身份、对话的当前上下文、当前设备的应用及其当前的数据对象,和/或获得的关于用户的任何其他个人动态数据,诸如位置、时间等。例如,在一个实施例中,用户输入的形式是从主动输入启发1094得到的统一自动化输入格式2690。[0437]ο解析结果是用户输入中的数据与模型、数据库和/或用户意图和/或上下文的其他表示中的概念、关系、属性、实例和/或其他节点和/或数据结构的关联。解析结果关联可以是从用户输入的字词、信号和其他元素到本文所述的一个或多个关联概念、关系、属性、实例、其他节点和/或数据结构的复杂映射。[0438]·分析用户输入并识别一组语法解析结果,它们是将用户输入中的数据与表示语音、从句和短语的语法部分的结构相关联的解析结果,语法部分包括多字词名称、语句结构和/或其他语法图结构。在结合图28所述的自然语言处理过程的元素212中描述了语法解析结果。[0439]·分析用户输入并识别一组语义解析结果,它们是将用户输入中的数据与表示含义和用户意图的概念、关系、属性、实体、数量、前提和/或其他表示的结构相关联的解析结果。在一个实施例中,含义和意图的这些表示由知识本体中的模型或数据库和/或节点的集合和/或元素和/或实例表示,如在结合图28所述的自然语言处理过程的元素220中所述。[0440]·在另选的语法或语义解析结果之间消除歧义,如在结合图28所述的自然语言处理过程的元素230中所述。[0441]·在诸如结合图11所述的自动完成过程中确定特定的键入输入是否在语法和/或语义上有意义。[0442]·在诸如结合图11所述的自动完成过程中帮助生成建议的完成114。[0443]·在诸如结合图22所述的语音输入过程中确定口头输入的解释是否在语法和/或语义上有意义。[0444]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合,同时实施和/或发起一个或多个语言解释器部件1070的多个实例或线程。[0445]根据不同的实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的最小阈值标准的事件来发起一个或多个语言解释器部件1070的一个或多个不同线程或实例,该一个或多个不同类型的最小阈值标准用于触发发起一个或多个语言解释器部件1070的至少一个实例。可以触发发起和/或实施一个或多个语言解释器部件1070的一个或多个不同线程或实例的条件或事件的各种实例可包括但不限于如下一项或多项(或它们的组合):[0446]·在启发输入的同时,包括但不限于[0447]ο建议键入输入的可能完成114(图11);[0448]ο对语音的解释排序126(图22);[0449]ο在提供歧义表达作为对话中的建议响应时152(图24);[0450]·在启发输入的结果可用时,包括在通过任何模式的主动多模式输入启发来启发输入100时。[0451]在至少一个实施例中,一个或多个语言解释器部件1070的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备通信来访问至少一部分此类数据库信息。可以由一个或多个语言解释器部件访问的不同类型数据的实例可包括但不限于如下一项或多项(或它们的组合):[0452]·域模型1056;[0453]·词汇1058;[0454]·域实体数据库1072;[0455]·短期存储器1052;[0456]·长期个人存储器1054;[0457]·任务流模型1086;[0458]·对话流模型1087;[0459]·服务能力模型1088。[0460]现在还参考图29,示出了例示根据一个实施例的自然语言处理的屏幕截图。用户已经(经由语音或文本)输入了由短语“这个周末谁在fillmore玩”构成的语言输入2902。在屏幕2901上向用户返回这个短语。一个或多个语言解释器部件1070处理输入2902并生成解析结果。解析结果将该输入与请求相关联,以示出针对即将到来的周末在名称匹配“fillmore”的任何事件地点安排的本地事件。在屏幕2901上将解析结果的释义示为2903。[0461]现在还参考图28,示出了绘示根据一个实施例的用于自然语言处理的方法的实例的流程图。[0462]该方法开始于200。接收语言输入202,诸如图29的实例中的字符串“这个周末谁在fillmore玩”。在一个实施例中,由当前上下文信息诸如当前用户位置和本地时间对输入进行增强。在字词/短语匹配210中,一个或多个语言解释器部件1070找到用户输入和概念之间的关联。在该实例中,在字符串“玩”和事件地点处的列表概念之间;字符串“这个周末”(连同用户的当前本地时间)和表示即将到来的周末的近似时间段实例化之间;以及字符串“fillmore”和地点名称之间,找到了关联。字词/短语匹配210可以使用来自例如语言模式识别器1060、词汇数据库1058、活动知识本体1050、短期个人存储器1052和长期个人存储器1054的数据。[0463]一个或多个语言解释器部件1070生成候选语法解析212,其包括选择的解析结果,但还可以包括其他解析结果。例如,其他解析结果可以包括其中“玩”与诸如游戏的其他域或诸如体育赛事的事件类别相关联的那些结果。[0464]短期和/或长期存储器1052、1054也可以在生成候选语法解析212时由语言解释器部件1070使用。因此,可以使用先前在同一会话中提供的输入和/或关于用户的已知信息改善性能,减小歧义并加强交互的会话性质。也可以使用来自活动知识本体1050、域模型1056和任务流模型1086的数据,以在确定有效候选语法解析212时实现有凭据的推理。[0465]在语义匹配220中,一个或多个语言解释器部件1070根据它们与诸如域模型和数据库的语义模型匹配程度来考虑可能的解析结果的组合。在这种情况下,解析包括如下关联:(1)“玩”(用户输入中的字词)作为“地点处的本地事件”(由活动知识本体1050中的节点群集表示的域模型1056的部分),以及(2)“fillmore”(输入中的另一个词语),作为与针对本地事件地点的域实体数据库1072中的实体名称的匹配,这是由域模型元素和活动知识本体节点(地点名称)表示的。[0466]语义匹配220可以使用来自例如活动知识本体1050、短期个人存储器1052和长期个人存储器1054的数据。例如,语义匹配220可以使用来自对话中对地点或本地事件(来自短期个人存储器1052)或个人喜欢的地点(来自长期个人存储器1054)的先前援引的数据。[0467]生成222一组候选或潜在的语义解析结果。[0468]在歧义消除步骤230中,一个或多个语言解释器部件1070对候选语义解析结果222的凭据强度进行加权。在该实例中,将“玩”解析为“地点处的本地事件”以及将“fillmore”匹配为地点名称的组合是比另选的组合更强的域模型匹配,其中,例如,“玩”与针对体育的域模型相关联,但没有针对“fillmore”的体育域中的关联。[0469]消除歧义230可以使用来自例如活动知识本体1050的结构的数据。在至少一个实施例中,活动知识本体中的节点之间的连接为在候选语义分析结果222之间消除歧义提供了有凭据的支持。例如,在一个实施例中,如果有三个活动知识本体节点在语义上匹配,并且全部连接于活动知识本体1050中,这指示比这些匹配节点不连接或通过活动知识本体1050中的更长连接路径连接高的语义解析证据强度。例如,在语义匹配220的一个实施例中,匹配地点处的本地事件和地点名称两者的解析被赋予增强的证据支持,因为用户意图的这些方面的组合表示是通过活动知识本体1050中的链路和/或关系连接的:在这种情况下,本地事件节点连接到地点节点,地点节点连接到地点名称节点,地点名称节点连接到地点名称数据库中的实体名称。[0470]在至少一个实施例中,活动知识本体中的节点之间的为在候选语义分析结果222之间消除歧义提供证据支持的连接是定向弧,它们形成推断栅格,其中匹配节点为它们通过定向弧连接到的节点提供证据。[0471]在232中,一个或多个语言解释器部件1070对顶端语义解析进行排序并选择232为用户意图290的表示。[0472]一个或多个域实体数据库1072[0473]在至少一个实施例中,一个或多个域实体数据库1072可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0474]·存储关于域实体的数据。域实体是可以在域模型中建模的世界或计算环境中的东西。实例可包括但不限于如下一项或多项(或它们的组合):[0475]ο任何种类的企业;[0476]ο电影、视频、歌曲和/或其他音乐产品,和/或任何其他指出的娱乐产品;[0477]ο任何种类的产品;[0478]ο事件;[0479]ο日历条目;[0480]ο城市、州/省、国家、邻域和/或其他地理、地缘政治和/或地球空间点或区域;[0481]ο指出的地方,诸如地标、机场等;[0482]·在这些数据库上提供数据库服务,包括但不限于简单和复杂的查询、事务、触发的事件等。[0483]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起一个或多个域实体数据库1072的多个实例或线程。例如,在至少一个实施例中,可以由驻留于一个或多个客户端1304和/或服务器1340上的数据库软件和/或硬件来执行、实施和/或发起一个或多个域实体数据库1072的各个方面、特征和/或功能。[0484]可以根据一个实施例结合本发明使用的域实体数据库1072的一个实例是例如存储其名称和位置的一个或多个企业的数据库。例如,可以使用该数据库查找用于匹配企业的输入请求中包含的字词和/或查找已知名称的企业位置。本领域的技术人员将认识到很多其他布置和实施是可能的。[0485]一个或多个词汇部件1058[0486]在至少一个实施例中,一个或多个词汇部件1058可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0487]·提供数据库,其将字词和字符串与域模型或任务模型的概念、属性、关系或实例相关联;[0488]·来自词汇部件的词汇可以由自动化助理1002用于几个过程,例如启发输入、解释自然语言以及生成输出。[0489]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合,同时实施和/或发起词汇部件1058的多个实例或线程。例如,在至少一些实施例中,可以将一个或多个词汇部件1058的各个方面、特征和/或功能实现为将字符串与概念、关系、属性和实例的名称相关联的数据结构。这些数据结构可以存储于存储器、文件或数据库中。对一个或多个词汇部件1058的访问可以通过直接api、网络api和/或数据库查询接口等实现。例如,可以通过直接编辑文件、数据库事务或通过使用域模型编辑工具来实现一个或多个词汇部件1058的创建和维护。可以将一个或多个词汇部件1058实现为活动知识本体1050的部分或与其相关联。本领域的技术人员将认识到很多其他布置和实施是可能的。[0490]根据不同的实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的最小阈值标准的事件来发起一个或多个词汇部件1058的一个或多个不同线程或实例,所述一个或多个不同类型的最小阈值标准用于触发发起一个或多个词汇部件1058的至少一个实例。在一个实施例中,无论何时需要词汇信息,包括例如在输入启发、输入解释和为用户格式化输出期间,都访问一个或多个词汇部件1058。本领域的技术人员将认识到,其他条件或事件可以触发发起和/或实施一个或多个词汇部件1058的一个或多个不同线程或实例。[0491]在至少一个实施例中,一个或多个词汇部件1058的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备通信来访问至少一部分数据库信息。在一个实施例中,一个或多个词汇部件1058可以从外部数据库,例如,从数据仓库或字典访问数据。[0492]一个或多个语言模式识别器部件1060[0493]在至少一个实施例中,一个或多个语言模式识别器部件1060可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,寻找语言或语音输入中表示语法、习语和/或其他输入令牌复合物的模式。这些模式对应于,例如,如下一种或多种(或它们的组合):字词、名称、短语、数据、参数、命令和/或语音动作的信号。[0494]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起一个或多个模式识别器部件1060的多个实例或线程。例如,在至少一些实施例中,可以由包含模式匹配语言中的表达的一个或多个文件、数据库和/或程序来执行、实施和/或发起一个或多个语言模式识别器部件1060的各个方面、特征和/或功能。在至少一个实施例中,一个或多个语言模式识别器部件1060被宣告地表示,而不是表示为程序代码;这使得它们能够由编辑者以及编程工具之外的其他工具来创建和维护。宣告表示的实例可包括但不限于如下一种或多种(或它们的组合):正常表达、模式匹配规则、自然语言语法、基于状态机和/或其他解析模型的解析器。[0495]本领域的技术人员将认识到,可以使用其他类型的系统、部件、系统、设备、过程、流程等(或它们的组合)实现一个或多个语言模式识别器部件1060。[0496]根据不同的实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的最小阈值标准的事件来发起一个或多个语言模式识别器部件1060的一个或多个不同线程或实例,所述一个或多个不同类型的最小阈值标准用于触发发起语言模式识别器部件1060的至少一个实例。可以触发发起和/或实施一个或多个语言模式识别器部件1060的一个或多个不同线程或实例的条件或事件的各种实例可包括但不限于如下一项或多项(或它们的组合):[0497]·在主动启发输入期间,其中语言模式识别器的结构可以约束并引导来自用户的输入;[0498]·在自然语言处理期间,其中语言模式识别器帮助将输入解释为语言;[0499]·在识别任务和对话期间,其中语言模式识别器可以帮助识别任务、对话和/或其中的步骤。[0500]在至少一个实施例中,一个或多个语言模式识别器部件1060的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问数据库信息的至少一部分。一个或多个语言模式识别器部件1060可以访问的不同类型数据的实例可包括但不限于,来自各种模型和数据源中的任一种的数据,该模型和数据源可以是助理1002的实施例的部分,其可包括但不限于如下一种或多种(或它们的组合):[0501]·域模型1056;[0502]·词汇1058;[0503]·域实体数据库1072;[0504]·短期存储器1052;[0505]·长期个人存储器1054;[0506]·任务流模型1086;[0507]·对话流模型1087;[0508]·服务能力模型1088。[0509]在一个实施例中,可以由活动知识本体1050协调从助理1002的实施例的其他部分访问数据。[0510]再次参考图14,示出了可以由一个或多个语言模式识别器部件1060提供的各种功能、操作、动作和/或其他特征中的一些的实例。图14示出了一个或多个语言模式识别器部件1060可以识别的语言模式。例如,习语“正在发生什么”(城市中)可以与事件规划的任务和本地事件的域相关联。[0511]一个或多个对话流处理器部件1080[0512]在至少一个实施例中,一个或多个对话流处理器部件1080可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0513]·给定来自语言解释200的用户意图290的表示,识别用户希望执行的任务和/或用户希望解决的问题。例如,任务可能是寻找餐厅。[0514]·对于给定问题或任务,给定用户意图290的表示,识别任务或问题的参数。例如,用户可能正在寻找用户家附近供应意大利菜的推荐餐厅。餐厅是推荐的、供应意大利菜、且在家附近这些约束是寻找餐厅的任务的参数。[0515]·给定任务解释和与用户的当前对话,诸如可以在个人短期存储器1052中表示的那些,选择适当的对话流模型并在流模型中确定对应于当前状态的步骤。[0516]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合,来同时实施和/或发起一个或多个对话流处理器部件1080的多个实例或线程。[0517]在至少一个实施例中,一个或多个对话流处理器1080的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问数据库信息的至少一部分。可以由一个或多个对话流处理器部件1080访问的不同类型数据的实例可包括但不限于如下一项或多项(或它们的组合):[0518]·任务流模型1086;[0519]·域模型1056;[0520]·对话流模型1087。[0521]现在参考图30和图31,示出了例示根据一个实施例的可以由一个或多个对话流处理器部件提供的各种类型功能、操作、动作和/或其他特征的实例的屏幕截图。[0522]如屏幕3001中所示,用户通过提供语音或文本输入3002“为我预订一桌晚餐”来请求晚餐预订。助理1002生成提示3003,该提示要求用户指定时间和同行人数。[0523]一旦提供了这些参数,就显示屏幕3101。助理1002输出用于指示正在呈现结果的对话框3102和要求用户点击时间的提示3103。还显示列表3104。[0524]在一个实施例中,如下实现此类对话。一个或多个对话流处理器部件1080被从语言解释器部件1070赋予用户意图的表示,并确定适当的响应是向用户询问执行任务流中下一步骤所需的信息。在这种情况下,域为餐厅,任务是进行预订,并且对话步骤是向用户询问完成任务流中的下一步骤所需的信息。这个对话步骤由屏幕3001的提示3003示范。[0525]现在还参考图32,示出了绘示根据一个实施例的操作一个或多个对话流处理器部件1080的方法的流程图。结合图30和图31所示的实例描述图32的流程图。[0526]该方法开始于300。接收用户意图290的表示。如结合图28所述,在一个实施例中,用户意图290的表示是语义解析的集合。对于图30和图31中所示的实例,域为餐厅,动词是与餐厅预订相关联的“预订”,时间参数是当天晚上。[0527]在310中,一个或多个对话流处理器部件1080确定用户意图的解释是否得到强有力的支持,以继续进行,和/或是否比另选的歧义解析得到更好支持。在当前实例中,解释受到强有力的支持,没有相互矛盾的歧义解析。另一方面,如果存在相互矛盾的歧义或足够大的不确定性,那么执行步骤322,以设置对话流步骤,使得执行阶段导致对话输出提示,以从用户获得更多信息。[0528]在312中,一个或多个对话流处理器部件1080利用其他信息确定语义解析的优选解释,以确定要执行的任务及其参数。例如,可以从域模型1056、任务流模型1086和/或对话流模型1087或它们的任意组合获得信息。在当前实例中,任务被识别为进行预订,这涉及既找到可以预订的地方,又执行事务以预订餐桌。任务参数是时间约束,连同在步骤312中推断的其他参数。[0529]在320中,咨询任务流模型以确定适当的下一步骤。例如,可以从域模型1056、任务流模型1086和/或对话流模型1087或它们的任意组合获得信息。在该实例中,确定在本任务流中下一步骤是启发缺失的参数,到达可用性餐厅搜索,获得图30中所示的提示3003,请求预订的同行人数和时间。[0530]如上所述,图31绘示了屏幕3101被示出包括在用户针对同行人数和预订时间的请求做出应答之后呈现的对话元素3102。在一个实施例中,如结合图33所述,作为通过自动化调用和应答过程的另一次重复的结果,呈现屏幕3101,这导致图32所示的另一次调用对话和流过程。在对话和流过程的这种实例化中,在接收用户偏好之后,一个或多个对话流处理器部件1080在步骤320中确定不同的任务流步骤:进行可用性搜索。在构造请求390时,包括足以供一个或多个对话流处理器部件1080和一个或多个服务编排部件1082向餐厅预订服务分配的任务参数。[0531]一个或多个对话流模型部件1087[0532]在至少一个实施例中,一个或多个对话流模型部件1087可以用于提供对话流模型,其表示在用户和智能自动化助理1002之间的特定种类会话中要采取的步骤。例如,执行事务的一般任务的对话流包括用于得到用于事务的必要数据以及在提交它之前确认事务参数的步骤。[0533]一个或多个任务流模型部件1086[0534]在至少一个实施例中,一个或多个任务流模型部件1086可以用于提供任务流模型,表示解决问题或解决需求要采取的步骤。例如,用于进行晚餐预订的任务流涉及找到期望的餐厅、检查可用性,并执行事务以向餐厅针对特定时间进行预订。[0535]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合,来同时实施和/或发起一个或多个任务流模型部件1086的多个实例或线程。例如,在至少一些实施例中,可以将一个或多个任务流模型部件1086的各个方面、特征和/或功能实现为程序、状态机或识别流程图中适当步骤的其他方式。[0536]在至少一些实施例中,一个或多个任务流模型部件1086可以使用称为一般性任务的任务建模框架。一般性任务是对任务中的步骤及其所需输入和生成的输出进行建模的抽象,而不是特定于域的。例如,用于事务的一般性任务可能包括用于收集该事务所需数据、执行该事务以及输出事务结果的步骤,所有步骤都不参考任何特定的事务域或服务来实施它。可能针对诸如购物的域来进行实例化,但其与购物域无关,并可能同样适用于预订、调度等域。[0537]至少部分地可以利用本文结合一般性任务建模框架公开的概念、特征、部件、过程和/或其他方面来实施与本文所述一个或多个任务流模型部件1086和/或一个或多个过程相关联的功能、操作、动作和/或其他特征的至少一部分。[0538]此外,至少部分地可以利用如本文所述与受约束选择任务相关的概念、特征、部件、过程和/或其他方面来实施与本文所述一个或多个任务流模型部件1086和/或一个或多个过程相关联的功能、操作、动作和/或其他特征的至少一部分。例如,可以利用受约束选择任务模型来实施一般性任务的一个实施例。[0539]在至少一个实施例中,一个或多个任务流模型部件1086的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问数据库信息的至少一部分。可以由一个或多个任务流模型部件1086访问的不同类型数据的实例可包括但不限于如下一项或多项(或它们的组合):[0540]·域模型1056;[0541]·词汇1058;[0542]·域实体数据库1072;[0543]·短期存储器1052;[0544]·长期个人存储器1054;[0545]·对话流模型1087;[0546]·服务能力模型1088。[0547]现在参考图34,示出了绘示根据一个实施例的用于受约束选择任务351的任务流实例的流程图。[0548]受约束选择是一种一般性任务,其中目标是基于一组约束从世界中的一组项目选择一些项目。例如,受约束选择任务351可以针对餐厅的域实例化。受约束选择任务351通过从用户352请求标准和约束而开始。例如,用户可能对亚洲菜感兴趣并希望在其办公室附近的地方吃饭。[0549]在步骤353中,助理1002呈现符合所述标准和约束的项目以供用户浏览。在该实例中,它可以是餐厅及其属性的列表,可用于在它们之间进行选择。[0550]在步骤354中,为用户赋予机会以细化标准和约束。例如,用户可能通过说出“在我办公室附近”来细化请求。该系统然后会在步骤353中呈现新的一组结果。[0551]现在还参考图35,示出了根据一个实施例的包括由受约束选择任务351呈现的项目列表3502的屏幕3501的实例。[0552]在步骤355中,用户能够在匹配项目之间做出选择。然后可以使若干后续任务359的任一种可用,诸如预订356、记忆357或共享358。在各种实施例中,后续任务359可能涉及与启用web的服务和/或与设备本地的功能交互(诸如设置日历预约、拨打电话、发送电子邮件或文本消息、设置闹钟等)。[0553]在图35的实例中,用户能够选择列表3502中的项目以看到更多细节并执行附加的动作。现在还参考图36,示出了在用户从列表3502选择项目之后屏幕3601的实例。显示了对应于与所选项目相关的后续任务359的附加信息和选项。[0554]在各种实施例中,可以在若干输入形态的任一种中向用户提供流步骤,输入形态包括但不限于明确对话提示和gui链接的任意组合。[0555]一个或多个服务部件1084[0556]一个或多个服务部件1084表示智能自动化助理1002代表用户可能调用的一组服务。可以在服务部件1084中提供能够被调用的任何服务。[0557]在至少一个实施例中,一个或多个服务部件1084可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0558]·通过api提供通常将由基于web的用户界面向服务提供的功能。例如,评论网站可以提供服务api,其在被程序调用时会自动返回给定实体的评论。api向智能自动化助理1002提供人本来会通过操作网站的用户界面获得的服务。[0559]·通过api提供通常将由用户界面向应用提供的功能。例如,日历应用可以提供服务api,其在被程序调用时会自动返回日历条目。api向智能自动化助理1002提供人本来会通过操作应用的用户界面获得的服务。在一个实施例中,助理1002能够发起并控制设备上可用的若干不同功能的任一种。例如,如果助理1002安装于智能电话、个人数字助理、平板电脑或其他设备上,助理1002能够执行诸如以下功能:发起应用、拨打电话、发送电子邮件和/或文本消息、添加日历事件、设置闹钟等。在一个实施例中,此类功能是使用一个或多个服务部件1084激活的。[0560]·提供当前未在用户界面中实施但可通过api为助理用于更大任务中的服务。例如,在一个实施例中,用于获取街道地址并返回机器可读地理坐标的api可以由助理1002用作服务部件1084,即使其在web或设备上没有直接用户界面。[0561]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起一个或多个服务部件1084的多个实例或线程。例如,在至少一些实施例中,可以由一个或多个以下类型的系统、部件、系统、设备、过程、流程等(或它们的组合)执行、实施和/或发起一个或多个服务部件1084的各个方面、特征和/或功能:[0562]·在本地或远程或通过任意组合实施由服务暴露的api;[0563]·在自动化助理1002或助理1002可用的数据库服务之内包括数据库。[0564]例如,为用户提供界面以浏览电影的网站可以由智能自动化助理1002的实施例用作网站所用数据库的副本。一个或多个服务部件1084然后会向数据提供内部api,如同通过网络api提供那样,尽管如此数据仍然在本地保持。[0565]作为另一个实例,智能自动化助理1002的帮助餐厅选择和就餐规划的一个或多个服务部件1084可以包括可以通过网络从第三方获得的如下一组服务的任一或全部服务:[0566]·一组餐厅列示服务,其列出匹配名称、位置或其他约束的餐厅;[0567]·一组餐厅评级服务,为指出的餐厅返回排序;[0568]·一组餐厅评论服务,为指出的餐厅返回书面评论;[0569]·在地图上定位餐厅的地理编码服务;[0570]·预订服务,能够对餐厅餐桌进行计划性预订。[0571]一个或多个服务编排部件1082[0572]智能自动化助理1002的一个或多个服务编排部件1082执行服务编排过程。[0573]在至少一个实施例中,一个或多个服务编排部件1082可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0574]·动态自动确定哪些服务可以满足用户请求和/或指定的域和任务;[0575]·按照同时和顺序排序的任意组合,动态自动调用多个服务;[0576]·动态自动转换任务参数和约束以符合服务api的输入要求;[0577]·动态自动监测并收集来自多个服务的结果;[0578]·动态自动将来自各个服务的服务结果数据合并到统一的结果模型中;[0579]·编排多个服务以符合请求的约束;[0580]·编排多个服务以利用辅助信息注释现有的结果集合;[0581]·在统一的与服务无关的表示中输出调用多个服务的结果,该表示统一了来自各项服务的结果(例如,作为调用若干返回餐厅列表的餐厅服务的结果,合并来自若干服务的关于至少一家餐厅的数据,消除冗余性)。[0582]例如,在一些情况下,可能有几种方式完成特定任务。例如,诸如“提醒我下午2点参加全镇会议”的用户输入指定了可以通过至少三种方式完成的动作:设置闹钟;创建日历事件;或调用待做事项管理器。在一个实施例中,一个或多个服务编排部件1082确定哪种方式最满足请求。[0583]一个或多个服务编排部件1082还可以确定调用若干服务的哪种组合最好,以便执行给定的总任务。例如,为了找到并预订晚餐餐桌,一个或多个服务编排部件1082将确定调用哪些服务,以便执行诸如查找评论、获得可用性以及进行预订的功能。确定使用哪些服务可以取决于若干不同因素的任一种。例如,在至少一个实施例中,可以在确定哪些服务适合调用时,使用关于可靠性、处理某些类型请求的服务能力、用户反馈等的信息作为因素。[0584]根据具体实施例,可以通过使用一个或多个处理器和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起一个或多个服务编排部件1082的多个实例或线程。[0585]在至少一个实施例中,一个或多个服务编排部件1082的给定实例可以使用明确的服务能力模型1088来表示外部服务的能力和其他属性,以及在实现一个或多个服务编排部件1082的特征时推理出这些能力和属性。这相对于手动编程一组服务具有优点,该组服务可以包括,例如,如下一项或多项(或它们的组合):[0586]·容易开发;[0587]·在执行上稳健且可靠;[0588]·能够动态添加和移除服务无需中断代码;[0589]·能够实施由属性和能力驱动的而不是对特定服务或api硬编码的一般分布式查询优化算法。[0590]在至少一个实施例中,一个或多个服务编排部件1082的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问数据库信息的至少一部分。可以由至少一部分服务编排部件1082访问的不同类型数据的实例可包括但不限于如下一项或多项(或它们的组合):[0591]·域模型的实例化;[0592]·自然语言输入的语法和语义解析;[0593]·任务模型的实例化(具有参数值);[0594]·对话流模型和任务流模型和/或它们中选择的步骤;[0595]·服务能力模型1088;[0596]·活动知识本体1050中可用的任何其他信息。[0597]现在参考图37,示出了根据一个实施例的用于执行服务编排过程的步骤的实例。[0598]在该特定实例中,假设单一用户对在某一餐厅吃晚饭的好地方感兴趣,并与智能自动化助理1002会话以帮助提供这项服务。[0599]考虑寻找如下餐厅的任务:该餐厅质量高,评论好,在特定位置附近,可以在特定时间预订,并提供特定种类的饭菜。该方法开始于400。给出这些域和任务参数作为输入390。[0600]在402处,确定给定的请求是否可能需要任何服务。在一些情况下,例如,如果助理1002能够自己执行期望任务的话,则可以不需要服务授权。例如,在一个实施例中,助理1002能够应答实际问题而无需调用服务授权。因此,如果请求不需要服务,那么在403中执行独立的流程步骤,并返回其结果490。例如,如果任务请求是要求获得关于自动化助理1002自身的信息,那么可以处理对话响应而无需调用任何外部服务。[0601]如果在步骤402中确定需要服务授权,则一个或多个服务编排部件1082继续进行到步骤404。在404中,一个或多个服务编排部件1082可以将任务要求与服务能力模块1088中的服务能力和属性的宣告描述进行匹配。可能支持实例化操作的至少一个服务提供商提供宣告性定性元数据详情,例如,如下一种或多种(或它们的组合):[0602]·带结果返回的数据字段;[0603]·服务提供商静态地知道要支持哪些类的参数;[0604]·在动态检查参数值之后,服务提供商能够支持的参数的策略功能;[0605]·定义服务性能如何的性能评级(例如,关系型数据库、web服务、三元商店、全文本索引或它们的某种组合);[0606]·属性质量评级,其静态地定义与结果对象一起返回的属性值的预期质量;[0607]·服务可能期望返回的结果的总体质量评级。[0608]例如,推理服务可以支持的参数的类,服务模型可以指出:服务1、2、3和4可以提供在特定位置(参数)附近的餐厅,服务2和3可以根据质量(另一个参数)对餐厅进行过滤或排序,服务3、4和5可以返回对餐厅的评论(返回的数据字段),服务6可以列出餐厅供应的饭菜类型(返回的数据字段),以及服务7可以检查餐厅在特定时间范围(参数)内的可用性。服务8到99提供对这一特定域和任务不需要的能力。[0609]利用这种宣告性定性元数据、任务、任务参数和其他可从助理的运行时环境获得的信息,一个或多个服务编排部件1082确定404要调用的服务提供商的优选集。该服务提供商的优选集可以支持一个或多个任务参数(返回满足一个或多个参数的结果),还考虑至少一个服务提供商的性能评级以及至少一个服务提供商的总体质量评级。[0610]步骤404的结果是为这一特定用户和请求调用的服务的动态生成的列表。[0611]在至少一个实施例中,一个或多个服务编排部件1082考虑服务的可靠性以及它们对特定信息请求做出应答的能力。[0612]在至少一个实施例中,一个或多个服务编排部件1082通过调用交叠或冗余服务来抵抗不可靠性。[0613]在至少一个实施例中,一个或多个服务编排部件1082考虑关于用户的个人信息(来自短期个人存储器部件)以选择服务。例如,用户可以相对于其他服务优选某些评级服务。[0614]在步骤450中,一个或多个服务编排部件1082动态并自动地代表用户调用多个服务。在至少一个实施例中,在对用户请求作出响应的同时动态调用这些服务。根据具体实施例,可以同时调用服务的多个实例或线程。在至少一个实施例中,这些是利用api通过网络,利用web服务api通过网络,或利用web服务api通过互联网或通过它们的任意组合来调用的。[0615]在至少一个实施例中,调用服务的速率是通过编程限制和/或管理的。[0616]现在还参考图38,示出了根据一个实施例的服务调用过程450的实例。例如,使用服务调用以获得附加信息或利用外部服务执行任务。在一个实施例中,适当的为服务的api变换请求参数。一旦从服务接收了结果,就将结果变换成结果表示,以在助理1002内向用户呈现。[0617]在至少一个实施例中,由服务调用过程450调用的服务可以是web服务、运行于设备上的应用、操作系统功能等。[0618]提供请求390的表示,包括例如任务参数等。对于可从服务能力模型1088获得的至少一项服务,服务调用过程450执行变换452、调用454和输出映射456步骤。[0619]在变换步骤452中,将来自请求表示390的当前任务参数变换成可以由至少一项服务使用的形式。可以作为api或数据库提供的服务的参数可以与在任务请求中使用且也来自至少一项其他服务的数据表示不同。因此,步骤452的目的是映射一个或多个对应格式中的至少一个任务参数和至少一个被调用的服务中的值。[0620]例如,诸如餐厅的企业的名称可以在处理此类企业的服务之间有所不同。因此,步骤452将涉及到将任何名称变换成最适合至少一项服务的形式。[0621]作为另一个实例,已知位置处于各种精确层次,以及在服务之间使用各种单元和约定。服务1可能需要邮政编码,服务2需要gps坐标,服务3需要邮政街道地址。[0622]服务是通过api及其收集的数据调用的454。在至少一个实施例中,对结果410进行高速缓存。在至少一个实施例中,丢弃在指定等级(例如,在服务级协议或sla中指定)的性能内不返回的服务。[0623]在输出映射步骤456中,将服务返回的数据映射回到统一的结果表示490中。这个步骤可以包括处理不同格式、单元等。[0624]在步骤412中,对来自多项服务的结果进行验证和合并。在一个实施例中,如果收集到验证的结果,然后在一个或多个结果之间成对调用基于每个域定义的同等策略功能,以确定哪些结果表示现实世界中的相同概念。在发现一对等同结果时,使用基于每个域定义的一组属性策略功能,将属性值合并成合并结果。属性策略功能可以使用来自服务能力模型、任务参数、域上下文和/或长期个人存储器1054的属性质量评级,以决定最优合并策略。[0625]例如,可以合并来自不同餐厅提供商的餐厅列表,并去除重复的内容。在至少一个实施例中,用于识别重复内容的标准可以包括模糊名称匹配、模糊位置匹配、针对多个域实体属性的模糊匹配,所述属性诸如是名称、位置、电话号码和/或网站和/或它们的任意组合。[0626]在步骤414中,对结果进行排序并修整以返回期望长度的结果列表。[0627]在至少一个实施例中,还应用请求放宽循环。如果,在步骤416中,一个或多个服务编排部件1082确定当前的结果列表不够多(例如,比期望数量的匹配项目更少),那么可以放宽420任务参数以允许有更多结果。例如,如果在目标位置n英里内找到的期望种类的餐厅数量太少,那么放宽操作会再次返回请求,在大于n英里外的区域中寻找,和/或放宽搜索的某些其他参数。[0628]在至少一个实施例中,在第二次中应用服务编排方法以利用对任务有用的辅助数据“注释”结果。[0629]在步骤418中,一个或多个服务编排部件1082确定是否需要注释。例如,如果任务需要在地图上绘制结果,可能需要这样,但基本服务不会返回地图绘制所需的地理坐标。[0630]在422中,再次咨询服务能力模型1088以找到可以返回期望的附加信息的服务。在一个实施例中,注释过程确定是否可以向合并的结果注释附加或更好的数据。注释过程通过为至少一个合并结果的至少一个属性授权基于每个域定义的属性策略功能来这样做。属性策略功能可以使用合并的属性值和属性质量评级,一个或多个其他服务提供商的属性质量评级,域上下文和/或用户配置文件来决定是否可以获得更好的数据。如果确定一个或多个服务提供商可以为合并的结果注释一个或多个属性,则调用成本函数以确定要注释的服务提供商的最优集。[0631]然后利用合并结果的列表调用450注释服务提供商最优集合中的至少一个服务提供商,以获得结果424。在这个过程期间跟踪至少一个服务提供商对至少一个合并结果做出的改变,然后利用与步骤412中使用的相同属性策略功能过程合并改变。将它们的结果合并426到现有结果集合中。[0632]对所得的数据排序428并统一到统一表示490中。[0633]应当理解,上述方法和系统相对于一个或多个服务编排部件1082的一个优点是:可以在各个
技术领域
:中,而不是在专门涉及智能自动化助理的那些领域中有利地应用和/或使用它们。可以应用服务编排过程的各方面和/或特征的此类其他
技术领域
:的实例包括,例如,如下一项或多项:[0634]·在网站和基于web的应用和服务上进行动态“混搭”;[0635]·分布式数据库查询优化;[0636]·面向动态服务的架构配置。[0637]一个或多个服务能力模型部件1088[0638]在至少一个实施例中,一个或多个服务能力模型部件1088可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0639]·提供关于服务能力的机器可读信息以执行某些类的计算;[0640]·提供关于服务能力的机器可读信息以应答某些类的查询;[0641]·提供关于各个服务提供哪些事务的类的机器可读信息;[0642]·提供关于各个服务暴露的api参数的机器可读信息;[0643]·提供关于各个服务提供的数据库上可用于数据库查询中的参数的机器可读信息。[0644]一个或多个输出处理器部件1090[0645]在至少一个实施例中,一个或多个输出处理器部件1090可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0646]·将表示成统一内部数据结构的输出数据格式化成在不同形态上适当呈现的形式和布局。例如,输出数据可以包括:智能自动化助理和用户之间的自然语言通信;关于域实体的数据,诸如餐厅、电影、产品等的属性;来自信息服务的特定于域的数据结果,诸如天气报告、航班状态检查、价格等;和/或使用户能够通过直接与输出呈现交互而作出响应的交互式链接和按钮。[0647]·为各种设施呈现输出数据,例如,其可以包括,如下任意组合:图形用户界面;文本消息;电子邮件消息;动画和/或语音输出。[0648]·基于请求针对不同的图形用户界面显示引擎动态呈现数据。例如,根据正在使用哪种web浏览器和/或设备使用不同的输出处理布局和格式。[0649]·动态地在不同语音中呈现输出数据。[0650]·基于用户偏好动态向指定的形态呈现。[0651]·利用定制外观和感觉的特定于用户的“皮肤”动态呈现输出。[0652]·向形态发送输出分组流,展示与助理1002交互的各个阶段期间的即刻状态、反馈或结果。[0653]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起一个或多个输出处理器部件1090的多个实例或线程。例如,在至少一些实施例中,可以通过一个或多个以下类型的系统、部件、系统、设备、过程、流程等(或它们的组合)来执行、实施和/或发起一个或多个输出处理器部件1090的各个方面、特征和/或功能:[0654]·智能自动化助理实施例的客户端或服务器内的软件模块;[0655]·可远程调用的服务;[0656]·使用模板和过程代码的混合。[0657]现在参考图39,示出了根据一个实施例的多阶段输出过程的实例的流程图。多阶段输出过程包括自动化助理1002处理步骤702和多阶段输出步骤704。[0658]在步骤710中,获得语音输入的讲话,并且语音到文本部件(诸如结合图22所述的部件)解释语音以产生一组候选语音解释712。在一个实施例中,例如,利用可购自nuancecommunications,inc.(burlington,ma)的nuancerecognizer实现语音到文本部件。可以在730中,例如,以释义的形式向用户展示候选语音解释712。例如,该界面可以展示“您说过吗?”的另选内容,列出同一语音声音样本的几种可能的另选文本解释。[0659]在至少一个实施例中,提供用户界面以使用户能够中断候选语音解释并在其中做出选择。[0660]在步骤714中,向语言解释器1070发送候选语音解释712,语言解释器可以针对至少一个候选语音解释712产生用户意图716的表示。在步骤732中,产生并向用户呈现用户意图716的这些解释的释义。(参见图22中过程120的相关步骤132。)[0661]在至少一个实施例中,用户界面使用户能够中断自然语言解释的释义732并在其中做出选择。[0662]在步骤718中,执行任务和对话分析。在步骤734中,利用意图释义算法向用户呈现任务和域解释。[0663]现在还参考图40,示出了绘示根据一个实施例的输出处理的实例的屏幕截图。屏幕4001包括步骤730生成的用户语音输入的回应4002。屏幕4001还包括步骤734生成的用户意图的释义4003。在一个实施例中,如图40的实例中所示,为诸如“事件”的关键词使用特殊格式/高亮显示,可以将其用于方便训练用户与智能自动化助理1002的交互。例如,通过从视觉上观察所显示文本的格式,用户可能容易识别并回译智能自动化助理识别的关键词,诸如“事件”、“下个星期三”、“旧金山”等。[0664]返回到图39,在向服务分派720请求并动态收集结果时,能够以实时过程736的形式显示即刻结果。例如,可以返回餐厅的列表,然后可以在来自评论服务的结果到达时,动态填充它们的评论。服务可以包括启用web的服务和/或访问存储于设备本地和/或来自任何其他源的信息的服务。[0665]生成响应722的统一表示并针对适当的输出形态对其进行格式化724。在完成最终输出格式之后,可以在738中提供不同种类的释义。在这个阶段中,可以分析整个结果集合并与初始请求对比。然后可以提供结果或问题答案的总结。[0666]还参考图41,示出了根据一个实施例的输出处理的另一个实例。屏幕4101示出了通过步骤732生成的文本解释的释义4102,通过步骤736生成的实时过程4103以及通过步骤738生成的释义总结4104。还包括了详细的结果4105。[0667]在一个实施例中,助理1002能够在多种模式中生成输出。现在参考图42,示出了绘示根据一个实施例的多模式输出处理的实例的流程图。[0668]该方法开始于600。输出处理器1090根据适当且适用的设备和形态获取响应490的统一表示并对响应进行格式化612。步骤612可以包括来自设备和形态模型610和/或域数据模型614的信息。[0669]一旦对响应490进行了格式化612,就可以通过任意组合使用若干不同输出机构中的任一种。图42所示的实例包括:[0670]·生成620文本消息输出,向文本消息信道发送630该文本消息输出;[0671]·生成622电子邮件输出,作为电子邮件消息发送632该电子邮件输出;[0672]·生成624gui输出,将其发送634到设备或web浏览器加以呈现;[0673]·生成626语音输出,向语音发生模块发送636该语音输出。[0674]本领域的技术人员将认识到,能够使用很多其他输出机构。[0675]在一个实施例中,对多模式输出处理600的模式定制多模式输出过程700生成的输出消息的内容。例如,如果输出形态为语音626,则用于释义用户输入730、文本解释732、任务和域解释734、进度736和/或结果总结738的语言可以或多或少冗长一些或使用听觉形式比书面形式更容易理解的语句。在一个实施例中,在多模式输出过程700的步骤中定制语言;在其他实施例中,多模式输出过程700产生中间结果,进一步通过多模式输出处理600将其细化成特定语言。[0676]一个或多个短期个人存储器部件1052[0677]在至少一个实施例中,一个或多个短期个人存储器部件1052可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0678]·记录助理的实施例和用户之间最近对话的历史,包括用户输入及其解释的历史;[0679]·保持用户在gui中最近选择的历史,诸如哪些项目被打开或探查、哪些电话号码被呼叫、哪些项目在地图上绘制过、哪些电影预告片被播放等;[0680]·在特定于用户的会话中,或在客户端会话状态中,诸如web浏览器cookies或客户端使用的ram中,在客户端、服务器上的数据库中存储对话和用户交互的历史;[0681]·存储最近用户请求的列表;[0682]·存储最近用户请求的结果序列;[0683]·存储ui事件的点击流历史,包括按钮按压、轻击、手势、语音激活的触发和/或任何其他用户输入;[0684]·存储可能与助理的交互相关的设备传感器数据(诸如位置、时间、位置取向、运动、光照水平、声音水平等)。[0685]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起一个或多个短期个人存储器部件1052的多个实例或线程。[0686]根据不同的实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的最小阈值标准的事件来发起短期个人存储器部件1052的一个或多个不同线程或实例,所述一个或多个不同类型的最小阈值标准用于触发发起短期个人存储器部件1052的至少一个实例。例如,在存在与助理1002的实施例的用户会话时,在至少一个输入形成或用户动作或系统响应时,可以调用一个或多个短期个人存储器部件1052。[0687]在至少一个实施例中,一个或多个短期个人存储器部件1052的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问数据库信息的至少一部分。例如,一个或多个短期个人存储器部件1052可以从一个或多个长期个人存储器部件1054访问数据(例如,以获得用户身份和个人偏好)和/或从本地设备获得关于时间和位置的数据,其可以包括在短期存储器条目中。[0688]现在参考图43a和图43b,示出了绘示根据一个实施例的使用一个或多个短期个人存储器部件1052以在改变位置的同时维持对话上下文的实例的屏幕截图。在该实例中,用户询问过本地天气,然后仅仅说道“在纽约”。屏幕4301示出初始响应,包括本地天气。在用户说道“在纽约”时,助理1002使用一个或多个短期个人存储器部件1052来访问对话上下文,由此确定当前域为天气预报。这使得助理1002能够解释新的话语“在纽约”,表示“这个星期二纽约的天气预报是什么?”。屏幕4302示出了适当的响应,包括纽约的天气预报。[0689]在图43a和图43b的实例中,短期存储器中存储的不仅是输入的字词“后天要下雨吗?”,而且还有系统将输入的语义解释为天气域,以及设置为后天的时间参数。[0690]一个或多个长期个人存储器部件1054[0691]在至少一个实施例中,一个或多个长期个人存储器部件1054可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0692]·持久存储关于用户的个人信息和数据,例如包括其偏好、身份、认证凭证、账户、地址等;[0693]·存储用户通过利用助理1002的实施例收集的信息,诸如书签、收藏夹、剪辑等的等价物;[0694]·持久存储保存的企业实体的列表,包括餐厅、酒店、商店、剧院和其他地点。在一个实施例中,一个或多个长期个人存储器部件1054保存的不仅仅是名称或url,还保存足以带来实体的完整列表的信息,包括电话号码、地图上的位置、照片等;[0695]·持久存储保存的电影、视频、音乐、电视节目和其他娱乐项目;[0696]·持久存储用户的个人日历、待做事项、提醒和闹钟、联系人数据库、社交网络列表等;[0697]·持久存储购物列表以及希望购买的产品和服务的列表、获取的优惠券和折扣代码等;[0698]·持久存储用于事务的历史和收据,包括预订、购买、活动门票等。[0699]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起一个或多个长期个人存储器部件1054的多个实例或线程。例如,在至少一些实施例中,可以利用客户端1304和/或服务器1340上(或与之相关联)和/或驻留于存储设备上的一个或多个数据库和/或文件来执行、实施和/或发起一个或多个长期个人存储器部件1054的各个方面、特征和/或功能。[0700]根据不同的实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的最小阈值标准的事件来发起一个或多个长期个人存储器部件1054的一个或多个不同线程或实例,所述一个或多个不同类型的最小阈值标准用于触发发起长期个人存储器部件1054的至少一个实例。可以触发发起和/或实施一个或多个长期个人存储器部件1054的一个或多个不同线程或实例的条件或事件的各种实例可包括但不限于如下一项或多项(或它们的组合):[0701]·作为用户与助理1002的实施例交互的副效果,可以采集到长期个人存储器条目。与助理进行的任何种类的交互都可以产生对长期个人存储器的添加,包括通过助理浏览、搜索、寻找、购物、调度、购买、预订、与他人通信。[0702]·长期个人存储器还可以因为用户签署账户或服务的序列而被累积,使得助理1002能够访问其他服务上的账户,使用客户端设备上的助理1002服务,访问诸如日历、待做事项列表、联系人列表等的其他个人信息数据库。[0703]在至少一个实施例中,一个或多个长期个人存储器部件1054的给定实例可以从一个或多个关联数据库访问和/或利用信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问数据库信息的至少一部分,远程存储器设备可以位于,例如客户端1304和/或服务器1340处。一个或多个长期个人存储器部件1054可以访问的不同类型数据的实例可包括但不限于来自其他个人信息数据库的数据,其他个人信息数据库诸如是由外部服务1360提供的联系人或朋友列表、日历、待做事项列表、其他列表管理器、个人账户和钱包管理器等。[0704]现在参考图44a到图44c,示出了绘示根据一个实施例的使用长期个人存储器部件1054的实例的屏幕截图。在该实例中,提供了一种特征(名为“我的东西”),其包括访问保存的通过与助理1002的实施例交互会话找到的实体,诸如餐厅、电影和企业。在图44a的屏幕4401中,用户找到了餐厅。用户轻击“保存到我的东西”4402,在一个或多个长期个人存储器部件1054中保存关于餐厅的信息。[0705]图44b的屏幕4403绘示了用户访问“我的东西”。在一个实施例中,用户可以在各种类别中选择导航到期望项目。[0706]图44c的屏幕4404示出了“我的餐厅”类别,包括先前在“我的东西”中存储的项目。[0707]自动化调用和应答过程[0708]现在参考图33,示出了绘示根据一个实施例的自动化调用和应答过程的流程图。可以结合智能自动化助理1002的一个或多个实施例实施图33的过程。应当理解,图1所示的智能自动化助理1002仅仅是可以实施的宽范围智能自动化助理系统实施例中的一个实例。智能自动化助理系统的其他实施例(未示出)可以包括比图示那些更少和/或不同的额外元素/特征,例如,图1中所示智能自动化助理1002的实例中。[0709]在至少一个实施例中,图33的自动化调用和应答过程可用于执行和/或实施各种类型的功能、操作、动作和/或其他特征,例如,如下一种或多种(或它们的组合):[0710]·图33的自动化调用和应答过程可以提供用户和智能自动化助理1002之间会话界面的界面控制流循环。自动化调用和应答过程的至少一次重复可以充当会话中的一层。会话界面是用户和助理1002通过以会话方式来回讲话而通信的界面。[0711]·图33的自动化调用和应答过程可以为智能自动化助理1002提供执行控制流。即,该过程控制输入的收集、输入的处理、输出的生成和向用户呈现输出。[0712]·图33的自动化调用和应答过程可以协调智能自动化助理1002的部件之间的通信。即,它可以引导一个部件的输出馈送到另一个的哪里,以及来自环境和环境上动作的总体输入可以在哪里发生。[0713]在至少一些实施例中,自动化调用和应答过程的部分也可以实施于其他设备和/或计算机网络的系统处。[0714]根据具体实施例,可以通过使用一个或多个处理器63和/或硬件和/或硬件和软件的其他组合来同时实施和/或发起自动化调用和应答过程的多个实例或线程。在至少一个实施例中,可以在一个或多个客户端1304处,在一个或多个服务器1340处和/或它们的组合处实施自动化调用和应答过程的一个或多个或所选择的部分。[0715]例如,在至少一些实施例中,可以由软件部件、网络服务、数据库等或它们的任意组合来执行、实施和/或发起自动化调用和应答过程的各个方面、特征和/或功能。[0716]根据不同的实施例,可以响应于检测到一个或多个条件或满足一个或多个不同类型的至少一个实例的标准(例如,最小阈值标准)的事件来发起自动化调用和应答过程的一个或多个不同线程或实例,所述一个或多个不同类型的至少一个实例的标准用于触发发起自动化调用和应答过程。可以触发发起和/或实施自动化调用和应答过程的一个或多个不同线程或实例的各种类型的条件或事件的实例可包括但不限于如下一项或多项(或它们的组合):[0717]·用户与智能自动化助理1002的实例的会话,例如但不限于如下一种或多种:[0718]ο启动移动设备应用,例如,实施智能自动化助理1002的实施例的移动设备应用;[0719]ο启动计算机应用,例如,实施智能自动化助理1002的实施例的应用;[0720]ο移动设备上按下的专用按钮,诸如“语音输入按钮”;[0721]ο附接于计算机或移动设备的外围设备上的按钮,外围设备诸如是耳麦、手机或基站、gps导航系统、消费电器、遥控器或具有可能与调用助理相关联的按钮的任何其他设备;[0722]ο从web浏览器向实施智能自动化助理1002的网站开始的web会话;[0723]ο从现有web浏览器会话内向实施智能自动化助理1002的网站发起的交互,其中,例如请求智能自动化助理1002服务;[0724]ο向形态服务器1426发送的电子邮件消息,该形态服务器1426居间协调与智能自动化助理1002的实施例的通信;[0725]ο向形态服务器1430发送的文本消息,该形态服务器1430居间协调与智能自动化助理1002的实施例的通信;[0726]ο向形态服务器1434发送的电话呼叫,该形态服务器1434居间协调与智能自动化助理1002的实施例的通信;[0727]ο向提供智能自动化助理1002的实施例的应用发送诸如提示或通知的事件。[0728]·在打开和/或启动提供智能自动化助理1002的设备时。[0729]根据不同的实施例,可以手动、自动、静态、动态、同时和/或以它们的组合发起和/或实施自动化调用和应答过程的一个或多个不同线程或实例。此外,可以在一种或多种不同的时间间隔(例如,在特定时间段期间、以规则周期性间隔、以不规则周期性间隔、根据需求等)发起自动化调用和应答过程的不同实例和/或实施例。[0730]在至少一个实施例中,在执行特定任务和/或操作时,自动化调用和应答过程的给定实例可以利用和/或生成各种不同类型的数据和/或其他类型的信息。例如,这可以包括输入数据/信息和/或输出数据/信息。例如,在至少一个实施例中,自动化调用和应答过程的至少一个实例可以访问、处理和/或通过其他方式利用来自一个或多个不同类型源例如一个或多个数据库的信息。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问数据库信息的至少一部分。此外,自动化调用和应答过程的至少一个实例可以生成一种或多种不同类型的输出数据/信息,例如,可以将其存储于本地存储器和/或远程存储器设备中。[0731]在至少一个实施例中,可以利用一种或多种不同类型的初始化参数来执行自动化调用和应答过程的给定实例的初始配置。在至少一个实施例中,可以经由与一个或多个本地和/或远程存储器设备的通信来访问初始化参数的至少一部分。在至少一个实施例中,向自动化调用和应答过程的实例提供的初始化参数的至少一部分可以对应于输入数据/信息和/或可以从其导出。[0732]在图33的具体实例中,假设单个用户正在通过网络从具有语音输入能力的客户端应用访问智能自动化助理1002的实例。用户想找到在某一餐厅吃晚饭的好地方,并与智能自动化助理1002参与会话以帮助提供该服务。[0733]在步骤100中,提示用户输入请求。客户端的用户界面提供了几种输入模式,如结合图26所述。这些模式可以包括,例如:[0734]·用于键入输入的界面,其可以调用主动键入输入启发过程,如图11中所示;[0735]·用于语音输入的界面,其可以调用主动语音输入启发过程,如图22中所示。[0736]·用于从菜单选择输入的界面,其可以调用基于活动gui的输入启发,如图23中所示。[0737]本领域的技术人员将认识到,可以提供其他输入模式。[0738]在一个实施例中,步骤100可以包括呈现从与助理1002的先前会话剩余的选项,例如使用结合图24所述的主动对话建议输入启发过程中描述的技术。[0739]例如,通过步骤100中主动输入启发的方法中的一种方法,用户可以向助理1002说出“我在这附近哪里能够找到一些好的意大利餐?”例如,用户可能是向语音输入部件讲这句话的。主动输入启发部件1094的实施例调用语音到文本服务,请求用户确认,并然后将确认的用户输入表示为统一的注释输入格式2690。[0740]然后在步骤200中调用语言解释器部件1070的实施例,如结合图29所述。语言解释器部件1070分析文本输入并生成用户意图290的可能解释的列表。在一种解析中,字词“意大利餐”与意大利风格餐厅相关联;“好”与推荐餐厅属性相关联;并且“这附近”与描述距全球传感器读数的距离的位置参数相关联(例如,由移动设备上的gps给出的用户位置)。[0741]在步骤300中,将用户意图290的该表示传递到对话流处理器1080,其实施对话和流分析过程的实施例,如结合图32所述。对话流处理器1080确定哪种意图解释最可能,将这一解释映射到域模型的实例和任务模型的参数,并确定对话流中的下一流步骤。在当前实例中,利用受约束选择任务对餐厅域模型进行实例化,以通过约束找到餐厅(菜系风格、推荐水平和邻近性约束)。对话流模型指示下一步骤是得到满足这些约束的餐厅的一些实例并向用户呈现它们。[0742]在步骤400中,通过服务编排部件1082调用流和服务编排过程400的实施例。它代表用户找到餐厅的请求来调用一组服务1084。在一个实施例中,这些服务1084向公共结果贡献一些数据。合并它们的数据并以统一且与服务无关的形式呈现餐厅的所得列表。[0743]在步骤500中,输出处理器1092生成结果的对话总结,诸如“我在这附近找到一些推荐的意大利餐厅。”输出处理器1092将这种总结与输出结果数据组合,并然后向在步骤600中对用户的特定移动设备的输出进行格式化的模块发送该组合。[0744]在步骤700中,向移动设备发送这种特定于设备的输出分组,并且设备上的客户端软件在移动设备的屏幕(或其他输出设备)上呈现它。[0745]用户浏览这一呈现,并决定探索不同的选项。如果用户完成790,该方法结束。如果用户未完成490,通过返回到步骤100发起循环的另一次重复。[0746]例如,可以向用户的查询“墨西哥菜怎么样?”应用自动调用和响应过程。可以在步骤100中启发此类输入。在步骤200中,将输入解释为墨西哥风格的餐厅,并与其他状态(保存在短期个人存储器1052中)组合,以支持与上次相同意图的解释,在餐厅风格参数中有一个变化。在步骤300中,这种更新的意图产生请求的细化,在步骤400中将其赋予一个或多个服务编排部件1082。[0747]在步骤400中,将更新的请求分派到多个服务1084,获得新的一组餐厅,在500中在对话中对它们进行总结,在600中针对设备进行格式化,并在步骤700中通过网络发送以在用户的移动设备上显示新信息。[0748]在这种情况下,用户找到他或她喜欢的餐厅,在地图上展示它,并向朋友发送路线指南。[0749]本领域的技术人员将认识到,自动化调用和应答过程(未示出)的不同实施例可以包括除图33的具体实施例中所示那些之外附加的特征和/或操作,和/或可以省去图33的具体实施例中所示的自动化调用和应答过程的特征和/或操作中的至少一部分特征和/或操作。[0750]受约束的选择[0751]在一个实施例中,智能自动化助理1002在其与用户的交互中使用受约束选择,从而更有效地识别和呈现用户可能感兴趣的项目。[0752]受约束的选择是一种一般性任务。一般性任务是表征一类任务间共有的域对象、输入、输出和控制流种类的抽象。受约束选择任务是基于选择约束(诸如期望的菜系或位置)通过从选择的域对象(诸如餐厅)集合选择项目来执行的。在一个实施例中,助理1002帮助用户探索可能的选择的空间、启发用户的约束和偏好、呈现选择,并提供动作以执行那些选择诸如预订、购买、记住或共享它们。在用户选择要执行动作的一个或多个项目时,完成任务。[0753]在很多上下文中,受约束选择是有用的:例如,挑选要观看的电影、要吃晚饭的餐厅、晚上要住的酒店、要买书的地方等。通常,在知道类别并需要选择具有某种期望属性的类别的实例时,受约束选择是有用的。[0754]受约束选择的一种常规方式是目录服务。用户选取类别,并且系统提供选择的列表。在本地目录中,可以将目录约束到位置,诸如城市。例如,在“黄页”服务中,用户选择针对城市的册子,然后查找类别,并且该册子示出了针对该类别的一个或多个项目。目录服务的主要问题是可能相关选择的数量很大(例如,给定城市中的餐厅)。[0755]另一种常规方式是数据库应用,其提供了一种方式,以通过启发来自用户的查询、检索匹配项目,并通过高亮显示突出特征的某种方式呈现项目来生成选择集。用户浏览结果集合的行和列,可能对结果排序或改变查询,直到找到某些适当的候选者。数据库服务的问题是可能需要用户将其人为需求操作化为形式查询并使用排序、过滤和浏览的抽象机器来探索所得的数据。对于大部分人而言这些是难以完成的,即使具有图形用户界面也是如此。[0756]第三种常规方式是开放式搜索,诸如“本地搜索”。搜索容易实现,但搜索服务有几个问题,使得人们难以完成受约束选择的任务。具体而言:[0757]·像目录搜索那样,用户可能不仅仅输入类别并查看一个或多个可能的选择,而且必须缩小列表。[0758]·如果用户能够通过约束缩小选择范围,可以使用什么约束就不是显然的(例如,我可以搜索步行距离之内或营业到很晚的地方吗?)。[0759]·不清楚如何表明约束(例如,其称为菜系还是餐厅类型,并且可能的值是什么?)。[0760]·多种偏好冲突;通常对于给定状况没有客观上“最好的”答案(例如,我希望找到附近廉价供应美食,服务非常好且营业到午夜的地方)。[0761]·偏好是相对的,并且它们取决于有什么可用。例如,如果用户可以在评级很高的餐厅找到餐桌,即使很贵,他或她也可能选择它。通常,用户仍然会优选较不昂贵的选择。[0762]在各种实施例中,本发明的助理1002有助于简化受约束选择的任务。在各种实施例中,助理1002采用数据库和搜索服务,以及其他功能,以减少用户方面表述他或她正在寻找什么,考虑什么可用以及决定满意方案的工作量。[0763]在各种实施例中,助理1002有助于通过若干不同方式中的任一种方式来使受约束选择对于人而言更简单。[0764]例如,在一个实施例中,助理1002可以将属性操作化为约束。用户指出他或她在期望结果的属性方面希望什么。助理1002将这种输入操作化为正式约束。例如,不说“找到距帕洛阿尔托市中心小于2英里,菜系包括意大利菜的一家或多家餐厅”,用户可以仅仅说“帕洛阿尔托的意大利餐厅”。助理1002还可以对用户请求的不是数据库参数的品质进行操作化。例如,如果用户请求浪漫的餐厅,系统可以将此操作化为文本搜索或标签匹配约束。通过这种方式,助理1002帮助克服了用户本来在受约束选择方面遇到的一些问题。与描述将区分适当和不适当解决方案的条件相比,用户更容易地想象和描述满意的解决方案。[0765]在一个实施例中,助理1002可以建议有用的选择标准,并且用户仅需要说此刻哪个标准重要。例如,助理1002可以询问“这些中哪个重要:价格(越便宜越好)、位置(越近越好)、评级(评级越高越好)?”助理1002还可以建议可能需要特定值的标准;例如“您可以说出您喜欢哪种菜系或您喜欢哪种食物类。”[0766]在一个实施例中,助理1002可以帮助用户在若干竞争性标准(例如价格、质量、可用性和便利性)方面不同的选择之间做出决策。[0767]通过提供此类指导,助理1002可以帮助用户通过几种方式中的任一种方式做出多参数决策:[0768]·一种方式是减少空间的维度,将原始数据诸如来自多个源的评级组合成复合“推荐”分数。复合分数可以考虑关于数据源的域知识(例如,zagat评级可以比yelp更有品质预测性)。[0769]·另一种方式是集中于标准的子集,将“考虑以及如何组合它们的所有可能标准是什么?”的问题转换成在给定情况下选择最重要的标准(例如,“价格或邻近性哪个更重要?”)。[0770]·简化决策的另一种方式是采用假设默认值和优选顺序(例如所有东西平等,评级越高越近越便宜就越好)。该系统还可以记住用户先前的响应,先前的响应指示其默认值和偏好。[0771]·第四,该系统可以提供选择集中项目的突出属性,在初始请求中未提到它们。例如,用户可能询问过本地意大利菜。该系统可以提供餐厅的选择集,并且利用它们提供评论者使用的流行标签或来自指南手册的标签行的列表(例如,“约会的好地方”“意大利面很好”)。这可以让人挑选出特定项目并完成任务。研究表明,大部分人通过评估具体实例做出决策,而不是依据标准做决策并理性地接受处于顶端的一个。这还表明,人们是从具体的案例来了解特征的。例如,在汽车中做选择时,在买家看到一些车具有导航系统之前,买家可能不会关心导航系统(并且然后导航系统可能变成重要的标准)。助理1002可以呈现所列项目的突出属性,其帮助人挑选优胜者或建议要优化的维度。[0772]概念数据模型[0773]在一个实施例中,助理1002通过简化概念数据模型提供具有受约束选择任务的辅助。概念数据模型是在助理1002的界面中向用户呈现的抽象。为了克服上述心理问题,在一个实施例中,助理1002提供一种模型,其允许用户描述在适当选择的几个容易识别和回忆的属性方面而不是约束表达方面他们想要什么。通过这种方式,可以在自然语言请求中容易地编写属性(例如,形容词修饰关键词标记)并可以在提示中识别属性(“您还可能喜欢推荐的餐厅……”)。在一个实施例中,使用的数据模型允许助理1002确定感兴趣的域(例如,餐厅相对于酒店)以及可以被实例化成带有特定于域的属性的一般指导方式。[0774]在一个实施例中,助理1002使用的概念数据模型包括选择类。这是可以进行选择的事物空间的表示。例如,在寻找餐厅应用中,选择类是餐厅类。选择类可以是抽象的并具有子类,诸如“在目的地要做的事情”。在一个实施例中,概念数据模型假设在给定的问题解决情况中,用户对从单个选择类做选择感兴趣。这种假设简化了交互,并且还允许助理1002宣告其能力的边界(“我了解餐厅、酒店和电影院”相对于“我了解城市生活”)。[0775]给定选择类,在一个实施例中,为受约束选择任务向用户呈现的数据模型包括例如:项目;项目特征;选择标准和约束。[0776]项目是选择类的实例。[0777]项目特征为可以呈现和/或与至少一个项目相关联的属性、特性或计算的值。例如,餐厅的名称和电话号码是项目特征。特征可以是本征的(餐厅的名称或菜系)或关系型的(例如,距某人当前的感兴趣位置的距离)。它们可以是静态的(例如,餐厅名称)或动态的(评级)。它们可以是从其他数据计算的复合值(例如,“钱数”分数)。项目特征为由域建模器为用户做出的抽象;它们不需要对应于来自后端服务的下层数据。[0778]选择标准是可用于比较项目值或项目相关性的项目特征。即,它们是说出优选哪些项目的方式。选择标准被建模为项目自身的特征,无论它们是本征属性还是计算出的。例如,邻近性(定义为距感兴趣位置的距离)是一种选择标准。时空中的位置是一种属性,不是选择标准,并与感兴趣位置一起被用于计算距感兴趣位置的距离。[0779]选择标准可以具有固有的优选顺序。即,可以使用任何特定标准的值按照最好的第一顺序排列项目。例如,邻近性标准具有越近越好的固有偏好。另一方面,位置没有固有偏好值。这种限制允许系统做出默认假设,并且如果用户仅提到标准,则指导该选择。例如,用户界面可能提供“按照评级排序”并假设评级越高越好。[0780]一个或多个选择标准也是项目特征;它们是与在可能项目间进行选择相关的那些特征。然而,项目特征未必与偏好相关(例如,餐厅的名称和电话号码通常与在它们之间做选择无关)。[0781]在至少一个实施例中,约束是对选择标准期望值的限制。在形式上,可以将约束表示为一组所属关系(例如,菜系类型包括意大利菜)、模式匹配(例如,餐厅评论文本包括“浪漫”)、模糊不等式(例如,距离小于几英里)、定性阈值(例如,评级很高)或更复杂的函数(例如,性价比好)。为了使事情对于正常人而言足够简单,这种数据模型减少了对可以匹配为字词的符号值的至少一个或多个约束。可以从这种减少排除时间和距离。在一个实施例中,用于实施约束的运算符和阈值对于用户而言是隐藏的。例如,可以将对称为“菜系”的选择标准的约束表示为符号值诸如“意大利餐”或“中餐”。对评级的约束是“推荐”(二元选择)。对于时间和距离,在一个实施例中,助理1002使用专有的表示,处理一定范围的输入和约束值。例如,距离可以是“步行距离”,并且时间可以是“今晚”;在一个实施例中,助理1002使用特殊处理以将此类输入匹配到更精确的数据。[0782]在至少一个实施例中,一些约束可以是强制约束。这意味着没有这种数据就不能完成任务。例如,即使知道名称,也难以选取没有某种期望位置概念的餐厅。[0783]总之,将域建模为具有对用户来说重要的项目特征的选择类。一些特征用于对提供给用户的项目进行选择和排序—这些特征被称为选择标准。约束是对选择标准的符号限制,将项目集的范围缩窄到匹配的那些项目。[0784]多种标准通常会竞争,并且约束可能会部分匹配。该数据模型将选择问题从优化(找到最佳方案)简化成匹配问题(找到在一组指定标准上表现好并匹配一组符号约束的项目)。在下一节中描述用于选择标准和约束以及确定排序的算法。[0785]用于受约束选择的方法论[0786]在一个实施例中,助理1002通过获取标准的有序列表作为输入并生成具有突出特征的一组候选项目来执行受约束选择,至少一个标准上具有暗示或明示的约束。从计算上讲,可以将选择任务表征为嵌套搜索:首先,识别选择类,接着识别重要的选择标准,然后指定约束(可接受方案的边界),并按照最佳配合的顺序在实例中搜索,以找到可接受项目。[0787]现在参考图45,示出了作为嵌套搜索的用于受约束选择任务的抽象模型4500的实例。在一个实例中,助理1002识别4505所有本地搜索类型4501中的选择呼叫。识别的类为餐厅。在该组的所有餐厅4502中,助理1002选择4506标准。在该实例中,标准被识别为距离。在帕洛阿尔托的该组餐厅4503之内,助理1002指定4507用于搜索的约束。在该实例中,识别的约束是“意大利菜系”。在帕洛阿尔托的该组意大利餐厅4504之内,助理4508选择项目用于向用户呈现。[0788]在一个实施例中,此类嵌套搜索是助理1002一旦具有相关输入数据时所做的事情,而不是用于启发数据和呈现结果的流程。在一个实施例中,通过助理1002和用户之间的对话支配此类控制流,该对话通过其他过程,诸如对话流模型和任务流模型操作。受约束选择提供了一种框架,用于在这个抽象层次上构建对话和任务流模型(即,无论域是什么,都适于受约束选择任务)。[0789]现在参考图46,示出了对话4600的实例,以帮助指导用户通过搜索过程,从而能够获得相关的输入数据。[0790]在实例对话4600中,第一步是用户指出他们正在查找的事物种类,即选择类。例如,用户可以通过说出“在帕洛阿尔托吃饭”来这样做。这允许助理1002推断4601任务(例如,受约束选择任务4602)和域。[0791]一旦助理1002理解了任务和域绑定(选择类=餐厅),下一步就是例如通过请求4603标准和/或约束来理解哪个选择标准对于这位用户而言是重要的。在以上实例中,“在帕洛阿尔托”指示感兴趣的位置。在餐厅上下文中,该系统可以将位置解释为邻近性约束(从技术上讲,邻近性标准上的约束)。助理1002解释4604需要什么,接收输入。如果有足够的信息将选择集约束到合理大小,那么助理1002释义输入并呈现4605按照某种有用顺序排序、符合邻近性约束的一家或多家餐厅。用户然后可以从这一列表选择4607或细化4606标准和约束。助理1002推理已经指出的约束,并使用特定于域的知识来建议其他可能有帮助的标准,还请求这些标准上的约束。例如,助理1002可以推理,在推荐酒店步行距离之内的餐厅时,要请求的有用标准会是菜系和餐桌可用性。[0792]在用户选择4607选择类的实例时,受约束选择任务完成。在一个实施例中,助理1002启用附加的后续任务4609。因此,助理1002能够提供指示选择的服务,同时提供某个其他值。实例4608预订餐厅、在日历上设置提醒,和/或通过发送邀请与其他人共享选择。例如,预订餐厅一定会指示它被选择了;其他选项可以是将餐厅放在日历上或在邀请中向朋友发送路线指南。[0793]现在参考图47,示出了绘示根据一个实施例的受约束选择的方法的流程图。在一个实施例中,助理1002以机会和混合主动方式操作,许可用户通过在输入中一次指出任务、域、标准和约束的一个或多个而跳到内部循环。[0794]该方法开始于4701。根据本文描述的模式中的任何模式,接收4702来自用户的输入。基于输入,如果任务未知,助理1002请求4705澄清来自用户的输入。[0795]在步骤4717中,助理1002确定用户是否提供了附加的输入。如果是,则助理1002返回到步骤4702。否则方法结束4799。[0796]如果在步骤4703中任务已知,助理1002确定4704任务是否是受约束选择。如果不是,助理1002继续4706进行到指定任务流。[0797]如果在步骤4704中任务是受约束选择,助理1002确定4707是否能够确定选择类。如果不能,助理1002提供4708已知选择类的选择,并返回到步骤4717。[0798]如果在步骤4707中可以确定选择类,助理1002确定4709是否能够确定所有需要的约束。如果不能,助理1002提示4710所需的信息,并返回到步骤4717。[0799]如果在步骤4709中可以确定所有需要的常数,助理1002确定4711给定约束的情况下是否能够找到任何结果项目。如果没有项目符合约束,助理1002提供4712放宽约束的方式。例如,助理1002可以利用过滤/排序算法将约束从最低放宽到最高优先级。在一个实施例中,如果有符合某些约束的项目,那么助理1002可以释义状况(例如,输出“我不能在圣卡洛斯找到星期天送餐的推荐希腊餐厅。然而,我在圣卡洛斯找到3个希腊餐厅和7个推荐餐厅。”)在一个实施例中,如果没有项目匹配任何约束,那么助理1002可以释义这种状况并提示不同的约束(例如,输出“对不起,我不能在德克萨斯州anytown找到任何餐厅。您可以选择不同的位置。”)助理1002返回到步骤4717。[0800]如果在步骤4711中能够找到结果项目,助理1002提供4713项目的列表。在一个实施例中,助理1002释义当前指定的标准和约束(例如,输出“以下是在圣何塞推荐的一些意大利餐厅。”(推荐=是,菜系=意大利,邻近性=<在圣何塞>))。在一个实施例中,助理1002呈现符合已知约束的项目的排序、标页数的列表。如果项目仅示出约束中的一些约束,可以将此类条件示为项目显示的一部分。在一个实施例中,助理1002为用户提供选择项目的方式,例如在该项目上发起另一个任务,诸如预订、记住、调度或共享。在一个实施例中,在任何给定的项目上,助理1002呈现突出的项目特征,用于挑选选择类的实例。在一个实施例中,助理1002示出项目如何符合约束;例如,zagat评级5符合推荐=是的约束,并且“1英里之外”符合“在地址的步行距离之内”的约束。在一个实施例中,助理1002允许用户对项目钻取更多细节,这导致显示更多项目特征。[0801]助理1002确定4714用户是否选择了项目。如果用户选择了项目,该任务完成。如果有的话,执行4715任何后续任务,并且该方法结束4799。[0802]如果在步骤4714中,用户不选择项目,助理1002为用户提供4716选择其他标准和约束的方式并返回到步骤4717。例如,给定当前指定的标准和约束,助理1002可以提供最可能将选择集合约束到期望大小的标准。如果用户选择了约束值,在重复步骤4703到4713时,则将该约束值添加到先前确定的约束。[0803]由于一个或多个标准可以具有固有的偏好值,因此选择标准可以向请求添加信息。例如,允许用户指示正面评论有价值允许助理1002按照这个标准排序。可以在重复步骤4703到4713时考虑此类信息。[0804]在一个实施例中,助理1002允许用户提高已经指定的标准的重要性,使得其在优先顺序上可以更高。例如,如果用户需要在其位置一个街区之内的快速到达、便宜且高度推荐的餐厅,助理1002可以请求用户选择这些标准中的哪个更重要。可以在重复步骤4703到4713时考虑此类信息。[0805]在一个实施例中,用户可以在执行图47的方法的同时在任何点提供附加的输入。在一个实施例中,助理1002周期性或连续检查此类输入,并且作为响应,循环回到步骤4703以处理它。[0806]在一个实施例中,在输出项目或项目列表时,助理1002在项目的呈现中指示用于对它们进行选择和排序的特征。例如,如果用户询问附近的意大利餐厅,可以在项目的呈现中示出针对距离和菜系的此类项目特征。这可以包括高亮显示匹配,以及列出项目呈现中涉及的选择标准。[0807]实例域[0808]图52提供了根据各种实施例可以由助理1002处理的受约束选择域的实例。[0809]过滤和排序结果[0810]在一个实施例中,在呈现符合当前指定的标准和约束的项目时,可以采用过滤/排序方法。在一个实施例中,选择约束可以充当下层服务的过滤参数和排序参数。因此,可以使用任何选择标准确定哪些项目在列表中,并计算对它们标页码和显示的顺序。这项任务的排序顺序类似于搜索中的相关性排序。例如,邻近性是具有符号约束值的标准,诸如“在驾车距离之内”和按距离排序的一般概念。“驾车距离”约束可用于选择一组候选项目。在该组之内,可以在列表中将更近的项目排序更高。[0811]在一个实施例中,选择约束以及相关联的过滤和排序处于分立“等级”,这是下层数据和来自用户的输入两者的函数。例如,将邻近性分组成等级诸如“步行距离”、“出租车距离”、“驾车距离”。在排序时,将步行距离之内的一个或多个项目当成如同它们在同一距离那样处理。来自用户的输入可以通过他或她指定约束的方式开始起作用。例如,如果用户输入“在帕洛阿尔托”,那么帕洛阿尔托城市限制之内的一个或多个项目是最优匹配且是相等的。如果用户输入“大学路火车站附近”,那么匹配将取决于距该地址的距离,带有取决于选择类的匹配程度(例如,对于餐厅的附近与对于酒店的附近不同)。即使在可以利用连续值指定的约束之内,也可以应用离散化。这对于排序操作而言可能是重要的,使得多个标准可以参与确定最佳第一的排序。[0812]在一个实施例中,项目列表—被认为是“匹配”或“足够好”的那些项目—可能比输出的一“页”上所示项目数量更短或更长。通常,对第一页中的项目赋予最大关注,但从概念上讲,有更长的列表,并且标页码仅仅是输出介质形状因子的函数。例如,这意味着如果为用户提供按照某种标准排序或浏览项目的方式,那么它就是被排序或浏览的整组项目(超过一页)。[0813]在一个实施例中,在选择标准之间存在优先排序。即,一些标准可能比过滤和排序中的其他标准更重要。在一个实施例中,为用户选择的那些标准赋予比其他标准更高的优先级,并且相对于一个或多个标准有默认的排序。这允许一般的字母顺序排序。该假设是存在有含义的先验优先级。例如,除非用户做出其他表述,否则餐厅距离近比便宜更重要。在一个实施例中,先验优先级排序是特定于域的。如果需要,该模型允许特定于用户的优先级超驰域默认值。[0814]由于约束的值可表示几种内部数据类型,因此有不同的方式供约束进行匹配,并且它们可能是特定于约束的。例如,在一个实施例中:[0815]·二元约束匹配一个或多个或一个也没有。例如,餐厅是否“快速”可能为真或非真。[0816]·集员约束基于属性值匹配一个或多个或一个也没有。例如,菜系=希腊表示餐厅的该组菜系包括希腊。[0817]·枚举约束在阈值处匹配。例如,评级标准可以对约束值进行评级、高度评级或顶端评级。约束到高度评级也会匹配顶端评级。[0818]·数值约束在可能是特定于标准的阈值处匹配。例如,“营业到很晚”可能是一个标准,并且用户可能会寻找在晚上10:00之后营业的地方。这种约束可能稍微超出了受约束选择任务的范围,因为它不是符号约束值。然而,在一个实施例中,助理1002识别像这种情况的一些数字约束情况,并利用符号约束将它们映射到阈值(例如,“帕洛阿尔托现在营业的餐厅”‑>“帕洛阿尔托这里有2家餐厅营业到很晚”)。[0819]·对位置和时间进行特殊处理。对邻近性的约束可以是在某个粒度等级上指定的感兴趣位置,并且这决定着匹配。如果用户指定城市,那么城市等级的匹配是适当的;zip代码可以允许一定半径。助理1002还可以也基于特殊处理理解在其他感兴趣位置“附近”的位置。基于服务调用,时间是相关的,作为具有阈值的标准的约束值,诸如给定时间范围之内的餐桌可用性或航班。[0820]在一个实施例中,可以对约束建模,使得对于选择有单个阈值,并且对于排序有小的离散值集合。例如,可以将可承受性标准建模为粗略的二元约束,其中可承受的餐厅是在某个阈值价格范围之下的任何餐厅。在数据表明有多个分立等级供选择时,可以利用匹配梯度对约束建模。在一个实施例中,可以提供两个等级的匹配(诸如强匹配和弱匹配);然而,本领域的技术人员将认识到,在其他实施例中,可以提供任意数量等级的匹配。例如,可以将邻近性与模糊边界匹配,使得感兴趣位置附近的事物可以弱匹配。强或弱匹配的操作序列在下述过滤/排序算法中。[0821]对于至少一个标准而言,如果相关的话,可以确立匹配方式和默认阈值。用户能够仅说出约束的名称、符号约束值或精确的约束表达,如果其得到特殊处理的话(诸如时间和位置)。[0822]在用户指出导致候选短列表的约束时,会发生受约束选择的理想状况,候选者中的一者或多者符合该约束。用户然后基于项目特征在优胜者之间做出选择。然而,在很多情况下,问题是约束过度或不够。在约束过度时,符合约束的项目很少或没有。在约束不足时,有太多候选者以至于检验列表不方便。在一个实施例中,本发明的一般受约束选择模型能够处理具有稳健匹配的多个约束,并通常产生某些结果供选择。然后,用户可以选择细化其标准和约束,或仅仅利用“足够好”的解决方案来完成任务。[0823]方法[0824]在一个实施例中,使用以下方法对结果进行过滤和排序:[0825]1.给定用户选择的选择标准的有序列表,确定对至少一项的约束。[0826]a.如果用户指定了约束值,则使用它。例如,如果用户说“希腊菜”,约束为菜系=希腊。如果用户说“旧金山”,约束是在旧金山市内。如果用户说“市场南”,那么约束是在索马邻域内。[0827]b.否则使用特定于域和特定于标准的默认值。例如,如果用户说“在某泰国餐厅的餐桌”,他或她正在指示可用性标准是相关的,但未指定约束值。针对可用性的默认约束值可能是日期时间的某个范围诸如今晚,以及默认同行人数2。[0828]2.通过指定的约束选择最少n个结果。[0829]a.尝试以强匹配得到n个结果。[0830]b.如果失败,尝试按照相反的优先顺序放宽约束。即,在强等级下针对除最后一个之外的标准中的一个或多个标准进行匹配,其可以在弱等级下进行匹配。如果该约束没有弱匹配,那么从最低优先级到最高优先级向上尝试弱匹配。[0831]c.然后重复循环,从最低优先级到最高优先级允许约束匹配失败。[0832]3.在获得最小选择集之后,以优先级顺序相对于一个或多个标准(可以包括用户指定的标准以及其他标准)按字母顺序排序。[0833]a.将该组用户指定的标准视为最高优先级,然后是其先验优先级中的一个或多个剩余标准。例如,如果先验优先级是(可用性、菜系、邻近性、评级),并且用户对邻近性和菜系给出约束,那么对优先级排序为(菜系、邻近性、可用性、评级)。[0834]b.利用与放宽约束中相同的方法,用分立的匹配等级(强、弱、无)按标准排序,这次应用完整的标准列表。[0835]i.如果获得没有放宽约束的选择集,那么选择集中的一个或多个选择可以在排序中“并列”,因为它们一个或多个在强等级下匹配。然后,可以排除优先级列表中的下一标准以对它们进行排序。例如,如果用户说菜系=意大利,邻近性=在旧金山,并且排序优先级为(菜系、邻近性、可用性、评级),那么列表上的一个或多个地方对于菜系和邻近性而言具有相等的匹配值。因此,会按照可用性对列表进行排序(有餐桌可用的地方,一直向上到顶部)。在可用地方之内,评级最高的那些会在顶部。[0836]ii.如果通过放宽约束获得选择集,那么完全匹配项目中的一个或多个项目在列表顶部,然后是部分匹配项目。在匹配组之内,按照剩余的标准对它们进行排序,并且对于部分匹配的组同样处理。例如,如果在旧金山仅有两家意大利餐厅,那么会首先显示可用的一个,然后是不可用的一个。然后会示出旧金山的其余餐厅,按照可用性和评级排序。[0837]优先级排序[0838]本文描述的技术使得助理1002在面对部分指定的约束和不完整数据时极其稳健。在一个实施例中,助理1002使用这些技术生成最佳第一顺序的项目的用户列表,即根据相关性排序。[0839]在一个实施例中,此类相关性排序基于先验的优先级排序。即,在对于域而言重要的事物中,选择一组标准并按照重要性顺序放置。在一个或多个事物等同时,优先级顺序中更高标准可以比顺序中更低那些在项目中与受约束选择更相关。助理1002可以按照任意数量的标准进行操作。此外,可以随着时间修改标准而不破坏现有行为。[0840]在一个实施例中,可以利用特定于域的参数来调谐标准间的优先级顺序,因为标准交互的方式可能取决于选择类。例如,在酒店之间选择时,可用性和价格可能是主要约束,而对于餐厅而言,菜系和邻近性可能更重要。[0841]在一个实施例中,用户可以在对话中超驰默认标准排序。这允许系统在搜索受到过度约束时,利用排序指导用户以确定应当放宽哪些约束。例如,如果用户对菜系、邻近性、推荐和食物类给出约束,并且有不完全匹配项目,则用户可以说食物类比推荐等级更重要并改变搭配,从而将期望的食物类匹配排序到顶端。[0842]在一个实施例中,在确定优先级顺序时,用户指定的约束比其他优先。例如,在一个实施例中,邻近性是必需的约束,因此始终被指定,并且进一步相对于其他未选择的约束优先。因此,它不必是最高优先级约束就能够相当重要。而且,很多标准可能在一个或多个方面不匹配,除非用户给出约束,并且因此这些标准的优先级仅在用户选择的标准之内才重要。[0843]例如,在用户指定菜系时,对它们而言是重要的,并且否则与项目排序不相关。[0844]例如,以下是用于餐厅域的候选优先级排序范式:[0845]1.菜系*(除非给出约束值,否则不可排序)[0846]2.可用性*(利用默认约束值例如时间可排序)[0847]3.推荐的[0848]4.邻近性*(始终给出约束值)[0849]5.可承受性[0850]6.可以送货[0851]7.食物类*(除非给出约束值例如关键词,否则不可排序)[0852]8.关键词(除非给出约束值例如关键词,否则不可排序)[0853]9.餐厅名称[0854]以下是针对以上排序范式的设计原理的实例:[0855]·如果用户指定菜系,他或她希望坚持这种指定。[0856]·一个或多个事物等同,按照评级等级进行排序(相较于可能用于在无约束时进行排序,它在标准中是最高的优先级)。[0857]·在至少一个实施例中,邻近性可能比大部分事物都更重要。然而,由于它在分立等级上匹配(在市内,在步行半径之内等),并始终被指定,那么最匹配项目在大部分时间可能在邻近性方面是“并列”的。[0858]·可用性(例如,如通过在网站诸如open‑table.com上搜索所确定的)是有价值的排序标准,并且在未指定时可以基于用于进行排序的默认值。如果用户指定预订时间,那么列表中可以仅有可用的地方,并且排序可以基于推荐。[0859]·如果用户说他们希望高度推荐的地方,那么可以优于邻近性和可用性排序,并且可以在推荐之前放宽这些标准。假设如果某人正在寻找好地方,他们可能希望开车去稍远处,并且这比默认的餐桌可用性更重要。如果指定了特定时间的可用性,并且用户请求推荐的地方,那么既被推荐又可用的地方可能首先出现,并且在可用性无法在一个或多个方面匹配之前,推荐可以放宽到弱匹配。[0860]·除名称之外的剩余约束是基于完整数据或匹配的一个或多个约束。因此它们默认是弱排序启发,并且在指定它们时,匹配可以是一个或多个或一个也没有。[0861]·可以使用名称作为约束,以应对某人通过名称提到餐厅的情况,例如在帕洛阿尔托附近找到一家或多家hobee餐厅。在这种情况下,一个或多个项目可能匹配名称,并可以按照邻近性(该实例中另一指定的约束)进行排序。[0862]域建模:将选择标准映射到下层数据[0863]可能希望在可用于由助理1002进行计算的数据和用于做出选择的数据之间进行区分。在一个实施例中,助理1002通过将用于在项目间进行区分的一种或多种数据简化成简单的选择标准模型,使用为用户降低复杂性的数据模型。在内部讲,这些数据可以采取几种形式。选择类的实例可以具有本征属性和特性(诸如餐厅的菜系),可以沿各维度进行比较(诸如距某个位置的距离),并可以通过某种查询(诸如其是否匹配文本模式或可以在给定时间使用)被发现。也可以从未暴露于用户作为选择标准的其他数据(例如,来自多个源的评级的加权组合)来计算它们。这些数据中的一种或多种与任务相关,但这三种数据之间的区别与用户不相关。由于用户想到的是期望选择的特征而不是属性和维度,因此助理1002将各种这些标准操作化成项目的特征。助理1002提供用户面对的域数据模型,并将其映射到在web服务中找到的数据。[0864]一种映射是从下层数据到用户面对的标准的同构映射。例如,如用户看到的餐桌进行预订的可用性可以恰好是在线预订网站诸如opentable.com使用针对时间和同行人数的相同粒度而提供的。[0865]另一种类型的映射是将数据从一种或多种服务归一化成公共值集合,可能利用等价值的统一。例如,可以将一家或多家餐厅的菜系表示为助理1002中的单个知识本体,并映射到不同服务中使用的各种词汇。该知识本体可以是分级的,并具有从至少一个服务指向具体值的叶节点。例如,一种服务可以具有针对“中国”的菜系值,另一种为“四川”,并且第三种为“亚洲”。助理1002使用的知识本体可以导致对“中国菜”或“四川”的援引在语义上匹配这些节点中的一个或多个节点,置信度水平反映匹配程度。[0866]在解决精确度差异时,也可能涉及到归一化。例如,在一种服务中,餐厅位置可以给到街道层次,但在另一个服务中,可能仅给到城市。在一个实施例中,助理1002使用可以被映射到不同表面数据值的位置和时间的深度结构表示。[0867]在一个实施例中,助理1002为开放式限定词(例如浪漫、安静)使用特殊种类的映射,可以将它们映射到全文本搜索、标签或其他开放构造特征中的匹配。在这种情况下,选择约束的名称可能是类似“被描述为”这样的某种表达。[0868]在至少一个实施例中,可以将约束映射到操作性优先级排序。即,给定选择标准的名称及其约束值,助理1002能够将标准解释为对可能项目的排序。在此类映射中有几个技术问题要解决。例如:[0869]·优先级排序可能冲突。一种约束给出的排序可能与另一种约束给出的排序不协调或甚至反相关。例如,价格和质量往往是相对的。在一个实施例中,助理1002按照加权或反映用户希望但对数据而言真实的其他组合排序来解释用户选择的约束。例如,用户可以询问“在步行距离之内评级很高的廉价快餐法国餐厅”。在很多地方,可能没有任何此类餐厅。然而,在一个实施例中,助理1002可以示出项目列表,尝试针对至少一项约束进行优化,并解释为何列出了至少一项。例如,项目一可能是“评级很高的法国菜系”,并且另一个是“步行距离之内的廉价快餐”。[0870]·可以将数据用作硬约束或软约束。例如,餐厅的价格范围可能对于选择餐厅来说很重要,但可能难以预先为价格指定阈值。在实际中,因为部分匹配的问题,甚至看起来硬性的约束像菜系也可以是软约束。在一个实施例中,由于助理1002使用的数据建模策略尝试将一个或多个标准平坦化成符号值(诸如“便宜”或“近”),可以将这些约束映射到使标准和顺序正确的函数,对匹配具体阈值不严格。对于具有清楚客观的真值的符号标准,助理1002可以对客观标准加权得比其他标准更高,并在解释中说明其知道某些项目不严格匹配请求的标准。[0871]·项目可能匹配一些,但不是一个或多个约束,并且可以示出“最佳匹配”项目。[0872]·通常,助理1002确定对于域而言哪些项目特征是突出的,以及哪些可以充当选择标准,以及针对至少一个标准可能的约束值。例如,可以通过操作性数据和api调用来提供此类信息。[0873]释义和提示文本[0874]如上所述,在一个实施例中,助理1002提供反馈以表明其理解用户的意图,并且正在通过产生其当前理解的释义来向着用户的目标工作。在本发明的会话对话模型中,释义是助理1002在用户输入之后作为要寻求的结果的序言(例如,图40中的释义4003)或总结(例如,图35中的列表3502)而输出的东西。[0875]提示是给用户的关于他们还能够做什么以细化其请求或沿某些维度探索选择空间的建议。[0876]在一个实施例中,释义和提示文本的目的包括例如:[0877]·表明助理1002理解用户输入中的概念而不仅仅是文本;[0878]·指示助理1002的理解的边界;[0879]·指导用户输入假设任务所需的文本;[0880]·帮助用户探索受约束选择中的可能性空间;[0881]·根据用户指出的标准和助理1002的假设,解释从服务获得的当前结果(例如,解释约束不足请求或约束过度请求的结果)。[0882]例如,以下释义和提示例示了这些目标中的几种:[0883]用户输入:门洛帕克的印度尼西亚菜[0884]系统解释:[0885]任务=constrainedselection[0886]selectionclass=餐厅[0887]约束:[0888]位置=加利福尼亚门洛帕克[0889]菜系=印度尼西亚(知识本体中已知)[0890]来自服务的结果:没有强匹配[0891]释义:对不起,我不能在门洛帕克附近找到任何印度尼西亚餐厅。[0892]提示:您可以试试其他菜系或位置。[0893]超文本链接下的提示:[0894]印度尼西亚:您可以尝试其他食物类别,诸如中餐或最喜爱的食物类诸如牛排。[0895]门洛帕克:输入位置,诸如城市、邻域、街道地址、或“附近”,后面为地标。[0896]菜系:输入食物类别,诸如中餐或比萨。[0897]位置:输入位置:城市、邮政编码或“附近”,后面为地方名称。[0898]在一个实施例中,助理1002利用释义相对快速地对用户输入作出响应。然后在知道结果之后更新释义。例如,初始响应可以是“寻找门洛帕克附近的印度尼西亚餐厅……”一旦获得了结果,助理1002会更新文本为“对不起,我不能在门洛帕克附近找到任何印度尼西亚餐厅。您可以试试其他菜系或位置。”需注意,某些项目被高亮显示(这里表示为下划线),指示那些项目表示能够放宽或改变的约束。[0899]在一个实施例中,为释义中的关键字词使用特殊格式/高亮显示。这可能通过向用户指示哪些字词对于助理1002而言最重要且更可能被助理1002识别,而有助于方便训练用户与智能自动化助理1002进行交互。用户然后更可能在将来使用此类字词。[0900]在一个实施例中,利用任何相关上下文数据生成释义和提示。例如,可以单独或组合地使用以下数据项中的任一个数据项:[0901]·解析—绑定到其匹配输入令牌的知识本体节点树,具有注释和例外。对于解析中的每个节点,这可以包括节点的元数据和/或输入中的任何令牌,其为节点的值提供证据。[0902]·任务,如果已知的话。[0903]·选择类。[0904]·位置约束,与选择类无关。[0905]·对于给定选择类,哪些需要的参数未知(例如,对于餐厅,位置是需要的约束)。[0906]·解析中所指出实体的名称,这是选择类的实例(如果有的话)(例如,具体的餐厅或电影院名称)。[0907]·这是会话的后续细化还是开始?(重置开始新的会话。)[0908]·解析中的哪些约束绑定到改变了约束的值的输入中的值?换言之,哪些约束刚刚被最新输入改变?[0909]·该选择类是推断的还是直接指明的?[0910]·按照质量、相关性或邻近性排序?[0911]·对于每个指定的约束,其匹配情况如何?[0912]·细化被输入为文本还是点击?[0913]在一个实施例中,释义算法考虑查询、域模型1056和服务结果。域模型1056包含类和特征,该类和特征包括用于决定如何生成文本的元数据。[0914]用于生成释义的此类元数据的实例包括:[0915]·osconstraint={trueifalse}[0916]·ismultivalued={trueifalse}[0917]·constrainttype={entityname,location,time,categoryconstraint,availabilityconstraint,binaryconstraint,searchqualifier,guessed‑qualifier}[0918]·displayname=string[0919]·displaytemplatesingular=string[0920]·displaytemplateplural=string[0921]·grammaticalrole={adjectivebeforenoun,noun,thatclausemodifer}[0922]例如,解析可能包含这些要素:[0923]类:restaurant[0924]isconstraint=false[0925]displaytemplatesingular=“restaurant”[0926]displaytemplateplural=“restaurants”[0927]grammaticalrole=noun[0928]特征:restaurantname(实例:“ilfornaio”)[0929]isconstraint=true[0930]ismultivalued=false[0931]constrainttype=entityname[0932]displaytemplatesingular=“named$1”[0933]displaytemplateplural=“named$1”[0934]grammaticalrole=noun[0935]特征:restaurantcuisine(实例:“中餐”)[0936]isconstraint=true[0937]ismultivalued=false[0938]constrainttype=categoryconstraint[0939]grammaticalrole=adjectivebeforenoun[0940]特征:restaurantsubtype(实例:“咖啡馆”)[0941]isconstraint=true[0942]ismultivalued=false[0943]constrainttype=categoryconstraint[0944]displaytemplatesingular=“$1”[0945]displaytemplateplural=“$is”[0946]grammaticalrole=noun[0947]特征:restaurantqualifiers(实例:“浪漫”)[0948]isconstraint=true[0949]ismultivalued=true[0950]constrainttype=searchqualifier[0951]displaytemplatesingular=“isdescribedas$1”[0952]displaytemplateplural=“aredescribedas$1”[0953]displaytemplatecompact=“matching$1”[0954]grammaticalrole=noun[0955]特征:foodtype(实例:“墨西哥卷饼”)[0956]isconstraint=true[0957]ismultivalued=false[0958]constrainttype=searchqualifier[0959]displaytemplatesingular=“serves$1”[0960]displaytemplateplural=“serve$1”[0961]displaytemplatecompact=“serving$1”[0962]grammaticalrole=thatclausemodifer[0963]特征:isrecommended(实例:真)[0964]isconstraint=true[0965]ismultivalued=false[0966]constrainttype=binaryconstraint[0967]displaytemplatesingular=“recommended”[0968]displaytemplateplural=“recommended”[0969]grammaticalrole=adjectivebeforenoun[0970]特征:restaurantguessedqualifiers(实例:“宏大”)[0971]isconstraint=true[0972]ismultivalued=false[0973]constrainttype=guessedqualifier[0974]displaytemplatesingular=“matches$1inreviews”[0975]displaytemplateplural=“match$1inreviews”[0976]displaytemplatecompact=“matching$1”[0977]grammaticalrole=thatclausemodifer[0978]在一个实施例中,助理1002能够处理不匹配的输入。为了处理此类输入,域模型1056可为每个选择类提供guessedqualifier类型的节点,以及匹配它们在正确语法上下文中本来不匹配的字词的规则。即,将guessedqualifiers当做解析中的混杂节点,在存在知识本体中未发现但在正确上下文中的字词时,节点是匹配的,以指示它们是选择类的可能修饰词。guessedqualifiers和searchqualifiers之间的不同在于后者被匹配到知识本体中的词汇。这种区别允许我们释义助理1002可靠地识别了searchqualifiers的意图,并且在回应guessedqualifiers时可更加迟疑。[0979]在一个实施例中,助理1002在生成释义文本时执行如下步骤:[0980]1.如果任务未知,则解释助理1002能做什么并提示更多输入。[0981]2.如果任务是受约束选择任务且位置已知,那么解释助理1002知道的域并提示选择类。[0982]3.如果选择类已知但缺失了所需约束,那么提示该约束。(例如,对于餐厅的受约束选择,位置是需要的)[0983]4.如果输入包含选择类的entityname,那么输出“查找”<location>中的<name>。[0984]5.如果这是会话中的初始请求,那么输出“查找”,接着是描述约束的复杂名词短语。[0985]6.如果这是对话中的后续细化步骤,[0986]a.如果用户恰好完成了需要的输入,那么输出“谢谢”,并然后正常释义。(在存在被映射到用户输入的所需约束时,发生这种情况。)[0987]b.如果用户正在改变约束,那么确认这点,并然后正常释义。[0988]c.如果用户键入选择类的实例的正确名称,则特别处理这种名称。[0989]d.如果用户刚刚添加了未识别的短语,那么指示将在搜索中如何简化它。如果适当的话,可以将输入分派到搜索服务。[0990]e.如果用户刚刚添加了正常约束,那么输出“确定”,并正常释义。[0991]7.为了解释结果,为释义使用相同的方式。然而,在结果令人惊讶或始料未及时,那么利用关于数据和服务的知识来解释结果。而且,在查询受到过度约束或不足约束时,提示更多输入。[0992]用于构造复杂名词短语的语法[0993]在一个实施例中,在释义734受约束选择任务查询时,基础是参考当前约束的选择类附近的复杂名词短语。每个约束基于其类型都具有语法位置。例如,在一个实施例中,助理1002可以构造释义,诸如:[0994]门洛帕克附近的推荐浪漫意大利餐厅[0995]具有2人空闲餐桌,供应炖小牛肘,并且被描述为“安静”。[0996]构造这句话的语法是[0997]<paraphrasenounclause>:==<binaryconstraint><searchqualifier>[0998]<categoryconstraint><itemnoun><locationconstraint>[0999]<availabiltyconstraint><adjectivalclauses>[1000]<binaryconstraint>:==指示有无binaryconstraint的单个形容词(例如,推[1001]荐(最好),可承受(廉价))[1002]可以在同一查询中列出超过一个。[1003]<searchqualifier>:==匹配选择类修饰词的知识本体的一个或多个字词,会[1004]被传递到搜索引擎服务中。(例如,浪漫餐厅、有趣的电影)。[1005]在constrainttype=searchqualifier时使用。[1006]<categoryconstraint>:==标识流派、菜系或选择类的类别的形容词(例如,[1007]中餐厅或r评级文件)。它是最后的前缀形容词,因为它是最本征的。用于categoryconstraint类型以及grammaticalrole=adjectivebeforenoun的特征。[1008]<itemnoun>:==<namedentityphrase>/<selectionclass>/[1009]<selectionclasssubtype>找到显示名词的最具体的方式。namedentity[1010]<subtype<class<selectionclass>:==用于选择类的一般名称的名词(例如,餐厅、电影、地方)[1011]<selectionclasssubtype>:==名词短语,如果已知选择类的话,是选择类的子类型(例如,对于本地企业选择类为晚餐、博物馆、商场、酒吧)。[1012]用于constrainttype=categoryconstraint且grammaticalrole=adjectivebeforenoun的特征。[1013]<namedentityphrase>:==<entityname>|[1014]“the”(<selectionclass>/<selectionclasssubtype>)[1015]<entityname>:==选择类实例的适当名称(例如,“ilfornaio”、“animalhouse”、“harry'sbar”)[1016]<locationconstraint>:==<locationpreposition><locationname>[1017]<locationpreposition>:==“在其中”、“附近”、“在那里”等。[1018]<locationname>:==城市、街道地址、地标或用于gps的某种东西,例如[1019]“您当前的位置”[1020]<availabilityconstraint>:==表达为名词之后的前置短语的可用性约束(例如,“有空闲餐桌”、“有座位可用”、“可在线预订”)。它紧跟名词后方以使其突出。[1021]<adjectivalclauses>:==<modiferverbphrase>i“that”<modiferverbphrase>“and”<modiferverbphrase>[1022]<modiferverbphrase>:=表达对选择类的搜索关键词风格约束的动词短语(例如,“被描述为安静”、“在……之后供应肉食”、“匹配评论中的“tragicallyhip”的餐厅;“有暴力色彩”、“明星billybobthornton”的电影)。利用“that...and”变体,在其grammaticalrole=thatclausemodifer的解析中包括所有约束,如果有超过一个的话。使用displaytemplateplural以生成“that”从句,将guessedqualifier放在最后。如果仅有一个此类约束,使用displaytemplatecompact的变体。[1023]表1提供了根据一个实施例,可以响应于任务的第一输入被提供的释义的一些实例。[1024][1025][1026]表1:响应于第一输入进行释义[1027]细化关于吃饭地方的查询[1028]表2提供了响应于已知用户希望找到吃饭的地方但他们未选择吃饭的具体地方的情况的释义的一些实例。他们面对餐厅的列表,并且他们提供细化。[1029][1030]表2:响应于细化的释义[1031]表3提供了获得结果后立即提供的结果总结的一些实例。[1032][1033][1034][1035]表3:结果总结[1036]表4提供了在用户点击活动链接时提供的提示的一些实例。[1037]用户点击活动链接时的提示[1038][1039]表4:用户点击活动链接时的提示[1040]在对话中建议可能的响应[1041]在一个实施例中,助理1002提供上下文建议。建议是助理1002为用户提供选项的方式,以从其在对话中的当前状况前行。助理1002提供的该组建议取决于上下文,并且提供的建议数量可以取决于媒体和形式因素。例如,在一个实施例中,可以在对话的行中提供最突出的建议,可以在可滚动菜单中提供建议的扩展列表(“更多”),并且通过键入几个字符并从自动完成选项中选取可以实现更多建议。本领域的技术人员将认识到,可以使用其他机构提供建议。[1042]在各种实施例中,可以提供不同类型的建议。建议类型的实例包括:[1043]·细化查询的选项,包括添加或去除或改变约束值;[1044]·从不好的状况修复或恢复的选项,诸如“不是我的意思”或“重新开始”或“搜索web”;[1045]·在其间消除歧义的选项;[1046]·解释语音;[1047]·解释文本,包括拼写校正和语义歧义;[1048]·特定于上下文的命令,诸如“在地图上显示这些”或“发送我约会的路线”或“解释这些结果”;[1049]·建议的交叉销售供应,诸如就餐或事件规划情形中的后续步骤;[1050]·重新使用先前命令或它们中的部分命令的选项。[1051]在各种实施例中,例如可以从如下选项中导出决定最相关建议的上下文:[1052]·对话状态[1053]·使用状态,包括例如:[1054]ο静态属性(姓名、家庭地址等)[1055]ο动态属性(位置、时间、网络速度)[1056]·交互历史,包括例如:[1057]ο查询历史[1058]ο结果历史[1059]ο至今为止输入到自动完成中的文本。[1060]在各种实施例中,可以通过任何机构生成建议,诸如例如:[1061]·基于知识本体模型释义域、任务或约束;[1062]·基于当前域和约束在自动完成中进行提示;[1063]·释义歧义的替代解释;[1064]·语音到文本的替代解释;[1065]·基于特殊对话条件进行手工编写。[1066]根据一个实施例,在某种状态的完成中生成建议,作为对命令的操作。命令是请求的显式标准表示,基于对用户输入的尝试解释,包括假设和推断。在用户输入不完整或有歧义的情况下,建议尝试帮助用户调节输入以澄清命令。[1067]在一个实施例中,每条命令都是具有如下部分的某种组合的祈使语句:[1068]·命令动词(祈使动词,诸如“寻找”或“在哪里”);[1069]·域(选择类,诸如“餐厅”);[1070]·一个或多个约束,诸如位置=帕洛阿尔托,并且菜系=意大利。[1071]命令的这些部分(动词、域、约束)对应于知识本体中的节点。[1072]然后,可以将建议视为对命令的操作,诸如设置它、改变它或宣告它相关或不相关。实例包括:[1073]·设置命令动词或域(“寻找餐厅”)[1074]·改变命令动词(“预订它”,“在地图上标示它”,“保存它”),改变域(“寻找餐厅,不是本地企业”)[1075]·指出约束是相关的(“尝试通过菜系细化”)[1076]·为约束选择值(“意大利”、“法国”等)[1077]·共同选择约束和值(“在这附近”、“2人桌”)[1078]·指出约束值是错误的(“不是那个boston”)[1079]·指出约束不相关(“不考虑费用”)[1080]·指出改变约束值的意图(“尝试不同的位置”)[1081]·改变约束值(“意大利,不是中餐”)[1082]·添加到约束值(“并且还有泳池”)[1083]·将值插入栅格中(“losangeles,不是losangelos”)[1084]·发起新命令,重新使用上下文([看电影之后]“寻找附近的餐厅”,“向我的朋友发送路线指南”)[1085]·发起对上下文而言是“基元”的命令(“解释这些结果”)[1086]·发起新命令,重置或忽略上下文(“重新开始”,“利用语音进行帮助”)[1087]建议还可以涉及以上的某种组合。例如:[1088]·“电影milk,不是[供应]食物类milk(牛奶)的[餐厅]”[1089]·“供应比萨的餐厅,不仅仅是比萨连锁店”[1090]·“这个地方被称为costcoinmountainview,我不关心你认为它是餐厅还是本地企业”[1091]·“mountainview中的中餐”[最近的查询][1092]在一个实施例中,助理1002包括维护按照相关性排序的建议列表的一般机构。提供建议的格式可以根据当前上下文、模式和设备的形状因子而不同。[1093]在一个实施例中,助理1002通过考虑如下因素中的一种或全部来确定修改哪些约束:[1094]·考虑约束是否具有值;[1095]·考虑约束是推断的还是明确指出的;[1096]·考虑其突出性(suggestionindex)[1097]在一个实施例中,助理1002为建议确定输出格式。输出格式的实例包括:[1098]·改变域:[1099]ο如果自动完成选项“寻找餐厅”,那么“尝试某种不同的东西”[1100]ο否则[是推断的],“不寻找餐厅”[1101]·改变名称约束:[1102]ο如果名称是推断的,提供替代的歧义解释[1103]ο从当前结果填充,以自动完成实体名称[1104]ο不同名称[1105]ο考虑它不是名称查找(消除约束)—可能提供类别替代它[1106]·“未指出”[1107]·“不在伯克利”[1108]·“改天”[1109]·不是那个意思(使用歧义替代)[1110]·推断的日期:“任一天,我不需要预订”[1111]在一个实施例中,助理1002尝试通过建议解决歧义问题。例如,如果用户意图的一组当前解释歧义过大310,那么建议是提示更多信息322的一种方式。在一个实施例中,对于受约束选择任务而言,助理1002在意图290的歧义解释之间分析出公共约束,并向用户呈现它们之间的差异。例如,如果用户输入包括字词“咖啡”且该字词可以匹配餐厅名称或餐厅类型,那么助理102可以问道“您的意思是名称为“咖啡”的餐厅还是“咖啡馆”?”[1112]在一个实施例中,助理1002在特定情况下推断约束。即,对于受约束选择任务而言,并非需要在用户输入中明确提到所有约束;有一些可以从活动知识本体1050、短期存储器1052和/或助理1002可用的其他信息源中可用的其他信息来推断。例如:[1113]·推断域或位置[1114]·默认假设,例如位置[1115]·弱匹配的约束(模糊,低突出位置等)[1116]·歧义标准(匹配没有前缀的约束值(名称相对于类别,通常是有歧义的))[1117]在助理1002推断约束值的情况下,它还可以提供这些假设作为建议,供用户支配。例如,它可能告诉用户“我假定您表示在这附近。您希望看一下不同的位置吗?”[1118]图48是示出了根据一些实施例用于利用数字助理为搜索请求和预订请求提供辅助的方法的流程图。如图48所示,在流程4800中,通过数字助理的对话界面接收来自用户的搜索请求,其中搜索请求至少包括语音输入并指定用于识别由一个或多个第三方提供商提供的可预订项目的一个或多个搜索标准(4810)。[1119]如说明书前面所述,在数字助理活动时,数字助理任选地维持对话界面,以便于数字助理和用户之间实时双向的通信。数字助理的对话界面能够通过多个形态(例如,通过语音、文本、触摸、手势和其他音频、视觉和触觉手段)接收来自用户的输入并向用户提供输出。在一些实施例中,对话界面为仅有语音的(例如,不用眼睛且不用手的界面)输入和输出界面,并且用户和数字助理完全通过语音和声音进行通信。在一些实施例中,对话界面提供了除基于语音的输入和输出界面之外的会话屏。在一些实施例中,会话屏呈现用户语音输入的文本释义(例如,搜索请求)和/或以文本和图形形式呈现信息和搜索结果。在一些实施例中,会话屏允许用户输入文本,选择搜索结果和/或与会话屏上呈现的各种用户界面元素交互。在一些实施例中,会话屏是用户设备上显示的单帧,包含用户和数字助理之间对话的文本表示。在一些实施例中,文本表示包括一系列文本框、文本泡或来自用户的初始文本输入、从用户语音输入导出的文本(例如,初始字词或释义)和/或数字助理提供的文本输出的其他视觉呈现。[1120]在流程4800中,响应于接收到搜索请求,数字助理通过对话界面向用户呈现多个搜索结果,每个搜索结果对应于根据搜索请求识别的相应可预订项目(4820)。可预订项目是指根据项目提供商指定的预订或订购流程能够预订和/或购买的项目。可预订项目的实例包括餐厅的餐桌,事件、音乐会、电影、体育比赛、表演、讲座等的门票或座位,拍卖销售物品等。搜索结果对应于根据搜索请求识别的相应可预订项目,并提供关于可预订项目或可预订项目的第三方提供商的信息(例如,名称、位置、演出时间、价格、评级等)。例如,针对餐厅搜索请求的搜索结果提供关于有空闲餐桌供预订的餐厅的信息(例如,名称、菜系和位置)。用于娱乐搜索请求的搜索结果提供了关于有票可销售的娱乐事件(例如电影或音乐会)的信息(例如,名称、时间、位置和价格)。用于识别可预订项目的搜索标准包括搜索类或选择类(例如,餐厅、娱乐事件等),以及用于对搜索结果进行过滤和排序的各种约束(例如,位置、时间、价格、评论、流派、菜系等)。[1121]在一些实施例中,数字助理在会话屏上呈现搜索结果的列表。在一些实施例中,数字助理向用户阅读会话屏上的搜索结果列表。在免视模式中,数字助理任选地向用户阅读搜索结果列表而不在会话屏上呈现它们。在一些实施例中,数字助理提供总结搜索结果的语音输出,并在会话屏上呈现关于搜索结果的更详细信息。[1122]在一些实施例中,搜索请求是餐厅搜索请求,并且向用户呈现的搜索结果对应于根据餐厅搜索请求识别的餐厅。例如,在数字助理活动时,数字助理监测用于用户输入的各种输入信道(例如,倾听以捕获用户的语音输入和/或捕获会话屏上的文本或手势输入)。在数字助理从用户捕获请求搜索餐厅的语音输入(例如,语音输入“为我在门洛帕克寻找浪漫的意大利餐厅”)时,数字助理对语音输入进行解析以确定在语音输入中指定的搜索标准(例如,任务={搜索或constrainedselection},selectionclass=餐厅,searchconstraints={restaurantcuisine=“意大利餐”,restaurantqualifiers=“浪漫”,restaurantlocation=“门洛帕克”})。在一些实施例中,搜索标准中的一个或多个搜索标准基于上下文信息,诸如来自用户的其他输入或保存的用户偏好。[1123]在确定搜索的搜索标准之后,数字助理根据在语音输入中指定的搜索标准和上下文信息执行餐厅搜索。然后,数字助理通过数字助理的对话界面向用户呈现搜索结果。[1124]在一些实施例中,在执行搜索之前或在呈现搜索结果之前,数字助理通过对话界面提供语音输出,该语音输出释义从用户接收的搜索请求。例如,在用户说道“为我在帕洛阿尔托找个吃饭的地方”时。数字助理可以通过说出“好的,在帕洛阿尔托寻找餐厅”作出响应。作为另一个实例,在用户说出“我希望今天晚餐吃意大利菜。”如果当前的时间接近晚餐时间,数字助理可以说“好的,在您当前位置附近搜索意大利餐厅”作出响应。[1125]在一些实施例中,数字助理提供具有搜索结果的语音输出,其中语音输出宣布用于识别搜索结果的一个或多个搜索标准。例如,在数字助理根据用户的请求在帕洛阿尔托执行意大利餐厅的搜索之后,数字助理通过说出“以下是我在帕洛阿尔托找到的五家意大利餐厅:……”来宣告搜索结果。作为另一个实例,在数字助理搜索用户当前位置附近的餐厅之后,数字助理通过说出“我在附近找到了快餐餐厅和法国餐厅:……”来宣告搜索结果。[1126]在一些实施例中,在通过语音输出宣告搜索结果之后,数字助理任选地向用户阅读搜索结果列表。在一些实施例中,在用户设备的会话屏上呈现宣告和搜索结果。在一些实施例中,在宣告和/或搜索结果中突出显示表示用于识别搜索结果的搜索标准(例如,餐厅、意大利、帕洛阿尔托、附近)的文本。[1127]在一些实施例中,用于搜索结果的宣告可以指示用于获得搜索结果的搜索标准中的变化(例如,放宽和/或变化)。例如,在用户请求在帕洛阿尔托寻找马来西亚餐厅且在帕洛阿尔托未找到马来西亚餐厅时,数字助理能够扩展搜索区域以包括附近的城市(例如,门洛帕克)。在数字助理呈现从扩展搜索获得的搜索结果时,数字助理通过说出如下内容来宣告搜索结果:“在帕洛阿尔托未找到马来西亚餐厅,但在与帕洛阿尔托交界的门洛帕克找到一家马来西亚餐厅。”[1128]在一些实施例中,搜索请求为娱乐搜索请求,并且搜索结果对应于根据娱乐搜索请求识别的多个娱乐事件。娱乐事件是指与娱乐和玩乐相关的公共活动和事件,一般发生于预先确定的时间,并且通常需要预订或买票才能参加。娱乐事件的实例包括电影、演出、音乐会、表演、体育比赛、旅游等。[1129]例如,在数字助理从用户捕获请求搜索特定类型娱乐事件的语音输入(例如,语音输入“下星期谁在fillmore演出?”)时,数字助理处理语音输入并确定“fillmore”是音乐场地的名称,并且用户在搜索下星期在fillmore演出的音乐会。基于语音处理,数字助理获得语音输入中指定的搜索标准(例如,任务={搜索或constrainedselection,selectionclass=娱乐事件,子类=音乐会,searchconstraints={地点=“fillmore,”时间=“下星期”})。在一些实施例中,搜索标准中的一个或多个搜索标准可以基于与语音输入相关联的上下文信息,诸如来自用户的其他输入或保存的用户偏好。在确定娱乐事件搜索的搜索标准之后,数字助理根据语音输入中指定的搜索标准(例如,地点=fillmorc,并且时间=下星期)和上下文信息(例如,当前日期)执行娱乐事件(例如,即将举行的音乐会)的搜索。一旦识别了符合搜索标准的娱乐事件,数字助理就生成搜索结果并通过数字助理的对话界面向用户呈现搜索结果。[1130]在一些实施例中,在执行搜索之前或在呈现搜索结果之前,数字助理通过对话界面提供语音输出,该语音输出释义从用户接收的搜索请求。例如,在用户的语音输入是“下星期谁在fillmore演出?”时,数字助理基于语音输入确定搜索标准,并通过说出如下内容来释义搜索请求,“搜索下星期在fillmoreconcerthall举行的音乐会”。[1131]在一些实施例中,在释义搜索请求时,数字助理在释义中提供明确的搜索标准和从上下文信息推导的隐式的搜索标准。例如,如果数字助理刚刚应用户的请求订了星期六晚上意大利餐厅的两人餐桌,并接下来检测到语音输入“我想在晚餐之前看场电影。现在在演什么?”基于该语音输入,数字助理可确定明确的搜索标准,诸如任务=搜索,selectionclass=娱乐事件,子类=电影,以及隐式的搜索标准,诸如日期=“星期六晚上”=(例如,2012年6月9日),时间=“晚饭前”=(例如下午4:00到6:00之间),位置=“餐厅附近”=(例如,帕洛阿尔托15英里内)。因此,在释义搜索请求时,数字助理讲出或在会话屏上呈现“搜索星期六下午4:00到6:00之间放映的电影。”[1132]在一些实施例中,数字助理提供具有搜索结果的语音输出,以宣告用于识别搜索结果的一个或多个搜索标准。例如,在以上实例中呈现电影搜索的搜索结果时,数字助理可提供语音输出,“下面是在星期六您晚餐之前放映的电影:……”或者“我找到6部放映时间在星期六下午4:00和6:00之间的电影:……”在通过语音输出宣告搜索结果之后,数字助理任选地向用户阅读搜索结果列表。在一些实施例中,在用户设备的会话屏上呈现宣告和搜索结果。在一些实施例中,在宣告和/或搜索结果中突出显示表示用于识别搜索结果的搜索标准(例如,“电影”、“星期六”、“在您晚餐之前”、“下午4:00到6:00之间”)的文本。[1133]如以上实例所示,在一些实施例中,搜索请求包括与从用户接收的语音输入相关联的上下文信息。在一些实施例中,数字助理基于用户和数字助理通过对话界面的一次或多次先前用户交互来维护上下文信息。在说明书的前面部分中提供了如何利用上下文信息的更多详情。上下文信息的实例包括个人交互历史(例如,对话历史、先前从结果进行的选择等)、个人物理上下文(例如,用户的当前位置和当前时间)以及在交互上下文中收集的个人信息(例如,姓名、电子邮件地址、物理地址、电话号码、账号、日历信息、联系人、偏好等)。[1134]在一些实施例中,数字助理至少部分地基于与语音输入相关联的上下文信息来确定搜索请求中搜索标准中的至少一些搜索标准。在从语音输入和相关联的上下文信息确定搜索标准之后,数字助理根据已经确定的搜索标准识别可预订项目,并基于所识别的可预订项目生成搜索结果。[1135]下文是另一个实例,其中使用上下文信息来推导搜索请求的搜索标准。在数字助理应用户请求执行预订过程以购买星期六在fillmore举行的所选择的音乐会的两张票时,或者在预订之后不久,用户通过对话界面提供语音输入,说“在音乐会之前我能在哪里吃饭?”响应于语音输入,并基于数字助理已经可用的上下文信息(例如,音乐会的位置和时间),数字助理在fillmore附近搜索星期六音乐会时间之前开放的餐厅。在一些实施例中,数字助理还从上下文信息(例如,正在购买的音乐会票的张数)推断餐厅搜索请求的同行人数要求,并仅呈现空闲餐桌符合同行人数要求的餐厅作为搜索结果。[1136]在一些实施例中,在接收来自用户的搜索请求之后,数字助理基于语音输入和关联的上下文信息确定需要来自用户的附加输入以进一步约束搜索,或对利用用户初始提供的搜索标准已经获得的搜索结果进行排序。例如,在用户讲“fillmore在演出什么?”时。数字助理将能够确定用户对搜索在fillmore发生的事件感兴趣。然而,如果没有更早的用户输入或指示搜索相关时间段的上下文信息,数字助理将不能提供最相关的搜索结果。在这种情形中,数字助理确定需要或希望来自用户的附加输入以进一步约束搜索。[1137]在一些实施例中,在确定需要或希望指定一个或多个附加搜索标准的附加用户输入时,数字助理通过数字助理的对话界面生成语音输出以请求附加的搜索标准。例如,数字助理可以提供语音输出,说道“好的,您对这星期的所有表演都感兴趣吗?还是仅仅是周末的?”响应于提供语音输出,数字助理通过对话界面接收来自用户的附加输入,并利用附加输入补充搜索请求。例如,如果用户说出“仅仅这个周末。”那么,数字助理导出附加的搜索标准{日期=“本周末”=即将到来的周末的实际日期范围(例如,2012年6月9日‑10日)},并利用这一附加的搜索标准补充初始搜索请求。如果用户转而说道“帮我仅找到这个星期六的表演。”数字助理导出附加的搜索标准{日期=“本星期六”=即将到来的星期六的实际日期(例如,2012年6月9日)},并利用这一附加的搜索标准补充初始搜索请求。在一些实施例中,数字助理还通过说“好的,在fillmore搜索本周末的表演”或“好的,在fillmore搜索本星期六的表演”向用户释义增强的搜索请求。[1138]在一些实施例中,数字助理可基于初始搜索请求中指定的多个搜索标准执行搜索,并获得不是同样好地符合所有搜索标准的一些初步搜索结果。在此类情形中,在一些实施例中,数字助理生成语音输入,该语音输入请求关于搜索标准相对于用户的相对重要性的附加输入。例如,如果初始搜索请求是“帕洛阿尔托浪漫的意大利餐厅”且数字助理已经在帕洛阿尔托发现了被认为浪漫的非意大利餐厅、刚好在帕洛阿尔托之外的浪漫意大利餐厅,以及可能被认为浪漫或不浪漫的帕洛阿尔托的意大利餐厅。基于初步搜索结果的混合,数字助理生成输出,该输出请求关于三条搜索标准“restaurantqualifiers=浪漫”、“restaurantcuisine=意大利”以及“restaurantlocation=帕洛阿尔托”的相对重要性的附加输入。例如,数字助理可以问用户“气氛、位置或菜系哪个更重要?”基于用户的后续输入(例如,说道“菜系和气氛”的语音输入),数字助理导出附加的约束,并根据附加的约束对搜索结果进行过滤和/或排序(例如,为菜系和气氛标准赋予更多权重)。[1139]在一些实施例中,对于每个搜索结果,数字助理呈现对应于搜索结果的可预订项目的一个或多个属性,其中每个属性对应于用于识别搜索结果的搜索标准中的一个搜索标准。例如,如果搜索请求是在音乐会之前寻找吃饭的地方,与搜索结果中每家餐厅的名称一起示出的属性可以包括餐厅和fillmore(即,音乐会的位置)之间的距离。作为另一个实例,如果搜索的是门洛帕克中的浪漫意大利餐厅,数字助理将呈现搜索结果中每家餐厅的摘录,并且在摘录中,在餐厅名称、菜系和/或顾客评论中突出显示关键词诸如“意大利的”、“意大利”、“浪漫”、“好气氛”、“托斯卡纳”等。[1140]在一些实施例中,在呈现搜索结果时,数字助理在对话界面中(例如,在会话屏)与多个搜索结果一起同时呈现一个或多个用户界面元素。该用户界面元素包括例如链接、按钮和其他交互式元素。在一些实施例中,选择用户界面元素中的一个用户界面元素导致在对话界面中呈现与搜索结果中的一个或多个搜索结果相关的附加信息。例如,评论用户界面元素导致通过对话界面呈现对所选搜索结果的更多顾客评论。或者,评论用户界面元素导致在用户设备上加载餐厅评论网站的界面,并在评论网站以其初始格式显示所选择的搜索结果的客户评论(即,选择评论用户界面元素导致评论网站退出数字助理的对话界面)。用户界面元素的其他实例包括链接和按钮,导致呈现评论、地图、预告片、可用性总结和与多个搜索结果中的一个或多个搜索结果相关联的评级。[1141]在一些实施例中,在呈现搜索结果时,数字助理还在对话界面中同时呈现一个或多个用户界面元素(例如,在会话屏上),用于调用关于搜索结果的各种后续动作。选择此类用户界面元素导致数字助理执行与搜索结果中的一个或多个搜索结果相关联的后续动作。例如,在一些实施例中,数字助理呈现用于搜索结果的呼叫按钮。在调用呼叫按钮时,导致数字助理向与搜索结果相关联的电话号码发起电话呼叫(例如,与餐厅或购票处相关联的电话号码)。在一些实施例中,数字助理为每个搜索结果呈现评论按钮。在调用评论按钮时,导致数字助理呈现与对应于搜索结果的可预订项目(例如,餐厅、电影、音乐会等)相关联的评论。在一些实施例中,该评论源自多个第三方网站或服务。在一些实施例中,数字助理为每个搜索结果呈现方向按钮。在调用方向按钮时,导致数字助理为与搜索结果相关联的地址(例如,搜索结果识别的餐厅地址)生成方向请求。响应于方向请求,可以呈现方向界面,以与搜索结果相关联的地址作为目的地。或者,可以呈现用户的当前位置和与搜索结果相关联的地址之间的路线。在一些实施例中,可以通过数字助理的对话界面呈现方向界面或路线,并且用户可以在查看方向界面或路线的同时继续与数字助理交互。在一些实施例中,数字助理为每个搜索结果呈现一个或多个预订或购买用户界面元素(例如,预订或购买按钮)。在调用预订或购买用户界面元素中的一个用户界面元素时,数字助理发起预订过程,用于预订或购买与搜索结果相关联的可预订项目(例如,餐厅的餐桌、娱乐事件的门票)。在一些实施例中,数字助理还呈现用于共享链接或保存指向搜索结果的链接的用户界面元素。[1142]如图48所示,在流程4800中,在呈现搜索结果之后,通过数字助理的对话界面接收来自用户的用于搜索结果中的特定一个搜索结果的预订请求(4830)。例如,如果逐个向用户阅读搜索结果的列表,用户可以在听到优选餐厅或音乐会之后,说“为我在这家餐厅预订两人餐桌。”或“买两张这场音乐会的票”来打断数字助理。或者,用户可以选择会话界面上呈现的搜索结果中的一个搜索结果(例如,餐厅搜索结果或事件搜索结果),并且然后向数字助理说“为我在这里预订”或“为我买星期六的票。”在一些实施例中,数字助理呈现相应的用户界面元素,用于提交针对每个搜索结果的预订请求(例如,预订或购买按钮),并且用户能够调用相应的用户界面元素以提交对搜索结果列表中所示的所选择的餐厅或娱乐事件的预订请求。[1143]在过程4800中,响应于接收到预订请求,数字助理执行预订过程以预订对应于特定搜索结果的相应可预订项目,同时维持对话界面以接收后续用户输入(4840)。在一些实施例中,数字助理执行的预订过程预订对应于提交预订请求所针对的特定搜索结果的相应餐厅的餐桌。在一些实施例中,预订过程购买或预订对应于提交预订请求所针对的特定搜索结果的相应娱乐事件的一张或多张门票。[1144]在一些实施例中,数字助理执行预订过程以通过调用与预订任务相关联的任务流来预订相应可预订项目(例如餐厅餐桌或事件的座位)。在一些实施例中,该任务流调用第三方服务(例如,餐厅的在线预订服务或电影和其他娱乐事件的在线购票服务),用于做出所请求的预订。在一些实施例中,在执行预订过程的同时,数字助理和用户继续通过对话界面就预订流程和相关事务进行通信。例如,在执行预订过程的同时,数字助理能够问用户是否对预订有任何附加的要求(例如,对于餐厅预订而言的饮食限制、同行人数、酒类偏好等,以及对于事件预订的座位偏好)。[1145]在一些实施例中,数字助理在后台执行所请求的预订,同时用户和数字助理继续就其他搜索结果和/或通过对话界面的其他不相关任务和请求进行交互。例如,在数字助理执行预订过程的同时,用户能够查看正在预订的餐厅的菜单,或通过数字助理的对话界面让数字助理搜索餐厅附近的花店。[1146]在一些实施例中,预订任务的任务流还包括根据预订生成和存储提醒或日历条目。例如,在数字助理成功预订餐厅之后或购买事件门票之后,数字助理根据预订的日期、时间和/或位置为预订生成提醒或日历条目。在一些实施例中,数字助理有权访问用户的电子日历,并直接向用户的日历中插入提醒或日历条目。在一些实施例中,数字助理向第三方服务例如在线日历服务发送请求,以在用户的日历中插入提醒或日历条目。在一些实施例中,数字助理在为用户创建提醒或日历条目之前通过对话界面请求用户的许可。[1147]在一些实施例中,预订任务的任务流还包括根据预订生成对另一用户的邀请。例如,在一些实施例中,如果预订针对超过一个人(例如,在餐厅预订两人或更多个人的餐桌,或购买事件的两张或更多张门票),数字助理确定将邀请在餐厅加入进餐或与用户一起参加娱乐事件的人的身份。一旦确定了那些其他人的身份,数字助理就生成对那些人的邀请。[1148]在一些实施例中,数字助理基于在进行预订的对话会话期间所收集的上下文信息来确定进餐或事件的受邀者的身份。例如,如果用户说过“为我和我妈妈在这家餐厅进行预订。”数字助理能够基于用户的地址簿中的用户联系人来确定用户妈妈的身份和联系信息。在一些实施例中,数字助理能够辅助生成邀请并提示用户提供一个或多个受邀者的必要联系信息。[1149]在各种实施例中可以组合上文相对于图48提供的特征。此外,特征未必限于餐厅搜索或娱乐事件搜索。其他适用领域包括例如搜索产品、拍卖品、事件地点等。图49和图50分别提供了与餐厅搜索和娱乐事件搜索相关的特征的更多细节。可以将相对于图48描述的特征与相对于图49和图50描述的特征,以及在说明书其他章节中阐述的其他特征组合。[1150]图49是示出了根据一些实施例用于利用数字助理执行餐厅搜索的方法的流程图。如图49所示,在流程4900中,数字助理通过数字助理的对话界面接收来自用户的语音输入(4910)。数字助理确定与语音输入相关联的上下文信息,该上下文信息包括用户和数字助理通过对话界面的至少一次先前交互(4920)。在一些实施例中,上下文信息包括从先前通过对话界面接收的一个或多个语音输入中提取的信息。数字助理处理语音输入以确定一个或多个餐厅搜索标准,其中处理包括基于上下文信息消除语音输入的至少一部分语音输入的歧义(4930)。在根据餐厅搜索标准执行搜索之后,数字助理通过对话界面向用户呈现搜索结果,其中每个搜索结果对应于根据餐厅搜索标准识别的相应餐厅(4940)。[1151]例如,假设用户在特定对话会话期间通过数字助理购买了特定电影的票。之后,用户通过提供语音输入“看完电影我们能够在哪里吃饭?”让数字助理寻找电影院附近的餐厅。在此类情形中,数字助理使用先前用户交互(例如,购买电影票)提供的上下文来确定用户在语音输入中指的是哪部电影。在确定用户指的是用户刚刚购票的特定电影之后,数字助理能够确定与该电影相关联的日期、时间和位置。数字助理然后使用所确定的日期、时间和位置作为新接收的搜索请求(例如,餐厅搜索请求)的搜索标准。换言之,无需要求用户明确重复电影的名称、日期、时间和位置,数字助理处理用户的语音输入,并利用上下文信息包括数字助理与用户之间的先前用户交互来为新接收的餐厅搜索请求确定适当的搜索标准。[1152]在一些实施例中,数字助理连同关联的上下文信息一起处理来自用户的语音输入,以确定是否需要附加的输入来澄清搜索请求,以进一步约束搜索和/或对搜索请求中指定的各搜索标准的相对重要性进行排序。如果数字助理确定需要或希望此类附加输入,数字助理生成语音输出或文本提示,以请求此类附加输入。[1153]在一些实施例中,数字助理通过对话界面提供语音输出,该语音输出为餐厅搜索请求请求至少一个附加的搜索标准。响应于提供语音输出,数字助理通过对话界面接收来自用户的附加输入(例如,对数字助理的请求作出响应的语音输入)。数字助理处理该附加输入并利用附加用户输入补充餐厅搜索请求。[1154]在一些实施例中,数字助理还提供语音输入,该语音输入请求用户指定多个搜索标准之间的相对重要性。一旦数字助理接收到指定多个搜索标准之间相对重要性的附加用户输入,数字助理就基于附加用户输入对搜索结果进行排序和/或过滤。[1155]在一些实施例中,数字助理接收来自用户的语音输入,并处理语音输入和关联的上下文信息,以识别对餐厅搜索请求的同行人数要求。例如,在用户说“我希望邀请我父母星期六晚上好好吃一顿,请帮我找一家好餐厅。”基于这一语音输入,数字助理能够针对餐厅搜索请求推断出同行人数要求为三(3)人,即用户和用户的父母。[1156]在以上实例中,数字助理从用户的语音输入直接推断出同行人数要求。在另一个实例中,如果用户刚刚通过数字助理购买了两张电影票,并且然后问数字助理,“在看电影之前在哪里能吃饭?”基于与语音输入相关联的上下文信息(即,购买电影票),数字助理推断语音输入中提到的电影是已购买电影票的同一电影。此外,基于已经购买两张电影票的事实,数字助理针对餐厅搜索请求推断同行人数为二(2)人(即,去看电影的两人)。在一些实施例中,数字助理生成语音输出,该语音输出请求用户为餐厅搜索提供同行人数要求,并响应于数字助理的请求从用户的附加输入获得同行人数要求。[1157]在一些实施例中,在数字助理为餐厅搜索请求确定同行人数要求之后,数字助理识别均具有符合同行人数要求的至少一个空闲餐桌的一家或多家餐厅。在一些实施例中,数字助理向一个或多个第三方信息源(例如,在线餐厅搜索和预订服务)提交同行人数要求连同餐厅搜索请求的一个或多个其他搜索标准,并请求第三方信息源仅提供符合同行人数要求的餐厅。在一些实施例中,数字助理请求至少满足搜索标准最小集合的餐厅的可用性信息,并仅选择具有符合同行人数要求的至少一个空闲餐桌的餐厅作为潜在搜索结果。[1158]在一些实施例中,在识别出符合同行人数要求(以及其他搜索标准)的餐厅之后,数字助理基于所识别的餐厅生成搜索结果。在一些实施例中,每个搜索结果呈现关于相应餐厅的信息,以及关于餐厅的可用性信息。例如,如果用户的餐厅搜索请求未指定餐厅搜索的日期和时间,搜索结果任选地呈现可用性(即,空闲餐桌)符合餐厅搜索请求的同行人数要求的一个或多个日期和一个或多个位置。[1159]在一些实施例中,在向用户呈现搜索结果之前,数字助理基于从多个第三方信息服务所收集的信息来对搜索结果进行排序。例如,在一些实施例中,数字助理编译来自多个在线源的候选餐厅的评论,并协调评论以及来自不同在线源的评级之间的差异。在一些实施例中,数字助理还去除重复信息和/或集成可从不同在线源获得的关于相同候选餐厅的信息不同方面。然后,在协调和集成来自多个在线源关于候选餐厅的信息之后,数字助理基于集成和协调的信息生成搜索结果并进行排序。在本说明书的更早章节中提供了如何集成和协调来自多个源的信息的更多细节。[1160]在一些实施例中,数字助理根据餐厅搜索请求识别多家餐厅,并针对多家餐厅中的每家餐厅的相应空闲预订位置进行保留。例如,如果用户在餐厅搜索请求中指定了同行人数要求,或者如果数字助理基于上下文信息(例如,先前的用户输入、先前的用户交互或默认的用户偏好等)推断出同行人数要求,数字助理预订满足同行人数要求的餐厅预订位置(或空闲餐桌)。在一些实施例中,通过第三方在线餐厅预订服务的应用程序界面(api)进行保留。在一些实施例中,自动保留已经被确定满足餐厅搜索请求的所有搜索标准的每家餐厅。在一些实施例中,在用户(例如,通过实时输入或通过先前保存的用户偏好)提供肯定这样做的指令之前,不对仅满足餐厅搜索请求的搜索标准中的一些搜索标准的餐厅进行保留。在一些实施例中,如果不执行任何后续预订过程以将保留转换成实际预订,则在预先确定的时间段之后自动释放保留。[1161]在一些实施例中,在通过数字助理的对话界面向用户呈现搜索结果之后,数字助理通过数字助理的对话界面接收来自用户的针对搜索结果中的一个搜索结果的预订请求。响应于接收到预订请求,数字助理执行预订过程以为对应于搜索结果的相应餐厅进行预订。相对于图48和本说明书的更早章节提供了数字助理如何接收预订请求并执行预订过程的更多细节。[1162]在一些实施例中,数字助理通过数字助理的对话界面接收来自用户的针对搜索结果中的一个搜索结果的预订请求。响应于接收到预订请求,如果针对对应于搜索结果的餐厅进行了保留,数字助理将为相应餐厅进行的保留转换成预订。在将保留成功转换成预订之后,数字助理释放对未预订的其他餐厅的保留。在一些实施例中,数字助理在实际进行预订之前请求用户确认。在一些实施例中,无需同行人数要求就进行保留,并且在用户让数字助理将保留转换成实际预订时,数字助理从用户请求同行人数要求。[1163]在一些实施例中,在向用户呈现搜索结果时,数字助理每次都通过对话界面同时呈现预先确定数量的搜索结果。例如,数字助理向用户同时提供不超过五个结果(例如,3‑5个结果)。在一些实施例中,仅在用户请求查看更多结果时才向用户呈现更多结果。通过将同时呈现的搜索结果数量限制到小数量(例如,3‑5个),数字助理能够减轻用户查看结果时给用户带来的认知负担。[1164]在一些实施例中,对于搜索结果中的每个搜索结果,数字助理呈现对应于搜索结果的相应餐厅的一个或多个属性,其中每个属性对应于用于识别多个搜索结果的相应餐厅搜索标准。例如,如果使用距特定位置的距离作为餐厅搜索的搜索标准,则对于每个搜索结果,可以为搜索结果呈现特定位置和对应于搜索结果的相应餐厅之间的距离。在将其用作餐厅搜索标准时,也可以为每个搜索结果呈现其他属性,诸如菜系(例如法国、意大利、比萨、素食、美国、汉堡包、加利福尼亚等)、气氛(例如浪漫、很好、新潮、酷、干净、好等)、价格(例如贵、$$$、便宜等)、人气(例如评论数量、存在年数、好评数量、差评数量等)。[1165]在一些实施例中,数字助理在对话界面中(例如,会话屏上)与多个搜索结果一起同时呈现一个或多个用户界面元素(例如,评论标签、地图按钮、评级链接等),其中选择用户界面元素导致呈现与对应于所选择的搜索结果的相应餐厅相关联的评论、地图或评级。[1166]在一些实施例中,数字助理在对话界面中(例如,在会话屏上)与多个搜索结果一起同时呈现一个或多个用户界面元素(例如,呼叫按钮、评论提交按钮或链接、链接保存按钮、链接共享按钮、方向请求按钮、预订按钮等)。选择用户界面元素导致相对于对应于所选择的搜索结果的相应餐厅的以下后续动作:向第三方发起电话呼叫、提交评论、保存链接、共享链接、请求方向或进行预订。[1167]图50是示出了根据一些实施例用于利用数字助理为娱乐相关请求提供辅助的方法的流程图。如图50所示,在流程5000中,数字助理通过数字助理的对话界面接收来自用户的语音输入(5010)。数字助理然后确定与语音输入相关联的上下文信息(5020)。数字助理处理语音输入以确定一个或多个娱乐搜索标准,其中该处理包括利用上下文信息补充语音输入和/或消除语音输入的歧义,以确定娱乐搜索标准中的至少一个娱乐搜索标准(5030)。在一些实施例中,数字助理通过对话界面向用户呈现搜索结果,其中每个搜索结果对应于根据一个或多个娱乐搜索标准识别的相应娱乐事件(5040)。[1168]在一些实施例中,补充语音输入包括确定在语音输入中未指出或提到的搜索标准。例如,在语音输入未提到任何位置时,可以使用上下文信息来提供位置搜索标准。在一些实施例中,消除语音输入的歧义包括确定语音输入包括具有多个合理解释的术语,基于与语音输入相关联的上下文信息选择多个合理解释中的一个合理解释,以及基于所选择的解释生成搜索标准。[1169]在一些实施例中,与语音输入相关联的上下文信息包括用户和数字助理通过对话界面的至少一次先前交互。在一些实施例中,上下文信息包括一个或多个应用中存储的信息,诸如日历应用、电子邮件应用、即时消息应用和地址簿应用。例如,如果用户在语音输入中提到名称或安排的约会,数字助理能够通过经适当应用访问用户的地址簿或日历来获得关于与该名称或关于所安排约会的信息相关联的一个或多个人的更多信息。[1170]在一些实施例中,上下文信息包括当前位置、当前时间和当前或预报的天气信息中的一者或多者。在一些实施例中,上下文信息包括从先前通过对话界面接收的一个或多个语音输入中提取的信息。在一些实施例中,上下文信息包括从先前通过对话界面接收的一个或多个非口头输入提取的信息。例如,非口头输入包括通过耦合到用户设备的各种输入设备从用户接收的文本输入、指针输入和手势输入。[1171]在一些实施例中,数字助理在对话界面中与搜索结果同时呈现一个或多个用户界面元素。在一些实施例中,用户界面元素中的一个用户界面元素用于下载并播放与对应的娱乐事件搜索结果相关联的媒体文件。例如,在用于电影搜索的搜索结果中,可以为每个电影搜索结果呈现相应的预告片按钮。选择预告片按钮将导致在用户设备上下载并播放电影预告片。在一些实施例中,还为每个搜索结果提供用于呈现评论、放映时间和做预订的用户界面元素。[1172]在一些实施例中,在数字助理通过对话界面向用户提供搜索结果之后,数字助理继续通过对话界面与用户通信。例如,数字助理能够接收来自用户的用于请求附加信息的后续语音输入。请求的附加信息可以涉及先前通过对话界面(例如,通过数字助理的语音输出和/或在会话屏上呈现)呈现的搜索结果中的一个或多个搜索结果或当前在会话屏上呈现的一个或多个搜索结果。例如,在数字助理通过对话界面基于用户的初始搜索请求呈现若干电影搜索结果之后,用户能够提供后续语音输入,该后续语音输入请求关于电影搜索结果中的一个或多个电影搜索结果的附加信息,说道“这一主题还有其他电影吗?”或“为我展示同一导演的一些其他电影。”或“仅为我展示b+评级的电影。”作为另一个实例,在用户看过针对电影搜索结果中的一个电影搜索结果的预告片之后,用户可以通过说“同一女演员还演过其他电影吗?”来提供后续语音输入。[1173]在一些实施例中,响应于接收到后续语音输入,数字助理消除后续语音输入的至少一部分后续语音输入的歧义以生成搜索查询,用于检索所请求的附加信息,其中消除歧义至少部分地基于与对应于搜索结果的相应娱乐事件相关的一个或多个属性。例如,假设用户选择了电影搜索结果中的一个电影搜索结果,并提供了后续语音输入“同一导演还执导过其他电影吗?”响应于后续语音输入,数字助理识别对应于所选择搜索结果的电影,并确定与电影相关联的相关属性,即电影的导演。基于相关属性(例如,电影导演的身份),数字助理消除用户后续语音输入的歧义,并生成搜索查询,用于检索由所识别导演执导的电影。[1174]在一些实施例中,数字助理基于搜索查询来检索所请求的附加信息,并通过数字助理的对话界面向用户呈现信息。继续以上实例,一旦数字助理检索到由所识别导演执导的电影的搜索结果,数字助理就通过对话界面向用户呈现新检索的搜索结果。用户和数字助理可以继续通过对话界面就新检索的搜索结果、更早呈现的搜索结果和/或新搜索请求彼此交互。[1175]在一些实施例中,在接收语音输入的对话会话期间,数字助理基于通过对话界面接收的用户输入以及通过对话界面向用户提供的信息来维持对话上下文。对话会话包括在用户和数字助理之间交换语音输入和输出。在一些实施例中,对话会话还包括通过其他形态交换的请求和响应,诸如由数字助理提供的文本提示和由用户提供的文本响应,以及数字助理提供的通知或警示以及为通知和警示寻址的用户输入。[1176]可以通过各种方式定义对话会话。在一些实施例中,由预先确定的持续时间,例如,几分钟、几十分钟、一小时、一天、几天或甚至更长的时间段来定义对话会话。有利的是将对话会话保持在合理长度之内,例如少于一小时,从而维持上下文信息不会占用过多的计算资源。此外,用户更可能向回参考最近在对话中提到的项目,并因此并非特别必要定义非常长的对话会话。[1177]在一些实施例中,将对话会话定义为数字助理和用户之间连续或断续的交互,没有超过预先确定的持续时间(例如2分钟或5分钟)的中断。例如,用户能够在一段时间内连续与数字助理交互,退出数字助理的会话屏以访问另一个应用,并然后恢复与数字助理的交互。在该实例中,只要在维持对话会话所需的预先确定的持续时间到期之前用户恢复与数字助理的交互,对话会话就持续,并连续维持与对话会话相关联的对话上下文。[1178]在一些实施例中,由开始触发事件和结束触发事件定义对话会话。例如,用户能够按下按钮或讲出触发短语以调用数字助理的主动倾听并开始对话会话。在对话会话期间与数字助理交互之后,用户可以按下按钮或讲出另一触发短语以结束对话会话。定义对话会话的其他方式也是可能的。[1179]在一些实施例中,在接收初始语音输入的对话会话期间,数字助理通过对话界面接收来自用户的一个或多个附加的语音输入。数字助理基于由数字助理维持的对话上下文处理一个或多个附加语音输入中的每个附加语音输入,以确定附加语音输入中表达的用户意图。在一些实施例中,处理附加语音输入包括基于对话上下文补充附加语音输入和/或消除附加语音输入的歧义。在一些实施例中,数字助理响应于基于该处理的一个或多个附加语音输入中的每个附加语音输入来提供附加信息。[1180]在一些实施例中,在数字助理呈现娱乐搜索结果(例如,电影搜索结果或音乐会搜索结果)之后,数字助理通过数字助理的对话界面接收来自用户的针对搜索结果中的一个或多个搜索结果的预订请求。响应于接收到预订请求,数字助理执行预订过程以为对应于一个或多个搜索结果的相应娱乐事件购买一张或多张票。[1181]在一些实施例中,数字助理在后台执行预订过程,同时数字助理和用户继续通过对话界面进行交互。在一些实施例中,在预订过程期间,数字助理与用户通过数字助理的对话界面就预订的各种偏好(例如)和附加信息(例如,信用卡信息、支付授权等)进行通信。在一些实施例中,数字助理加载第三方在线预订服务的界面,并允许用户通过第三方在线预订服务的界面直接进行预订。[1182]在一些实施例中,在接收初始语音输入(例如,发起娱乐搜索请求的语音输入)的对话会话期间,数字助理在搜索结果的呈现响应于后续用户输入而被其他信息替代之后,通过数字助理的对话界面来接收预订请求。响应于预订请求,数字助理基于对话上下文确定预订请求的目标娱乐事件,其中目标娱乐事件对应于先前呈现的搜索结果中的一个搜索结果。一旦确定了目标娱乐事件,数字助理就执行预订过程以为确定的目标娱乐事件购买一张或多张票。以下实例例示了这个过程。[1183]假设用户利用初始语音输入“这个星期六演什么电影?”请求了电影搜索。在数字助理通过对话界面呈现这个星期六上映的电影列表之后,用户要求观看电影结果中一些电影结果的预告片。作为响应,数字助理向用户展示预告片,并因此利用预告片替代了先前在屏幕上呈现的电影列表。在数字助理与用户就电影搜索、电影搜索结果和预告片进行交互的同时,数字助理维持与当前对话会话相关的对话上下文。在展示电影预告片之后,用户向数字助理提交预订请求,例如使用语音输入“好的,为我买一张恐龙电影的票。”基于该语音输入和当前对话会话的对话上下文,数字助理识别出用户观看过的预告片,并确定对应于那些预告片的电影。数字助理然后在与恐龙相关的那些电影中识别特定电影。一旦识别出与恐龙相关的特定电影,数字助理就针对目标娱乐事件(即,已经识别的特定恐龙电影)发起预订过程。在一些实施例中,数字助理在继续预订或购买电影票之前宣告电影的名称。[1184]图51是示出了根据一些实施例用于利用数字助理提供与特定信息域相关的信息的方法的流程图。如说明书中前面所述,可以将信息域实现为知识本体中互连节点的群集。每个信息域都与一组词汇、域实体数据、语言模式(例如,习语、短语、艺术术语、典型查询等)、域模型、任务流、服务能力模型、对话流以及与信息域相关的其他部件和数据模型相关联。例如,餐厅域包括与餐厅、食物和饮食相关联的词汇、域实体数据和语言模式;搜索餐厅、找到去餐厅的方向、为餐厅搜索呈现搜索结果、基于用户的搜索优先级对餐厅进行比较和排序以及进行餐厅预订的任务流;用于启发与餐厅搜索和预订相关的搜索标准、约束、参考,释义用户的搜索请求以及宣告餐厅搜索结果的对话流;以及在餐厅域中实施的其他流和数据模型。[1185]作为另一个实例,电影域包括与电影、演员、导演、电影院、电影历史等相关联的词汇、域实体数据和语言模式。电影域还包括与电影/演员/导演搜索、电影评级、下载和播放电影预告片、预订或购买电影票相关联的任务流、对话流以及服务能力模型,以及其他与电影相关的问题和答案。[1186]同样地,在一些实施例中,数字助理还实施体育域。体育域包括与搜索体育信息、执行与体育事件相关的任务、发送与体育相关的短消息、交换与体育相关的大事记等相关联的词汇、域实体、语言模式、任务流、对话流和服务能力模型。[1187]在一些实施例中,数字助理实施音乐域。音乐域包括与搜索音乐和音乐相关人员、事件和产品的信息、执行与音乐相关的任务(例如,购买cd、专辑、商品和/或下载媒体文件)以及购买事件门票(例如,音乐会、初次公演、专辑签售)相关联的词汇、域实体、语言模式、任务流、对话流和服务能力模型。[1188]在一些实施例中,数字助理实施娱乐域。娱乐域包括与搜索娱乐相关人员和事件的信息相关联的词汇、域实体、语言模式、任务流、对话流和服务能力模型。[1189]在一些实施例中,数字助理实施购物域。购物域包括与搜索产品并购物相关联的词汇、域实体、语言模式、任务流、对话流和服务模型。[1190]在一些实施例中,数字助理实施游戏域。购物域包括与搜索游戏信息、打游戏、游戏产品、预演、做出游戏相关购买以及交换游戏相关虚拟和现实货物、装备和属性相关联的词汇、域实体、语言模式、任务流、对话流和服务模型。[1191]在一些实施例中,每个域包括多个子域。例如,在一些实施例中,娱乐域包括电影域、体育域和音乐域。在一些实施例中,体育域包括针对不同体育的子域。在一些实施例中,音乐域包括针对不同音乐流派的子域。在一些实施例中,子域还可以包括其自己的子域,且子域可以交叠。[1192]在一些实施例中,数字助理响应于来自用户的自然语言请求,选择性地提供与信息的域相关的信息。例如,基于共同与针对数字助理实施的每个信息域的请求相关联的词汇(例如,特定关键词)、域实体(例如,公知的人和实体)和/或语言模式(例如,特定查询模板或请求模式),数字助理能够确定用户的请求可能指向特定的信息域。一旦数字助理确定可能感兴趣的域,可以将用户当前和后续请求的自然语言处理向着特定域偏置以消除人名、位置、实体和自然语言请求中表达的用户意图的歧义。[1193]例如,与体育域相关联的词汇包括不同体育、运动员、体育队、运动事件和体育事件的公知赞助商的专有名称和昵称、体育货物的商标、体育事件和比赛的地点、体育历史、不同体育和比赛的领域术语和行话等。与体育域相关联的语言模式包括关键词和短语,诸如“……比分是多少”,“正在和谁打比赛……?”“哪个队伍赢了……”,“比赛统计结果是……”等等。基于体育相关的词汇和语言模式,数字助理能够推断出用户的请求是否与体育域相关。[1194]作为另一个实例,对于音乐域而言,用户通常会询问与音乐、流派、歌曲和专辑上榜排名、歌词、专辑和特定艺术家的巡演、关于著名艺术家的新闻、最新演出等相关的问题。与音乐域相关联的词汇会包括音乐家、歌手、歌曲、流派、音乐组合等的专有名称和昵称。与音乐域相关联的语言模式包括关键词和短语,诸如“为我展示……的歌词”“那首歌的名字是……”“谁唱的这首歌……”“……最新的歌是什么”等等。基于音乐相关的词汇和语言模式,数字助理能够推断出用户的请求是否与音乐域相关。[1195]在一些实施例中,数字助理存储很多公共查询类型,该公共查询类型表示用户在特定信息域中经常询问的问题类型。例如,对于体育域而言,用户通常问关于比赛比分和运动员统计、比赛时间、队伍名册、运动员薪水、球员和/或队伍历史、以及当前体育新闻的问题。对于音乐域而言,用户通常会问关于艺术家、流派、歌词、最新演出、经典、著名歌曲、特定歌曲中公知几行等的问题。[1196]在一些实施例中,数字助理还实施与域中的名人和实体相关的公共查询类型的子域。例如,在一些实施例中,在体育域中,数字助理还实施知名运动员、体育队和体育事件相关的公共查询类型的子域,诸如“kobe相关的问题”、“giants相关的问题”、“superbowl相关的问题”等。在一些实施例中,对于音乐域而言,数字助理能够实施与知名歌手、歌曲和流派相关的常见查询类型的子域,诸如“elvis相关的问题”、“blues相关的问题”、“hip‑pop相关的问题”等。[1197]如图51所示,在流程5100中,数字助理存储与预先确定的信息域相关联的词汇、根据用于选择性地检索与预先确定的信息域相关的信息的多个预先确定的查询类型来组织的词汇(5102)。例如,在体育域中,与不同查询类型相关联地存储与体育相关的词汇,查询类型诸如是与比分相关的查询、与运动员统计信息相关的查询、与体育队相关的查询、与当前比赛或赛季相关的查询、与著名运动员x(例如tigerwoods或michaeljordan)相关的查询等等。[1198]在流程5100中,数字助理通过数字助理的对话界面接收来自用户的语音输入(5104)。数字助理确定与语音输入相关联的上下文信息(5106)。数字助理处理语音输入以确定一个或多个搜索标准,其中该处理包括利用上下文信息和与预先确定的信息域相关联的词汇来补充语音输入和/或消除语音输入的歧义(5108)。[1199]例如,如果用户的语音输入包括体育相关的词汇,一旦数字助理检测到体育相关的词汇(例如,与体育域中存储的预先确定的查询类型相关联的关键词或语言模式),数字助理就利用上下文信息和与体育域相关联的词汇来补充语音输入和/或消除语音输入的歧义。对于更详细的实例,假设用户说“今晚谁和lakers打比赛?”数字助理从这一语音输入识别出体育相关的词汇“湖人队”和体育相关的语言模式“谁与[体育队伍]打比赛……”,它们都存储于数字助理的体育域中。因此,数字助理确定用户对体育相关的信息感兴趣。数字助理还使用上下文信息(例如,当前日期)确定用户在语音输入中用字词“今晚”指的是哪天。在数字助理完全消除用户语音输入的歧义之后,数字助理继续执行搜索以检索所请求的信息。具体而言,数字助理检索当前日期晚上与lakers打比赛的队伍名称。[1200]对于更详细的实例,假设用户问道“lebron昨晚表现如何?”根据在体育域下存储的词汇(例如,包括篮球运动员的正式名称和昵称)和域实体(例如,关于球员和体育队的数据记录),数字助理识别出“lebron”是著名篮球运动员“lebronjames”的名字,并且他目前是名为“miamiheat”的nba球队的成员。基于在体育域下存储的语言模式“[球员姓名]表现如何”,数字助理还识别出用户正在问与球员比赛统计相关的问题(即,在体育域下存储的预先确定的查询类型)。在数字助理识别出用户希望知道特定队伍的篮球运动员的比赛统计时,数字助理使用上下文信息(例如当前日期)确定miamiheat前一天打的哪场比赛,并继续检索那场比赛lebronjames的比赛统计。[1201]如上述实例所示,在流程5100中,数字助理根据一个或多个搜索标准(例如,{查询类型=球员的比赛统计,球员姓名=lebronjames,球队=miamiheat,比赛日期=昨天=例如2012年6月8日})检索与预先确定的信息域(例如,体育域)相关的信息(5110)。在基于搜索标准来检索信息之后,数字助理通过数字助理的对话界面向用户呈现检索的信息(5112)。例如,数字助理能够向用户产生语音输出,说道“勒布朗昨晚表现很好,30分,8个篮板球,2次助攻。”[1202]在一些实施例中,在数字助理确定用户对特定信息域感兴趣之后(例如,在数字助理已经令人满意地回答了用户关于体育域的问题之后),数字助理能够继续与用户进行体育域之内的会话。在一些实施例中,数字助理通过维持会话的对话上下文继续进行会话(例如,继续问答)。对话上下文跟踪用户在什么时间和/或按什么顺序问过和接收过什么信息。[1203]例如,在一些实施例中,在接收语音输入(例如,与特定信息域相关的初始用户问题)的对话会话期间,数字助理基于通过对话界面接收的用户输入以及通过对话界面向用户提供的信息来维持对话上下文。然后,在同一对话会话期间,数字助理通过对话界面接收来自用户的一个或多个附加的语音输入。数字助理基于对话上下文处理一个或多个附加语音输入中的每个附加语音输入,以确定附加语音输入中表达的用户意图。在一些实施例中,处理包括基于对话上下文补充附加语音输入和/或消除附加语音输入的歧义。然后,基于该处理,数字助理响应于一个或多个附加语音输入中的每个附加语音输入来提供附加信息。[1204]继续以上与体育相关的实例,在用户询问lebronjames的比赛统计的对话会话期间,数字助理维持对话上下文并跟踪用户问过什么,以及什么时间和/或按什么顺序向用户提供过什么信息。假设在听到lebron的比赛统计之后,用户通过附加的语音输入“kobe怎么样?”询问另一个问题。基于这一语音输入,数字助理能够识别“kobe”也是指篮球队员。基于数字助理存储的对话上下文,数字助理确定用户刚问过并接收到关于另一名篮球队员“lebronjames”的比赛统计的回答。因此,数字助理将用户的问题“kobe怎么样”解释为请求kobebryant的比赛统计。在一些实施方式中,数字助理如前所执行的执行用于检索球员比赛统计的任务流,只是用不同的球员姓名“kobebryant”替代球员姓名“lebronjames”。一旦数字助理检索了kobebryant昨晚的球员比赛统计,并且数字助理通过语音输出“kobe昨晚也不错,30分,4个篮板球,和4次助攻”,通过对话界面向用户呈现比赛统计。[1205]在一些实施例中,对于一些查询类型,数字助理实施对话流,用于为用户提供与用户当前问题相关的附加信息。例如,在数字助理提供了关于特定球员的比赛统计信息之后,数字助理能够展示球员得分的比赛视频剪辑。例如,在数字助理为用户提供kobe昨晚的比赛统计之后,数字助理能够询问用户“您希望看比赛的视频剪辑吗?”如果用户接受,数字助理继续播放kobe得分的昨晚比赛的视频剪辑。[1206]假设在数字助理向用户提供kobe的比赛统计之后,或在向用户展示视频剪辑之后,数字助理和用户之间的会话继续。例如,用户然后问“那么,谁挣的钱更多?”数字助理识别用户的输入匹配与体育域下存储的查询类型“球员薪水”相关联的语言模式(例如,“挣……钱”)。基于针对当前对话会话存储的对话上下文,数字助理确定在用户和数字助理之间最新的交换中提到过两名篮球队员(例如lebronjames和kobebryant)。基于对话上下文,数字助理消除用户输入的歧义,并将用户的输入解释为关于两名篮球队员薪水的问题,并且尤其是两名篮球队员薪水之间的比较。在数字助理确定用户意图之后,数字助理继续检索两名球员的薪水信息,并编写比较两名球员薪水的输出。例如,数字助理能够提供语音输出“基于我的来源,kobe2011年薪水是x美元,并且lebron2011年薪水是y美元。”[1207]在一些实施例中,数字助理实施对话流以提供关于用户可能对什么感兴趣的附加相关信息。例如,在与球员薪水相关查询相关联的对话流中,数字助理能够提供关于球员产品赞助的信息,并处理赞助的产品。例如,基于该对话流,并非是对用户关于球员薪水的问题的简明答案,数字助理提供语音输出,“基于我的来源,kobe2011年薪水为x美元,并且lebron2011年薪水为y美元。kobe和lebron都对慈善有贡献。您想加入他们支持“after‑schoolall‑stars”吗,这是一家全国性儿童慈善活动,为内城区儿童提供放学后的课外活动。”如果用户做出肯定回答,数字助理调用适当的任务流以为用户发起捐献过程。[1208]在一些实施例中,如果数字助理不能向用户的初始问题提供满意的回答,数字助理实施对话流以提供用户可能感兴趣的相关信息。例如,如果用户问数字助理“谁是更好的球员?”数字助理确定不能向这个复杂问题提供满意的答案。因此,数字助理提供输出,说道“这是一个难题。但是您知道kobe和lebron都喜欢上tweet吗?但lebron在twittertm上的粉丝多四倍。”[1209]尽管在体育域的上下文中提供了以上实例,但可以通过类似方式实施用于其他域的词汇、任务流、对话流。例如,数字助理还可以实施娱乐域以回答用户关于名人和娱乐业的问题;实施旅行域以回答用户关于旅行、观光以及国内外文化的问题;实施游戏域以回答用户关于游戏、游戏配件、预演、竞赛等问题。其他域也是可能的。[1210]已经相对于可能的实施例详细描述了本发明。本领域的技术人员应当理解,可以在其他实施例中实践本发明。首先,部件的特定命名、术语的大写、属性、数据结构或任何其他编程或结构方面不是强制性的或重要的,并且实施本发明或其特征的机构可以具有不同的名称、格式或协议。此外,可以通过如上所述的硬件和软件的组合或整个在硬件元件中或整个在软件元件中实施该系统。而且,本文描述的在各种系统部件之间特别划分功能仅仅是示例性的,并非强制性的;由单个系统部件执行的功能可以转而由多个部件执行,并且由多个部件执行的功能可以转而由单个部件执行。[1211]在各种实施例中,可以将本发明实现为一种用于单独或以任意组合执行上述技术的系统或方法。在另一个实施例中,可以将本发明实现为包括非暂态计算机可读存储介质和计算机程序代码的计算机程序产品,计算机程序代码编写在介质上,用于使得计算设备或其他电子设备中的处理器执行上述技术。[1212]本说明书中提到的“一个实施例”或“实施例”是指,结合实施例所描述的特定特征、结构或特性可包括在本发明的至少一个实施例中。在本说明书中的不同位置出现短语“在一个实施例中”不一定都是指同一个实施例。[1213]已按照对计算设备存储器内的数据位进行操作的算法和符号表示来呈现前面的一些部分。这些算法描述和表示是数据处理领域的技术人员所使用的装置,而这些装置也能最有效地将其工作实质传达给该领域的其他技术人员。算法在本文一般是指导致所希望的结果的步骤(指令)的自相一致的序列。步骤是那些需要对物理量进行物理操纵的步骤。通常,尽管不是必须的,但这些量采用能够被存储、传送、组合、比较以及以其他方式操纵的电信号、磁信号或光信号的形式。其在主要出于通用原因而将这些信号指代为位、值、元素、符号、字符、项、数字等时是方便的。此外,有时将需要物理操控物理量的步骤的特定布置称为模块或代码设备也是方便而不失一般性的。[1214]然而,应当牢记的是,所有这些以及类似的术语都与适当的物理量相关联,并且只是应用于这些量的方便标签。除非另外特别说明,否则从下面论述中显而易见的是,应当理解,在整个说明书中,使用术语诸如“处理”或“运算”或“计算”或“显示”或“确定”等的论述是指计算机系统或类似的电子计算模块和/或设备的操作和流程,其可将计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备中表示为物理(电子)量的数据进行操控和转换。[1215]本发明的特定方面包括本文以算法形式描述的过程步骤和指令。应当指出,可以在软件、固件和/或硬件中实现本发明的过程步骤和指令,并且在实现于软件中时,可以下载其以驻留于由各种操作系统使用的不同平台上或从其加以操作。[1216]本发明还涉及一种用于执行本文所述的操作的装置。该装置可专门构造用于所需目的,或者可包括由存储在计算设备中的计算机程序选择性地激活或重新配置的通用计算设备。此类计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的盘,包括软盘、光盘、cd‑rom、磁光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡、专用集成电路(asic),或适合用于存储电子指令的任何类型的介质,并且每个均耦接到计算机系统总线。此外,本文所称的计算设备可以包括单个处理器或者可以是采用多个处理器设计以提高计算能力的架构。[1217]本文中所呈现的算法和显示并不固有地与任何特定计算设备、虚拟化系统或其他装置相关。根据本文的教导内容,各种通用系统还可以与程序一起使用,或者可以证明其便于构造用于执行所需方法步骤的更专用的装置。根据本文的描述,用于各种这些系统的所需结构将是显而易见的。此外,本发明未参照任何特定的编程语言进行描述。应当理解,可以使用多种编程语言实现本文所述的本发明的教导内容,并且上文提到的任何具体语言都是为了公开本发明的实现和最优模式而提供的。[1218]因此,在各种实施例中,可以将本发明实现为软件、硬件和/或其他元件,用于控制计算机系统、计算设备或其他计算设备或它们的任意组合或多个。根据现有技术中公知的技术,此类电子设备可以包括,例如处理器、输入设备(诸如键盘、鼠标、触控板、跟踪板、操纵杆、轨迹球、麦克风和/或它们的任意组合)、输出设备(诸如屏幕、扬声器等)、存储器、长期存储器(诸如磁存储装置、光存储装置等)和/或网络连接。此类电子设备可以是便携式或非便携式的。可以用于实施本发明的电子设备的实例包括:移动电话、个人数字助理、智能电话、信息亭、台式计算机、膝上型计算机、平板电脑、消费电子设备、消费娱乐设备、音乐播放器、相机、电视、机顶盒、电子游戏设备等。用于实施本发明的电子设备可以使用任何操作系统,诸如例如可购自appleinc.(cupertino,california)的ios或macos,或适用于该设备上的任何其他操作系统。[1219]尽管已经相对于有限数量的实施例描述了本发明,但本领域的技术人员受益于以上描述,将理解可以设计出不脱离本文所述的本发明范围的如上所述的其他实施例。此外,需注意,出于可读性和教育目的,在原则上选择了本说明书中使用的语言,并且可以不这样选择以描绘或界定本发明的主题。因此,本发明的公开意在例示而非限制在权利要求书中阐述的本发明的范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1