CN117396837A - 助理系统的多设备调解 - Google Patents

助理系统的多设备调解 Download PDF

Info

Publication number
CN117396837A
CN117396837A CN202280030466.9A CN202280030466A CN117396837A CN 117396837 A CN117396837 A CN 117396837A CN 202280030466 A CN202280030466 A CN 202280030466A CN 117396837 A CN117396837 A CN 117396837A
Authority
CN
China
Prior art keywords
user
client
particular embodiments
client system
assistant
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280030466.9A
Other languages
English (en)
Inventor
克里斯托夫·查兰德
左正平
罗欣·达巴斯
崔振华
伊恩·格雷夫斯
普拉莫德·古鲁纳特
劳埃德·希莱尔
克里希纳·柴坦尼亚·戈皮塞蒂·斯里尼瓦斯
陈元汇
迈克尔·罗伯特·汉森
刘白杨
刘洪磊
阿列克谢·根纳季耶维奇·苏尔科夫
艾哈迈德·马格迪·哈米德·穆罕默德
阿里雷扎·迪拉夫松
艾米·劳森·贝尔曼
普一鸣
刘冰
克里斯托弗·德保利
克里斯托弗·E·巴尔梅斯
丹尼尔·约翰·威格多
丹尼斯·萨文科夫
埃里克·罗伯特·诺瑟普
加布里埃尔·凯瑟琳·莫斯基
加内什·文卡特什
周浩
许虎
伊拉娜·奥利·沙洛维茨
杰克逊·拉辛
约翰·雅各布·布莱克利
杰里米·吉尔莫·卡恩
杰西卡·基钦斯
李季航
于劲松
约书亚·文森特
贾斯汀·丹尼
凯尔·阿奇
莱夫·黑文·马丁森
马克·帕伦特
马修·丹·费兹利
梅加·琼琼瓦拉
梅加·蒂瓦里
迈克尔·格鲁克
尼古拉斯·豪尔赫·弗洛雷斯
皮尤什·卡姆卡
普加·塞西
文胜焕
斯蒂芬妮·桑托萨
斯瓦蒂·戈尔
甘鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Meta Platforms Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/336,716 external-priority patent/US20220358917A1/en
Application filed by Meta Platforms Inc filed Critical Meta Platforms Inc
Publication of CN117396837A publication Critical patent/CN117396837A/zh
Pending legal-status Critical Current

Links

Abstract

在一个实施例中,一种方法包括:接收来自第一用户的语音请求,该第一用户想要激活多个客户端系统中的特定客户端系统,该多个客户端系统处于该第一用户的收听范围内;访问与该语音请求相关联的多个信号,这些信号来自该多个客户端系统中的各个客户端系统;基于所访问的信号将该多个客户端系统中的第一客户端系统识别为该第一用户想要激活的特定客户端系统;以及指示该第一客户端系统提供来自助理系统的、响应于该语音请求的响应。

Description

助理系统的多设备调解
技术领域
本公开总体上涉及网络环境内的数据库和文件管理,并且尤其涉及用于智能助理系统的硬件和软件。
背景技术
助理系统可以基于以下各项的组合来代表用户提供信息或服务:用户输入、位置感知和从各种在线来源访问信息(例如天气状况、交通堵塞、新闻、股票价格、用户日程、零售价格等)的能力。用户输入可以包括(尤其是在即时消息收发应用或其他应用中的)文本(例如,在线聊天)、语音、图像、动作或它们的组合。助理系统可以基于用户输入来执行礼宾型(concierge-type)服务(例如,预订晚餐、购买活动门票、做出旅行安排)或提供信息。助理系统还可以在无需用户发起或交互的情况下,基于在线信息和活动来执行管理任务或数据处理任务。可由助理系统执行的那些任务的示例可以包括日程管理(例如,发送对用户因交通状况而推迟晚餐日期的提示、更新双方的日程、以及更改餐厅预订时间)。助理系统可以通过以下项的组合来实现:计算设备、应用编程接口(application programminginterface,API)和用户设备上的大量应用。
可包括社交网络网站的社交网络系统可以使其用户(例如个人或组织)能够与该社交网络系统交互、并通过该社交网络系统彼此交互。社交网络系统可以使用来自用户的输入,在社交网络系统中创建和存储与用户相关联的用户资料。用户资料可以包括人口统计信息、通信信道信息和关于用户个人兴趣的信息。社交网络系统还可以利用来自用户的输入,创建和存储用户与社交网络系统中的其他用户的关系的记录,以及提供用于促进各用户之间或各用户之中的社交互动的服务(例如,资料/新闻推送帖子、照片共享、活动组织、消息收发、游戏或广告)。
社交网络系统可以通过一个或多个网络向用户的移动设备或其他计算设备发送与该社交网络系统的服务相关的内容或消息。用户还可以在用户的移动设备或其他计算设备上安装软件应用,以用于访问用户的用户资料和社交网络系统内的其他数据。社交网络系统可以生成一组个性化的内容对象(例如连接到用户的其他用户的综合报道的新闻推送)以显示给用户。
发明内容
根据本公开的第一方面,提供了一种方法,该方法包括:由与多个客户端系统相关联的助理系统:接收来自第一用户的语音请求,其中,该第一用户想要激活该多个客户端系统中的特定客户端系统,并且其中,该多个客户端系统处于该第一用户的收听范围内;访问与该语音请求相关联的多个信号,该多个信号来自该多个客户端系统中的各个客户端系统;基于所访问的该多个信号,将该多个客户端系统中的第一客户端系统识别为该第一用户想要激活的特定客户端系统;以及指示该第一客户端系统提供来自该助理系统的、响应于该语音请求的响应。
在一些实施例中,该方法还包括:基于该语音请求确定与该第一用户相关联的意图;其中,将该第一客户端系统识别为该第一用户想要激活的特定客户端系统还基于所确定的该意图。
在一些实施例中,该方法还包括:确定与该意图相对应的任务;确定该多个客户端系统中的每一个客户端系统的设备能力;以及基于该任务和相应客户端系统的设备能力,计算该多个客户端系统中的每个客户端系统的匹配分数,其中,该第一客户端系统与排序第一的匹配分数相关联。
在一些实施例中,将该第一客户端系统识别为该第一用户想要激活的特定客户端系统还基于一个或多个任务策略。
在一些实施例中,该方法还包括:基于来自该多个客户端系统中的各个客户端系统的该多个信号,分别计算与该多个客户端系统相关联的多个置信度分数;以及基于该多个客户端系统的各自置信度分数对该多个客户端系统进行排序;其中,该第一客户端系统是该多个客户端系统中排序第一的客户端系统。
在一些实施例中,该方法还包括:生成跨该多个客户端系统的网状网络,其中,该多个客户端系统处于彼此的无线通信范围内。
在一些实施例中,该助理系统在该多个客户端系统中的一个或多个客户端系统上运行,并且其中,该方法还包括:通过该网状网络,在该多个客户端系统之间分发来自该多个客户端系统中的各个客户端系统的多个信号。
在一些实施例中,该方法还包括:比较在该多个客户端系统之间分发的信号,其中,将该第一客户端系统识别为该第一用户想要激活的特定客户端系统还基于该比较。
在一些实施例中,该网状网络是基于以下中的一者或多者来生成的:公钥、私钥或通信协议。
在一些实施例中,该方法还包括:基于发现协议发现该多个客户端系统,其中,该发现是通过该网状网络或该多个客户端系统之间的对等通信中的一者或多者来进行的。
在一些实施例中,将该第一客户端系统识别为该第一用户想要激活的特定客户端系统还基于与该第一用户相关联的用户偏好。
在一些实施例中,该多个信号包括以下项中的两项或多项:存储在相应客户端系统上的短期记忆;指示该第一用户与相应客户端系统的先前交互的新近度;指示在相应客户端系统处接收到语音请求的时间;在相应客户端系统处接收的语音请求的音量;在相应客户端系统处接收的语音请求的信噪比;该第一用户与相应客户端系统的互动程度;由相应客户端系统采集的与该第一用户相关联的注视信息;相应客户端系统的姿态;该第一用户到相应客户端系统的距离;或者与该第一用户相关联的上下文信息。
在一些实施例中,该助理系统在远程服务器上运行,并且其中,该方法还包括:在该远程服务器处接收来自该多个客户端系统的多个音频信号,其中,该多个音频信号中的每个音频信号包括在相应客户端系统处接收的语音请求;以及在该远程服务器处对该多个音频信号进行分组。
在一些实施例中,该语音请求与说话者标识符(identifier,ID)相关联,其中,对该多个音频信号进行分组是基于该说话者ID的。
在一些实施例中,该多个客户端系统中的每个客户端系统各自与一IP地址相关联,并且其中,对该多个音频信号进行分组是基于与每个客户端系统相关联的IP地址的。
在一些实施例中,该多个客户端系统中的每个客户端系统各自与一用户标识符(ID)相关联,并且其中,对该多个音频信号进行分组是基于与每个客户端系统相关联的用户ID的。
在一些实施例中,该语音请求包括对该特定客户端系统的歧义引用。
在一些实施例中,该语音请求包括对该特定客户端系统的不引用。
根据本公开的第二方面,提供了一种或多种计算机可读非暂态存储介质,该一种或多种计算机可读非暂态存储介质包含软件,该软件在被执行时能够操作以:由与多个客户端系统相关联的助理系统接收来自第一用户的语音请求,其中,该第一用户想要激活该多个客户端系统中的特定客户端系统,其中,该多个客户端系统处于该第一用户的收听范围内;由该助理系统访问与该语音请求相关联的多个信号,该多个信号来自该多个客户端系统中的各个客户端系统;由该助理系统基于所访问的该多个信号,将该多个客户端系统中的第一客户端系统识别为该第一用户想要激活的特定客户端系统;以及由该助理系统指示该第一客户端系统提供来自该助理系统的、响应于该语音请求的响应。
根据本公开的第三方面,提供了一种系统,该系统包括:一个或多个处理器;以及非暂态存储器,该非暂态存储器耦接到该一个或多个处理器并且包括能够由该一个或多个处理器执行的指令,该一个或多个处理器在执行这些指令时能够操作以:由与多个客户端系统相关联的助理系统接收来自第一用户的语音请求,其中,该第一用户想要激活该多个客户端系统中的特定客户端系统,其中,该多个客户端系统处于该第一用户的收听范围内;由该助理系统访问与该语音请求相关联的多个信号,该多个信号来自该多个客户端系统中的各个客户端系统;由该助理系统基于所访问的该多个信号,将该多个客户端系统中的第一客户端系统识别为该第一用户想要激活的特定客户端系统;以及由该助理系统指示该第一客户端系统提供来自该助理系统的、响应于该语音请求的响应。
在特定实施例中,助理系统可以帮助用户获取信息或服务。助理系统可以使用户能够在有状态和多轮(multi-turn)对话中通过各种模态(例如,音频、语音、文本、图像、视频、手势、运动、位置、方位)的用户输入与该助理系统进行交互,以得到来自该助理系统的帮助。作为示例而非限制,助理系统可以支持单模态输入(例如,仅语音输入)、多模态输入(例如,语音输入和文本输入)、混合/多模态输入、或它们的任何组合。由用户提供的用户输入可以与特定的助理相关任务相关联,并且例如可以包括用户请求(例如,对信息或动作执行的口头请求)、跟与助理系统相关联的助理应用的用户交互(例如,通过触摸或手势来选择用户界面(UI)元素)、或者可由助理系统检测和理解的任何其他类型的合适的用户输入(例如,由用户的客户端设备检测到的用户移动)。助理系统可以创建和存储这样的用户资料:该用户资料包括与用户相关联的个人信息和上下文信息这两者。在特定实施例中,助理系统可以使用自然语言理解(natural-language understanding,NLU)来分析用户输入。对于更个性化的和上下文感知的理解,该分析可以基于用户的用户资料。助理系统可以基于该分析来解析与用户输入相关联的实体。在特定实施例中,助理系统可以与不同的代理进行交互以获取与所解析的实体相关联的信息或服务。助理系统可以通过使用自然语言生成(natural-language generation,NLG)来为用户生成关于该信息或服务的响应。助理系统可以通过与用户的交互,使用对话管理技术来管理和推进与用户的对话流。在特定实施例中,助理系统还可以通过概括信息来帮助用户有效和高效地理解所获取的信息。助理系统还可以通过提供帮助用户与在线社交网络进行交互(例如,创建帖子、评论、消息)的工具来帮助用户更多地参与在线社交网络。助理系统还可以帮助用户管理不同的任务,例如保持对事件的追踪。在特定实施例中,助理系统可以在没有用户输入的情况下,在与用户相关的时间基于用户资料主动地执行与用户的兴趣和偏好相关的任务。在特定实施例中,助理系统可以检查隐私设置以确保根据用户的隐私设置而允许访问用户的资料或其他用户信息、并执行不同任务。
在特定实施例中,助理系统可以通过被构建在客户端侧过程和服务器侧过程这两者上的混合架构来帮助用户。客户端侧过程和服务器侧过程可以是用于处理用户输入和向用户提供帮助的两个并行工作流。在特定实施例中,客户端侧过程可以在与用户相关联的客户端系统上本地执行。相比之下,服务器侧过程可以在一个或多个计算系统上远程执行。在特定实施例中,客户端系统上的仲裁器可以:对接收用户输入(例如,音频信号)进行协调,确定是使用客户端侧过程、服务器侧过程还是这两者来响应用户输入,并分析来自每个过程的处理结果。仲裁器可以基于前述分析来指示客户端侧或服务器侧上的代理执行与用户输入相关联的任务。执行结果可以进一步被渲染以作为客户端系统的输出。助理系统可以通过利用客户端侧过程和服务器侧过程,有效地帮助用户优化使用计算资源,同时保护用户隐私并增强安全性。
在特定实施例中,当在用户的语音请求的听得见的距离内存在多个支持助理的客户端系统(例如,桌子上的智能底座(smart dock)、用户面部上的智能眼镜、墙上的智能电视等)时,助理系统可以有效地确定哪个客户端系统响应用户。用户可以使用统一的唤醒词(例如,“嘿助理”)来唤醒任何客户端系统,即,多设备调用。当用户发出请求(例如,“嘿助理,播放一些音乐”)时,任何或所有客户端系统都可能会进行响应,这可能会让用户感到厌烦。因此,助理系统可能需要在各客户端系统之间进行调解以确定哪个客户端系统应该响应,使得该响应可以在最佳客户端系统上进行渲染。助理系统可以使用服务器侧过程或客户端侧过程来进行调解。对于服务器侧过程,助理系统可以将来自相同IP地址的请求分组在一起,并将用户的意图映射到优选的客户端系统或具有正确能力的客户端系统。助理系统还可以使用各种信号来确定哪个客户端系统响应用户。对于客户端侧过程,助理系统可以在这些客户端系统之间建立安全的对等分布式网状网络。使用该网状网络,各客户端系统可以响应于唤醒词实时地交换信息,并比较这些信息以确定用户最有可能想要使用哪一个客户端系统。类似地,助理系统在确定哪个客户端系统响应用户时还可以使用其他类型的信号。通过多设备调用的有效调解,用户可以在无缝使用助理服务时四处移动。多设备调解不仅可以应用于物理多设备场景,而且可以应用于(例如,使用虚拟现实头戴式设备的)虚拟环境,在该虚拟环境中,存在可以响应助理请求的多个虚拟客户端系统。尽管本公开描述了在特定系统之间以特定方式进行调解,但是本公开考虑了在特定系统之间以任何合适的方式进行调解。
在特定实施例中,助理系统可以与多个客户端系统相关联。助理系统可以接收来自第一用户的语音请求。第一用户可能想要激活多个客户端系统中的特定客户端系统。在特定实施例中,该多个客户端系统可以处于第一用户的收听范围内。然后,助理系统可以访问与语音请求相关联的多个信号,该多个信号来自多个客户端系统中的各个客户端系统。在特定实施例中,助理系统可以基于所访问的信号,将多个客户端系统中的第一客户端系统识别为第一用户想要激活的特定客户端系统。助理系统还可以指示第一客户端系统提供来自助理系统的、响应于该语音请求的响应。
对于多设备调解,存在某些技术挑战。一个技术挑战可以包括准确地确定多个客户端系统中的哪个客户端系统应该响应多设备调用。本文所公开的各实施例提出的解决这一挑战的解决方案可以是:确定用户的意图并将其映射到具有正确设备能力的客户端系统,通过网状网络在各客户端系统之间交换信号,并使用各种类型的信号(其包括短期记忆、新近度、时间、音量、信噪比、互动程度、注视、姿态、距离和上下文信息),因为设备能力、各客户端系统之间的协调、以及各种类型的信号都提供了对所选择的客户端系统将如何有效地执行与多设备调用相关联的任务的不同测量结果。
本文所公开的某些实施例可以提供一个或多个技术优势。各实施例的技术优势可以包括:当存在多个支持助理的客户端系统时、改善与助理系统的用户体验,因为助理系统可以准确地确定哪个客户端系统应该响应用户请求,使得用户不会从多个客户端系统获得多个响应,从多个客户端系统获得多个响应可能是令人厌烦和困惑的。各实施例的另一技术优势可以包括在用户的物理环境改变时提供从客户端系统到客户端系统的无缝服务,因为助理系统可以根据环境改变而改变所选择的客户端系统。各实施例的另一技术优势可以包括实现远程任务执行,因为助理系统可以指示一个客户端系统响应用户请求,而另一个不同的客户端系统远程执行与该用户请求相关联的任务。本文所公开的某些实施例可以不提供上述技术优势,提供上述技术优势的一些或全部。考虑到本公开的附图、具体实施方式和权利要求书,一个或多个其他技术优势对于本领域技术人员来说是显而易见的。
本文中所公开的实施例仅是示例,并且本公开的范围不限于这些实施例。特定实施例可以包括本文中所公开的实施例的部件、元素、特征、功能、操作或步骤中的全部、一些,或者可以不包括本文中所公开的实施例的部件、元素、特征、功能、操作或步骤。根据本发明的实施例,所附权利要求针对方法、存储介质、系统和计算机程序产品,其中,在一个权利要求类别(例如,方法)中提到的任何特征也可以在另一个权利要求类别(例如,系统)中得到保护。所附权利要求书中的从属关系或回引是仅出于形式原因而选择的。然而,由于有意引用任何先前的权利要求(特别是多项从属关系)而产生的任何主题也可以被要求保护,使得多个权利要求及其多个特征的任何组合无论在所附权利要求书中所选择的从属关系如何都被公开且可以被要求保护。可以要求保护的主题不仅包括所附权利要求书中所陈述的特征的组合,还包括权利要求书中的特征的任何其他组合,其中,在权利要求书中所提到的每个特征可以与权利要求书中的任何其他特征或其他特征的组合进行组合。此外,本文所描述或所描绘的实施例和特征中的任何可以在单独的权利要求中要求保护,和/或在与本文所描述或所描绘的任何实施例或特征的任何组合中或在与所附权利要求书中的任何特征的任何组合中要求保护。
应当理解,本文所描述的适于结合到本公开的一个或多个方面或实施例中的任何特征旨在在本公开的任何及所有方面和实施例中具有普遍性。根据本公开的具体实施方式、权利要求书和附图,本领域技术人员可以理解本公开的其他方面。前面的一般描述和下面的详细描述仅是示例性和说明性的,而不是对权利要求书的限制。
附图说明
图1示出了与助理系统相关联的示例网络环境。
图2示出了助理系统的示例架构。
图3示出了助理系统的示例流程图。
图4示出了处理用户输入的、以任务为中心的示例流程图。
图5示出了多设备调解的示例架构。
图6示出了两个设备之间的调解的示例图示工作流。
图7示出了示例多设备调解。
图8示出了另一示例多设备调解。
图9示出了另一示例多设备调解。
图10A示出了当用户正在从第一位置移动到第二位置时的示例多设备调解。
图10B示出了当用户从第一位置移动到了第二位置时的示例多设备调解。
图11示出了另一示例多设备调解。
图12示出了多设备调解的示例方法。
图13示出了示例社会图谱。
图14示出了嵌入空间的示例视图。
图15示出了示例人工神经网络。
图16示出了示例计算机系统。
具体实施方式
系统概述
图1示出了与助理系统相关联的示例网络环境100。网络环境100包括通过网络110彼此连接的客户端系统130、助理系统140、社交网络系统160和第三方系统170。尽管图1示出了客户端系统130、助理系统140、社交网络系统160、第三方系统170和网络110的特定布置,但是本公开考虑了客户端系统130、助理系统140、社交网络系统160、第三方系统170和网络110的任何合适的布置。作为示例而非限制,客户端系统130、社交网络系统160、助理系统140和第三方系统170中的两者或更多者可以绕过网络110而彼此直接连接。作为另一示例,客户端系统130、助理系统140、社交网络系统160和第三方系统170中的两者或更多者可以在物理上或逻辑上彼此整体地或部分地位于同一位置。此外,尽管图1示出了特定数量的客户端系统130、助理系统140、社交网络系统160、第三方系统170和网络110,但是本公开考虑了任何合适数量的客户端系统130、助理系统140、社交网络系统160、第三方系统170和网络110。作为示例而非限制,网络环境100可以包括多个客户端系统130、多个助理系统140、多个社交网络系统160、多个第三方系统170以及多个网络110。
本公开考虑了任何合适的网络110。作为示例而非限制,网络110的一个或多个部分可以包括自组网(ad hoc network)、内联网、外联网、虚拟专用网络(virtual privatenetwork,VPN)、局域网(local area network,LAN)、无线局域网(wireless LAN,WLAN)、广域网(wide area network,WAN)、无线广域网(wireless WAN,WWAN)、城域网(metropolitanarea network,MAN)、互联网的一部分、公共交换电话网络(Public Switched TelephoneNetwork,PSTN)的一部分、基于蜂窝技术的网络、基于卫星通信技术的网络、另一网络110、或两个或更多个这种网络110的组合。
链路150可以将客户端系统130、助理系统140、社交网络系统160和第三方系统170连接到通信网络110,或使客户端系统130、助理系统140、社交网络系统160和第三方系统170彼此连接。本公开考虑了任何合适的链路150。在特定实施例中,一条或多条链路150包括一条或多条有线(例如,数字用户线路(Digital Subscriber Line,DSL)或电缆数据服务接口规范(Data Over Cable Service Interface Specification,DOCSIS))链路、一条或多条无线(例如,Wi-Fi或全球微波接入互操作性(Worldwide Interoperability forMicrowave Access,WiMAX))链路、或一条或多个条光学(例如,同步光纤网络(SynchronousOptical Network,SONET)或同步数字体系(Synchronous Digital Hierarchy,SDH))链路。在特定实施例中,一条或多条链路150各自包括自组网、内联网、外联网、VPN、LAN、WLAN、WAN、WWAN、MAN、互联网的一部分、PSTN的一部分、基于蜂窝技术的网络、基于卫星通信技术的网络、另一链路150、或两个或更多个这种链路150的组合。在整个网络环境100中,多条链路150不必都是相同的。在一个或多个方面,一条或多条第一链路150可以与一条或多条第二链路不同。
在特定实施例中,客户端系统130可以是任何合适的电子设备,该电子设备包括硬件、软件或嵌入式逻辑部件或两个或更多个此类部件的组合,并且能够执行由客户端系统130实现或支持的功能。作为示例而非限制,客户端系统130可以包括计算机系统,例如台式计算机、笔记本或膝上型计算机、上网本、平板计算机、电子书阅读器、GPS设备、摄像头、个人数字助理(personal digital assistant,PDA)、手持电子设备、蜂窝电话、智能手机、智能扬声器、智能手表、智能眼镜、增强现实(augmented-reality,AR)智能眼镜、虚拟现实(virtual reality,VR)头戴式设备(headset)、其他合适的电子设备、或它们的任何合适的组合。在特定实施例中,客户端系统130可以是智能助理设备。有关智能助理设备的更多信息可以在以下文件中找到:于2018年4月9日提交的、第15/949011号美国专利申请,于2018年10月5日提交的、第16/153574号美国专利申请,于2018年1月3日提交的、第29/631910号美国外观设计专利申请,于2018年1月2日提交的、第29/631747号美国外观设计专利申请,于2018年1月3日提交的、第29/631913号美国外观设计专利申请,于2018年1月3日提交的、第29/631914号美国外观设计专利申请。本公开考虑了任何合适的客户端系统130。在特定实施例中,客户端系统130可以使客户端系统130处的网络用户能够访问网络110。客户端系统130还可以使该用户能够与其他客户端系统130处的其他用户进行通信。
在特定实施例中,客户端系统130可以包括网页浏览器(web browser)132,并且可以具有一个或多个附加组件(add-on)、插件或其他扩展。客户端系统130处的用户可以输入统一资源定位符(Uniform Resource Locator,URL)或其他地址,从而将网页浏览器132定向到特定服务器(例如,服务器162、或与第三方系统170相关联的服务器),并且网页浏览器132可以生成超文本传输协议(Hyper Text Transfer Protocol,HTTP)请求并向服务器传送该HTTP请求。服务器可以接收该HTTP请求,并响应于该HTTP请求向客户端系统130传送一个或多个超文本标记语言(Hyper Text Markup Language,HTML)文件。客户端系统130可以基于来自服务器的HTML文件来渲染网页界面(例如,网页),以用于呈现给用户。本公开考虑了任何合适的源文件。作为示例而非限制,根据特定需要,网页界面可以是根据HTML文件、可扩展超文本标记语言(Extensible Hyper Text Markup Language,XHTML)文件、或可扩展标记语言(Extensible Markup Language,XML)文件而渲染的。这种界面还可以执行脚本、以及标记语言和脚本的组合等。在本文中,在适当的情况下,对网页界面的引用包含一个或多个对应的源文件(浏览器可以使用其来渲染网页界面),并且反之亦然。
在特定实施例中,客户端系统130可以包括安装在客户端系统130上的社交网络应用134。客户端系统130处的用户可以使用社交网络应用134来访问在线社交网络。客户端系统130处的用户可以使用社交网络应用134来与用户的社交关系(例如,朋友、关注者、关注的账户、联系人等)通信。客户端系统130处的用户还可以使用社交网络应用134来与在线社交网络上的多个内容对象(例如,帖子、新闻文章、短暂内容等)交互。作为示例而非限制,用户可以使用社交网络应用134浏览热门话题和突发新闻。
在特定实施例中,客户端系统130可以包括助理应用136。客户端系统130处的用户可以使用助理应用136来与助理系统140交互。在特定实施例中,助理应用136可以包括助理xbot功能,作为用于与客户端系统130的用户交互(其包括接收用户输入并呈现输出)的前端接口。在特定实施例中,助理应用136可以包括独立应用。在特定实施例中,助理应用136可以被集成到社交网络应用134或另一合适的应用(例如,消息收发应用)中。在特定实施例中,助理应用136还可以被集成到客户端系统130、助理硬件设备或任何其他合适的硬件设备中。在特定实施例中,可以通过网页浏览器132访问助理应用136。在特定实施例中,用户可以通过以下方式来与助理系统140交互:通过各种模态(例如,音频、语音、文本、视觉、图像、视频、手势、运动、活动、位置、方位)向助理应用136提供用户输入。助理应用136可以(例如,通过助理xbot)向助理系统140传送用户输入。助理系统140可以基于该用户输入生成响应。助理系统140可以向助理应用136发送所生成的响应。然后,助理应用136可以通过各种模态(例如,音频、文本、图像和视频)向客户端系统130处的用户呈现该响应。作为示例而非限制,用户可以通过以下方式来与助理系统140交互:通过客户端系统130的传声器向助理xbot提供用户输入(例如,对关于附近车辆交通的当前状态的信息的口头请求)。然后,助理应用136可以通过网络110向助理系统140传送用户输入。助理系统140可以相应地分析用户输入,基于对用户输入的分析来生成响应(例如,从第三方源获取到的车辆交通信息),并将所生成的响应传送回助理应用136。然后,助理应用136可以以任何合适的方式向用户呈现所生成的响应(例如,在客户端系统130的显示器上显示:基于文本的推送通知和/或示出了附近车辆交通的本地地图的一幅或多幅图像)。
在特定实施例中,客户端系统130可以实现唤醒词检测技术,以允许用户使用与助理系统140相关联的一个或多个唤醒词来方便地激活助理系统140。作为示例而非限制,客户端系统130上的系统音频API可以连续地监测用户输入,该用户输入包括在客户端系统130处接收的音频数据(例如,多帧语音数据)。在该示例中,与助理系统140相关联的唤醒词可以是语音短语“嘿助理”。在该示例中,当客户端系统130上的系统音频API在所监测的音频数据中检测到语音短语“嘿助理”时,助理系统140可以被激活以用于与用户的后续交互。在替代实施例中,可以实现类似的检测技术以使用与助理系统140相关联的特定非音频用户输入来激活助理系统140。例如,非音频用户输入可以是由客户端系统130的低功率传感器(例如,摄像头)检测到的特定视觉信号。作为示例而非限制,视觉信号可以是静态图像(例如,条形码、快速响应(QR)码、通用产品代码(universal product code,UPC))、用户的位置(例如,用户对客户端系统130的注视)、用户动作(例如,用户指向一对象)或任何其他合适的视觉信号。
在特定实施例中,客户端系统130可以包括渲染设备137,并且可选地包括伴随设备138。渲染设备137可以被配置为向用户渲染由助理系统140生成的输出。伴随设备138可以被配置为在特定情况下(例如当渲染设备137不能执行与特定任务(例如,与助理系统140的通信)相关联的计算时)在伴随设备138上本地(即,在设备上)执行所述计算。在特定实施例中,客户端系统130、渲染设备137和/或伴随设备138可以各自是合适的电子设备,该电子设备包括硬件、软件、或嵌入式逻辑部件或两个或更多个此类部件的组合,并且客户端系统130、渲染设备137和/或伴随设备138能够独立地或协同地执行由本文所描述的客户端系统130所实现或所支持的功能。作为示例而非限制,客户端系统130、渲染设备137和/或伴随设备138可以各自包括计算机系统,该计算机系统例如为,台式计算机、笔记本或膝上型计算机、上网本、平板计算机、电子书阅读器、GPS设备、摄像头、个人数字助理(PDA)、手持电子设备、蜂窝电话、智能手机、智能扬声器、虚拟现实(VR)头戴式设备、增强现实(AR)智能眼镜、其他合适的电子设备、或它们的任何合适的组合。在特定实施例中,客户端系统130、渲染设备137和伴随设备138中的一者或多者可以作为智能助理设备来运行。作为示例而非限制,渲染设备137可以包括智能眼镜,并且伴随设备138可以包括智能手机。作为另一示例而非限制,渲染设备137可以包括智能手表,并且伴随设备138可以包括智能手机。作为又一示例而非限制,渲染设备137可以包括智能眼镜,并且伴随设备138可以包括用于智能眼镜的智能遥控器。作为又一示例而非限制,渲染设备137可以包括VR/AR头戴式设备,并且伴随设备138可以包括智能手机。
在特定实施例中,用户可以单独地或组合地使用渲染设备137或伴随设备138来与助理系统140交互。在特定实施例中,客户端系统130、渲染设备137和伴随设备138中的一者或多者可以实现多阶段唤醒词检测模型,以使用户能够通过连续地监测与助理系统140相关联的一个或多个唤醒词来方便地激活助理系统140。在唤醒词检测模型的第一阶段,渲染设备137可以接收音频用户输入(例如,多帧语音数据)。如果渲染设备137与伴随设备138之间的无线连接可用,则渲染设备137上的应用可以通过无线连接来向伴随设备138上的伴随应用传送所接收的音频用户输入。在唤醒词检测模型的第二阶段,伴随设备138上的伴随应用可以处理所接收的音频用户输入,以检测与助理系统140相关联的唤醒词。然后,伴随设备138上的伴随应用可以通过无线网络110向与助理系统140相关联的服务器传送所检测到的唤醒词。在唤醒词检测模型的第三阶段,与助理系统140相关联的服务器可以对所检测到的唤醒词执行关键字验证,以验证用户是否想要激活助理系统140并从助理系统140接收帮助。在替代实施例中,处理、检测或关键字验证中的任一者可以由渲染设备137和/或伴随设备138执行。在特定实施例中,当助理系统140已经被用户激活时,渲染设备137上的应用可以被配置为接收来自用户的用户输入,并且伴随设备138上的伴随应用可以被配置为处理由渲染设备137上的应用所接收的用户输入(例如,用户请求)。在特定实施例中,渲染设备137和伴随设备138可以通过一个或多个无线通信协议(例如,蓝牙)彼此关联(即,配对)。
下面的示例工作流示出了渲染设备137和伴随设备138可以如何处理由用户提供的用户输入。在该示例中,渲染设备137上的应用可以接收用户输入,该用户输入包括指向渲染设备137的用户请求。然后,渲染设备137上的应用可以确定渲染设备137与伴随设备138之间的无线连接的状态(即,网络共享(tethering)状态)。如果渲染设备137与伴随设备138之间的无线连接不可用,则渲染设备137上的应用可以通过网络110将用户请求(可选地包括对渲染设备137可用的附加数据和/或上下文信息)传送到助理系统140。然后,助理系统140可以生成对用户请求的响应,并将所生成的响应传送回渲染设备137。然后,渲染设备137可以以任何合适的方式向用户呈现该响应。替代地,如果渲染设备137与伴随设备138之间的无线连接可用,则渲染设备137上的应用可以通过该无线连接将用户请求(可选地包括对渲染设备137可用的附加数据和/或上下文信息)传送到伴随设备138上的伴随应用。然后,伴随设备138上的伴随应用可以通过网络110将用户请求(可选地包括对伴随设备138可用的附加数据和/或上下文信息)传送到助理系统140。然后,助理系统140可以生成对用户请求的响应,并将所生成的响应传送回伴随设备138。然后,伴随设备138上的伴随应用可以将所生成的响应传送到渲染设备137上的应用。然后,渲染设备137可以以任何合适的方式向用户呈现该响应。在前面的示例工作流中,渲染设备137和伴随设备138可以各自在该工作流的每个相应步骤执行一个或多个计算和/或处理。在特定实施例中,可以至少部分地基于渲染设备137和/或伴随设备138的设备状态、与用户输入相关联的任务、和/或一个或多个附加因素,在渲染设备137与伴随设备138之间自适应地切换对本文所公开的计算和/或处理的执行。作为示例而非限制,一个因素可以是渲染设备137与伴随设备138之间的无线连接的信号强度。例如,如果渲染设备137与伴随设备138之间的无线连接的信号强度较强,则计算和处理可以自适应地切换为基本上由伴随设备138执行,以便例如受益于伴随设备138的中央处理器(CPU)的更强处理能力。替代地,如果渲染设备137与伴随设备138之间的无线连接的信号强度较弱,则计算和处理可以自适应地切换为基本上由渲染设备137以独立的方式执行。在特定实施例中,如果客户端系统130不包括伴随设备138,则前述计算和处理可以由渲染设备137以独立的方式独自执行。
在特定实施例中,助理系统140可以帮助用户进行各种助理相关的任务。助理系统140可以在执行这些助理相关的任务时与社交网络系统160和/或第三方系统170交互。
在特定实施例中,社交网络系统160可以是可托管在线社交网络的网络可寻址计算系统。社交网络系统160可以生成、存储、接收和发送社交网络数据,该社交网络数据例如为,用户资料数据、概念资料数据、社交图谱信息、或与在线社交网络相关的其他合适的数据。社交网络系统160可以由网络环境100中的其他部件直接地访问或通过网络110访问。作为示例而非限制,客户端系统130可以使用网页浏览器132或与社交网络系统160相关联的本地应用(例如,移动社交网络应用、消息收发应用、另一合适的应用、或它们的任何组合)来直接访问社交网络系统160,或者通过网络110访问社交网络系统160。在特定实施例中,社交网络系统160可以包括一个或多个服务器162。每个服务器162可以是单一服务器或跨多个计算机或多个数据中心的分布式服务器。作为示例而非限制,每个服务器162可以是网页服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交换服务器、数据库服务器、代理服务器、适于执行本文所描述的功能或过程的另一服务器,或者它们的任意组合。在特定实施例中,每个服务器162可以包括用于执行由服务器162实现或支持的合适功能的硬件、软件、或嵌入式逻辑部件、或两个或更多个这些部件的组合。在特定实施例中,社交网络系统160可以包括一个或多个数据存储库164。数据存储库164可以用于存储各种类型的信息。在特定实施例中,可以根据特定的数据结构来组织存储在数据存储库164中的信息。在特定实施例中,每个数据存储库164可以是关系型数据库、列式数据库、关联数据库(correlation database)或其他合适的数据库。尽管本公开描述或示出了特定类型的数据库,但是本公开考虑了任何合适类型的数据库。特定实施例可以提供这样的接口:所述接口使客户端系统130、社交网络系统160、助理系统140或第三方系统170能够对存储在数据存储库164中的信息进行管理、检索、修改、添加或删除。
在特定实施例中,社交网络系统160可以在一个或多个数据存储库164中存储一个或多个社交图谱。在特定实施例中,社交图谱可以包括多个节点——这些节点可以包括多个用户节点(每个用户节点对应于一特定用户)或多个概念节点(每个概念节点对应于一特定概念)—以及连接这些节点的多条边。社交网络系统160可以向在线社交网络的用户提供与其他用户通信和交互的能力。在特定实施例中,用户可以通过社交网络系统160加入在线社交网络,并且随后可以添加与社交网络系统160中他们想要被连接到的多个其他用户的联系(例如,关系)。在本文中,术语“朋友”可以指社交网络系统160中的、用户通过社交网络系统160已经与之形成联系、关联或关系的任何其他用户。
在特定实施例中,社交网络系统160可以向用户提供对由社交网络系统160支持的对各种类型的项或对象采取动作的能力。作为示例而非限制,这些项和对象可以包括社交网络系统160的用户可能所属的群组或社交网络、用户可能感兴趣的事件或日程表条目、用户可使用的基于计算机的应用、允许用户通过服务购买或销售的项的交易、与用户可执行的广告的交互、或其他合适的项或对象。用户可以与能够在社交网络系统160中表示或者由第三方系统170的外部系统表示的任何事物交互,该外部系统与社交网络系统160分开并且通过网络110耦接到社交网络系统160。
在特定实施例中,社交网络系统160可能能够链接各种实体。作为示例而非限制,社交网络系统160可以使用户能够彼此交互并且接收来自第三方系统170或其他实体的内容,或者允许用户通过应用编程接口(API)或其他通信通道与这些实体交互。
在特定实施例中,第三方系统170可以包括一种或多种类型的服务器、一个或多个数据存储库、一个或多个接口(包括但不限于API)、一个或多个网页服务、一个或多个内容源、一个或多个网络、或例如服务器可与之通信的任何其他合适的部件。第三方系统170可以由与操作社交网络系统160的实体不同的实体操作。然而,在特定实施例中,社交网络系统160和第三方系统170可以彼此协同运行,以向社交网络系统160的用户或第三方系统170的用户提供社交网络服务。在这个意义上,社交网络系统160可以提供平台或主干网(backbone),其他系统(例如,第三方系统170)可以使用该平台或主干网来向互联网上的用户提供社交网络服务和功能。
在特定实施例中,第三方系统170可以包括第三方内容对象提供者。第三方内容对象提供者可以包括内容对象的一个或多个源,这些内容对象可以被传送到客户端系统130。作为示例而非限制,内容对象可以包括与用户感兴趣的事物或活动有关的信息,例如电影放映时间、电影评论、餐厅评论、餐厅菜单、产品信息和评论、或其他合适的信息。作为另一示例而非限制,内容对象可以包括激励内容对象,例如优惠券、折扣票、礼品券、或其他合适的激励对象。在特定实施例中,第三方内容提供者可以使用一个或多个第三方代理来提供内容对象和/或服务。第三方代理可以是在第三方系统170上被托管和执行的实现。
在特定实施例中,社交网络系统160还包括用户生成的内容对象,该内容对象可以增强用户与社交网络系统160的交互。用户生成的内容可以包括用户可添加、上传、发送、或“发布”到社交网络系统160的任何内容。作为示例而非限制,用户将帖子从客户端系统130传送到社交网络系统160。帖子可以包括诸如状态更新或其他文本数据等数据、位置信息、照片、视频、链接、音乐、或其他类似数据或媒体。内容还可以由第三方通过“通信通道”(例如,新闻推送或流)添加到社交网络系统160。
在特定实施例中,社交网络系统160可以包括各种服务器、子系统、程序、模块、日志以及数据存储库。在特定实施例中,社交网络系统160可以包括以下中的一者或多者:网页服务器、动作日志记录器、API请求服务器、相关性和排名引擎、内容对象分类器、通知控制器、动作日志、第三方内容对象公开日志、推理模块、授权/隐私服务器、搜索模块、广告定位模块、用户界面模块、用户资料存储库、联系存储库、第三方内容存储库或位置存储库。社交网络系统160还可以包括合适的部件,例如网页界面、安全机构、负载平衡器、故障转移服务器、管理和网络操作控制台、其他合适的部件、或它们的任何合适的组合。在特定实施例中,社交网络系统160可以包括用于存储用户资料的一个或多个用户资料存储器。用户资料可以包括例如生物信息、个人背景信息、行为信息、社交信息或其他类型的描述性信息(例如工作经验、教育历史、爱好或偏好、兴趣、姻亲关系或位置)。兴趣信息可以包括与一个或多个类别相关联的兴趣。类别可以是通用的或特定的。作为示例而非限制,如果用户“喜欢”关于一鞋子品牌的物品,则该类别可以是该品牌,或者可以是“鞋子”或“服装”的通用类别。联系存储库可以用于存储关于用户的联系信息。联系信息可以指示具有相似或共同的工作经历、群组成员资格、爱好、教育历史、或者以任何方式相关或共享共同属性的用户。联系信息还可以包括不同用户与内容(内部和外部两者)之间的用户定义的联系。网页服务器可以用于通过网络110将社交网络系统160链接到一个或多个客户端系统130或者一个或多个第三方系统170。网页服务器可以包括邮件服务器或用于在社交网络系统160与一个或多个客户端系统130之间接收和路由消息的其他消息收发功能。API请求服务器可以允许例如助理系统140或第三方系统170通过调用一个或多个API来访问来自社交网络系统160的信息。动作日志记录器可以用于接收来自网页服务器的与用户登录或退出社交网络系统160的动作有关的信息。与动作日志相结合,可以维护用户公开给第三方内容对象的第三方内容对象日志。通知控制器可以向客户端系统130提供关于内容对象的信息。可以将信息作为通知推送至客户端系统130,或者可以响应于包括从客户端系统130接收到的用户请求的用户输入而从客户端系统130提取信息。授权服务器可以用于执行社交网络系统160的用户的一个或多个隐私设置。用户的隐私设置可以确定可以如何共享与用户相关联的特定信息。授权服务器可以允许用户例如通过设置合适的隐私设置,来选择让或选择不让:社交网络系统160记录他们的动作,或与其他系统(例如,第三方系统170)共享它们的动作。第三方内容对象存储库可以用于存储从第三方(例如,第三方系统170)接收到的内容对象。位置存储库可以用于存储从与用户相关联的客户端系统130接收到的位置信息。广告定价模块可以对社交信息、当前时间、位置信息或其他合适的信息进行组合,来以通知的形式向用户提供相关广告。
助理系统
图2示出了助理系统140的示例架构200。在特定实施例中,助理系统140可以帮助用户获取信息或服务。助理系统140可以使用户能够在有状态和多轮对话中通过各种模态(例如,音频、语音、文本、视觉、图像、视频、手势、动作、活动、位置、方位)的用户输入与助理系统140交互,以接收来自助理系统140的帮助。作为示例而非限制,用户输入可以包括基于用户语音(例如,口头命令)的音频输入,该音频输入可以由客户端系统130上的系统音频API(应用编程接口)处理。系统音频API可以执行包括回声消除、噪声去除、波束成形、自用户语音激活、说话者识别、语音活动检测(voice activity detection,VAD)和/或任何其他合适的声学技术的技术,以便生成可由助理系统140容易处理的音频数据。在特定实施例中,助理系统140可以支持单模态输入(例如,仅语音输入)、多模态输入(例如,语音输入和文本输入)、混合/多模式输入、或它们的任意组合。在特定实施例中,用户输入可以是在单向中被发送到助理系统140的用户生成的输入。由用户提供的用户输入可以与特定的助理相关的任务相关联,并且可以包括例如用户请求(例如,对信息或动作的执行的口头请求)、和与助理系统140相关联的助理应用136的用户交互(例如,通过触摸或手势来选择UI元素)、或者可由助理系统140检测和理解的任何其他类型的合适的用户输入(例如,由用户的客户端设备130检测到的用户移动)。
在特定实施例中,助理系统140可以创建并存储这样的用户资料:所述用户资料包括与用户相关联的个人信息和上下文信息这两者。在特定实施例中,助理系统140可以使用自然语言理解(NLU)技术来分析用户输入。对于更个性化的和上下文感知的理解,该分析可以至少部分地基于用户的用户资料。助理系统140可以基于该分析来解析与用户输入相关联的实体。在特定实施例中,助理系统140可以与不同的代理交互,以获得与所解析的实体相关联的信息或服务。助理系统140可以通过使用自然语言生成(NLG)为用户生成关于信息或服务的响应。通过与用户的交互,助理系统140可以使用对话管理技术来管理和转发与用户的对话流。在特定实施例中,助理系统140还可以通过对信息进行概括来帮助用户有效和高效地理解所获得的信息。助理系统140还可以通过提供帮助用户与在线社交网络交互(例如,创建帖子、评论、消息)的工具,来帮助用户更多地参与在线社交网络。助理系统140还可以帮助用户管理不同的任务,例如保持对事件的追踪。在特定实施例中,助理系统140可以在没有用户输入的情况下,在与用户相关的时间基于用户资料主动执行与用户兴趣和偏好相关的预授权任务。在特定实施例中,助理系统140可以检查隐私设置,以确保根据用户的隐私设置而允许访问用户的资料或其他用户信息、并执行不同任务。有关根据隐私设备帮助用户的更多信息可以在以下文件中找到:于2018年11月6日提交的、第16/182542号美国专利申请。
在特定实施例中,助理系统140可以通过构建在客户端侧过程和服务器侧过程上的架构来帮助用户,客户端侧过程和服务器侧过程可以在各种运行模式下运行。在图2中,在虚线202的上方示出了客户端侧过程,而在虚线202的下方示出了服务器侧过程。第一运行模式(即,设备上模式)可以是这样的工作流:在该工作流中,助理系统140通过主要地或专门地在客户端系统130上本地执行客户端侧过程,来处理用户输入并向用户提供帮助。例如,如果客户端系统130没有连接到网络110(即,当客户端系统130离线时),则助理系统140可以在第一运行模式下仅利用客户端侧过程来处理用户输入。第二运行模式(即,云模式)可以是这样的工作流:在该工作流中,助理系统140通过主要或专门地在一个或多个远程服务器(例如,与助理系统140相关联的服务器)上执行服务器侧过程,来处理用户输入并向用户提供帮助。如图2所示,第三运行模式(即,混合模式)可以是这样的并行工作流:在该并行工作流中,助理系统140通过在客户端系统130上本地执行客户端侧过程、结合在一个或多个远程服务器(例如,与助理系统140相关联的服务器)上的服务器侧过程,来处理用户输入并向用户提供帮助。例如,客户端系统130和与助理系统140相关联的服务器都可以执行自动语音识别(automatic speech recognition,ASR)过程和自然语言理解(NLU)过程,但是客户端系统130可以委托与助理系统140相关联的服务器执行对话、代理和自然语言生成(NLG)过程。
在特定实施例中,对运行模式的选择可以至少部分地基于设备状态、与用户输入相关联的任务和/或一个或多个附加因素。作为示例而非限制,如上所述,一个因素可以是客户端系统130的网络连接状态。例如,如果客户端系统130没有连接到网络110(即,当客户端系统130离线时),则助理系统140可以在第一运行模式(即,设备上模式)下处理用户输入。作为另一示例而非限制,另一因素可以基于对客户端系统130的可用电池电量(即,电池状态)的测量。例如,如果客户端系统130需要节省电池电量(例如,当客户端系统130具有最小可用电池电量或者用户已经表示希望节省客户端系统130的电池电量时),则助理系统140可以在第二运行模式(即,云模式)或第三运行模式(即,混合模式)下处理用户输入,以在客户端系统130上执行较少的耗费电量的操作。作为又一示例而非限制,另一因素可以是一个或多个隐私约束(例如,指定的隐私设置、适用的隐私策略)。例如,如果一个或多个隐私约束限制或阻止特定数据被发送到远程服务器(例如,与助理系统140相关联的服务器),则助理系统140可以在第一运行模式(即,设备上模式)下处理用户输入,以保护用户隐私。作为又一示例而非限制,另一因素可以是客户端系统130与远程服务器(例如,与助理系统140相关联的服务器)之间的不同步的上下文数据。例如,可以确定客户端系统130和与助理系统140相关联的服务器具有不一致、缺失和/或未取得一致的上下文数据,助理系统140可以在第三运行模式(即,混合模式)下处理用户输入,以降低与用户输入相关联的不充分分析的可能性。作为又一示例而非限制,另一因素可以是对客户端系统130与远程服务器(例如,与助理系统140相关联的服务器)之间的连接的时延的测量。例如,如果与用户输入相关联的任务可能显著受益于和/或需要准时或立即执行(例如,照片采集任务),则助理系统140可以在第一运行模式(即,在设备模式)下处理用户输入以确保及时地执行该任务。作为又一示例而非限制,另一因素可以是:对于和与用户输入相关联的任务相关的特征,该特征是否仅由远程服务器(例如,与助理系统140相关联的服务器)支持。例如,如果相关特征需要高级技术功能(例如,高性能处理能力、快速更新周期)、而该高级技术功能在用户输入时仅由与助理系统140相关联的服务器支持而不被客户端系统130支持,则助理系统140可以在第二运行模式(即,云模式)或第三运行模式(即,混合模式)下处理用户输入,以便受益于该相关特征。
在特定实施例中,客户端系统130上的设备上协调器206可以协调接收用户输入,并且可以在示例工作流中的一个或多个决策点处确定应该使用上述运行模式中的哪一种运行模式来处理或继续处理该用户输入。如上所述,对运行模式的选择可以至少部分地基于设备状态、与用户输入相关联的任务和/或一个或多个附加因素。作为示例而非限制,参考图2中所示的工作流架构,在接收到来自用户的用户输入之后,在决策点(D0)205处,设备上协调器206可以确定是在第一运行模式(即,设备上模式)、在第二运行模式(即,云模式)还是在第三运行模式(即,混合模式)下开始处理用户输入。例如,在决策点(D0)205处,如果客户端系统130没有连接到网络110(即,当客户端系统130离线时),如果一个或多个隐私约束明确要求设备上处理(例如,向多个用户之间的私人通话添加或删除另一个人),或者如果用户输入与不需要或不受益于服务器侧过程的任务(例如,设置提示或呼叫另一用户)相关联,则设备上协调器206可以选择第一运行模式(即,设备上模式)。作为另一示例,在决策点(D0)205处,如果客户端系统130需要节省电池电量(例如,当客户端系统130具有最小可用电池电量或用户已表示希望节省客户端系统130的电池电量时)或需要限制对计算资源的额外利用时(例如,当在客户端设备130上运行的其他过程(例如,SMS消息收发应用)需要高CPU利用时),则设备上协调器206可以选择第二运行模式(即,云模式)或第三运行模式(即,混合模式)。
在特定实施例中,如图2所示,如果设备上协调器206在决策点(D0)205处确定应该使用第一运行模式(即,设备上模式)或第三运行模式(即,混合模式)来处理用户输入,则客户端侧过程可以继续。作为示例而非限制,如果用户输入包括语音数据,则可以在客户端系统130上的本地自动语音识别(ASR)模块208a处接收语音数据。ASR模块208a可允许用户口述并将语音转录为书面文本、将文档合成为音频流、或发出被系统识别为这样的书面文本和音频流的命令。
在特定实施例中,可以将ASR模块208a的输出发送到本地的自然语言理解(NLU)模块210a。NLU模块210a可以执行命名实体解析(named entity resolution,NER),或者命名实体解析可以由实体解析模块212a执行,如下所述。在特定实施例中,意图、槽(slot)或域(domain)中的一者或多者可以是NLU模块210a的输出。
在特定实施例中,用户输入可以包括可在本地的上下文引擎220a处接收的非语音数据。作为示例而非限制,非语音数据可以包括位置、视觉、触摸、手势、世界更新、社交更新、上下文信息、与人有关的信息、活动数据和/或任何其他合适类型的非语音数据。非语音数据还可以包括由客户端系统130的传感器(例如,传声器、摄像头)接收的感知数据,该感知数据可以受制于隐私约束而被访问,并且可以通过计算机视觉技术被进一步分析。在特定实施例中,计算机视觉技术可以包括人体建模、面部检测、面部识别、手部追踪、眼动追踪、和/或任何其他合适的计算机视觉技术。在特定实施例中,非语音数据可以受制于几何构造,该几何构造可以包括使用由客户端系统130收集的任何合适类型的数据来构造用户周围的对象。作为示例而非限制,用户可能正佩戴着AR眼镜,并且几何构造可以被用来确定表面和项(例如,地板、墙壁、用户的手)的空间位置。在特定实施例中,非语音数据可以是由AR眼镜或VR头戴式设备采集的惯性数据,并且该惯性数据可以是与线性运动和角运动相关联的数据(例如,与用户身体运动相关联的测量结果)。在特定实施例中,上下文引擎220a可以基于非语音数据来确定各种类型的事件和上下文。
在特定实施例中,可以将NLU模块210a和/或上下文引擎220a的输出发送到实体解析模块212a。实体解析模块212a可以解析与由NLU模块210a输出的一个或多个槽相关联的实体。在特定实施例中,每个所解析的实体可以与一个或多个实体标识符相关联。作为示例而非限制,标识符可以包括与特定用户相对应的唯一用户标识符(identifier,ID)(例如,社交网络系统160的唯一用户名或用户ID号)。在特定实施例中,每个所解析的实体还可以与置信度分数相关联。有关解析实体的更多信息可以在以下文件中找到:于2018年7月27日提交的、第10,803,050号美国专利,以及于2018年7月27日提交的、第16/048072号美国专利申请。
在特定实施例中,在决策点(D0)205处,设备上协调器206可以确定应该在第二运行模式(即,云模式)或第三运行模式(即,混合模式)下处理用户输入。在这些运行模式下,用户输入可以由某些服务器侧模块以与上述客户端侧过程类似的方式处理。
在特定实施例中,如果用户输入包括语音数据,则可以在远程服务器(例如,与助理系统140相关联的服务器)上的远程的自动语音识别(ASR)模块208b处接收用户输入的语音数据。ASR模块208b可以允许用户口述并将语音转录为书面文本、将文档合成为音频流、或发出被系统识别为这样的书面文本或音频流的命令。
在特定实施例中,可以将ASR模块208b的输出发送到远程的自然语言理解(NLU)模块210b。在特定实施例中,NLU模块210b可以执行命名实体解析(NER),或者命名实体解析可以由如下所述的对话管理器216b的实体解析模块212b执行。在特定实施例中,意图、槽或域中的一者或多者可以是NLU模块210b的输出。
在特定实施例中,用户输入可以包括非语音数据,该非语音数据可以在远程的上下文引擎220b处被接收。在特定实施例中,远程的上下文引擎220b可以基于非语音数据来确定各种类型的事件和上下文。在特定实施例中,可以将NLU模块210b和/或上下文引擎220b的输出发送到远程的对话管理器216b。
在特定实施例中,如上所述,客户端系统130上的设备上协调器206可以协调接收用户输入,并且可以在示例工作流中的一个或多个决策点处,确定应该使用上述运行模式中的哪一种运行模式来处理或继续处理用户输入。如上进一步所述,对运行模式的选择可以至少部分地基于设备状态、与用户输入相关联的任务、和/或一个或多个附加因素。作为示例而非限制,继续参考图2中所示的工作流架构,在实体解析模块212a生成输出或空输出之后,设备上协调器206可以在决策点(D1)215处,确定是在第一运行模式(即,设备上模式)、在第二运行模式(即,云模式)还是在第三运行模式(即,混合模式)下继续处理用户输入。例如,在决策点(D1)215处,如果所识别的意图与时延敏感处理任务(例如,拍摄照片、暂停计时器)相关联,则设备上协调器206可以选择第一运行模式(即,设备上模式)。作为另一示例而非限制,如果客户端系统130上的设备上处理不支持消息收发任务,则设备上协调器206可以选择第三运行模式(即,混合模式)来处理与消息收发请求相关联的用户输入。作为又一示例,在决策点(D1)215处,如果正被处理的任务需要访问未存储在客户端系统130上的社交图谱、知识图谱或概念图谱,则设备上协调器206可以选择第二运行模式(即,云模式)或第三运行模式(即,混合模式)。替代地,如果客户端系统130上存在信息图谱(该信息图谱包括用于任务的必需信息)的充分版本(例如,知识图谱的小版本和/或自举版本),则设备上协调器206可以替代地选择第一运行模式(即,设备上模式)。
在特定实施例中,如图2所示,如果设备上协调器206在决策点(D1)215处确定应该使用第一运行模式(即,设备上模式)或第三运行模式(即,混合模式)继续处理,则客户端侧过程可以继续。作为示例而非限制,可以将来自实体解析模块212a的输出发送到设备上对话管理器216a。在特定实施例中,设备上对话管理器216a可以包括对话状态追踪器218a和动作选择器222a。设备上对话管理器216a可以具有复杂的对话逻辑和产品相关的业务逻辑,以管理用户与助理系统140之间的对话状态和对话流。设备上对话管理器216a可以包括用于端到端集成和多轮支持的全部功能(例如,确认、消歧)。设备上对话管理器216a在计算限制和资源(包括内存、计算(CPU)和二进制大小约束)方面也可以是轻量级的。设备上对话管理器216a也可以是可扩展的,以提高开发者体验。在特定实施例中,设备上对话管理器216a可以例如通过以下方式来使助理系统140受益:提供离线支持以减少网络连接问题(例如,不稳定或不可用的网络连接),使用客户端侧过程来防止隐私敏感信息被传输出客户端系统130,以及在高时延敏感场景中提供稳定的用户体验。
在特定实施例中,设备上对话管理器216a还可以进行错误触发减少。对错误触发减少的实现可以检测并防止来自用户输入的、也将会调用助理系统140的错误触发(例如,意外唤醒词),并且可以进一步防止助理系统140生成基于错误触发的数据记录,这些数据记录可能是不准确的和/或可能受制于隐私约束。作为示例而非限制,如果用户处于语音通话中,则用户在语音通话期间的对话可以被认为是私密的,并且错误触发减少可以将对唤醒词的检测限制为由用户的客户端系统130本地接收的音频用户输入。在特定实施例中,设备上对话管理器216a可以基于废话检测器(nonsense detector)来实现错误触发减少。如果废话检测器以高置信度确定在从用户接收到唤醒词的时间点处、所接收到的该唤醒词在逻辑和/或上下文上是不合理的,则设备上对话管理器216a可以确定用户不想要调用助理系统140。
在特定实施例中,由于客户端系统130的计算能力有限,因此设备上对话管理器216a可以基于为客户端系统130特别定制的学习算法来进行设备上学习。作为示例而非限制,联合学习技术可以由设备上对话管理器216a实现。联合学习是一特定类别的分布式机器学习技术,该分布式机器学习技术可以使用终端设备(例如,移动电话)上存储的分散化数据来训练机器学习模型。在特定实施例中,设备上对话管理器216a可以使用联合用户表示学习模型来扩展现有的神经网络个性化技术,以实现设备上对话管理器216a的联合学习。联合用户表示学习可以通过学习特定于任务的用户表示(即,嵌入)和/或通过使模型权重个性化,来使联合学习模型个性化。联合用户表示学习是简单的、可扩展的、隐私保护的和资源高效的。联合用户表示学习可以将模型参数分为联合参数和隐私参数。隐私参数(例如,私人用户嵌入)可以在客户端系统130上进行本地训练,而不是被传送到远程服务器(例如,与助理系统140相关联的服务器)或由远程服务器求平均。相反,联合参数可以在服务器上进行远程训练。在特定实施例中,设备上对话管理器216a可以使用主动联合学习模型,该主动联合学习模型可以将在远程服务器上训练的全局模型传输到客户端系统130并在客户端系统130上本地计算梯度。主动联合学习可以使设备上对话管理器216a能够最小化与下载模型和上传梯度相关联的传输成本。对于主动联合学习,在每一轮中,可以至少部分地基于以当前模型和客户端系统130上的数据为条件的概率,以半随机方式选择客户端系统130,以优化用于训练联合学习模型的效率。
在特定实施例中,当用户与世界交互并且助理系统140与用户交互时,对话状态追踪器218a可以追踪随时间的状态变化。作为示例而非限制,对话状态追踪器218a可以根据适用的隐私策略追踪例如用户正在谈论什么、用户与谁在一起、用户在哪里、当前正在进行什么任务、以及用户注视的位置。
在特定实施例中,在决策点(D1)215处,设备上协调器206可以确定将用户输入转发到第二运行模式(即,云模式)或第三运行模式(即,混合模式)的服务器。作为示例而非限制,如果客户端系统130上不支持特定功能或过程(例如,消息收发),则设备上协调器206可以在决策点(D1)215处确定使用第三运行模式(即,混合模式)。在特定实施例中,设备上协调器206可以使得来自NLU模块210a、上下文引擎220a和实体解析模块212a的输出,通过对话管理器代理224被转发到远程的对话管理器216b的实体解析模块212b以继续该处理。对话管理器代理224可以是用于在客户端系统130与服务器之间交换信息/事件的通信通道。在特定实施例中,对话管理器216b还可以包括远程的仲裁器226b、远程的对话状态追踪器218b和远程的动作选择器222b。在特定实施例中,在决策点(D0)205处,助理系统140可能已经开始以第二运行模式(即,云模式)处理用户输入,而在决策点(D1)215处,设备上协调器206可以确定继续基于第二运行模式(即,云模式)处理该用户输入。因此,可以在远程的实体解析模块212b处接收来自NLU模块210b和上下文引擎220b的输出。远程的实体解析模块212b可以具有与本地的实体解析模块212a类似的功能,该功能可以包括解析与槽相关联的实体。在特定实施例中,实体解析模块212b可以在解析实体时访问社交图谱、知识图谱或概念图谱中的一者或多者。可以在仲裁器226b处接收来自实体解析模块212b的输出。
在特定实施例中,远程的仲裁器226b可以负责在客户端侧上游结果与服务器侧上游结果(例如,来自NLU模块210a/210b的结果、来自实体解析模块212a/212b的结果、以及来自上下文引擎220a/220b的结果)之间进行选择。仲裁器226b可以将所选择的上游结果发送到远程的对话状态追踪器218b。在特定实施例中,类似于本地的对话状态追踪器218a,远程的对话状态追踪器218b可以使用任务规范将上游结果转换成候选任务,并用实体解析来解析参数(argument)。
在特定实施例中,在决策点(D2)225处,设备上协调器206可以确定是继续基于第一运行模式(即,设备上模式)来处理用户输入,还是将用户输入转发到第三运行模式(即,混合模式)的服务器。该决策可以取决于例如客户端侧过程是否能够成功地解析任务和槽、是否存在具有特定特征支持的有效任务策略、和/或客户端侧过程与服务器侧过程之间的上下文差异。在特定实施例中,在决策点(D2)225处做出的决策可以是针对多轮场景的。在特定实施例中,可能存在至少两种可能的场景。在第一场景中,助理系统140可能已经开始使用客户端侧对话状态在第一运行模式(即,设备上模式)下处理用户输入。如果助理系统140在某一时刻决定切换到使远程服务器处理用户输入,则助理系统140可以创建具有当前任务状态的程序化/预定义任务,并将该程序化/预定义任务转发到远程服务器。对于后续轮次,助理系统140可以使用服务器侧对话状态在第三运行模式(即,混合模式)下继续处理。在另一场景中,助理系统140可能已经开始在第二运行模式(即,云模式)或第三运行模式(即,混合模式)下处理用户输入,并且对于所有后续轮次可能基本上依赖于服务器侧对话状态。如果设备上协调器206确定继续基于第一运行模式(即,设备上模式)处理用户输入,则可以在动作选择器222a处接收来自对话状态追踪器218a的输出。
在特定实施例中,在决策点(D2)225处,设备上协调器206可以确定将用户输入转发到远程服务器,并继续在第二运行模式(即,云模式)或第三运行模式(即,混合模式)下处理用户输入。助理系统140可以创建具有当前任务状态的程序化/预定义任务,并将该程序化/预定义任务转发到服务器,该程序化/预定义任务可以在动作选择器222b处被接收。在特定实施例中,助理系统140可能已经开始在第二运行模式(即,云模式)下处理用户输入,并且设备上协调器206可以在决策点(D2)225处确定继续在第二运行模式(即,云模式)下处理用户输入。因此,可以在动作选择器222b处接收来自对话状态追踪器218b的输出。
在特定实施例中,动作选择器222a/222b可以执行交互管理。动作选择器222a/222b可以确定并触发一组通用可执行动作。这些动作可以在客户系统130上或在远程服务器上执行。作为示例而非限制,这些动作可以包括向用户提供信息或建议。在特定实施例中,这些动作可以与代理228a/228b、用户和/或助理系统140本身交互。这些动作可以包括这样的动作:所述动作包括槽请求、确认、消歧或代理执行中的一者或多者。这些动作可以独立于动作选择器222a/222b的底层实现。对于更复杂的场景(例如多轮任务或具有复杂业务逻辑的任务),本地的动作选择器222a可以调用一个或多个本地的代理228a,而远程的动作选择器222b可以调用一个或多个远程的代理228b,以执行这些动作。可以通过任务ID来调用代理228a/228b,并且可以使用该任务ID将任何动作路由到正确的代理228a/228b。在特定实施例中,代理228a/228b可以被配置为充当一个域的多个内容提供者之间的代理商(broker)。内容提供者可以是负责执行与意图相关联的动作或完成与该意图相关联的任务的实体。在特定实施例中,代理228a/228b可以为助理系统140提供若干功能,这些功能包括例如本地模板生成、特定于任务的业务逻辑和查询外部API。代理228a/228b在执行任务的动作时,可以使用来自对话状态追踪器218a/218b的上下文,并且还可以更新对话状态追踪器218a/218b。在特定实施例中,代理228a/228b还可以生成来自对话动作的部分有效负载。
在特定实施例中,本地的代理228a可以具有被编译/被注册用于不同平台(例如,智能眼镜与VR头戴式设备)的不同实现。在特定实施例中,多个设备特定的实现(例如,对客户端系统130或客户端系统130上的消息收发应用的实时调用)可以由单个代理228a进行内部处理。替代地,设备特定的实现可以由与多个域相关联的多个代理228a来处理。作为示例而非限制,调用智能眼镜上的代理228a可以以与调用智能手机上的代理228a不同的方式来实现。不同的平台还可以使用不同数量的代理228a。代理228a还可以是跨平台的(即,客户端系统130上的不同操作系统)。此外,代理228a可以具有最小化的启动时间或二进制大小影响。本地的代理228a可以适用于特定用例。作为示例而非限制,一个用例可以是对客户端系统130的紧急调用。作为另一示例而非限制,另一用例可以是在没有网络连接的情况下响应用户输入。作为另一示例而非限制,另一用例可以是:特定域/任务可能是隐私敏感的并且可以禁止将用户输入发送到远程服务器。
在特定实施例中,本地的动作选择器222a可以调用本地的传递系统230a来执行动作,而远程的动作选择器222b可以调用远程的传递系统230b来执行动作。传递系统230a/230b一经接收到来自对话状态追踪器218a/218b的触发信号,就可以通过执行对应动作来传递预定义事件。传递系统230a/230b可以确保将事件传递到具有活动连接的主机。作为示例而非限制,传递系统230a/230b可以向属于一个用户的所有在线设备广播。作为另一示例而非限制,传递系统230a/230b可以将事件传递到目标特定的设备。传递系统230a/230b还可以使用最新的设备上下文来渲染有效负载。
在特定实施例中,设备上对话管理器216a还可以包括单独的本地动作执行模块,并且远程的对话管理器216b还可以包括单独的远程动作执行模块。本地执行模块和远程动作执行模块可以具有类似的功能。在特定实施例中,动作执行模块可以调用代理228a/228b来执行任务。动作执行模块还可以执行由动作选择器222a/222b确定的一组通用可执行的动作。该组可执行的动作可以通过传递系统230a/230b与代理228a/228b、用户和助理系统140本身交互。
在特定实施例中,如果使用第一运行模式(即,设备上模式)来处理用户输入,则可以将来自代理228a和/或传递系统230a的结果返回到设备上对话管理器216a。然后,设备上对话管理器216a可以指示本地的仲裁器226a基于这些结果生成最终响应。仲裁器226a可以概括这些结果并对其进行评估。作为示例而非限制,仲裁器226a可以对响应于用户输入的结果进行排序并选择最佳结果。如果在第二运行模式(即,云模式)下处理用户请求,则可以将来自代理228b和/或传递系统230b的结果返回到远程的对话管理器216b。远程的对话管理器216b可以通过对话管理器代理224指示仲裁器226a基于这些结果生成最终响应。类似地,仲裁器226a可以分析这些结果并选择最佳结果以提供给用户。如果基于第三运行模式(即,混合模式)来处理用户输入,则(例如,来自代理228a/228b和/或传递系统230a/230b的)客户端侧结果和服务器侧结果都可以分别通过设备上对话管理器216a和远程的对话管理器216b提供给仲裁器226a。然后,仲裁器226a可以在客户端侧结果与服务器侧结果之间进行选择,以确定要呈现给用户的最终结果。在特定实施例中,在这些结果之间做出决定的逻辑可以取决于特定用例。
在特定实施例中,本地的仲裁器226a可以基于最终结果生成响应,并将该响应发送到渲染输出模块232。渲染输出模块232可以确定如何以适合于客户端系统130的方式渲染输出。作为示例而非限制,对于VR头戴式设备或AR智能眼镜,渲染输出模块232可以确定使用基于视觉的模态(例如,图像或视频片段)来渲染输出,该输出可以通过VR头戴式设备或AR智能眼镜显示。作为另一示例,该响应可以被渲染为音频信号,该音频信号可以由用户通过VR头戴式设备或AR智能眼镜播放。作为又一示例,该响应可以被渲染为增强现实数据以用于增强用户体验。
在特定实施例中,除了确定用于处理用户输入的运行模式之外,设备上协调器206还可以确定是在渲染设备137上处理用户输入、在伴随设备138上处理用户输入、还是在远程服务器上处理用户请求。渲染设备137和/或伴随设备138均可以以与上文公开的类似的方式使用助理堆栈来处理用户输入。作为示例而非限制,设备上协调器206可以确定该处理的一部分应在渲染设备137上完成,该处理的一部分应该在伴随设备138上完成,并且其余处理应该在远程服务器上完成。
在特定实施例中,助理系统140可以具有各种能力,这些能力包括音频认知、视觉认知、信号情报、推理和记忆。在特定实施例中,音频认知的能力可以使助理系统140能够:例如理解与不同语言的各个域相关联的用户输入、理解并概括对话、执行复杂命令的设备上音频认知、通过语音识别用户、从对话和对话的自动标记部分中提取主题、实现没有唤醒词的音频交互、从环境噪声和对话中过滤和放大用户语音、和/或理解在多个客户端系统130在附近的情况下用户正在与哪个客户端系统130对话。
在特定实施例中,视觉认知的能力可以使助理系统140能够:例如执行面部检测和追踪,识别用户,以不同角度识别主要大都市地区中的关注人物,通过现有机器学习模型和一次性学习的组合来识别世界中有趣的对象,识别有趣的瞬间并对其自动采集,在跨越不同时间片段的多个视觉帧上实现语义理解,为人类识别、地点识别或对象识别中的附加能力提供平台支持,识别全套设置和包括个性化位置的微位置,识别复杂活动,识别控制客户端系统130的复杂手势,处理来自以自我为中心的摄像头(egocentric camera)的(例如,具有运动、采集角度、分辨率的)图像/视频,实现与具有较低分辨率的图像有关的类似准确度和速度水平,执行人类、地点和对象的一次性登记和识别,和/或在客户端系统130上执行视觉识别。
在特定实施例中,助理系统140可以利用计算机视觉技术来实现视觉认知。除了计算机视觉技术之外,助理系统140还可以探索可补充这些技术以扩展对对象的识别的选项。在特定实施例中,助理系统140可以使用补充信号,例如对象标签的光学字符识别(opticalcharacter recognition,OCR)、用于地点识别的GPS信号和/或来自用户的客户端系统130的用于识别该用户的信号。在特定实施例中,助理系统140可以执行通用场景识别(例如,家庭空间、工作空间、公共空间)以设置用户的上下文,并缩小计算机视觉搜索空间以识别可能的对象或人。在特定实施例中,助理系统140可以引导用户训练助理系统140。例如,可以使用众包(crowdsourcing)来让用户标记对象并帮助助理系统140随着时间的推移而识别更多对象。作为另一示例,当使用助理系统140时,用户可以将他们的个人对象注册为初始设置的一部分。助理系统140还可以允许用户为他们与之交互的对象提供正信号/负信号,以训练和改进他们的个性化模型。
在特定实施例中,信号情报的能力可以使助理系统140能够:例如确定用户位置、理解日期/时间、确定家庭位置、理解用户的日程和未来想去的地点、集成更丰富的声音理解以仅通过声音来识别设置/上下文、和/或构建在运行时可针对用户的个体例程进行个性化的信号情报模型。
在特定实施例中,推理能力可以使助理系统140能够:例如在未来的任何时间点提取先前的对话线程、合成所有信号以理解微上下文和个性化上下文、根据用户的历史行为学习交互模式和偏好并准确地建议他们可能重视的交互、基于微上下文理解生成高度预测性的主动建议、理解用户可能想要在一天中的什么时间观看什么内容、和/或理解场景中的变化以及该变化可能如何影响用户想要的内容。
在特定实施例中,记忆能力可以使助理系统140能够:例如记住用户先前访问过或与之交互过的社交联系、随意地写入存储器和查询存储器(即,开放口述和自动标签)、基于先前的交互和长期学习来提取更丰富的偏好、记住用户的生活史、从以自我为中心的数据流和自动目录中提取丰富的信息、和/或以结构化形式向存储器写入以形成丰富的短期记忆、情景记忆和长期记忆。
图3示出了助理系统140的示例流程图300。在特定实施例中,助理服务模块305可以在接收到用户输入时访问请求管理器310。在特定实施例中,请求管理器310可以包括上下文提取器312和对话型理解(conversational understanding,CU)对象生成器(CU对象生成器)314。上下文提取器312可以提取与用户输入相关联的上下文信息。上下文提取器312还可以基于在客户端系统130上执行的助理应用136来更新上下文信息。作为示例而非限制,对上下文信息的更新可以包括在客户端系统130上显示内容项。作为另一示例而非限制,对上下文信息的更新可以包括是否在客户端系统130上设置提示。作为另一示例而非限制,对上下文信息的更新可以包括是否正在客户端系统130上播放歌曲。CU对象生成器314可以生成与用户输入相关的特定CU对象。CU对象可以包括与用户输入相关联的对话会话数据和特征,该对话会话数据和特征可以与助理系统140的所有模块共享。在特定实施例中,请求管理器310可以将上下文信息和所生成的CU对象存储在数据存储库320中,该数据存储库320是在助理系统140中实现的特定数据存储库。
在特定实施例中,请求管理器310可以将所生成的CU对象发送到NLU模块210。NLU模块210可以执行多个步骤来处理CU对象。NLU模块210可以首先在允许列表/阻止列表330中遍历CU对象。在特定实施例中,允许列表/阻止列表330可以包括匹配用户输入的解释数据。然后,NLU模块210可以执行对CU对象的特征化332。然后,NLU模块210可以基于由特征化332产生的特征,对用户输入执行域分类/选择334,以将用户输入分类到预定义域中。在特定实施例中,域可以表示交互(例如,教育)的社交上下文、或一组意图(例如,音乐)的命名空间。可以基于两个相关的过程进一步处理域分类/选择结果。在一个过程中,NLU模块210可以使用元意图分类器336a来处理域分类/选择结果。元意图分类器336a可以确定描述用户意图的类别。意图可以是预定义的语义意图分类中的元素,其可以指示用户与助理系统140交互的目的。NLU模块210可以将用户输入分类为预定义分类的成员。例如,用户输入可以是“播放贝多芬的第五首”,并且NLU模块210可以将该输入分类为具有意图[IN:播放_音乐]([IN:play_music])。在特定实施例中,多个域共同的意图可以由元意图分类器336a处理。作为示例而非限制,元意图分类器336a可以基于机器学习模型,该机器学习模型可以将域分类/选择结果作为输入并计算该输入与特定预定义元意图相关联的概率。然后,NLU模块210可以使用元槽标注器338a来为来自元意图分类器336a的分类结果标注一个或多个元槽。槽可以是与用户输入内表示基本语义实体的字符串相对应的命名子串。例如,“披萨(pizza)”的槽可以是[SL:食物]([SL:dish])。在特定实施例中,一组有效或预期的命名槽可以以被分类的意图为条件。作为示例而非限制,对于意图[IN:播放音乐],有效的槽可以是[SL:歌曲名]([SL:song_name])。在特定实施例中,元槽标注器338a可以标记通用槽,例如对项的指代(例如,第一)、槽的类型、槽的值等。在特定实施例中,NLU模块210可以使用意图分类器336b来处理域分类/选择结果。意图分类器336b可以确定与用户输入相关联的用户意图。在特定实施例中,对于每个域,可以存在一个意图分类器336b来确定给定域中最可能的意图。作为示例而非限制,意图分类器336b可以基于机器学习模型,该机器学习模型可以将域分类/选择结果作为输入并计算该输入与特定的预定义意图相关联的概率。然后,NLU模块210可以使用槽标注器338b来标注与用户输入相关联的一个或多个槽。在特定实施例中,槽标注器338b可以为用户输入的n元语法(n-gram)标注一个或多个槽。作为示例而非限制,用户输入可以包括“将我的帐户中的500美元兑换成日元”。意图分类器336b可以将用户输入作为输入并将其表示为向量。然后,槽标注器338b可以基于表示用户输入的向量与表示不同预定义意图的向量之间的向量比较,来计算用户输入与不同的预定义意图相关联的概率。以类似的方式,槽标注器338b可以将用户输入作为输入并且将每个词语表示为向量。然后,意图分类器336b可以基于表示词语的向量与表示不同的预定义槽的向量之间的向量比较,来计算每个词语与不同的预定义槽相关联的概率。用户的意图可以被分类为“兑换货币”。用户输入的槽可以包括“500”、“美元”、“账户”和“日元”。用户的元意图可以被分类为“金融服务”。元槽可以包括“金融”。
在特定实施例中,自然语言理解(NLU)模块210还可以从社交图谱、知识图谱或概念图谱中的一者或多者中提取信息,并且可以检索本地存储在客户端系统130上的用户资料。NLU模块210在分析用户输入时,还可以考虑上下文信息。NLU模块210可以进一步通过以下方式来处理来自这些不同源的信息:识别和概括信息、标注用户输入的n元语法、基于所概括的信息利用置信度分数对n元语法进行排序、以及将经排序的n元语法表示为可用于由NLU模块210理解用户输入的特征。在特定实施例中,NLU模块210可以以个性化和上下文感知的方式,从用户输入中识别域、意图或槽中的一者或多者。作为示例而非限制,用户输入可以包括“告诉我怎么去咖啡店”。NLU模块210可以基于用户的个人信息和相关联的上下文信息,来识别用户想要去的特定咖啡店。在特定实施例中,NLU模块210可以包括特定语言的词典、解析器和将句子划分为内部表示的语法规则。NLU模块210还可以包括执行朴素语义或随机语义分析的一个或多个程序,并且还可以使用语用学来理解用户输入。在特定实施例中,解析器可以基于这样的深度学习架构:该深度学习架构包括多个长短期记忆(long-short term memory,LSTM)网络。作为示例而非限制,解析器可以基于递归神经网络语法(recurrent neural network grammar,RNNG)模型,该RNNG模型是一种递归和循环LSTM算法。有关自然语言理解(NLU)的更多信息可以在以下文件中找到:于2018年6月18日提交的、第16/011062号美国专利申请,于2018年7月2日提交的、第16/025317号美国专利申请,于2018年7月17日提交的、第16/038120号美国专利申请。
在特定实施例中,可以将NLU模块210的输出发送到实体解析模块212以解析相关实体。实体可以包括例如唯一的用户或概念,这些用户或概念中的每个可以具有唯一的标识符(ID)。这些实体可以包括以下中的一者或多者:(来自通用知识库的)真实世界实体、(来自用户存储器的)用户实体、上下文实体(设备上下文/对话上下文)或值解析(数字、日期时间等)。在特定实施例中,实体解析模块212可以包括域实体解析340和通用实体解析342。实体解析模块212可以执行通用实体解析和域特定的实体解析。通用实体解析342可以通过将槽和元槽分类为不同的通用主题来解析实体。域实体解析340可以通过将槽和元槽分类为不同的域来解析实体。作为示例而非限制,响应于对特定品牌电动汽车的优点的查询的输入,通用实体解析342可以将所引用的电动汽车品牌解析为车辆,并且域实体解析340可以将所引用的电动汽车品牌解析为电动汽车。
在特定实施例中,可以基于与世界和用户有关的知识350来解析实体。助理系统140可以从图谱352中提取本体数据。作为示例而非限制,图谱352可以包括知识图谱、社交图谱或概念图谱中的一者或多者。本体数据可以包括不同槽/元槽与域之间的结构关系。本体数据还可以包括如下信息:槽/元槽可以如何分组、槽/元槽可以如何在层次结构(其中,更高层包括域)内相关、以及槽/元槽可以如何根据相似性和差异性进行细分。例如,知识图谱可以包括多个实体。每个实体可以包括与一个或多个属性值相关联的单个记录。该特定记录可以与唯一实体标识符相关联。每条记录可以具有该实体的不同的属性值。每个属性值可以与置信度概率和/或语义权重相关联。针对属性值的置信度概率表示:对于给定属性,该值准确的概率。针对属性值的语义权重可以表示:考虑到所有可用信息,该值在语义上有多适合于给定属性。例如,知识图谱可以包括名为“书名(BookName)”的书的实体,该实体可以包括从多个内容源(例如,在线社交网络、在线百科全书、书评源、媒体数据库和娱乐内容源)中提取的信息,该信息可以被去重、解析和融合以生成知识图谱的单个唯一记录。在该示例中,名为“书名(BookName)”的实体可以与“类型(genre)”实体属性的“奇幻(fantasy)”属性值相关联。有关知识图谱的更多信息可以在以下文件中找到:于2018年7月27日提交的、第16/048049号美国专利申请,以及于2018年7月27日提交的、第16/048101号美国专利申请。
在特定实施例中,助理用户存储器(assistant user memory,AUM)354可以包括帮助确定如何更有效地帮助用户的用户情景记忆。AUM 354可以是用于存储用户数据、检索用户数据、为用户数据编索引和搜索用户数据的中心位置。作为示例而非限制,AUM 354可以存储诸如联系人、照片、提醒等信息。此外,AUM 354可以自动将数据同步到服务器和其他设备(仅针对非敏感数据)。作为示例而非限制,如果用户在一个设备上为联系人设置了昵称,则所有设备可以基于AUM 354同步并获得该昵称。在特定实施例中,AUM 354可以首先准备用于存储在数据存储库中的事件、用户状态、提醒和触发状态。可以创建记忆节点标识符(ID)以在AUM 354中存储条目对象,其中条目可以是某条关于用户的信息(例如,照片、提醒等)。作为示例而非限制,记忆节点ID的前几位可以指示这是记忆节点ID类型,后几位可能是用户ID,并且再后几位可能是创建时间。然后,AUM 354可以为这些数据编索引,以便根据需要进行检索。对于此目的,可以创建索引ID。在特定的实施例中,在给定了“索引关键词”(例如,照片_位置(PHOTO_LOCATION))和“索引值”(例如,“旧金山(San Francisco)”)的情况下,AUM 354可以获得具有该属性(例如,在旧金山的照片)的记忆ID的列表。作为示例而非限制,前几位可以指示这是索引ID类型,后几位可能是用户ID,并且再后几位可以对“索引关键词”和“索引值”进行编码。AUM 354还可以使用灵活的查询语言进行信息检索。对于此目的,可以创建关系索引ID。在特定实施例中,在给定了源记忆节点和边类型的情况下,AUM 354可以从源中获得具有该类型外向边的所有目标节点的记忆ID。作为示例而非限制,前几位可以指示这是关系索引ID类型,后几位可以是用户ID,并且再后几位可以是源节点ID和边类型。在特定实施例中,AUM 354可以帮助检测不同事件的并发更新。有关情景记忆的更多信息可以在以下文件中找到:于2019年8月27日提交的、第16/552559号美国专利申请。
在特定实施例中,实体解析模块212可以使用不同技术来解析不同类型的实体。对于真实世界实体,实体解析模块212可以使用知识图谱来解析实体的范围,例如“音乐曲目”、“电影”等。对于用户实体,实体解析模块212可以使用用户记忆或一些代理来将范围解析为用户特定的实体,例如“联系人”、“提醒”或“关系”。对于上下文实体,实体解析模块212可以基于来自上下文引擎220的信息来执行共指(coreference),以解析对上下文中的实体的指代,例如“他”、“她”、“第一个”或“最后一个”。在特定实施例中,对于共指,实体解析模块212可以为由NLU模块210确定的实体创建指代。然后,实体解析模块212可以准确地解析这些指代。作为示例而非限制,用户输入可以包括“为我找到最近的杂货店并指引我去那里”。基于共指,实体解析模块212可以将“那里”解释为“最近的杂货店”。在特定实施例中,共指可以取决于来自上下文引擎220和对话管理器216的信息,以便以提高的准确性解释指代。在特定实施例中,实体解析模块212还可以解析依据上下文(设备上下文或对话上下文)的实体,例如屏幕上所示的实体或来自上一次对话历史的实体。对于值解析,实体解析模块212可以将所提及的值解析为标准形式的精确值,例如数值、日期时间、地址等。
在特定实施例中,实体解析模块212可以首先对适用的隐私约束执行检查,以保证执行实体解析不违反任何适用的隐私策略。作为示例而非限制,要解析的实体可以是在其隐私设置中指定其身份不应该在在线社交网络上可搜索的另一用户。在这种情况下,实体解析模块212可能不会响应于用户输入而返回该用户的实体标识符。通过利用从社交图谱、知识图谱、概念图谱和用户资料获得的所描述的信息,并通过遵守任何适用的隐私策略,实体解析模块212可以以个性化的、上下文感知和隐私保护的方式,解析与用户输入相关联的实体。
在特定实施例中,实体解析模块212可以与ASR模块208一起工作以执行实体解析。下文的示例示出了实体解析模块212可以如何解析实体名称。实体解析模块212可以首先将与用户相关联的名称扩展成其相应的作为语音辅音表示的规格化文本形式,该语音辅音表示可以使用双音素算法(double metaphone algorithm)来语音转录。然后,实体解析模块212可以确定候选转录的n最佳集合,并对候选转录的n最佳集合中的所有语音转录执行并行理解过程。在特定实施例中,随后可以将解析为相同意图的每个转录转变(collapse)为单个意图。然后,可以为每个意图分配与该意图的最高得分候选转录相对应的分数。在转变期间,实体解析模块212可以识别与每个槽相关联的各种可能的文本转录,这些可能的文本转录通过与槽的转录相关联的边界定时偏移来进行关联。然后,实体解析模块212可以从多个(例如,1000个)候选转录中针对每个槽提取可能的候选转录的子集,而不管它们是否被分类到相同的意图。以这种方式,槽和意图可以是短语的评分列表。在特定实施例中,能够处理该意图的新任务或正在运行的任务(例如,用于向另一用户发送消息的意图的消息创建(composition)任务)可以被标识并与该意图一起被提供。然后,所识别的任务可以通过向实体解析模块212提供与其槽中的一个槽相关联的短语的评分列表、以及应该针对其进行解析的类别,来触发实体解析模块212。作为示例而非限制,如果实体属性被指定为“朋友”,则实体解析模块212可以在可在匹配器编译时运行的相同扩展中遍历项的每个候选列表。可以在预编译的特里(trie)匹配结构中匹配项的每个候选扩展。可以使用至少部分地基于转录的输入、匹配的形式和朋友姓名的函数,来对匹配进行评分。作为另一示例而非限制,如果实体属性被指定为“名人/杰出人物”,则实体解析模块212可以针对从ASR模块208输出的槽的每个候选项集,执行针对知识图谱的并行搜索。实体解析模块212可以基于匹配的人受欢迎度和ASR提供的得分信号来对匹配进行评分。在特定实施例中,当记忆类别被指定时,实体解析模块212可以针对用户记忆执行相同的搜索。实体解析模块212可以在用户记忆中向后缓慢行进(crawl)并尝试匹配每个记忆(例如,最近在会话中提到的人、或者通过视觉信号看到和识别到的人等)。对于每个实体,实体解析模块212可以采用与如何匹配朋友类似的匹配(即,语音)。在特定实施例中,评分可以包括与先前提到名称的最近时间相关联的时间衰减因子。实体解析模块212还可以对所有匹配进行组合、排序和去重。在特定实施例中,任务可以接收候选集。当存在多个高得分候选时,实体解析模块212可以执行用户促进的消歧(例如,从用户获得对这些候选的实时用户反馈)。
在特定实施例中,上下文引擎220可以帮助实体解析模块212改进实体解析。上下文引擎220可以包括离线聚合器和在线推理服务。离线聚集器可以处理从先前时间窗口收集的与用户相关联的多个数据。作为示例而非限制,数据可以包括在预定时间帧内(例如,从先前的90天窗口)收集的新闻推送帖子/评论、与新闻推送帖子/评论的交互、搜索历史等。处理结果可以作为用户资料的一部分而被存储在上下文引擎220中。用户的用户资料可以包括用户资料数据,该用户资料数据包括与用户相关联的个人背景信息、社交信息和上下文信息。用户资料数据还可以包括通过新闻推送、搜索日志、消息收发平台等上的对话而被聚合的、关于多个主题的用户兴趣和偏好。对用户资料的使用可能受制于隐私约束,以确保用户的信息只能用于他/她的利益,而不能与其他任何人共享。有关用户资料的更多信息可以在以下文件中找到:于2018年4月30日提交的、第15/967239号美国专利申请。在特定实施例中,在线推理服务可以分析助理系统140在当前时间接收的与用户相关联的对话数据。分析结果也可以作为用户资料的一部分而被存储在上下文引擎220中。在特定实施例中,离线聚合器和在线推理服务这两者都可以从多个数据中提取个性化特征。助理系统140的其他模块可以使用所提取的个性化特征来更好地理解用户输入。在特定实施例中,实体解析模块212可以基于自然语言处理(natural-language processing,NLP)在以下步骤中处理来自上下文引擎220的信息(例如,用户资料)。在特定实施例中,实体解析模块212可以通过文本归一化来标记文本,从文本中提取句法特征,并且基于NLP从文本中提取语义特征。实体解析模块212还可以从上下文信息中提取特征,该上下文信息是从用户与助理系统140之间的对话历史访问的。实体解析模块212还可以基于上下文信息进行全局词嵌入、域特定嵌入和/或动态嵌入。可以由实体标注器用实体来注释处理结果。基于注释,实体解析模块212可以生成词典。在特定实施例中,词典可以包括可离线动态更新的全局词典特征。实体解析模块212可以对由实体标注器标记的实体进行排序。在特定实施例中,实体解析模块212可以与包括社交图谱、知识图谱或概念图谱中的一者或多者的不同的图谱352通信,以提取与从上下文引擎220检索到的信息相关的本体数据。在特定实施例中,实体解析模块212还可以基于用户资料、经排序的实体以及来自图谱352的信息,来解析实体。
在特定实施例中,实体解析模块212可以由任务(对应于代理228)驱动。这种对处理顺序的颠倒可以使任务中存在的域知识有可能在明显且适合这样做时、被应用于预过滤或偏置一组解析目标。作为示例而非限制,对于话语“约翰(John)是谁?”,在该话语中没有暗示明确的类别。因此,实体解析模块212可以针对所有内容解析“约翰(John)”。作为另一个示例而非限制,对于话语“向约翰发送消息”,实体解析模块212可以容易地确定“约翰”指的是可以收发消息的人。因此,实体解析模块212可以将解析偏向朋友。作为另一个示例而非限制,对于“约翰最著名的专辑是什么?”为了解析“约翰”,实体解析模块212可以首先确定对应于该话语的任务,即寻找音乐专辑。实体解析模块212可以确定与音乐专辑相关的实体包括歌手、制作人和录音棚。因此,实体解析模块212可以在音乐域中的这些类型的实体中进行搜索,以解析“约翰”。
在特定实施例中,可以将实体解析模块212的输出发送到对话管理器216以推进与用户的对话流。对话管理器216可以是重复地更新状态并基于新状态选择动作的异步状态机。对话管理器216还可以存储用户与助理系统140之间的先前对话。在特定实施例中,对话管理器216可以进行对话优化。对话优化涉及理解并识别与用户的对话中最可能的分支选项的这一挑战。作为示例而非限制,助理系统140可以实现对话优化技术以避免需要确认用户想要呼叫谁,因为助理系统140可以确定基于上下文和可用数据推断的人是预期接收者的高置信度。在特定实施例中,对话管理器216可以实现强化学习框架以改进对话优化。对话管理器216可以包括对话意图解析356、对话状态追踪器218和动作选择器222。在特定实施例中,对话管理器216可以执行所选择的动作,并且随后再次调用对话状态追踪器218,直到所选择的动作需要用户响应或者不再有动作要执行为止。所选择的每个动作可以取决于来自先前动作的执行结果。在特定实施例中,对话意图解析356可以基于用户与助理系统140之间的对话历史,来解析与当前对话会话相关联的用户意图。对话意图解析356可以将由NLU模块210确定的意图映射到不同的对话意图。对话意图解析356还可以基于来自NLU模块210、实体解析模块212的信号、以及用户与助理系统140之间的对话历史,来对对话意图进行排序。
在特定实施例中,对话状态追踪器218可以使用一组操作符来追踪对话状态。操作符可以包括更新对话状态所需的数据和逻辑。每个操作符可以在处理了刚收到的用户输入之后充当对话状态的变化量(delta)。在特定实施例中,对话状态追踪器218可以包括任务追踪器,该任务追踪器可以基于任务规范和不同的规则。对话状态追踪器218还可以包括槽追踪器和共指部件,槽追踪器和共指部件可以是基于规则和/或基于最近时间的。共指部件可以帮助实体解析模块212解析实体。在替代的实施例中,使用共指部件,对话状态追踪器218可以代替实体解析模块212,并且可以解析任何指代/提及并保持追踪状态。在特定实施例中,对话状态追踪器218可以使用任务规范将上游结果转换为候选任务,并利用实体解析来解析参数。可以追踪用户状态(例如,用户的当前活动)和任务状态(例如,触发条件)这两者。在给定了当前状态的情况下,对话状态追踪器218可以生成助理系统140可为用户处理和执行的候选任务。作为示例而非限制,候选任务可以包括“给出建议”、“获取天气信息”或“拍摄照片”。在特定实施例中,对话状态追踪器218可以基于来自例如知识图谱、用户记忆和用户任务历史的可用数据,来生成候选任务。在特定实施例中,对话状态追踪器218随后可以使用经解析的参数来解析触发器对象。作为示例而非限制,用户输入“今晚当妈妈在线且我在家时提醒我给她打电话”可以通过对话状态追踪器218执行以下从NLU输出到触发表示的转换:
在上面的示例中,“妈妈”、“家”和“今晚”由它们各自的实体来表示:人物实体(personEntity)、位置实体(locationEntity)、日期实体(datetimeEntity)。
在特定实施例中,对话管理器216可以将由上下文引擎220确定的事件映射为动作。作为示例而非限制,动作可以是自然语言生成(NLG)动作、显示或覆盖、设备动作或检索动作。对话管理器216还可以执行上下文追踪和交互管理。上下文追踪可以包括将实时的事件流聚合为统一的用户状态。交互管理可以包括在每个状态中选择最佳动作。在特定实施例中,对话状态追踪器218可以执行上下文追踪(即,追踪与用户有关的事件)。为了支持对事件流的处理,对话状态追踪器218a可以使用事件处理器(例如,用于消歧、确认、请求),该事件处理器可以消耗(consume)各种类型的事件并更新内部助理状态。每种事件类型可以有一个或多个处理器。每个事件处理器可能正在修改助理状态的某个片段。在特定实施例中,事件处理器可能正在对状态的不相交子集进行操作(即,只有一个处理器可以对该状态中的特定字段具有写入访问权)。在特定实施例中,所有事件处理器可以具有处理给定事件的机会。作为示例而非限制,对话状态追踪器218可以在每个事件上并行运行所有事件处理器,并且随后可以合并由各个事件处理器提出的状态更新(例如,对于每个事件,大多数处理器可以返回空(NULL)更新)。
在特定实施例中,对话状态追踪器218可以用作需要版本化的任何编程处理器(逻辑)。在特定实施例中,代替直接改变对话状态,对话状态追踪器218可以是边际效应无关的部件,并且可以生成对话状态更新操作符(其提出对对话状态的更新)的n个最佳候选。对话状态追踪器218可以包括意图解析器,该意图解析器包含基于对话状态来处理不同类型的NLU意图并生成操作符的逻辑。在特定实施例中,可以通过意图处理器来组织逻辑,该意图处理器例如为当助理系统140请求进行消歧时用于处理意图的消歧意图处理器、包括用于处理确认的该逻辑的确认意图处理器等。意图解析器可以将该轮意图与对话状态组合在一起,以生成与用户的对话的上下文更新。然后,槽解析部件可以使用包括知识图谱和域代理的解析提供器,递归地解析更新操作符中的槽。在特定实施例中,对话状态追踪器218可以更新/排序当前对话会话的对话状态。作为示例而非限制,如果对话会话结束,则对话状态追踪器218可以将对话状态更新为“完成”。作为另一示例而非限制,对话状态追踪器218可以基于与对话状态相关联的优先级来对该对话状态进行排序。
在特定实施例中,对话状态追踪器218可以与动作选择器222就对话意图和相关联的内容对象进行通信。在特定实施例中,动作选择器222可以针对不同的对话意图对不同的对话假设进行排序。动作选择器222可以采用对话状态的候选操作符,并查询对话策略360来决定应该执行什么动作。在特定实施例中,对话策略360可以是基于树的策略,该基于树的策略是预先构建的对话计划。基于当前对话状态,对话策略360可以选择节点来执行并生成相应的动作。作为示例而非限制,基于树的策略可以包括主题分组节点和对话动作(叶)节点。在特定实施例中,对话策略360还可以包括描述代理228对动作的执行计划的数据结构。对话策略360还可以包括通过逻辑运算符彼此相关的多个目标。在特定实施例中,目标可以是对话策略的一部分的结果,并且该目标可以由对话管理器216构建。目标可以由具有一个或多个命名参数的标识符(例如,字符串)来表示,该命名参数将目标参数化。作为示例而非限制,具有其相关联的目标参数的目标可以被表示为{确认_艺术家,参数:{艺术家:“麦当娜(Madonna)”}}。在特定实施例中,目标可以被映射到对话策略360的树形结构表示的树的叶子。
在特定实施例中,助理系统140可以使用分层对话策略360,其中通用策略362处理跨域业务逻辑,而任务策略364处理任务/域特定的逻辑。通用策略362可以用于非特定于单独任务的动作。通用策略362可以用于确定任务堆叠和切换、主动任务、通知等。通用策略362可以包括:处理低置信度意图、内部错误、具有重试的不可接受的用户响应、和/或基于ASR或NLU置信度分数跳过或插入确认。通用策略362还可以包括对来自对话状态追踪器218的输出的对话状态更新候选进行排序的逻辑,并且可以挑选要更新的一个(例如,挑选排序第一的任务意图)。在特定实施例中,助理系统140可以具有用于通用策略362的特定接口,该接口允许将分散的跨域策略/业务规则(特别是在对话状态追踪器218中找到的那些)合并到动作选择器222的功能中。用于通用策略362的接口还可以允许创建可绑定到特定情形或客户端的(例如,可基于客户端、情形而容易地打开或关闭的策略功能的)独立子策略单元。用于通用策略362的接口还可以允许提供具有回退(back-off)的策略分层(即多个策略单元),其中处理特定情况的高度专业化的策略单元由适用于更广泛情形的更通用策略362来备份。在这种情况下,通用策略362可以替代地包括意图或任务特定的策略。
在特定实施例中,任务策略364可以包括基于任务和当前状态的动作选择器222的逻辑。任务策略364可以是动态的和自组织的。在特定实施例中,任务策略364的类型可以包括以下类型中的一者或多者:(1)手动创建的基于树的对话计划;(2)直接实现用于生成动作的接口的编码策略;(3)配置器指定的槽填充任务;或(4)从数据中学习到的基于机器学习模型的策略。在特定实施例中,助理系统140可以使用基于规则的逻辑来自举新的域,并且随后使用机器学习模型来细化任务策略364。在特定实施例中,通用策略362可以从候选操作符中选择一个操作符来更新对话状态,随后由任务策略364选择面向用户的动作。一旦任务在对话状态中是活动的,就可以查询对应的任务策略364来选择正确的动作。
在特定实施例中,动作选择器222可以基于以下项中的一者或多者来选择动作:由上下文引擎220确定的事件、对话意图和状态、相关联的内容对象、以及来自对话策略360的指导。每个对话策略360可以订阅状态字段上的特定条件。在事件被处理并且状态被更新之后,动作选择器222可以运行快速搜索算法(例如,类似于布尔可满足性(Booleansatisfiability)),以基于当前状态识别哪些策略应该被触发。在特定实施例中,如果多个策略被触发,则动作选择器222可以使用平局决胜机制来挑选特定策略。替代地,动作选择器222可以使用如下的更复杂的方法:该方法可以预演每个策略,并且随后挑选可被确定为具有高成功可能性的特定策略。在特定实施例中,将事件映射到动作可以为助理系统140带来若干技术优势。一个技术优势可以包括:每个事件可以是来自用户或用户的物理/数字环境的状态更新,该状态更新可能触发也可能不触发来自助理系统140的动作。另一个技术优势可以包括:通过首先消耗所有事件以更新状态,并随后根据最终状态触发一个或多个动作来处理快速突发的事件(例如,用户进入一个新建筑并看到许多人)的可能性。另一个技术优势可以包括将所有事件消耗到单个全局助理状态中。
在特定实施例中,动作选择器222可以将对话状态更新操作符作为输入的一部分,来选择对话动作。对对话动作的执行可以生成一组期望,以指示对话状态追踪器218处理未来的轮次。在特定实施例中,当处理来自下一轮的用户输入时,可以使用期望来向对话状态追踪器218提供上下文。作为示例而非限制,槽请求对话动作可以具有验证所请求的槽的值的期望。在特定实施例中,对话状态追踪器218和动作选择器222两者都可以在执行所选动作之前不改变对话状态。这可以允许助理系统140执行对话状态追踪器218和动作选择器222,以用于处理推测的ASR结果并利用预演进行n个最佳排名。
在特定实施例中,动作选择器222可以调用不同的代理228来执行任务。同时,对话管理器216可以接收更新对话状态的指令。作为示例而非限制,该更新可以包括等待代理228的响应。代理228可以在注册的内容提供者中进行选择以完成该动作。数据结构可以由对话管理器216基于意图以及与该意图相关联的一个或多个槽来构建。在特定实施例中,代理228可以包括第一方代理和第三方代理。在特定实施例中,第一方代理可以包括可由助理系统140访问和控制的内部代理(例如,与在线社交网络提供的服务(例如,消息收发服务或照片共享服务)相关联的代理)。在特定实施例中,第三方代理可以包括助理系统140无法控制的外部代理(例如,第三方在线音乐应用代理、票务代理)。第一方代理可以与提供由社交网络系统160托管的内容对象和/或服务的第一方提供者相关联。第三方代理可以与提供由第三方系统170托管的内容对象和/或服务的第三方提供者相关联。在特定实施例中,可以为特定域指定第一方代理或第三方代理中的每一者。作为示例而非限制,域可以包括天气、交通、音乐、购物、社交、视频、照片、事件、位置和/或工作。在特定实施例中,助理系统140可以协作地使用多个代理228来响应用户输入。作为示例而非限制,用户输入可以包括“指引我去参加下一会议”。助理系统140可以使用日程代理来检索下一会议的位置。然后,助理系统140可以使用导航代理指引用户参加下一会议。
在特定实施例中,对话管理器216可以支持槽提及的多轮成分(compositional)解析。对于来自NLU模块210的成分解析,解析器可以递归地解析嵌套的槽。对话管理器216还可以支持对嵌套的槽的消歧。作为示例而非限制,用户输入可以是“提醒我给亚历克斯(Alex)打电话”。解析器在创建可操作的提醒待办事项实体之前,可能需要知道要给哪一个亚历克斯打电话。当进一步的用户澄清对于特定槽是必要的时,解析器可以暂停解析并设置解析状态。通用策略362可以检查解析状态并为用户澄清创建相应对话动作。对话管理器216可以在对话状态追踪器218中,基于用户输入和最近的对话动作来更新嵌套的槽。该功能可以允许助理系统140与用户交互,以便不仅能够收集丢失的槽值,而且还减少更复杂/不明确的话语的歧义,以完成任务。在特定实施例中,对话管理器216还可以支持在嵌套意图和多意图用户输入(例如,“拍下这张照片并将其发送给爸爸”)中请求缺失的槽。在特定实施例中,对话管理器216可以支持机器学习模型以获得更鲁棒的对话体验。作为示例而非限制,对话状态追踪器218可以使用基于神经网络的模型(或任何其他合适的机器学习模型)来对任务假设之上的信念(belief)进行建模。作为另一示例而非限制,对于动作选择器222,最高优先级策略单元可以包括白名单/黑名单覆盖,该白名单/黑名单覆盖可能必须通过设计来进行;中等优先级单元可以包括针对动作选择而设计的机器学习模型;而较低优先级单元可以包括当机器学习模型选择不处理一情形时的基于规则的后退(fallback)。在特定实施例中,基于机器学习模型的通用策略单元可以帮助助理系统140减少冗余的消歧或确认步骤,从而减少执行用户输入的轮次数量。
在特定实施例中,可以将由动作选择器222确定的动作发送到传递系统230。传递系统230可以包括CU编辑器370、响应生成部件380、对话状态写入部件382和文本到语音(text-to-speech,TTS)部件390。具体地,可以在CU编写器370处接收动作选择器222的输出。在特定实施例中,来自动作选择器222的输出可以被表示为<k,c,u,d>元组,其中k指示知识源,c指示通信目标,u指示用户模型,d指示话语模型。
在特定实施例中,CU编辑器370可以使用自然语言生成(NLG)部件372为用户生成通信内容。在特定实施例中,NLG部件372可以使用不同的语言模型和/或语言模板来生成自然语言输出。对自然语言输出的生成可以是应用特定的。对自然语言输出的生成还可以针对每个用户进行个性化。在特定实施例中,NLG部件372可以包括内容确定部件、句子规划器和表面实现部件。内容确定部件可以基于知识源、通信目标和用户期望来确定通信内容。作为示例而非限制,该确定可以基于描述逻辑。描述逻辑可以包括例如三个基本观念(motion),这三个基本观念是个体(表示域中的对象)、概念(描述个体的集合)和角色(表示个体或概念之间的二元关系)。描述逻辑可以由一组构造器来表征,该组构造器允许自然语言生成器从原子概念/角色构建复杂的概念/角色。在特定实施例中,内容确定部件可以执行以下任务来确定通信内容。第一任务可以包括转换任务,在该转换任务中,NLG部件372的输入可以被转换成概念。第二任务可以包括选择任务,在该选择任务中,可以基于用户模型在从转换任务产生的概念中选择相关概念。第三任务可以包括验证任务,在该验证任务中,可以验证所选概念的相干性。第四任务可以包括实例化任务,在该实例化任务中,经验证的概念可以被实例化为可由NLG部件372处理的可执行文件。句子规划器可以确定通信内容的组织,以使其可被人类理解。表面实现部件可以确定要使用的特定词语、句子的顺序、以及通信内容的风格。
在特定实施例中,CU编辑器370还可以使用UI有效负载生成器374来确定所生成的通信内容的模态。由于所生成的通信内容可以被认为是对用户输入的响应,因此CU编辑器370还可以使用响应排序器376来对所生成的通信内容进行排序。作为示例而非限制,排序可以指示响应的优先级。在特定实施例中,CU编辑器370可以包括自然语言合成(natural-language synthesis,NLS)部件,该NLS部件可以与NLG部件372分开。NLS部件可以指定由CU编写器370生成的合成语音的属性(包括,性别、音量、节奏、风格或音域),以便为特定用户、任务或代理定制响应。NLS部件可以在不参与对相关联的任务的实现的情况下调整语言合成。在特定实施例中,CU编辑器370可以检查与用户相关联的隐私约束以确保对通信内容的生成遵循隐私策略。有关定制自然语言生成(NLG)的更多信息可以在以下文件中找到:于2018年4月30日提交的、第15/967279号美国专利申请,以及于2018年4月30日提交的、第15/966455号美国专利申请。
在特定实施例中,传递系统230可以基于CU编辑器370的输出来执行不同的任务。这些任务可以包括:使用对话状态写入部件382将对话状态写入(即,存储/更新)到数据存储库330中,以及使用响应生成部件380生成响应。在特定实施例中,如果所确定的通信内容的模态是音频,则还可以将CU编辑器370的输出发送到TTS部件390。在特定实施例中,来自传递系统230的输出随后可以被发送回对话管理器216,来自传送系统230的输出包括由TTS部件390生成的响应、通信内容或语音中的一者或多者。
在特定实施例中,协调器206可以基于实体解析模块212的输出,来确定是在客户端系统130上处理用户输入,还是在服务器上处理用户输入,或者是使用这两者在第三运行模式(即,混合模式)处理用户输入。除了确定如何处理用户输入之外,协调器206还可以接收由对话管理器216提供的来自代理228的结果和/或来自传递系统230的结果。协调器206随后可以将这些结果转发给仲裁器226。仲裁器226可以聚合这些结果、分析它们、选择最佳结果、并将所选择的结果提供给渲染输出模块232。在特定实施例中,仲裁器226可以查询对话策略360以在分析这些结果时获得指导。在特定实施例中,渲染输出模块232可以生成适合于客户端系统130的响应。
图4示出了处理用户输入的以任务为中心的示例流程图400。在特定实施例中,助理系统140不仅可以用语音发起的体验来帮助用户,还可以用在理解用户上下文时发起的更主动的多模态体验来帮助用户。在特定实施例中,助理系统140可以出于这样的目的而依赖于助理任务。助理任务可以是这样的中心概念:该中心概念在整个助理堆栈中共享,以理解用户意图、与用户和世界交互,从而为用户完成正确任务。在特定实施例中,助理任务可以是助理功能的原始单元。助理功能可以包括数据提取、更新某个状态、执行某个命令或由较小的一组任务组成的复杂任务。正确且成功地完成任务以将数值传递给用户可能是对助理系统140进行优化的目标。在特定实施例中,助理任务可以被定义为功能或特征。如果多个产品表面具有完全相同的要求,则可以跨多个产品表面共享助理任务,因此可以很容易地追踪该助理任务。助理任务还可以从一个设备传递到另一个设备,并且很容易在任务中途被另一个设备获得,因为原始单元是一致的。此外,助理任务的一致格式可以允许在助理堆栈中的不同模块中工作的开发者更容易地围绕它进行设计。此外,它还可以允许任务共享。作为示例而非限制,如果用户正在智能眼镜上听音乐,则该用户可以说“在我的手机上播放这首音乐”。在手机还没有被唤醒或有任务要执行的情况下,智能眼镜可以制定提供给手机的任务,该任务随后由手机执行以开始播放音乐。在特定实施例中,如果各个表面具有不同的预期行为,则各个表面可以单独地保留助理任务。在特定实施例中,助理系统140可以基于不同模态的用户输入或其他信号来识别正确的任务,进行对话以收集所有必要的信息,并利用在服务器或本地产品表面内部或外部实现的动作选择器222来完成该任务。在特定实施例中,助理堆栈可以包括一组处理部件,该组处理部件用于唤醒、识别用户输入、理解用户意图、对任务进行推理、完成任务以生成使用语音的自然语言响应。
在特定实施例中,用户输入可以包括语音输入。可以在ASR模块208处接收语音输入,以从该语音输入中提取文本转录。ASR模块208可以使用统计模型,来确定与由助理系统140接收到的作为音频输入的给定语音部分相对应的最有可能的词语序列。模型可以包括以下中的一者或多者:隐马尔可夫(Markov)模型、神经网络、深度学习模型或其任意组合。可以以特定的采样率(例如,16千赫兹(kHz)、44.1kHz或96kHz)并利用表示每个样本的特定数量的比特(例如,24比特中的8比特、16比特)来将接收到的音频输入编码为数字数据。
在特定实施例中,ASR模块208可以包括以下中的一者或多者:字素到音素(grapheme-to-phoneme,G2P)模型、发音学习模型、个性化声学模型、个性化语言模型(personalized language model,PLM)或结束点模型(end-pointing model)。在特定实施例中,字素到音素(G2P)模型可以用于确定用户的字素到音素风格(即,当特定用户说出特定词语时它可能听起来像什么)。在特定实施例中,个性化声学模型可以是音频信号与语言中的语音单元的声音之间的关系的模型。因此,这种个性化声学模型可以识别用户的语音听起来如何。可以使用训练数据(例如,作为音频输入接收到的训练语音和对应于该语音的对应语音单元)来生成个性化声学模型。可以使用特定用户的声音来训练或细化个性化声学模型以识别该用户的语音。在特定实施例中,个性化语言模型随后可以确定与针对特定音频输入而识别出的语音单元相对应的最可能的短语。个性化语言模型可以是各种词语序列可能在该语言中出现的概率的模型。可以使用个性化语言模型将音频输入中的语音单元的声音与词语序列相匹配,并且可以将更大的权重分配给更有可能是该语言中的短语的词语序列。然后,可以选择具有最高权重的词语序列作为对应于音频输入的文本。在特定实施例中,个性化语言模型还可以用于预测在给定上下文的情况下用户最可能说出什么词语。在特定实施例中,结束点模型可以检测何时到达话语的结束。在特定实施例中,在客户端侧过程期间,助理系统140可以在运行时至少部分地基于客户端系统130的有限计算能力,优化个性化语言模型。作为示例而非限制,助理系统140可以为用户可能谈论的多个可能主题预计算多个个性化语言模型。当用户输入与助理请求相关联时,助理系统140可以在运行时基于用户活动,在预计算语言模型之间迅速切换并在本地优化这些预计算语言模型。因此,助理系统140可以保留计算资源,同时高效地识别与用户输入相关联的主题。在特定实施例中,助理系统140还可以在运行时动态地重新学习用户发音。
在特定实施例中,用户输入可以包括非语音输入。可以在上下文引擎220处接收非语音输入,以根据非语音输入确定事件和上下文。上下文引擎220可以确定多模态事件,多模态事件包括语音/文本意图、位置更新、视觉事件、触摸、注视、手势、动作、设备/应用事件、和/或任何其他合适类型的事件。语音/文本意图可以取决于ASR模块208和NLU模块210。位置更新可以由对话管理器216消耗以支持各种主动/被动场景。视觉事件可以基于出现在用户视野中的人或对象。这些事件可由对话管理器216消耗并被记录在临时用户状态中,以支持视觉共指(例如,解析出“那件衬衫多少钱?”中的“那件”以及解析出“把我的联系方式发给他”中的“他”)。注视、手势和活动可以使得在临时用户状态(例如,用户正在跑步)中设置标记,所述标记可以调节动作选择器222。对于设备/应用事件,如果应用对设备状态进行更新,则可以将其发布到助理系统140,使得对话管理器216可以使用该上下文(当前向用户显示的上下文)来处理被动和主动场景。作为示例而非限制,上下文引擎220可以使得在用户的客户端系统130的显示屏上显示推送通知消息。用户可以与推送通知消息交互,这可以发起多模态事件(例如,用于回复从另一用户接收的消息的事件工作流)。其他示例多模态事件可以包括看见朋友、看到地标、在家、跑步、照片中的面部被识别、用触摸开始打电话、用触摸拍摄照片、打开应用等。在特定实施例中,上下文引擎220还可以基于世界/社交更新(例如,天气变化、朋友上线)来确定世界/社交事件。社交更新可以包括用户订阅的事件(例如,朋友的生日、帖子、评论、其他通知)。对话管理器216可以消耗这些更新以触发基于上下文的主动动作(例如,建议用户在其生日时给朋友打电话,但仅当用户没有关注其他事情时)。作为示例而非限制,接收消息可以是社交事件,该社交事件可以触发向用户阅读消息的任务。
在特定实施例中,可以将来自ASR模块208的文本转录发送到NLU模块210。NLU模块210可以处理文本转录并提取用户意图(即,多个意图),并基于语言本体来解析槽或解析结果。在特定实施例中,可以将来自NLU模块210的意图和槽、和/或来自上下文引擎220的事件和上下文发送到实体解析模块212。在特定实施例中,实体解析模块212可以基于来自NLU模块210和/或上下文引擎220的输出,来解析与用户输入相关联的实体。实体解析模块212可以使用不同的技术来解析实体,包括从助理用户存储器(AUM)354访问用户记忆。在特定实施例中,AUM 354可以包括有助于实体解析模块212对实体进行解析的用户情景记忆。AUM354可以是用于存储用户数据、检索用户数据、为用户数据编索引和搜索用户数据的中心位置。
在特定实施例中,实体解析模块212可以向对话状态追踪器218提供意图、槽、实体、事件、上下文或用户记忆中的一者或多者。对话状态追踪器218可以相应地识别任务的一组状态候选,与用户进行交互以收集填充状态所需的信息,并调用动作选择器222来完成任务。在特定实施例中,对话状态追踪器218可以包括任务追踪器410。任务追踪器410可以追踪与助理任务相关联的任务状态。在特定实施例中,任务状态可以是这样的数据结构:该数据结构在多个交互轮次中持续存在,并实时更新以在整个交互期间采集任务的状态。任务状态可以包括与任务执行状态有关的所有当前信息,例如参数、确认状态、置信度分数等。任务状态中的任何错误或过时的信息都可能导致任务执行失败或错误。任务状态还可以用作许多其他部件(例如,ASR模块208、NLU模块210等)的一组上下文信息。
在特定实施例中,任务追踪器410可以包括意图处理器411、任务候选排序模块414、任务候选生成模块416和合并层419。在特定实施例中,任务可以通过其ID名称来标识。如果在任务规范(例如对话策略360、代理执行、NLG对话动作等)中没有明确设置任务ID,则可以使用任务ID来关联相应的部件资产(asset)。因此,来自实体解析模块212的输出可以由任务候选生成模块416的任务ID解析部件417接收,以解析相应任务的任务ID。在特定实施例中,任务ID解析部件417可以调用任务规范管理器API 430来访问用于解析任务ID的触发规范和部署规范。在给定了这些规范的情况下,任务ID解析部件417可以使用意图、槽、对话状态、上下文和用户记忆来解析任务ID。
在特定实施例中,任务的技术规范可以由任务规范来定义。助理系统140可以使用任务规范来触发任务、进行对话会话、以及找到正确的执行模块(例如,代理228)来执行该任务。任务规范可以是产品需求文档的实现。任务规范可以用作通用合约和所有部件约定的要求。任务规范可以被认为是产品的装配规范,而所有开发伙伴都基于该规范交付这些模块。在特定实施例中,可以通过规范在该实现中限定助理任务。作为示例而非限制,任务规则可以被限定为以下类别。一个类别可以是基本任务方案,该基本任务方案包括基本标识信息,例如ID、名称和输入参数的方案。另一个类别可以是关于如何触发任务的触发规范,例如意图、事件消息ID等。另一个类别可以是对话管理器216与用户和系统进行对话的对话规范。另一个类别可以是关于如何执行和完成任务的执行规范。另一个类别可以是关于如何将功能部署到某些表面、本地和用户组的部署规范。
在特定实施例中,任务规范管理器API 430可以是用于访问任务规范管理器的API。任务规范管理器可以是运行时堆栈中的模块,该模块用于从所有任务加载规范并提供接口以访问所有任务规范,以获取详细信息或生成任务候选。在特定实施例中,任务规范管理器可以通过任务规范管理器API 430对运行时堆栈中的所有部件进行访问。任务规范管理器可以包括一组静态实用功能,以利用任务规范管理器来管理任务,例如通过平台过滤任务候选。在任务规范落地之前,助理系统140还可以动态地加载任务规范以在开发阶段支持端到端开发。
在特定实施例中,任务规范可以按域分组并存储在运行时配置435中。运行时堆栈可以在构建时间期间从运行时配置435加载所有任务规范。在特定实施例中,在运行时配置435中,对于域,可以存在cconf文件和cinc文件(例如,sidechef_task.cconf和sidechef_task.inc)。作为示例而非限制,<domian>_tasks.cconf可以包括任务规范的所有细节。作为另一示例而非限制,如果还不支持该功能,<domain>_tasks.cinc可以提供一种方法来覆盖所生成的规范。
在特定实施例中,任务执行可能需要一组参数来执行。因此,参数解析部件418可以使用所解析的任务ID的参数规范来解析参数名称。可以基于NLU输出(例如,槽[SL:联系人]([SL:contact]))、对话状态(例如,短期通话历史)、用户记忆(例如,用户偏好、位置、长期通话历史等)或设备上下文(例如,定时器状态、屏幕内容等)来解析这些参数。在特定实施例中,参数模态可以是文本、音频、图像或其他结构化数据。槽到参数的映射可以由填充策略和/或语言本体来定义。在特定实施例中,在给定任务触发规范的情况下,任务候选生成模块416可以基于所解析的任务ID和参数,来查找要被触发的任务列表作为任务候选。
在特定实施例中,可以将所生成的任务候选发送到任务候选排序模块414以进行进一步排序。任务候选排序模块414可以使用基于规则的排序器415来对它们进行排序。在特定实施例中,基于规则的排序器415可以包括一组试探以偏向某些域任务。以下可以使用上下文优先级的原则对排序逻辑进行描述。在特定实施例中,用户指定任务的优先级可以高于前台任务。当意图是元意图时,前台任务的优先级可以高于设备域任务。设备域任务的优先级可以高于触发意图域的任务。作为示例而非限制,如果在话语(例如,“在定时器应用中创建定时器”)中提到或指定了任务域,则排序可以挑选出任务。作为另一示例而非限制,当定时器应用处于前台并且存在活动定时器时,如果任务域处于前台或活动状态,则排序可以挑选出任务(例如“停止定时器”)以停止定时器。作为另一示例而非限制,如果意图是通用元意图,并且在不存在其他活动应用或活动状态时、任务是设备控制,则排序可以挑选出任务。作为另一示例而非限制,如果任务与意图域相同,则排序可以挑选出任务。在特定实施例中,任务候选排序模块414可以定制一些更多的逻辑来检查意图/槽/实体类型的匹配。可以将经排序的任务候选发送到合并层419。
在特定实施例中,可以将来自实体解析模块212的输出发送到意图处理器411的任务ID解析部件412。与任务ID解析部件417类似,任务ID解析部件412可以解析相应任务的任务ID。在特定实施例中,意图处理器411还可以包括参数解析部件413。与参数解析部件418类似,参数解析部件413可以使用所解析的任务ID的参数规范来解析参数名称。在特定实施例中,意图处理器411可以处理与任务无关的特征,并且可以不在特定于任务的任务规范内表达。意图处理器411可以输出除任务候选之外的状态候选,例如参数更新、确认更新、消歧更新等。在特定实施例中,一些任务可能需要非常复杂的触发条件或非常复杂的参数填充逻辑,这些触发条件或参数填充逻辑可能不能被其他任务(例如,通话中的语音命令、经由[IN:播放_媒体]([IN:PLAY_MEDIA])等的媒体任务等)重复使用,即使它们在任务规范中得到支持。意图处理器411也可以适用于这种类型的任务。在特定实施例中,来自意图处理器411的结果可以优先于来自任务候选排序模块414的结果。也可以将来自意图处理器411的结果发送到合并层419。
在特定实施例中,合并层419可以对来自意图处理器411的结果和来自任务候选排序模块414的结果进行组合。对话状态追踪器218可以将每个任务建议为对话策略360要从中选择的新状态,从而生成状态候选的列表。合并后的结果可以进一步被发送到对话理解强化引擎(conversational understanding reinforcement engine,CURE)追踪器420。在特定实施例中,CURE追踪器420可以是个性化学习过程,以使用实时用户反馈来改进对话状态追踪器218在不同上下文下对状态候选的确定。有关会话理解强化引擎的更多信息可以在以下文件中找到:于2021年2月26日提交的、第17/186459号美国专利申请。
在特定实施例中,可以将CURE追踪器420生成的候选状态发送到动作选择器222。动作选择器222可以查询任务策略364,任务策略364可以从通过任务规范管理器API 430访问的执行规范中生成。在特定实施例中,执行规范可以描述应该如何执行任务以及动作选择器222可能需要采取什么动作来完成任务。
在特定实施例中,动作选择器222可以确定与系统相关联的动作。这样的动作可能需要代理228来执行。因此,动作选择器222可以将系统动作发送到代理228,并且代理228可以返回这些动作的执行结果。在特定实施例中,动作选择器可以确定与用户或设备相关联的动作。这样的动作可能需要由传递系统230执行。因此,动作选择器222可以将用户/设备动作发送到传递系统230,并且传递系统230可以返回这些动作的执行结果。
本文所公开的各实施例可以包括人工现实系统、或结合人工现实系统来实现。人工现实是在呈现给用户之前已经以某种方式进行了调整的现实形式,该人工现实可以包括例如虚拟现实(VR)、增强现实(AR)、混合现实(mixed reality,MR)、混合现实(hybridreality),或它们的某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或与采集到的内容(例如,真实世界的照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,并且以上中的任何一种都可以在单通道或多通道中呈现(例如,给观看者带来三维效果的立体视频)。此外,在一些实施例中,人工现实还可以与应用、产品、附件、服务或它们的某些组合相关联,该应用、产品、附件、服务或它们的某种组合例如用于在人工现实中创建内容,和/或用于人工现实中(例如,在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式显示器(head-mounted display,HMD)、独立HMD、移动设备或计算系统、或能够向一位或多位观看者提供人工现实内容的任何其他硬件平台。
助理系统的多设备调解
在特定实施例中,当在用户的语音请求的听得见的距离内存在多个支持助理的客户端系统130(例如,桌子上的智能底座、用户面部上的智能眼镜、墙上的智能电视等)时,助理系统140可以有效地确定哪个客户端系统130响应用户。用户可以使用统一的唤醒词(例如,“嘿助理”)来唤醒任何客户端系统130,即,多设备调用。当用户发出请求(例如,“嘿助理,播放一些音乐”)时,任何或所有客户端系统130都可能会进行响应,这可能会让用户感到厌烦。因此,助理系统140可能需要在各客户端系统130之间进行调解以确定哪个客户端系统应该响应,使得该响应可以在最佳客户端系统130上进行渲染。助理系统140可以使用服务器侧过程或客户端侧过程来进行调解。对于服务器侧过程,助理系统140可以将来自相同IP地址的请求分组在一起,并将用户的意图映射到优选的客户端系统130或具有正确能力的客户端系统130。助理系统140还可以使用各种信号来确定哪个客户端系统130响应用户。对于客户端侧过程,助理系统140可以在这些客户端系统130之间建立安全的对等分布式网状网络。使用该网状网络,各客户端系统130可以响应于唤醒词实时地交换信息,并且比较这些信息以确定用户最有可能想要使用哪一个客户端系统。类似地,助理系统140在确定哪个客户端系统130响应用户时还可以使用其他类型的信号。通过多设备调用的有效调解,用户可以在无缝使用辅助服务时四处移动。多设备调解不仅可以应用于物理多设备场景,而且可以应用于(例如,使用虚拟现实头戴式设备的)虚拟环境,在该虚拟环境中,存在可以响应助理请求的多个虚拟客户端系统130。尽管本公开描述了在特定系统之间以特定方式进行调解,但是本公开考虑了以任何合适的方式调解任何合适的系统。
在特定实施例中,助理系统140可以与多个客户端系统130相关联。助理系统140可以接收来自第一用户的语音请求。第一用户可能想要激活多个客户端系统130中的特定客户端系统130。在特定实施例中,多个客户端系统130可以处于第一用户的收听范围内。然后,助理系统140可以访问、与该语音请求相关联的多个信号,该多个信号来自多个客户端系统130中的各个客户端系统。在特定实施例中,助理系统140可以基于所访问的信号将多个客户端系统130中的第一客户端系统130识别为第一用户想要激活的特定客户端系统130。助理系统140还可以指示第一客户端系统130提供来自助理系统140的、响应于该语音请求的响应。
在特定实施例中,助理系统140可以针对不同场景执行多设备调解。作为示例而非限制,在一种场景中,用户可以将智能平板电脑和智能电视放置在客厅中。当用户说“嘿助理”时,用户可能只希望其中一个设备响应,而不是两个都响应。作为另一示例而非限制,在另一种场景中,用户可以将智能平板电脑和智能电视放置在客厅中。用户可能更喜欢使用智能平板电脑播放音乐,而使用智能电视打电话。作为又一示例而非限制,在又一种场景中,第一用户和第二用户可能都具有智能眼镜。他们在外面见面,并且他们希望在不干扰其他设备的情况下调用自己的智能眼镜。
在特定实施例中,客户端系统130可以包括便携式设备或非便携式设备。非便携式设备可能比便携式设备处于更稳定和安全的环境中。作为示例而非限制,非便携式设备通常可以连接到同一网络。作为另一示例而非限制,距离接近的非便携式设备通常可以具有相同的所有者。作为又一示例而非限制,该非便携式设备可以由可信任的用户访问。
当用户说出唤醒词时,处于收听范围内的所有客户端系统130都可以唤醒并收听用户的语音请求。在特定实施例中,语音请求可以包括对特定客户端系统130的歧义引用。作为示例而非限制,语音请求可以是“嘿眼镜,关机”。然而,用户可以具有两副眼镜,其包括一副增强现实(AR)眼镜和一副智能眼镜。可以看出,用户指的是哪副眼镜可能是有歧义的。在特定实施例中,语音请求可以包括对特定客户端系统130的不引用。作为示例而不是限制,用户可以简单地说“播放一些音乐”,而不提及客户端系统130。
图5示出了用于多设备调解的示例架构500。在特定实施例中,助理系统140可以在远程服务器上运行。在特定实施例中,助理系统140可以在远程服务器处,接收来自多个客户端系统130的多个音频信号。多个音频信号中的每个音频信号都可以包括在相应客户端系统130处接收到的语音请求。利用在远程服务器上运行的助理系统140,以下服务器侧过程可以用来确定哪个客户端系统130应该响应该语音请求。首先,在这些客户端系统130处接收的音频流505(即,用户请求)可以被发送回远程服务器处的语音处理器510。然后,语音处理器510可以将音频流505提供给ASR模块208b以生成ASR转录。同时,远程服务器可以复制该音频流505并将其发送到调解模块515。如图5所示,调解模块515可以包括聚类模块520、ASR调解模块525、调解状态530和调解器535。
在特定实施例中,助理系统140可以在远程服务器处对多个音频信号进行分组。在特定实施例中,语音请求可以与说话者标识符(ID)相关联。相应地,可以基于说话者ID对多个音频信号进行分组。在特定实施例中,多个客户端系统130可以各自与一IP地址相关联。相应地,可以基于与每个客户端系统相关联的IP地址来对多个音频信号进行分组。在特定实施例中,多个客户端系统130可以各自与用户标识符(ID)相关联。相应地,可以基于与每个客户端系统相关联的用户ID来对多个音频信号进行分组。
在特定实施例中,聚类/分组可以是多设备调解的第一步。聚类模块520可以将基本请求信息(例如,开始时间、用户ID、哈希客户端IP等)作为输入,并计算聚类ID作为初始分组。当与ASR调解服务525通信时,聚类ID可以用作对请求进行分组的片键(shard key)。在特定实施例中,可以有多种聚类方法,这些聚类方法可以基于哈希客户端IP、哈希客户端IP加活动用户ID、哈希客户端IP加所有者ID、哈希客户端IP加说话者ID、哈希客户端IP加账户ID、来自本地多对等连接的会话ID、以及哈希客户端IP加通过扫描所有的所有者而发现的其他语音请求。
尽管聚类可以给出对语音请求进行分组的提示,但这可能是不够的。例如,如果两个用户同时对来自同一客户端IP的两个不同客户端系统130说话,则在不查看音频数据的情况下可能很难辨别他们是否来自相同的话语。因此,可以将音频流505与聚类结果一起发送到ASR调解服务525。在特定实施例中,来自先前部件的聚类ID可以被用作片索引(shardindex),以便使它们指向ASR调解服务525中的同一主机。然后,ASR调解服务525可以确定组ID,该组ID指示该音频流505是否属于多设备调用。在特定实施例中,组ID可以是用于其余调解步骤以发现其他语音请求结果的调用的唯一ID。ASR调解服务525还可以确定同一组中语音请求的数量。ASR调解服务525还可以从音频流505中确定客户端系统130应当响应的调解决定(例如,使用基于时间的选择或基于信噪比的选择)。在特定实施例中,来自ASR调解服务525的调解决定可能不是最终决定。
在特定实施例中,可以将ASR调解服务525的输出发送到调解状态530。调解状态530可以是存储在每个请求对象中的中间结果。它可以用于不同部件之间的通信,以同步调解结果。作为示例而非限制,在ASR调解服务525生成ASR调解结果之后,该ASR调解服务可以将它们写入调解状态530。作为另一示例而非限制,在对话状态追踪器218b完成其对用户请求的处理之后,来自对话状态追踪器218b的任务操作符也可被写入到调解状态530。
如图5所示,在将音频流505发送到调解模块515时,助理系统140可以同时使用助理堆栈继续其对用户请求的处理。该处理可以涉及ASR模块208b、NLU模块210b和对话状态追踪器(dialog state tracker,DST)218b。在特定实施例中,可以将ASR转录、NLU结果和DST操作符发送到调解检查模块540。在特定实施例中,调解检查模块540可以将所接收到的信息(例如,DST操作符)发送到调解器535。考虑到ASR调解结果以及来自对话状态追踪器218b的其他信息,调解器535可以检查调解状态530中不同调解结果之后做出最终调解决定。在特定实施例中,调解器535可以执行假设排序。假设排序可以基于启发式方法,该启发式方法可以考虑这样的信息:所述信息包括每任务设备偏好、每设备能力任务适合度、ASR分数、NLU分数、最后活动的客户端系统130等。假设排序还可以基于学习,例如对用户行为的研究。
在特定实施例中,调解器535可以将客户端系统130是否应该是响应用户请求的客户端系统的置信度分数写入调解状态530。因此,调解状态53可以具有与多个客户端系统130相关联的分数。调解器535可以在做出最终决定时检查这多个分数。作为示例而非限制,调解器535可以选择具有最高置信度分数的客户端系统130作为响应用户请求的客户端系统。在特定实施例中,可以将来自调解器535的最终决定发送回调解检查模块540。
在特定实施例中,助理系统140可以基于调解决定来确定不响应语音请求。这一决定可以直接中断正在进行的输入音频流505。由于ASR调解服务525可以是与ASR模块208b分开的服务,因此调解结果可能在ASR模块208b生成最终ASR转录之后出现。在这种情况下,如果助理系统140已经开始处理话语,则它可能导致服务器状态的某种转变(例如,创建提醒)。因此,助理系统140可以在中断处理正在进行的音频流505之前,使用调解检查模块540来检查状态。作为示例而非限制,如果助理系统140已经通过动作选择器222b开始动作选择,则助理系统140可以忽略该调解决定。作为另一示例而非限制,如果助理系统140还未开始动作选择,则助理系统140可以使用提前终止处理模块545来取消输入音频流505。
在特定实施例中,当最终调解决定到来时,助理系统140可能已经准备好最终ASR转录并开始NLU,但还没有进行动作选择。在这种情况下,助理系统140可以取消输入的音频流505,但是即使在中断正在进行的流式传输之后,也可以继续对话状态追踪器218b的处理。为了阻止动作选择,助理系统140可以将内部处理状态标记为“已取消”,并且在动作选择器222b之前,调解检查模块540可以总是检查状态以决定是否继续。动作选择器222b可以(例如,响应用户请求)将所确定的动作发送到传送系统230b,传送系统230b可以进一步指示所选择的客户端系统130为用户生成响应。
图6示出了用于在两个设备之间进行调解的示例图示工作流600。示例图示工作流600可以基于以下场景。当用户在卧室时,用户可以让电视在客厅中播放音乐。用户可能想要在卧室中使用他/她的电话停止音乐。如图6所示,设备A(即,客户端系统130)可以接收用户的口述“停止电视上的音乐”,并将其发送到NLU模块210。NLU模块210可以将意图和槽确定为[IN:停止_音乐]([IN:STOP_MUSIC])和[SL:目标_设备]([SL:TARGET_DEVICE]),并将它们发送到实体解析(entity resolution,ER)模块212。此外,NLU模块210可以执行对用户请求的特征化,例如,所生成的特征可以包括设备列表。作为示例而非限制,电话的特征可以是电话=>a_设备_类型(Phone=>a_device_type),电视的特征可以是电视=>b_设备_类型(TV=>b_device_type)。作为另一示例而非限制,客厅的特征可以是客厅=>b_设备_位置(Living Room=>b_device_location),而卧室的特征可以是卧室=>a_设备_位置(Bedroom=>a_device_location)。基于特征表示,每个设备可以具有如下实体表示:
{
设备Id:“<唯一_设备_id>”,
设备类型:“电视”,
设备名称:“客厅”,
}。
在特定实施例中,实体解析模块212可以访问AUM 354以解析目标设备(例如,电视)的设备实体。可以将所解析的实体提供给对话状态追踪器(DST)218。对话状态追踪器218可以将新任务确定为任务_转移(TASK_TRANSFER)。在特定实施例中,该任务可以不是由意图触发的,并且当存在槽[SL:目标_设备]([SL:TARGET_DEVICE])时,转移可以来自任何意图。对话状态追踪器218可以将任务与参数(例如,参数1:设备实体(Arg 1:DeviceEntity)和参数2:可转移的任务实体(Arg2:TransferableTaskEntity))、ID和槽一起发送到任务策略364。可能有多个匹配设备。因此,任务策略364可以生成作为消歧对话动作(DisambigutationDialogAction)的动作。如果没有实体被解析,则任务策略364可以生成作为不可解析对话动作(UnsolvableDialogAction)的动作。如果对于给定任务不允许目标设备,则任务策略364可以生成作为具有错误id“不_允许(not_allowed)”的错误对话动作(ErrorDialogAction)的动作。如果找到唯一的可转移设备,则任务策略364可以生成作为任务转移对话动作(TaskTransferDialogAction)的动作。如果任务转移对话动作成功,则任务策略364可以进一步生成作为信息对话动作(InformDialogAct)的动作。如果任务转移对话动作失败,则任务策略364可以进一步生成作为具有错误id“传送_错误(Delivery_Error)”的错误对话动作(ErrorDialogAct)的动作。
在特定实施例中,可以将任务转移动作(TaskTransferAction)发送到动作执行器610。动作执行器610可以例如通过向该主动传送系统发送参数:设备_id(device_id)和任务有效负载,而与主动传送系统230一起工作。在特定实施例中,主动传送系统230可以将任务有效负载传送给任务恢复模块620,该任务恢复模块连接到另一设备(例如,设备B)。设备B可以是另一客户端系统130。任务存储模块620可以将该任务恢复为任务:停止_音乐(Task:STOP_MUSIC)并将其发送到实体解析模块212。实体解析模块212可以解析实体,例如设备B 130(客厅中的电视),并将其提供给对话管理器(DM)216。对话管理器216可以执行对话动作。可以将执行结果发送到自然语言生成(NLG)部件372,该自然语言生成(NLG)部件可以进一步将所生成的响应发送到文本到语音(TTS)部件390。TTS部件390可以将文本响应转换为语音,并指示设备B 130大声朗读该语音。
在特定实施例中,助理系统140可以使用不同的方法来决定哪个支持助理的客户端系统130应该渲染该响应。在特定实施例中,助理系统140可以基于语音请求来确定与第一用户相关联的意图。然后,助理系统140可以进一步基于所确定的意图将第一客户端系统130识别为第一用户想要激活的特定客户端系统130。在特定实施例中,助理系统140可以将意图映射到由用户指定的优选客户端系统130,例如,用户可以为特定任务设置特定客户端系统130。换句话说,可以进一步基于与第一用户相关联的用户偏好,将第一客户端系统130识别为第一用户想要激活的特定客户端系统130。在特定实施例中,助理系统140可以将意图映射到具有正确设备能力的客户端系统130(例如,客户端系统130是否具有摄像头或屏幕)。具体地,助理系统140可以确定与该意图相对应的任务。一旦确定了任务,就可以进一步基于一个或多个任务策略364将第一客户端系统130识别为第一用户想要激活的特定客户端系统130。在特定实施例中,然后,助理系统140可以确定多个客户端系统130中的每个客户端系统的设备能力。助理系统140还可以基于该任务和相应客户端系统130的设备能力,来计算多个客户端系统130中的各个客户端系统的匹配分数。相应地,第一客户端系统130可以与排序第一的匹配分数相关联。作为示例而非限制,如果用户请求助理系统140播放音乐,则智能扬声器可以响应。作为另一示例而非限制,如果用户想要打电话,则智能手机或智能底座可以响应,而不是智能电视响应,因为智能电视可能不是最佳的/可能不能处理语音通话。确定用户的意图并将其映射到具有正确设备能力的客户端系统130可以是用于解决准确确定多个客户端系统130中的哪个客户端系统130应该响应多设备调用的这一技术挑战的有效解决方案,因为设备能力提供了对所选择的客户端系统130将如何有效地执行与多设备调用相关联的任务的测量结果。
在特定实施例中,助理系统140可以在多个客户端系统130中的一个或多个客户端系统上运行。当用户发出语音请求时,听到唤醒词(即,激活事件)的那些客户端系统130可以开始一起工作,以确定哪个客户端系统130应该响应。作为示例而非限制,未听到唤醒词的客户端系统130可以包括在另一房间中的客户端系统或加载了当前任务的客户端系统。利用在多个客户端系统130上运行的助理系统140,以下客户端侧过程可以用来确定哪个客户端系统130应该响应语音请求。与服务器侧过程相比,客户端侧过程除了降低时延外,还可以增加隐私保护,因为在客户端作出决定时,不会将个人信息或语音录音发送到远程服务器。
在特定实施例中,一个或多个客户端系统130上的助理系统140可以生成跨多个客户端系统130的网状网络,其中多个客户端系统130可以处于彼此的无线通信范围内。在特定实施例中,可以基于以下中的一者或多者来生成网状网络:公钥、私钥或通信协议。网状网络可以是安全的对等分布式网状网络。作为示例而非限制,通信协议可以是实时通信(real-time communication,RTC)协议。在特定实施例中,助理系统140可以基于发现协议发现多个客户端系统130。作为示例而非限制,发现协议可以是标准的即插即用协议。在特定实施例中,该发现可以通过网状网络和多个客户端系统130之间的对等通信中的一者或多者进行。作为示例而非限制,对等通信可以基于蓝牙。在替代实施例中,该发现可以通过远程服务器进行。通过对客户端系统130的发现,助理系统140可以识别助理系统140在网状网络上的其他实例(即,支持助理的客户端系统130)。该发现还可以允许助理系统140识别用户拥有的客户端系统130。作为示例而非限制,如果朋友过来并且进入用户的Wi-Fi,则该朋友的客户端系统130可以不被添加到网状网络。可选地,可以使用某种类型的公共协议,使得任何客户端系统130都可以加入网状网络,从而允许客户端系统130动态地加入和离开网状网络。
一旦识别了参与的客户端系统130,则可以在所有参与的客户端系统130之间分发来自各个客户端系统130的短期助理记忆,从而允许多轮场景随着用户从客户端系统130转换到客户端系统130而工作。作为示例而非限制,利用对短期助理记忆的分发,在单个客户端系统130上拍摄的照片可以为所有支持助理的客户端系统130所知。在特定实施例中,使用网状网络,客户端系统130可以响应于激活事件而实时交换各种信息和信号。换句话说,助理系统140可以通过网状网络,在多个客户端系统130之间分发来自多个客户端系统130中的各个客户端系统的多个信号。具体地,一旦每个客户端系统130识别出唤醒词,该客户端系统130就可以向所有其他客户端系统130发送具有相关信号和信息的请求,询问它们是否已接收到语音请求。因此,可以做出冗余请求,其中较快的客户端系统130可以首先发出请求。在特定实施例中,可能存在等待从所有客户端系统130收到回复所需的时间窗口(例如,300毫秒)。可以根据网状网络中的客户端系统130来优化时间窗口的长度。然后,网状网络中的客户端系统130可以将所接收到的请求与相关信号/信息进行比较,以确定用户最有可能想要唤醒哪个客户端系统130。换句话说,助理系统140还可以比较在多个客户端系统130之间分发的信号。在特定实施例中,还可以基于该比较来将第一客户端系统130识别为第一用户想要激活的特定客户端系统130。一旦做出决定,所选择的客户端系统130就可以唤醒,并且其他客户端系统130可以停止收听。通过网状网络在客户端系统130之间交换信号可能是用于解决准确确定多个客户端系统130中的哪个客户端系统130应该响应多设备调用的这一技术挑战的有效解决方案,因为各客户端系统130之间的协调提供了对所选择的客户端系统130将如何有效地执行与多设备调用相关联的任务的测量结果。
在特定实施例中,多设备调解的客户端侧过程可以实现远程任务执行。作为示例而非限制,用户可以对他/她的智能手机说“在电视上播放一些音乐”,这可能使得在支持助理的电视上播放音乐。可以使用灵活的对等协议(其与客户端系统130共享公共实现方式)到服务器协议、结合总线架构,来一般地实现对任务的远程执行。在特定实施例中,一个或多个递归语法规则可以使用户能够在用户拥有的任何客户端系统130上运行助理系统140理解的任何命令。因此,助理系统140可以具有实现远程任务执行的技术优势,因为助理系统140可以指示一个客户端系统130响应用户请求,而另一个不同的客户端系统130远程执行与用户请求相关联的任务。
对于服务器侧过程和客户端侧过程这两者,所访问的来自每个客户端系统130的与语音请求相关联的信号可以包括各种类型的信号。在特定实施例中,多个信号可以包括以下中的两者或更多者:存储在相应客户端系统130上的短期记忆、指示第一用户与相应客户端系统130的先前交互的新近度、指示在相应客户端系统130处接收到的语音请求的时间、在相应客户端系统130处接收到的语音请求的音量、在相应客户端系统130处接收到的语音请求的信噪比、第一用户与相应客户端系统130的互动程度、由相应客户端系统130采集的与第一用户相关联的注视信息、(例如,由客户端系统130中的IMU传感器或计算机视觉技术检测的)相应客户端系统130的姿态、第一用户到相应客户端系统130的距离、或与第一用户相关联的上下文信息。作为示例而非限制,基于新近度,如果用户最近使用的客户端系统130已经接收到唤醒词,则可以将该客户端系统确定为响应用户的客户端系统。作为另一示例而非限制,基于时间,可以将首先接收到请求的客户端系统130确定为响应用户的客户端系统。作为又一示例而非限制,基于互动程度,如果用户当前正在客户端系统130上活动或打字,则助理系统140可以确定该客户端设备来响应用户请求。作为又一示例而非限制,基于注视信息,可以将用户正在观看的客户端系统130(例如,通过分析由客户端系统130的摄像头采集的视觉信号)确定为响应用户请求的客户端系统。作为另一示例而非限制,如果佩戴着智能眼镜的用户正在看他们的智能手表,则智能手表而不是眼镜应该响应用户的请求。作为又一示例而非限制,基于姿态,如果用户的手表被举在用户的前方,则用户可能想要唤醒手表。作为又一示例而非限制,基于距离,用户更可能想要唤醒距离其最近的客户端系统130。在特定实施例中,可以基于以下中的一者或多者来确定距离:GPS信息、网状网络中的无线信号的强度、摄像头/视觉信号、或VR上下文。通过使用各种类型的信号(其包括短期记忆、新近度、时间、音量、信噪比、互动程度、注视、姿态、距离和上下文信息)来确定哪个客户端系统130响应多设备调用可以是用于解决准确确定多个客户端系统130中的哪个客户端系统130应该响应多设备调用的这一技术挑战的有效解决方案,因为这些信号可以提供对所选择的客户端系统将如何有效地执行与多设备调用相关联的任务的不同测量结果。
在特定实施例中,助理系统140可以基于来自多个客户端系统130中的每个客户端系统的多个信号,来分别计算与多个客户端系统130相关联的多个置信度分数。助理系统140还可以基于多个客户端系统130的各自置信度分数来对其进行排序。因此,第一客户端系统130可以是多个客户端系统130中排序第一的客户端系统130。
图7示出了示例多设备调解。在图7中,用户705可能在家。用户705周围可以有多个客户端系统130,该多个客户端系统包括智能电视130a、智能扬声器130b、智能平板电脑130c。用户705还可以佩戴着智能手表130d,该智能手表也是客户端系统130。用户705可以说:“嘿助理,播放一些音乐。710”。助理系统140可以执行多设备调解并确定智能扬声器130b应该响应用户请求。因此,助理系统140可以指示智能扬声器130b进行响应。智能扬声器130b可以回复:“好的。我将播放一些音乐。你想听今天的热门歌曲吗?715”。
图8示出了另一示例多设备调解。在图8中,用户805可能正佩戴着智能眼镜130e看智能电视130a。他附近可能还有智能平板电脑130c。智能眼镜130a、智能电视130b和智能平板电脑130c都是客户端系统130。用户可以说:“嘿助理,给我看看我今天拍的照片。810”。助理系统140可以执行多设备调解并确定智能电视130a应该响应用户请求810。因此,助理系统140可以指示智能电视130a进行响应。则智能电视130a可以回复:“好的。这是你今天拍的照片815”同时展示这些照片。
图9示出了另一示例多设备调解。在图9中,用户905可能正佩戴着智能手表130d并将其靠近他,同时说:“嘿助理,我的航班是什么时候?910”。在他周围还可能有一些其他客户端系统130,这些客户端系统包括智能电视130a、智能扬声器130b和桌子上的他的智能手机130f。助理系统140可以执行多设备调解并确定智能手表130d应该响应用户请求910。因此,助理系统140可以指示智能手表130d进行响应。然后,智能手表130d可以回复:“您的航班是今天下午3点50分。915”。
图10A和图10B示出了另一示例多设备调解。图10A示出了当用户正在从第一位置移动到第二位置时的示例多设备调解。在图10A中,用户1005可能正在从客厅走向厨房。客厅中可以有智能电视130a和智能手机130f,这两者都是客户端系统130。用户可以说:“嘿助理,设置提醒今晚给达斯汀(Dustin)打电话。1010”。助理系统140可以执行多设备调解并确定智能手机130f应该响应用户请求1010。因此,助理系统140可以指示智能手机130f进行响应。然后,智能手机130f可以回复:“好的。今晚我会提醒你。1015”。图10B示出了当用户从第一位置移动到了第二位置时的示例多设备调解。在图10B中,用户1005现在可能在厨房中,附近没有智能电视130a或智能手机130f。厨房台面上可以有智能扬声器130b和智能平板电脑130c。用户1005可以说:“哦撤销刚才的提醒。把提醒改为明晚。1020”。助理系统140可以再次执行多设备调解,并确定智能扬声器130b应该响应用户请求1020。因此,助理系统140可以指示智能扬声器130b进行响应。然后,智能扬声器130b可以回复:“好的。我把提醒改到了明晚。1025”。
图11示出了另一示例多设备调解。在图11中,佩戴着智能眼镜130e的用户1105可以在楼上的卧室中。卧室的床头柜上还可以有一部智能手机130f。客厅可以在楼下,其中可以有智能电视130a和智能扬声器130b。智能电视130a可能正在进行足球比赛。用户1105可以说:“嘿助理,把比赛关掉。1110”。助理系统140可以执行多设备调解。助理系统140可以确定智能眼镜130e应该响应用户请求1110,但是应该执行远程任务执行以从智能电视130a关闭比赛。助理系统140还可以指示智能眼镜130e进行响应。然后,智能眼镜130e可以回复:“好的,我将关闭比赛。1115”。
图12示出了用于多设备调解的示例方法1200。该方法可以在步骤1210处开始,在该步骤中,助理系统140可以接收来自第一用户的语音请求,其中,第一用户想要激活多个客户端系统130中的特定客户端系统130,其中,该多个客户端系统130处于第一用户的收听范围内,并且其中,该语音请求包括对特定客户端系统130的歧义引用或不引用。在步骤1220处,助理系统140可以访问与该语音请求相关联的多个信号,该多个信号来自多个客户端系统130中的各个客户端系统,其中,该多个信号包括以下中的两者或更多者:存储在相应客户端系统130上的短期记忆、指示第一用户与相应客户端系统130的先前交互的新近度、指示在相应客户端系统130处接收到语音请求的时间、在相应客户端系统130处接收到的语音请求的音量、在相应客户端系统130处接收到的语音请求的信噪比、第一用户与相应客户端系统130的互动程度、由相应客户端系统130采集的与第一用户相关联的注视信息、相应客户端系统130的姿态、第一用户到相应客户端系统130的距离、或与第一用户相关联的上下文信息。在步骤1230处,助理系统140可以确定与第一用户相关联的意图。在步骤1240处,助理系统140可以确定多个客户端系统130中的每个客户端系统的设备能力。在步骤1250处,助理系统140可以基于与意图相对应的任务和客户端系统130的设备能力,来计算多个客户端系统130中的每个客户端系统的匹配分数。在步骤1260,助理系统140可以生成跨多个客户端系统130的网状网络,其中,该多个客户端系统130处于彼此的无线通信范围内,其中,在多个客户端系统130之间分发来自多个客户端系统130中的各个客户端系统的多个信号,并且其中,该网状网络是基于公钥、私钥或通信协议中的一者或多者来生成的。在步骤1270处,助理系统140可以比较在多个客户端系统130之间分发的信号。在步骤1280处,助理系统140可以基于所访问的信号、意图、比较、一个或多个任务策略以及与第一用户相关联的用户偏好,将多个客户端系统130中的第一客户端系统130识别为第一用户想要激活的特定客户端系统130,其中,第一客户端系统130与排序第一的匹配分数相关联。在步骤1290处,助理系统140可以指示第一客户端系统130提供来自助理系统140的、响应于语音请求的响应。在适当的情况下,特定实施例可以重复图12的方法中的一个或多个步骤。尽管本公开描述和示出了图12的方法的以特定顺序进行的特定步骤,但是本公开考虑了图12的方法的、以任何合适的顺序进行的任何合适的步骤。此外,尽管本公开描述和示出了用于多设备调解的、包括图12的方法的特定步骤的示例方法,但是本公开考虑了用于多设备调解的、包括任何合适的步骤的任何合适的方法,在合适的情况下,这些步骤可以包括图12的方法的所有步骤、一些步骤或不包括图12的方法的步骤。此外,尽管本公开描述和示出了执行图12的方法的特定步骤的特定部件、设备或系统。但是本公开考虑了执行图12的方法的任何合适步骤的任何合适的部件、设备或系统的任何合适的组合。
社交图谱
图13示出了示例社交图谱1300。在特定实施例中,社交网络系统160可以在一个或多个数据存储库中存储一个或多个社交图谱1300。在特定实施例中,社交图谱1300可以包括多个节点——这些节点可以包括多个用户节点1302或多个概念节点1304——以及连接这些节点的多条边1306。每个节点可以与唯一的实体(即,用户或概念)相关联,每个实体可以具有唯一的标识符(ID)(例如唯一的号码或用户名)。出于教导目的,图13中所示的示例社交图谱1300以二维可视化图谱表示的形式示出。在特定实施例中,社交网络系统160、客户端设备130、助理系统140或第三方系统170可以访问社交图谱1300和相关的社交图谱信息,以用于合适的应用。社交图谱1300的节点和边可以作为数据对象存储,例如存储在数据存储库(例如社交图谱数据库)中。这种数据存储库可以包括社交图谱1300的节点或边的一个或多个可搜索或可查询的索引。
在特定实施例中,用户节点1302可以与社交网络系统140或助理系统140的用户相对应。作为示例而非限制,用户可以是与社交网络系统160或助理系统140交互或通信、或者通过社交网络系统160或助理系统140进行交互或通信的个体(人类用户)、实体(例如,企业、商业或第三方应用)或群组(例如,个体群组或实体群组)。在特定实施例中,当用户使用社交网络系统160注册账户时,社交网络系统160可以创建与该用户相对应的用户节点1302,并将该用户节点1302存储在一个或多个数据存储库中。在适当的情况下,本文所描述的用户和用户节点1302可以指所注册的用户和与所注册的用户相关联的用户节点1302。另外或者作为替代,在适当的情况下,本文所描述的用户和用户节点1302可以指尚未使用社交网络系统160进行注册的用户。在特定实施例中,用户节点1302可以与由用户提供的信息或由各种系统(包括社交网络系统160)收集的信息相关联。作为示例而非限制,用户可以提供他或她的姓名、资料图片、联系信息、出生日期、性别、婚姻状况、家庭状况、职业、教育背景、偏好、兴趣、或其他人口统计信息。在特定实施例中,用户节点1302可以与一个或多个数据对象相关联,该一个或多个数据对象对应于与用户相关联的信息。在特定实施例中,用户节点1302可以对应于一个或多个网页界面。
在特定实施例中,概念节点1304可以对应于概念。作为示例而非限制,概念可以对应于地点(例如,电影院、餐厅、地标、或城市);网站(例如,与社交网络系统160相关联的网站、或与网页应用服务器相关联的第三方网站);实体(例如,个体、商业、群组、运动队伍、或名人);可位于社交网络系统160内或外部服务器(例如网页应用服务器)上的资源(例如,音频文件、视频文件、数码照片、文本文件、结构化文档、或应用);不动产或知识产权(例如,雕塑、绘画、电影、游戏、歌曲、创意、照片、或书面作品);游戏;活动;想法或理论;另一合适的概念;或者两个或更多个这种概念。概念节点1304可以与由用户提供的概念的信息或由各种系统(包括社交网络系统160和助理系统140)收集的信息相关联。作为示例而非限制,概念的信息可以包括名称或标题;一幅或多幅图像(例如,书籍的封面图像);位置(例如,地址或地理位置);网站(其可以与URL相关联);联系信息(例如,电话号码或电子邮件地址);其他合适的概念信息;或者这种信息的任何合适的组合。在特定实施例中,概念节点1304可以与一个或多个数据对象相关联,该一个或多个数据对象对应于与概念节点1304相关联的信息。在特定实施例中,概念节点1304可以对应于一个或多个网页界面。
在特定实施例中,社交图谱1300中的节点可以表示网页(其可以被称为“资料页面”)或由该网页表示。资料界面可由社交网络系统160或助理系统140托管、或可由社交网络系统160或助理系统140访问。资料界面也可以被托管在与第三方系统170相关联的第三方网站上。作为示例而非限制,对应于特定外部网页界面的资料界面可以是特定外部网页界面,并且该资料界面可以对应于特定概念节点1304。资料界面可以被其他用户的所有子集或所选定子集查看。作为示例而非限制,用户节点1302可以具有对应的用户资料界面,在该用户资料界面中,对应的用户可以添加内容、做出声明、或以其他方式表达他或她自己。作为另一示例而非限制,概念节点1304可以具有对应的概念资料界面,在该概念资料界面中,一个或多个用户可以添加内容、做出声明、或表达他们自己(特别是在对应于概念节点1304的概念方面)。
在特定实施例中,概念节点1304可以表示由第三方系统170托管的第三方网页界面或资源。除了其他元素之外,第三方网页界面或资源可以包括表示动作或活动的内容、可选图标或其他图标、或其他可交互的对象。作为示例而非限制,第三方网页界面可以包括可选图标,例如“喜欢”、“签到”、“吃”、“推荐”、或其他合适的动作或活动。查看第三方网页界面的用户可以通过选择这些图标中的一个图标(例如,“签到”)来执行动作,从而使得客户端设备130向社交网络系统160发送指示用户动作的消息。社交网络系统160可以响应于该消息,在与用户相对应的用户节点1302和与第三方网页界面或资源相对应的概念节点1304之间创建边(例如,签到类的边),并将边1306存储在一个或多个数据存储库中。
在特定实施例中,社交图谱1300中的一对节点可以通过一条或多条边1306彼此连接。连接一对节点的边1306可以表示该一对节点之间的关系。在特定实施例中,边1306可以包括或表示与一对节点之间的关系相对应的一个或多个数据对象或属性。作为示例而非限制,第一用户可以指示第二用户是第一用户的“朋友”。社交网络系统160可以响应于该指示,向第二用户发送“朋友请求”。如果第二用户确认了该“朋友请求”,则社交网络系统160可以在社交图谱1300中创建将第一用户的用户节点1302连接到第二用户的用户节点1302的边1306,并将边1306作为社交图谱信息存储在一个或多个数据存储库中。在图13的示例中,社交图谱1300包括指示用户“A”和用户“B”的用户节点1302之间的朋友关系的边1306、以及指示用户“C”和用户“B”的用户节点1302之间的朋友关系的边。尽管本公开描述或示出了具有连接特定用户节点1302的特定属性的特定边1306,但是本公开考虑了具有连接用户节点1302的任何合适属性的任何合适的边1306。作为示例而非限制,边1306可以表示朋友关系、家庭关系、商业或雇佣关系、粉丝关系(例如,包括喜欢等)、关注者关系、访客关系(例如,包括访问、查看、签到、分享等)、订户关系、上级/下级关系、互惠关系、非互惠关系、另一合适类型的关系、或两个或更多个这种关系。此外,尽管本公开总体上将节点描述为被连接,但是本公开也将用户或概念描述为被连接。在本文中,在适当的情况下,对被连接的用户或概念的引用可以指与社交图谱1300中通过一条或多条边1306连接的那些用户或概念相对应的节点。分别由两个节点表示的两个对象之间的关系距离是在社交图谱1300中连接这两个节点的最短路径中的边的计数。作为示例而非限制,在社交图谱1300中,用户“C”的用户节点1302经由多条路径连接到用户“A”的用户节点1302,该多条路径例如包括直接穿过用户“B”的用户节点1302的第一路径、穿过公司“公司名称(CompanyName)”的概念节点1304和用户“D”的用户节点1302的第二路径、以及穿过表示学校“学校名称(SchoolName)”、用户“G”、公司“公司名称”和用户“D”的用户节点1302和概念节点1304的第三路径。由于连接用户“C”和用户“A”的对应节点的最短路径(即,第一路径)包括两条边1306,因此他们的关系距离为二。
在特定实施例中,用户节点1302与概念节点1304之间的边1306可以表示由与用户节点1302相关联的用户针对与概念节点1304相关联的概念而执行的特定动作或活动。作为示例而非限制,如图13所示,用户可以“喜欢”、“定期去”、“播放”、“收听”、“烹饪”、“工作于”或“阅读”概念,上述动作或活动中的每个动作或活动可以对应于边的类型或边的子类型。对应于概念节点1304的概念资料界面例如可以包括可选的“签到”图标(例如,可点击的“签到”图标)或可选的“添加到收藏夹”图标。类似地,在用户点击这些图标之后,社交网络系统160可以响应于与各自动作相对应的用户动作,来创建“收藏”边或“签到”边。作为另一示例而非限制,用户(用户“C”)可以使用特定的应用(第三方在线音乐应用)来收听特定的歌曲(“歌曲名称”)。在这种情况下,社交网络系统160可以在与用户相对应的用户节点1302和与歌曲和应用相对应的概念节点1304之间创建“收听”边1306和“使用”边(如图13所示),以指示用户收听了该歌曲并使用了该应用。此外,社交网络系统160可以在与歌曲和应用相对应的概念节点1304之间创建“播放”边1306(如图13所示),以指示由特定应用播放了特定歌曲。在这种情况下,“播放”边1306与由外部应用(第三方在线音乐应用)在外部音频文件(歌曲“歌曲名称”)上执行的动作相对应。尽管本公开描述了具有连接用户节点1302和概念节点1304的特定属性的特定边1306,但是本公开考虑了具有连接用户节点1302和概念节点1304的任何合适属性的任何合适的边1306。此外,尽管本公开描述了在用户节点1302与概念节点1304之间表示单个关系的边,但是本公开考虑了在用户节点1302与概念节点1304之间表示一个或多个关系的边。作为示例而非限制,边1306可以表示用户喜欢特定概念和用户已经在特定概念处使用过。替代地,另一条边1306可以表示用户节点1302与概念节点1304之间(如图13所示,用户“E”的用户节点1302与“在线音乐应用”的概念节点1304之间)的各种类型的关系(或多种单个的关系)。
在特定实施例中,社交网络系统160可以在社交图谱1300中的用户节点1302与概念节点1304之间创建边1306。作为示例而非限制,(例如,通过使用由用户的客户端设备130托管的网页浏览器或专用应用)查看概念资料界面的用户可以通过点击或选择“喜欢(Like)”图标,来指示他或她喜欢由概念节点1304表示的概念,这可以使得用户的客户端设备130向社交网络系统160发送指示用户喜欢与概念资料界面相关联的概念的消息。社交网络系统160可以响应于该消息,在与用户相关联的用户节点1302与概念节点1304之间创建边1306(如由用户与概念节点1304之间的“喜欢”边1306所示)。在特定实施例中,社交网络系统160可以在一个或多个数据存储库中存储边1306。在特定实施例中,可以由社交网络系统160响应于特定用户动作而自动形成边1306。作为示例而非限制,如果第一用户上传了图片、阅读了书籍、观看了电影或收听了歌曲,则可以在与第一用户相对应的用户节点1302和与这些概念相对应的概念节点1304之间形成边1306。尽管本公开描述了以特定的方式形成特定的边1306,但是本公开考虑了以任何合适的方式形成任何合适的边1306。
向量空间与嵌入
图14示出了向量空间1400的示例视图。在特定实施例中,对象或n元语法可以在d维向量空间中表示,其中d表示任何合适数量的维度。尽管向量空间1400被示为三维空间,但是这仅出于说明的目的,因为向量空间1400可以具有任何合适的维度。在特定实施例中,n元语法可以在向量空间1400中被表示为被称为项嵌入(term embedding)的向量。每个向量可以包括对应于向量空间1400中的特定点(即,向量的终点)的坐标。作为示例而非限制,如图14所示,向量1410、1420和1430可以被表示为向量空间1400中的点。n元语法可以被映射到各自的向量表示。作为示例而非限制,可以通过应用由字典定义的函数来将n元语法t1和t2分别映射到向量空间1400中的向量/>和/>使得/>且/>作为另一示例而非限制,可以使用被训练为将文本映射到向量表示的词典,或者可以通过训练本身来生成这样的词典。作为另一示例而非限制,词嵌入模型可以用于将n元语法映射到向量空间1400中的向量表示。在特定实施例中,可以通过使用机器学习模型(例如,神经网络)来将n元语法映射到向量空间1400中的向量表示。可以使用一系列训练数据(例如,多个对象的语料库,该多个对象中的每个对象包括n元语法)来训练机器学习模型。
在特定实施例中,对象可以在向量空间1400中被表示为如下向量:该向量被称为特征向量或对象嵌入。作为示例而非限制,可以通过应用函数来将对象e1和e2分别映射到向量空间1400中的向量/>和/>使得/>且/>在特定实施例中,可以基于以下项来将对象映射到向量:对象的一个或多个性质、一个或多个属性或一个或多个特征;对象与其他对象的关系;或与对象相关联的任何其他合适的信息。作为示例而非限制,函数/>可以通过特征提取来将对象映射到向量,该特征提取可以从测量数据的初始集合开始并构建导出值(例如,特征)。作为示例而非限制,可以通过使用检测或隔离对象的各种所需部分或形状的算法,来将包括视频或图像的对象映射到向量。用于计算向量的特征可以基于从以下项获取到的信息:边缘检测、角点检测、斑点检测、脊线检测、尺度不变特征变换、边缘方向、改变强度、自相关、运动检测、光流、阈值、斑点提取、模板匹配、霍夫变换(例如,线、圆、椭圆、任意形状)或任何其他合适的信息。作为另一示例而非限制,包括音频数据的对象可以基于如下特征被映射到向量:所述特征例如为频谱斜率、音调系数、音频频谱质心、音频频谱包络、梅尔频率倒频谱或任何其他合适的信息。在特定实施例中,当对象具有太大而无法有效处理的数据或包括冗余数据时,函数/>可以使用经变换的减少的一组特征(例如,特征选择)来将对象映射到向量。在特定实施例中,函数/>可以基于与对象e相关联的一个或多个n元语法来将对象e映射到向量/>尽管本公开描述了以特定方式在向量空间中表示n元语法或对象,但是本公开考虑了以任何合适的方式在向量空间中表示n元语法或对象。
在特定实施例中,社交网络系统160可以计算向量空间1400中的多个向量的相似度度量。相似度度量可以是余弦相似度、明氏(Minkowski)距离、马氏(Mahalanobis)距离、杰卡德(Jaccard)相似度系数或任何合适的相似度度量。作为示例而非限制,和/>的相似度度量可以是余弦相似度/>作为另一示例而非限制,/>和/>的相似度度量可以是欧氏(Euclidean)距离/>两个向量的相似度度量可以表示由向量空间1400中的两个向量之间的距离测量到的、分别对应于这两个向量的两个对象或两个n元语法彼此有多相似。作为示例而非限制,基于各自向量之间的距离,向量1410和向量1420可以对应于如下对象:所述对象比与向量1410和向量1430相对应的对象彼此更相似。尽管本公开描述了以特定方式计算向量之间的相似度度量,但是本公开考虑了以任何合适的方式计算向量之间的相似度度量。
有关向量空间、嵌入、特征向量和相似度度量的更多信息可以在以下文件中找到:于2015年11月23日提交的、第14/949436号美国专利申请,于2016年10月5日提交的、第15/286315号美国专利申请,以及于2016年11月30日提交的、第15/365789号美国专利申请。
人工神经网络
图15示出了示例人工神经网络(artificial neural network,“ANN”)1500。在特定实施例中,ANN可以指包括一个或多个节点的计算模型。示例ANN 1500可以包括输入层1510,隐藏层1520、1530、1540和输出层1550。ANN 1500的每一层可以包括一个或多个节点,例如节点1505或节点1515。在特定实施例中,ANN的每个节点可以连接到ANN的另一节点。作为示例而非限制,输入层1510的每个节点可以连接到隐藏层1520的多个节点中的一个节点。在特定实施例中,一个或多个节点可以是偏置节点(例如,层中未连接到前一层中的任何节点且不从前一层中的任何节点接收输入的节点)。在特定实施例中,每层中的每个节点可以连接到前一层或后一层的一个或多个节点。尽管图15描绘了具有特定数量的层、特定数量的节点以及这些节点之间的特定连接的特定ANN,但是本公开考虑了具有任何合适数量的层、任何合适数量的节点以及这些节点之间的任何合适连接的任何合适的ANN。作为示例而非限制,尽管图15描绘了输入层1510的每个节点与隐藏层1520的每个节点之间的连接,但是输入层1510的一个或多个节点可以不连接到隐藏层1520的一个或多个节点。
在特定实施例中,ANN可以是前馈ANN(例如,不具有循环或环路的ANN,其中节点之间的通信在一个方向上流动,从输入层开始并继续到后续的层)。作为示例而非限制,到隐藏层1520的每个节点的输入可以包括输入层1510的一个或多个节点的输出。作为另一示例而非限制,到输出层1550的每个节点的输入可以包括隐藏层1540的一个或多个节点的输出。在特定实施例中,ANN可以是深度神经网络(例如,包括至少两个隐藏层的神经网络)。在特定实施例中,ANN可以是深度残差网络。深度残差网络可以是包括被组织为残差块的隐藏层的前馈ANN。进入第一残差块之后的每个残差块的输入可以是前一残差块的输出和前一残差块的输入的函数。作为示例而非限制,进入残差块N的输入可以是F(x)+x,其中F(x)可以是残差块N-1的输出,x可以是进入残差块N-1的输入。尽管本公开描述了特定ANN,但是本公开考虑了任何合适的ANN。
在特定实施例中,激活函数可以对应于ANN的每个节点。对于给定输入,节点的激活函数可以为定义节点的输出。在特定实施例中,到节点的输入可以包括一组输入。作为示例而非限制,激活函数可以是身份函数、二元阶梯函数(binary step function)、逻辑函数或任何其他合适的函数。作为另一示例而非限制,节点k的激活函数可以是Sigmoid函数双曲正切函数/>整流(rectifier)Fk(sk)=max(0,sk)或任何其他合适的函数Fk(sk),其中sk可以是到节点k的有效输入。在特定实施例中,可以对与节点相对应的激活函数的输入进行加权。每个节点可以使用对应的激活函数、基于加权后的输入来生成输出。在特定实施例中,节点之间的每个连接可以与权重相关联。作为示例而非限制,节点1505与节点1515之间的连接1525可以具有0.4的加权系数,该加权系数可以指示用节点1505的输出乘以0.4来用作节点1515的输入。作为另一示例而非限制,节点k的输出yk可以是yk=Fk(sk),其中Fk可以是对应于节点k的激活函数,sk=∑j(wjkxj)可以是到节点k的有效输入,xj可以是连接到节点k的节点j的输出,并且wjk可以是节点j和节点k之间的加权系数。在特定实施例中,对输入层的各节点的输入可以基于表示对象的向量。尽管本公开描述了对节点的特定输入和节点的特定输出,但是本公开考虑了对节点的任何合适的输入和节点的任何合适的输出。此外,尽管本公开可以描述节点之间的特定连接和权重,但是本公开考虑了节点之间的任何合适的连接和权重。
在特定实施例中,可以使用训练数据来训练ANN。作为示例而非限制,训练数据可以包括到ANN 1500的输入和预期输出。作为另一示例而非限制,训练数据可以包括各自表示一训练对象的多个向量和每个训练对象的一预期标签。在特定实施例中,训练ANN可以包括通过优化目标函数来修改与ANN的节点之间的连接相关联的权重。作为示例而非限制,可以使用训练方法(例如,共轭梯度法、梯度下降法、随机梯度下降法)来反向传播作为表示训练对象的各个向量之间的距离而(例如,使用最小化平方和误差的成本函数)测量到的平方和(sum-of-squares)误差。在特定实施例中,可以使用丢弃(dropout)技术来训练ANN。作为示例而非限制,在训练时可以暂时省略一个或多个节点(例如,该一个或多个节点不接收输入并且不生成输出)。对于每个训练对象,ANN的一个或多个节点可以具有被省略的一些可能性。为特定训练对象省略的节点可以不同于为其他训练对象省略的节点(例如,这些节点可以在逐个对象的基础上被暂时省略)。尽管本公开描述了以特定方式训练ANN,但是本公开考虑了以任何的合适方式训练ANN。
隐私
在特定实施例中,计算系统的一个或多个对象(例如,内容或其他类型的对象)可以与一个或多个隐私设置相关联。一个或多个对象可以存储在任何合适的计算系统或应用上或以其他方式与其相关联,该合适的计算系统或应用例如是社交网络系统160、客户端系统130、助理系统140、第三方系统170、社交网络应用、助理应用、消息收发应用、照片共享应用或任何其他合适的计算系统或应用。尽管本文所论述的示例处于在线社交网络的上下文中,但是这些隐私设置可以应用于任何其他合适的计算系统。可以以任何合适的方式存储对象的隐私设置(或“访问设置”),这些方式例如为与该对象相关联、以授权服务器上的索引的方式、以另一合适的方式、或以这些方式的任意组合。对象的隐私设置可以指定可以如何在在线社交网络内访问、存储或以其他方式使用(例如,查看、共享、修改、复制、执行、呈现或标识)该对象(或与该对象相关联的特定信息)。当对象的隐私设置允许特定用户或其他实体访问该对象时,该对象可以被描述为相对于该用户或其他实体是“可见的”。作为示例而非限制,在线社交网络的用户可以指定用户资料页面的隐私设置,该隐私设置标识可以访问用户资料页面上的工作经验信息的一组用户,从而拒绝其他用户访问该信息。
在特定实施例中,对象的隐私设置可以指定不应被允许访问与对象相关联的某些信息的用户或其他实体的“被阻止列表”。在特定实施例中,该被阻止列表可以包括第三方实体。该被阻止列表可以指定一个或多个用户或实体,对于这些用户或实体,对象是不可见的。作为示例而非限制,用户可以指定不可以访问与该用户相关联的相册的一组用户,从而拒绝这些用户访问相册(同时也可能允许不在该组用户内的某些用户访问该相册)。在特定实施例中,隐私设置可以与特定的社交图谱元素相关联。社交图谱元素(例如,节点或边)的隐私设置可以指定可以如何使用在线社交网络来访问社交图谱元素、与社交图谱元素相关联的信息、或与社交图谱元素相关联的对象。作为示例而非限制,与特定照片相对应的特定概念节点1304可以具有隐私设置,该隐私设置指定仅照片中标记的用户和照片中标记的用户的朋友可以访问该照片。在特定实施例中,隐私设置可以允许用户选择让或不让:社交网络系统160或助理系统140存储/记录、或与其他系统(例如,第三方系统170)共享其内容、信息或动作。尽管本公开描述了以特定的方式使用特定的隐私设置,但是本公开考虑了以任何合适的方式使用任何合适的隐私设置。
在特定实施例中,隐私设置可以基于社交图谱1300的一个或多个节点或者一条或多条边。隐私设置可以针对社交图谱1300的一条或多条边1306或一个或多个边类型来指定,或者相对于社交图谱1300的一个或多个节点1302、1304或一个或多个节点类型来指定。应用于连接两个节点的特定边1306的隐私设置可以控制与这些节点相对应的两个实体之间的关系是否对在线社交网络的其他用户可见。类似地,应用于特定节点的隐私设置可以控制与该节点相对应的用户或概念是否对在线社交网络的其他用户可见。作为示例而非限制,第一用户可以向社交网络系统160共享对象。该对象可以与通过边1306连接到第一用户的用户节点1302的概念节点1304相关联。第一用户可以对应用于连接到对象的概念节点1304的特定边1306的隐私设置进行指定,或者可以对应用于连接到概念节点1304的所有边1306的隐私设置进行指定。作为另一示例而非限制,第一用户可以共享特定对象类型的一组对象(例如,一组图像)。第一用户可以将相对于与该特定对象类型的第一用户相关联的所有对象的隐私设置指定为具有特定隐私设置(例如,指定由第一用户发布的所有图像仅对第一用户的朋友和/或在这些图像中标记了的用户可见)。
在特定实施例中,社交网络系统160可以(例如,在网页、模块、一个或多个对话框、或任何其他合适的界面内)向第一用户呈现“隐私向导”,以帮助第一用户指定一个或多个隐私设置。隐私向导可以显示指令、合适的隐私相关信息、当前隐私设置、用于接收来自第一用户的指定隐私设置的改变或确认的一个或多个输入的一个或多个输入域、或其任何合适的组合。在特定实施例中,社交网络系统160可以向第一用户提供“控制面板”功能,该功能可以向第一用户显示第一用户的当前隐私设置。可以在任何合适的时间(例如,在来自第一用户调用控制面板功能的输入之后、在特定事件或触发动作发生之后)向第一用户显示控制面板功能。控制面板功能可以允许第一用户在任何时间以任何合适的方式修改第一用户的当前隐私设置中的一个或多个(例如,将第一用户重定向到隐私向导)。
与对象相关联的隐私设置可以指定允许访问或拒绝访问的任何合适的粒度。作为示例而非限制,可以为以下用户指定访问或拒绝访问:特定用户(例如,只有我、我的室友和我的领导)、特定分离度内的用户(例如,朋友、或朋友的朋友)、用户群组(例如,游戏俱乐部、我的家庭)、用户网络(例如,特定雇主的雇员、特定大学的学生或校友)、所有用户(“公共”)、无用户(“私人”)、第三方系统170的用户、特定应用(例如,第三方应用、外部网站)、其他合适的实体、或以上用户或实体的任意组合。尽管本公开描述了允许访问或拒绝访问的特定粒度,但是本公开考虑了允许访问或拒绝访问的任何合适的粒度。
在特定实施例中,一个或多个服务器162可以是用于实施隐私设置的授权/隐私服务器。响应于来自用户(或其他实体)对存储在数据存储库164中的特定对象的请求,社交网络系统160可以向数据存储库164发送对该对象的请求。该请求可以识别与该请求相关联的用户,并且如果授权服务器基于与该对象相关联的隐私设置确定该用户被授权访问该对象,则该请求可以仅被发送给该用户(或用户的客户端系统130)。如果请求用户未被授权访问该对象,则授权服务器可以阻止从数据存储库164中检索所请求的对象,或者可以阻止将所请求的对象发送给该用户。在搜索查询上下文中,只有当查询用户被授权访问该对象时,例如,如果该对象的隐私设置允许该对象被呈现给该查询用户、被该查询用户发现或以其他方式对该查询用户可见,才可以将该对象提供为搜索结果。在特定实施例中,对象可以表示通过用户的新闻推送对用户可见的内容。作为示例而非限制,一个或多个对象可以对用户的“趋势”页面可见。在特定实施例中,对象可以对应于特定用户。该对象可以是与该特定用户相关联的内容,或者可以是该特定用户的帐户或存储在社交网络系统160或其他计算系统上的信息。作为示例而非限制,第一用户可以通过在线社交网络的“你可能认识的人”功能或者通过查看第一用户的朋友列表来查看在线社交网络的一个或多个第二用户。作为示例而非限制,第一用户可以在指定他们不希望在他们的新闻推送或朋友列表中看到与特定第二用户相关联的对象。如果该对象的隐私设置不允许它出现在用户面前、被用户发现或对用户可见,则可以从搜索结果中排除该对象。尽管本公开描述了以特定方式描述了执行隐私设置,但是本公开考虑了以任何合适的方式执行隐私设置。
在特定实施例中,与用户相关联的相同类型的不同对象可以具有不同的隐私设置。与用户相关联的不同类型的对象可以具有不同类型的隐私设置。作为示例而非限制,第一用户可以指定第一用户的状态更新是公开的,但是由第一用户共享的任何图像仅对在线社交网络上的第一用户的朋友可见。作为另一示例而非限制,用户可以为不同类型的实体指定不同的隐私设置,例如个人用户、朋友的朋友、追随者、用户组或公司实体。作为另一示例而非限制,第一用户可以指定可以观看由第一用户发布的视频的一组用户,同时防止视频对第一用户的雇主可见。在特定实施例中,可以为不同的用户组或用户背景信息提供不同的隐私设置。作为示例而非限制,第一用户可以指定与第一用户在同一所大学的其他用户可以观看第一用户的照片,但是作为第一用户的家庭成员的其他用户不可以观看那些相同的照片。
在特定实施例中,社交网络系统160可以为特定对象类型的每个对象提供一个或多个默认隐私设置。对象的被设置为默认的隐私设置可以由与该对象相关联的用户改变。作为示例而非限制,由第一用户发布的所有图像可以具有仅对第一用户的朋友可见的默认隐私设置,并且对于特定图像,第一用户可以将该图像的隐私设置改变为对朋友和朋友的朋友可见。
例如,在特定实施例中,隐私设置可以允许第一用户指定(例如,通过选择退出、通过不选择加入)社交网络系统160或助理系统140是否可以出于任何目的而接收、收集、记录或存储特定对象或与用户相关联的信息。在特定实施例中,隐私设置可以允许第一用户指定特定应用或过程是否可以访问、存储或使用与用户相关联的特定对象或信息。隐私设置可以允许用户选择让或选择不让特定应用或过程访问、存储或使用对象或信息。社交网络系统160或助理系统140可以访问这种信息以向第一用户提供特定功能或服务,而社交网络系统160或助理系统140却不能出于任何其他目的而访问该信息。在访问、存储或使用这些对象或信息之前,社交网络系统160或助理系统140可以提示用户在允许任何这种动作之前提供这样隐私设置:该隐私设置指定哪些应用或过程(如果有的话)可以访问、存储或使用该对象或信息。作为示例而非限制,第一用户可以经由与在线社交网络相关的应用(例如,消息收发应用)向第二用户发送消息,并且可以指定这样的隐私设置:社交网络系统160或助理系统140不应该存储这种消息。
在特定实施例中,用户可以指定与第一用户相关联的特定类型的对象或信息是否可以由社交网络系统160或助理系统140访问、存储或使用。作为示例而非限制,第一用户可以指定由第一用户通过社交网络系统160或助理系统140发送的图像不可以由社交网络系统160或助理系统140存储。作为另一示例而非限制,第一用户可以指定从第一用户发送到特定第二用户的消息可以不被社交网络系统160或助理系统140存储。作为又一示例而非限制,第一用户可以指定经由特定应用发送的所有对象可以由社交网络系统160或助理系统140保存。
在特定实施例中,隐私设置可以允许第一用户指定是否可以从特定客户端系统130或第三方系统170访问与第一用户相关联的特定对象或信息。隐私设置可以允许第一用户选择是否从特定设备(例如,用户智能电话上的电话簿)、从特定应用(例如,消息收发应用)、或从特定系统(例如,电子邮件服务器)访问对象或信息。社交网络系统160或助理系统140可以提供关于每个设备、系统或应用的默认隐私设置,和/或可以提示第一用户为每个上下文指定特定隐私设置。作为示例而非限制,第一用户可以利用社交网络系统160或助理系统140的位置服务特征来为用户附近的餐馆或其他地方提供推荐。第一用户的默认隐私设置可以指定社交网络系统160或助理系统140可以使用从第一用户的客户端系统130提供的位置信息来提供基于位置的服务,但是社交网络系统160或助理系统140可以不存储第一用户的位置信息或将其提供给任何第三方系统170。然后,第一用户可以更新隐私设置以允许第三方图像共享应用使用位置信息,以便对照片进行地理标记。
在特定实施例中,隐私设置可以允许用户指定可以访问对象的一个或多个地理位置。对对象的访问或拒绝访问可以取决于试图访问对象的用户的地理位置。作为示例而非限制,用户可以共享对象并指定只有同一城市中的用户可以访问或查看该对象。作为另一示例而非限制,第一用户可以共享对象并指定仅当第一用户在特定位置时该对象才对第二用户可见。如果第一用户离开该特定位置,则该对象对于第二用户不再是可见的。作为另一示例而非限制,第一用户可以指定对象仅对与第一用户在阈值距离内的第二用户可见。如果用户随后改变位置,则具有对该对象的访问权的原始第二用户可能失去访问权,而一组新第二用户在他们来到第一用户的阈值距离内时可以获得访问权。
在特定实施例中,社交网络系统160或助理系统140可以具有这样的功能:所述功能可以使用用户的个人信息或生物特征信息作为输入以用于用户认证或体验个性化目的。用户可以选择利用这些功能来增强他们在在线社交网络的体验。作为示例而非限制,用户可以向社交网络系统160或助理系统140提供个人信息或生物识别信息。用户的隐私设置可以指定这种信息仅可用于特定过程(例如,认证),并且还指定这种信息不可以与任何第三方系统170共享、或用于与社交网络系统160或助理系统140相关联的其他过程或应用。作为另一示例而非限制,社交网络系统160可以为用户提供向在线社交网络提供声纹记录的功能。作为示例而非限制,如果用户希望利用在线社交网络的这一功能,则用户可以提供他或她自己的语音的语音录音以提供对线社交网络的状态更新。可以将语音输入的录音与用户的声纹进行比较,以确定用户说了什么词语。用户的隐私设置可以指定这种语音录音仅可用于语音输入目的(例如,认证用户、发送语音消息、改进语音识别,以便使用在线社交网络的语音操作特征),并且还指定这种语音录音不可以与任何第三方系统170共享、或由与社交网络系统160相关联的其他过程或应用使用。作为另一示例而非限制,社交网络系统160可以为用户提供用于向在线社交网络提供参考图像(例如,面部资料、视网膜扫描)的功能。在线社交网络可以将参考图像与随后接收到的图像输入进行比较(例如,以认证用户、在照片中标记用户)。用户的隐私设置可以指定这种图像仅可用于有限的目的(例如,认证),并且还指定这种图像不可以与任何第三方系统170共享、或由与社交网络系统160相关联的其他过程或应用使用。
系统和方法
图16示出了示例计算机系统1600。在特定实施例中,一个或多个计算机系统1600执行本文所描述或示出的一种或多种方法的一个或多个步骤。在特定实施例中,一个或多个计算机系统1600提供本文所描述或示出的功能。在特定实施例中,在一个或多个计算机系统1600上运行的软件执行本文所描述或示出的一种或多种方法的一个或多个步骤,或者提供本文所描述或示出的功能。特定实施例包括一个或多个计算机系统1600的一个或多个部分。在本文中,在适当的情况下,对计算机系统的引用可以包括计算设备,反之亦然。此外,在适当的情况下,对计算机系统的引用可以包括一个或多个计算机系统。
本公开考虑了任何合适数量的计算机系统1600。本公开考虑了采用任何合适的物理形式的计算机系统1600。作为示例而非限制,计算机系统1600可以为嵌入式计算机系统、片上系统(System-On-Chip,SOC)、单板计算机系统(Single-Board Computer System,SBC)(例如,模块上计算机(Computer-On-Module,COM)或模块上系统(system-on-module,SOM))、台式计算机系统、膝上型或笔记本式计算机系统、交互式自助服务终端(kiosk)、大型机、计算机系统组网、移动电话、个人数字助理(PDA)、服务器、平板计算机系统、或这些系统中的两者或更多者的组合。在适当的情况下,计算机系统1600可以包括一个或多个计算机系统1600;可以是单一的或分布式的;跨多个位置的;跨多台机器的;跨越多个数据中心的;或位于云中(该云可以包括一个或多个网络中的一个或多个云部件)。在适当的情况下,一个或多个计算机系统1600可以在无实质性的空间限制或时间限制的情况下,执行本文所描述或示出的一种或多种方法的一个或多个步骤。作为示例而非限制,一个或多个计算机系统1600可以实时地或以分批处理模式执行本文所描述或示出的一种或多种方法的一个或多个步骤。在适当的情况下,一个或多个计算机系统1600可以在不同的时间或在不同的位置处执行本文所描述或示出的一种或多种方法的一个或多个步骤。
在特定实施例中,计算机系统1600包括处理器1602、内存1604、存储器1606、输入/输出(Input/Output,I/O)接口1608、通信接口1610和总线1612。尽管本公开描述并示出了具有处于特定布置的特定数量的特定部件的特定计算机系统,但本公开考虑了具有处于任何合适的布置的任何合适数量的任何合适部件的任何合适的计算机系统。
在特定实施例中,处理器1602包括用于执行多个指令的硬件,这些指令例如为,构成计算机程序的那些指令。作为示例而非限制,为了执行多个指令,处理器1602可从内部寄存器、内部高速缓冲存储器、内存1604、或存储器1606检索(或提取)这些指令;解码并执行这些指令;然后将一个或多个结果写入内部寄存器、内部高速缓冲存储器、内存1604或存储器1606。在特定实施例中,处理器1602可以包括用于数据、指令或地址的一个或多个内部高速缓冲存储器。在适当的情况下,本公开考虑了包括任何合适数量的任何合适的内部高速缓冲存储器的处理器1602。作为示例而非限制,处理器1602可以包括一个或多个指令高速缓冲存储器、一个或多个数据高速缓冲存储器、和一个或多个页表缓存(TranslationLookaside Buffer,TLB)。指令高速缓冲存储器中的指令可以是内存1604或存储器1606中的指令的副本,并且该指令高速缓冲存储器可以加速处理器1602对这些指令的检索。数据高速缓冲存储器中的数据可以是内存1604或存储器1606中、供在处理器1602处执行的指令操作的数据的副本;可以是在处理器1602处执行的先前指令的结果,以供在处理器1602处执行的后续指令访问、或用于写入内存1604或存储器1606;或者可以是其他合适的数据。数据高速缓冲存储器可以加速处理器1602的读操作或写操作。TLB可以加速处理器1602的虚拟地址转换。在特定实施例中,处理器1602可以包括用于数据、指令或地址的一个或多个内部寄存器。在适当的情况下,本公开考虑了包括任何适当数量的任何合适的内部寄存器的处理器1602。在适当的情况下,处理器1602可以包括一个或多个算术逻辑单元(ArithmeticLogic Unit,ALU);可以是多核处理器;或可以包括一个或多个处理器1602。尽管本公开描述并示出了特定的处理器,但是本公开考虑了任何合适的处理器。
在特定实施例中,内存1604包括主内存,该主内存用于存储供处理器1602执行的指令或供处理器1602操作的数据。作为示例而非限制,计算机系统1600可以将指令从存储器1606或另一源(例如,另一计算机系统1600)加载到内存1604。然后,处理器1602可以将这些指令从内存1604加载到内部寄存器或内部高速缓冲存储器。为了执行这些指令,处理器1602可以从内部寄存器或内部高速缓冲存储器中检索这些指令并对它们进行解码。在执行这些指令期间或之后,处理器1602可以将一个或多个结果(该一个或多个结果可以是中间结果或最终结果)写入内部寄存器或内部高速缓冲存储器。然后,处理器1602可以将这些结果中的一个或多个结果写入内存1604。在特定实施例中,处理器1602仅执行一个或多个内部寄存器中或一个或多个内部高速缓冲存储器中的、或内存1604(与存储器1606不同或其他位置)中的指令,且仅对一个或多个内部寄存器或内部高速缓冲存储器中的、或内存1604(与存储器1606不同或其他位置)中的数据进行操作。一条或多条内存总线(每条内存总线可以包括地址总线和数据总线)可以将处理器1602耦接到内存1604。如下所述,总线1612可以包括一条或多条内存总线。在特定实施例中,一个或多个内存管理单元(MemoryManagement Unit,MMU)位于处理器1602与内存1604之间,并且促进由处理器1602所请求的对内存1604的访问。在特定实施例中,内存1604包括随机存取存储器(Random AccessMemory,RAM)。在适当的情况下,该RAM是易失性存储器。在适当的情况下,该RAM可以为动态RAM(Dynamic RAM,DRAM)或静态RAM(Static RAM,SRAM)。此外,在适当的情况下,该RAM可以是单端口RAM或多端口RAM。本公开考虑了任何合适的RAM。在适当的情况下,内存1604可以包括一个或多个内存1604。尽管本公开描述和示出了特定的内存,但本公开考虑了任何合适的内存。
在特定实施例中,存储器1606包括用于数据或指令的大容量存储器。作为示例而非限制,存储器1606可以包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器(FloppyDisk Drive,FDD)、闪存、光盘、磁光盘、磁带、或通用串行总线(Universal Serial Bus,USB)驱动器、或这些存储器中的两者或更多者的组合。在适当的情况下,存储器1606可以包括可移除介质或不可移除(或固定)介质。在适当的情况下,存储器1606可以处于计算机系统1600的内部或外部。在特定实施例中,存储器1606是非易失性固态存储器。在特定实施例中,存储器1606包括只读存储器(Read-Only Memory,ROM)。在适当的情况下,该ROM可以是掩码编程ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(Erasable PROM,EPROM)、电可擦除PROM(Electrically Erasable PROM,EEPROM)、电可改写ROM(ElectricallyAlterable ROM,EAROM)或闪存、或这些ROM中的两者或更多者的组合。本公开考虑了采用任何合适物理形式的大容量存储器1606。在适当的情况下,存储器1606可以包括促进处理器1602和存储器1606之间的通信的一个或多个存储器控制单元。在适当的情况下,存储器1606可以包括一个或多个存储器1606。尽管本公开描述和示出了特定的存储器,但是本公开考虑了任何合适的存储器。
在特定实施例中,I/O接口1608包括这样的硬件、软件或这两者:该硬件、软件或这两者提供用于计算机系统1600与一个或多个I/O设备之间的通信的一个或多个接口。在适当的情况下,计算机系统1600可以包括这些I/O设备中的一个或多个I/O设备。这些I/O设备中的一个或多个I/O设备可以实现个人与计算机系统1600之间的通信。作为示例而非限制,I/O设备可以包括键盘、小键盘、传声器、监视器、鼠标、打印机、扫描仪、扬声器、静物摄像头、手写笔、平板电脑、触摸屏、追踪球、摄像机、另一合适的I/O设备、或这些I/O设备中的两者或更多者的组合。I/O设备可以包括一个或多个传感器。本公开考虑了任何合适的I/O设备和用于该I/O设备的任何合适的I/O接口1608。在适当的情况下,I/O接口1608可以包括使处理器1602能够驱动这些I/O设备中的一个或多个I/O设备的一个或多个设备或软件驱动器。在适当的情况下,I/O接口1608可以包括一个或多个I/O接口1608。尽管本公开描述和示出了特定的I/O接口,但本公开考虑了任何合适的I/O接口。
在特定实施例中,通信接口1610包括这样的硬件、软件或这两者:该硬件、软件或这两者提供用于计算机系统1600与一个或多个其他计算机系统1600或一个或多个网络之间的通信(例如,基于数据包的通信)的一个或多个接口。作为示例而非限制,通信接口1610可以包括用于与以太网或其他基于线路的网络进行通信的网络接口控制器(networkinterface controller,NIC)或网络适配器,或用于与诸如WI-FI网络等无线网络进行通信的无线NIC(wireless NIC,WNIC)或无线适配器。本公开考虑了任何合适的网络和用于该网络的任何合适的通信接口1610。作为示例而非限制,计算机系统1600可以与如下的网络进行通信:自组网、个域网(personal area network,PAN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、或互联网的一个或多个部分、或这些网络中的两者或更多者的组合。这些网络中的一种或多种网络的一个或多个部分可以是有线的或无线的。作为示例,计算机系统1600可以与如下的网络进行通信:无线PAN(wireless PAN,WPAN)(例如,蓝牙WPAN)、WI-FI网络、WI-MAX网络、蜂窝电话网络(例如,全球移动通信系统(Global System for MobileCommunications,GSM)网络)、或其他合适的无线网络、或这些网络中的两者或更多者的组合。在适当的情况下,计算机系统1600可以包括用于这些网络中的任何网络的任何合适的通信接口1610。在适当情况下,通信接口1610可以包括一个或多个通信接口1610。尽管本公开描述并示出了特定的通信接口,但是本公开考虑了任何合适的通信接口。
在特定实施例中,总线1612包括将计算机系统1600的多个部件彼此耦接的硬件、软件或这两者。作为示例而非限制,总线1612可以包括:加速图形端口(AcceleratedGraphics Port,AGP)或其他图形总线、增强型工业标准体系结构(Enhanced IndustryStandard Architecture,EISA)总线、前端总线(front-side bus,FSB)、超传输(HYPERTRANSPORT,HT)互连、工业标准体系结构(Industry Standard Architecture,ISA)总线、无限带宽(INFINIBAND)互连、低引脚计数(low-pin-count,LPC)总线、内存总线、微通道结构(Micro Channel Architecture,MCA)总线、外围部件互连(Peripheral ComponentInterconnect,PCI)总线、高速外围部件互联(PCI-Express,PCIe)总线、串行高级技术附件(serial advanced technology attachment,SATA)总线、视频电子标准协会局域(VideoElectronics Standards Association local,VLB)总线、或另一合适的总线、或这些总线中的两者或更多者的组合。在适当的情况下,总线1612可以包括一条或多条总线1612。尽管本公开描述和示出了特定的总线,但本公开考虑了任何合适的总线或互连件。
在本文中,在适当的情况下,一种或多种计算机可读非暂态存储介质可以包括:一个或多个基于半导体的集成电路(integrated circuit,IC)或其他IC(例如,现场可编程门阵列(field-programmable gate array,FPGA)或专用IC(application-specific IC,ASIC))、硬盘驱动器(HDD)、混合硬盘驱动器(hybrid hard drive,HHD)、光盘、光盘驱动器(optical disc drive,ODD)、磁光盘、磁光盘驱动器、软盘、软盘驱动器、磁带、固态驱动器(solid-state drive,SSD)、RAM驱动器、安全数字卡(SECURE DIGITAL card)或安全数字驱动器、任何其他合适的计算机可读非暂态存储介质、或这些存储介质中的两者或更多者的任何合适的组合。在适当的情况下,计算机可读非暂态存储介质可以是易失性的、非易失性的、或易失性与非易失性的组合。
其他
在本文中,除非另有明确说明或上下文另有说明,否则“或”是包含而非排他性的。因此,在本文中,除非另有明确说明或上下文另有说明,否则“A或B”意指“A、B、或这两者”。此外,除非另有明确说明或上下文另有说明,否则“和”是共同的和单独的。因此,在本文中,除非另有明确说明或上下文另有说明,否则“A和B”意指“A和B,共同地或单独地”。
本公开的范围包括对本文中所描述或所示出的示例实施例的所有改变、替代、变化、变换和修改,本领域普通技术人员将理解这些改变、替代、变化、变换和修改。本公开的范围不限于本文所描述或所示出的示例实施例。此外,尽管本公开将本文中的各个实施例描述并示出为包括特定的部件、元件、特征、功能、操作、或步骤,但是这些实施例中的任何实施例可以包括本领域普通技术人员将理解的、本文中任何地方所描述或所示出的部件、元件、特征、功能、操作、或步骤中的任何的任何组合或排列。此外,在所附权利要求中对适用于、被布置为、能够、被配置为、使能够、能被操作、或可被操作以执行特定功能的装置或系统、或装置或系统中的部件的引用包括该装置、系统、部件,无论该装置、系统、部件或该特定功能是否被激活、开启或解锁,只要该装置、系统或部件被如此适用于、被布置为、能够、被配置为、使能够、能被操作或可被操作。另外,尽管本公开将特定实施例描述或示出为提供特定优点,但是特定实施例可以不提供这些优点,或可以提供这些优点中的一些或全部。

Claims (16)

1.一种方法,包括:由与多个客户端系统相关联的助理系统:
接收来自第一用户的语音请求,其中,所述第一用户想要激活所述多个客户端系统中的特定客户端系统,并且其中,所述多个客户端系统处于所述第一用户的收听范围内;
访问与所述语音请求相关联的多个信号,所述多个信号来自所述多个客户端系统中的各个客户端系统;
基于所访问的所述多个信号,将所述多个客户端系统中的第一客户端系统识别为所述第一用户想要激活的所述特定客户端系统;以及
指示所述第一客户端系统提供来自所述助理系统的、响应于所述语音请求的响应。
2.根据权利要求1所述的方法,还包括:
基于所述语音请求,确定与所述第一用户相关联的意图;
其中,将所述第一客户端系统识别为所述第一用户想要激活的所述特定客户端系统还基于所确定的所述意图;并且优选地,所述方法还包括:
确定与所述意图相对应的任务;
确定所述多个客户端系统中的每个客户端系统的设备能力;以及
基于所述任务和相应客户端系统的设备能力,计算所述多个客户端系统中的每个客户端系统的匹配分数,其中,所述第一客户端系统与排序第一的匹配分数相关联。
3.根据权利要求1或2所述的方法,其中,将所述第一客户端系统识别为所述第一用户想要激活的所述特定客户端系统还基于一个或多个任务策略。
4.根据任一项前述权利要求所述的方法,还包括:
基于来自所述多个客户端系统中的各个客户端系统的所述多个信号,分别计算与所述多个客户端系统相关联的多个置信度分数;以及
基于所述多个客户端系统的各自置信度分数,对所述多个客户端系统进行排序;
其中,所述第一客户端系统是所述多个客户端系统中排序第一的客户端系统。
5.根据任一项前述权利要求所述的方法,所述方法还包括:
生成跨所述多个客户端系统的网状网络,其中,所述多个客户端系统处于彼此的无线通信范围内。
6.根据权利要求5所述的方法,其中,所述助理系统在所述多个客户端系统中的一个或多个客户端系统上运行,并且其中,所述方法还包括:
通过所述网状网络,在所述多个客户端之间分发来自所述多个客户端系统中的各个客户端系统的所述多个信号。
7.根据权利要求6所述的方法,所述方法还包括:
比较在所述多个客户端系统之间分发的信号,其中,将所述第一客户端系统识别为所述第一用户想要激活的所述特定客户端系统还基于所述比较。
8.根据权利要求5至7中任一项所述的方法,其中,所述网状网络是基于以下中的一者或多者来生成的:公钥、私钥或通信协议。
9.根据权利要求5至8所述的方法,还包括:
基于发现协议发现所述多个客户端系统,其中,所述发现是通过所述网状网络或所述多个客户端系统之间的对等通信中的一者或多者来进行的。
10.根据任一项前述权利要求所述的方法,其中,将所述第一客户端系统识别为所述第一用户想要激活的所述特定客户端系统还基于与所述第一用户相关联的用户偏好。
11.根据任一项前述权利要求所述的方法,其中,所述多个信号包括以下项中的两项或多项:
存储在相应客户端系统上的短期记忆;
指示所述第一用户与该相应客户端系统的先前交互的新近度;
指示在该相应客户端系统处接收到语音请求的时间;
在该相应客户端系统处接收到的语音请求的音量;
在该相应客户端系统处接收到的语音请求的信噪比;
所述第一用户与该相应客户端系统的互动程度;
由该相应客户端系统采集的与所述第一用户相关联的注视信息;
该相应客户端系统的姿态;
所述第一用户到该相应客户端系统的距离;或者
与所述第一用户相关联的上下文信息。
12.根据任一项前述权利要求所述的方法,其中,所述助理系统在远程服务器上运行,并且其中,所述方法还包括:
在所述远程服务器处,接收来自所述多个客户端系统的多个音频信号,其中,所述多个音频信号中的每个音频信号包括在相应客户端系统处接收到的所述语音请求;以及
在所述远程服务器处,对所述多个音频信号进行分组。
13.根据权利要求12所述的方法,其中,所述语音请求与说话者标识符(ID)相关联,其中,对所述多个音频信号进行分组是基于所述说话者ID的;和/或优选地,其中,所述多个客户端系统各自与一IP地址相关联,并且其中,对所述多个音频信号进行分组是基于与每个客户端系统相关联的所述IP地址的;或者优选地,其中,所述多个客户端系统各自与一用户标识符(ID)相关联,并且其中,对所述多个音频信号进行分组是基于与每个客户端系统相关联的所述用户ID的。
14.根据任一项前述权利要求所述的方法,其中,所述语音请求包括对所述特定客户端系统的歧义引用;或者优选地,其中,所述语音请求包括对所述特定客户端系统的不引用。
15.一种或多种计算机可读非暂态存储介质,所述一种或多种计算机可读非暂态存储介质包含软件,所述软件在被执行时能够操作以:
由与多个客户端系统相关联的助理系统接收来自第一用户的语音请求,其中,所述第一用户想要激活所述多个客户端系统中的特定客户端系统,其中,所述多个客户端系统处于所述第一用户的收听范围内;
由所述助理系统访问与所述语音请求相关联的多个信号,所述多个信号来自所述多个客户端系统中的各个客户端系统;
由所述助理系统基于所访问的所述多个信号,将所述多个客户端系统中的第一客户端系统识别为所述第一用户想要激活的所述特定客户端系统;以及
由所述助理系统指示所述第一客户端系统提供来自所述助理系统、响应于所述语音请求的响应。
16.一种系统,包括:一个或多个处理器;以及非暂态存储器,所述非暂态存储器耦接到所述一个或多个处理器,并且所述非暂态存储器包括能够由所述处理器执行的指令,所述一个或多个处理器在执行所述指令时能够操作以:
由与多个客户端系统相关联的助理系统接收来自第一用户的语音请求,其中,所述第一用户想要激活所述多个客户端系统中的特定客户端系统,其中,所述多个客户端系统处于所述第一用户的收听范围内;
由所述助理系统访问与所述语音请求相关联的多个信号,所述多个信号来自所述多个客户端系统中的各个客户端系统;
由所述助理系统基于所访问的所述多个信号,将所述多个客户端系统中的第一客户端系统识别为所述第一用户想要激活的所述特定客户端系统;以及
由所述助理系统指示所述第一客户端系统提供来自所述助理系统的、响应于所述语音请求的响应。
CN202280030466.9A 2021-04-21 2022-04-21 助理系统的多设备调解 Pending CN117396837A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/177,812 2021-04-21
US17/336,716 US20220358917A1 (en) 2021-04-21 2021-06-02 Multi-device Mediation for Assistant Systems
US17/336,716 2021-06-02
PCT/US2022/025844 WO2022226244A1 (en) 2021-04-21 2022-04-21 Multi-device mediation for assistant systems

Publications (1)

Publication Number Publication Date
CN117396837A true CN117396837A (zh) 2024-01-12

Family

ID=89465337

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280030466.9A Pending CN117396837A (zh) 2021-04-21 2022-04-21 助理系统的多设备调解

Country Status (1)

Country Link
CN (1) CN117396837A (zh)

Similar Documents

Publication Publication Date Title
US11403466B2 (en) Speech recognition accuracy with natural-language understanding based meta-speech systems for assistant systems
US20210400235A1 (en) Proactive In-Call Content Recommendations for Assistant Systems
CN114930363A (zh) 为助理系统生成主动内容
US20230401170A1 (en) Exploration of User Memories in Multi-turn Dialogs for Assistant Systems
CN116018791A (zh) 在助手系统中使用单个请求进行多人呼叫
US20220366904A1 (en) Active Listening for Assistant Systems
EP4327197A1 (en) Task execution based on real-world text detection for assistant systems
US20220358917A1 (en) Multi-device Mediation for Assistant Systems
US20240054156A1 (en) Personalized Labeling for User Memory Exploration for Assistant Systems
US20220366170A1 (en) Auto-Capture of Interesting Moments by Assistant Systems
CN116888661A (zh) 用于辅助系统的包括非拉丁或不可解析内容项的通信内容的读出
US11983329B1 (en) Detecting head gestures using inertial measurement unit signals
US20230353652A1 (en) Presenting Personalized Content during Idle Time for Assistant Systems
US20230419952A1 (en) Data Synthesis for Domain Development of Natural Language Understanding for Assistant Systems
US20230236555A1 (en) Event-Based Reasoning for Assistant Systems
CN117396837A (zh) 助理系统的多设备调解
US20240161742A1 (en) Adaptively Muting Audio Transmission of User Speech for Assistant Systems
CN117765940A (zh) 为助理系统呈现与语音命令相关联的注意状态
CN117396836A (zh) 由助理系统自动采集有趣时刻
CN117377942A (zh) 助理系统的主动收听
CN117396838A (zh) 助理系统的基于真实世界文本检测的任务执行
CN116897353A (zh) 用于辅助系统的使用语音和手势输入的文本编辑
TW202240461A (zh) 使用輔助系統的語音和手勢輸入之文字編輯

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination