用于意图推理的上下文无关文法的机器生成的制作方法
相关申请的交叉引用
本申请要求于2018年2月22日提交的申请号为15/902,911的美国专利申请的优先权,该专利申请的全部内容通过引用合并于此。
本公开总体上涉及用于意图推理的上下文无关文法(contextfreegrammar,cfg)的机器生成,并且更具体地,涉及用于在家居控制设置中生成用于意图推理的上下文无关文法的方法和系统。
背景技术:
最近,基于语音的数字助理(例如,苹果的siri、亚马逊的echo、谷歌的谷歌助理和微软的cortana)已被引入市场,以处理各种任务(例如,家用电器控制、网络搜索、日历、提醒等)。为了启动基于语音的助理,用户可以按下按钮或在触摸屏上选择图标,或者说出触发词(例如,预定义的唤醒命令),然后说出描述他/她的意图的自然语言命令。
现有技术的自然语言处理技术依赖于自然语言处理模型,由于高计算量和人员成本,这些自然语言处理模型难以实现和更新。另外,使自然语言处理模型变得过时和不准确的另一个原因是缺乏足够的训练样本。因此,在家用电器控制和其他类似应用的背景下,提供一种对自然语言处理模型的实现和更新进行改进的方式将是有益的。
技术实现要素:
在家用电器控制设置中,可以通过对用户话语的自然语言处理来确定用户的意图。但是,不同的设备有许多功能和特定设置。为这些不同的功能和设置创建自然语言处理模型,包括生成用于区分与不同功能和设置相关的意图的上下文无关文法,既繁琐又耗时。此外,随着功能和设置变得越来越复杂和多样化,针对不同的意图手动写出上下文无关文法变得越来越站不住脚并且容易出错。有时,当市场上引入新词、新模型和新功能时,自然语言处理模型可能已经过时,并且更新自然语言处理模型以快速适应现实世界的变化需要大量的时间和资源。
此外,训练自然语言处理模型(包括语音到文本模型)需要大量的语言样本,但是鉴于自然语言处理模型需要包含许多设置和功能,因此收集如此大量的语言样本是一项艰巨的任务。如果没有足够数量的语言样本来训练语言模型,那么语言模型将无法产生可操作意图,或者意图识别的准确性较低。此外,随着新的功能和设置的推出以及新电器的上市,现有的自然语言处理模型可能没有配备词汇和工具来识别与这些新的功能和设置有关的意图。从用户那里收集新的语言样本来扩展现有的语言处理模型以覆盖这些新的功能和设置是困难的,因为在通过实际使用成功以向用户保证自然语言处理模型可以处理这些新命令之前,用户不太可能使用这些新命令。
在某些情况下,当一个家庭中有多个用户,和/或同一家庭中有多个相同类型的电器时,现有技术的自然语言处理技术不能有效地消除由不同用户发出并指向相同类型的不同电器的意图和指令之间的歧义。尽管可以使用上下文信息(例如用户的当前位置和用户的先前行为)来帮助识别用户的意图,但是上下文信息的使用需要其他功能以及用户隐私权的折中,并且在许多情况下可能不会产生准确的结果。有时,数字助理和用户之间的互动式问答可以帮助消除用户意图的歧义,但是这种互动既费时又麻烦,并且计算量很大。
鉴于实现和更新自然语言处理模型的常规方式的许多问题,包括生成针对不同意图的上下文无关文法以及基于语言样本训练自然语言处理模型,本公开描述了一种用于基于上下文无关文法模板和相应的非终结符文件来机器生成上下文无关文法的方法和系统,该方法和系统简单、模块化且可扩展。上下文无关文法的模块化机器生成使调试过程更加简单。
下面描述的实施例提供了用于机器生成用于意图推理的上下文无关文法的系统和方法。在一些实施例中,该方法包括:针对与待由机器执行的第一任务对应的可操作意图,通过编译器检索第一模板文件;使用编译器解析第一模板文件,以识别第一非终结符变量,该第一非终结符变量引用包含多个第一命名实体值的第一非终结符文件;以及基于在第一模板文件中指定的、包括至少第一产生式规则的多个产生式规则,生成与第一任务对应的可操作意图的第一上下文无关文法,第一产生式规则包括第一非终结符变量,其中,生成与第一任务对应的可操作意图的第一上下文无关文法包括:通过用多个第一命名实体值替换第一产生式规则中的第一非终结符变量来重写第一产生式规则。
根据一些实施例,提供了一种计算机可读存储介质(例如,非暂时性计算机可读存储介质),该计算机可读存储介质存储由电子设备的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行本文所述的任何方法的指令。
根据一些实施例,提供了一种电子设备(例如,便携式电子设备),该电子设备包括用于执行本文所述的任何方法的装置。
根据一些实施例,提供了一种电子设备(例如,便携式电子设备),该电子设备包括一个或多个处理器和存储器,该一个或多个存储器存储由该一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行本文所述的任何方法的指令。
根据一些实施例,提供了一种用于电子设备中的信息处理装置,该信息处理装置包括用于执行本文描述的任何方法的装置。
附图说明
为了更好地理解所描述的各种实施例,应结合以下附图来参考以下具体实施方式,在附图中,相似的附图标记在整个附图中指代相应的部分。
图1是示出了根据一些实施例的数字助理在其中运行的环境的框图。
图2是示出了根据一些实施例的数字助理客户端系统的框图。
图3a是示出了根据一些实施例的独立数字助理系统或数字助理服务器系统的框图。
图3b是示出了根据一些实施例的图3a所示的数字助理的功能的框图。
图4是根据一些实施例的包括多个可由数字家庭助理控制的家庭设备的智能家居环境。
图5a至图5c是示出了根据一些实施例的,用于针对可由机器执行的两个示例性任务的可操作意图来生成上下文无关文法的示例性过程的框图。
图6是示出了根据一些实施例的用于机器生成用于意向推理的上下文无关文法的方法的流程图。
在整个附图中,相似的附图标记指代相应的部分。
具体实施方式
下文描述的实施例提供了用于基于语音命令(例如,用于控制家用电器的一个或多个功能的语音命令)自动机器生成用于意图推理的上下文无关文法的系统和方法。该系统和方法能够使得针对电器的新的功能和设置快速开发和更新上下文无关文法,使得能够通过为多个家庭设备使用不同的名称来控制多个相同类型的家庭设备,并使得能够在多用户环境中以用户可定制的方式控制家庭设备等。
在一些实施例中,通过基于语音的助理来处理语音命令。可选地,基于语音的助理使用电子设备上的语音触发器(例如,通过说出“嘿,助理”)来启动。当用户按下设备上的启示(affordance)(例如,按钮或图标)以激活数字助理时,也可以开始与基于语音的数字助理(或其他基于语音的服务,例如,语音到文本转录服务)的交互。数字助理可以耦接到一个或多个其他设备(例如,家用电器、智能家居设备等)以控制这些设备的功能。
在家居控制设置中,可以通过数字家庭助理控制多个设备。通常,用户语音输入中的意图推理和命名实体识别可以同时进行,也可以顺序进行。在后一种情况下,将与语音输入相对应的转录文本输入到意图分类器(例如,图3a至图3b中的本体360),以确定用户希望由数字家庭助理执行的任务。在一些实施例中,数字家庭助理的自然语言处理模块对所识别的意图的命名实体识别模型进行定位,并将用户语音输入的文本版本传递给命名实体识别模型,以获得该输入的经识别的命名实体。意图分类器的性能在很大程度上取决于文字文本。例如,如果文本包含单词“空调”和“温度”,则其意图很可能是“ac_set_temperature”。在某些情况下,可以将用户提供给电器的其他名称(例如,特定型号的名称(例如,“gecs-252”)或昵称(例如,“机灵鬼”))添加到命名实体列表中,并由命名实体识别模型进行处理以识别用户的意图。如本文所公开的,用于意图推理的上下文无关文法需要被更新从而具有能理解使用这些特定型号的名称和/或昵称的语音命令的能力。根据本文公开的机器自动生成的上下文无关文法,可以快速且容易地执行更新,从而可以避免冗长和麻烦的由用户促进的消除歧义的过程(例如,迫使用户说出在婴儿房间中的空调等)。另外,如本文所公开的,如果在同一家庭中存在多个相同类型和型号的设备,则可以给不同的设备起不同的昵称,从而可以使用上下文无关文法来识别设备,该上下文无关文法已生成为包括规则,以在用于使用该设备的语音命令的上下文中理解和处理这些不同的昵称中的每一个昵称。根据本文所述的方法和系统,借助这些新的昵称和功能,可以轻松地丰富和修改上下文无关文法,所有用户都可以为自己的电器选择任何名称,并且这些名称不必与设备的实际功能进行绑定。例如,用户可以起一个独特的别名(例如,为客厅空调起别名“狗”,以及为卧室空调起别名“猫”),意图推理仍然可以很精确地进行。启用这些独特的别名避免了使用其他解决方案带来的问题,每个用户都可以选择对他/她自己有意义的别名,并且一旦在设备注册阶段将别名提供给数字助理,意图推理将更加有效。此外,每个用户都可以拥有针对同一设备的用户专用名称。如本文所公开的上下文无关文法的机器生成使得能够容易地生成不同的特定于用户的上下文无关文法。因此,一旦执行了说话者识别,就不会仅仅因为用户具有给定意图的不同术语集和名称集,而产生处理用户的语音输入的额外的负担。
图1是根据一些实施例的数字家庭助理的运行环境100的框图。术语“家庭助理”、“数字助理”、“虚拟助理”、“智能自动助理”、“基于语音的数字助理”、“语音助理”或“自动数字助理”是指对口头和/或文本形式的自然语言输入进行解释以推理用户意图(例如,标识与自然语言输入相对应的任务类型),并根据推理出的用户意图执行操作(例如,执行与所识别的任务类型相对应的任务)的任何信息处理系统。例如,为了按照推理出的用户意图执行操作,系统可以执行以下一项或多项操作:使用旨在实现推理出的用户意图的步骤和参数来识别任务流(例如,识别任务类型),将来自推理出的用户意图的特定要求输入到任务流,通过调用程序、方法、服务、api等来执行任务流(例如,向服务提供商发送请求),以及以听觉(例如,语音)和/或视觉形式生成对用户的输出响应。
具体地,家庭助理系统一旦被启动,就能够至少部分地以自然语言命令、请求、陈述、叙述和/或询问的形式来接受用户请求。通常,用户请求通过家庭助理系统寻求信息答案或任务执行。对用户请求的令人满意的响应通常是提供所请求的信息答案、执行所请求的任务或两者结合。作为示例,用户可以问数字助理系统一个问题,例如“现在房间里的温度是多少?”根据用户的当前位置和环境温度,数字助理可能会回答“室温为80度(华氏度)”。用户还可以要求执行任务,例如,通过叙述“请打开空调。”作为响应,家庭助理可以通过生成语音输出“是,马上”来确认请求,然后继续通过空调的预定义控制api来打开房间中的空调。与家庭助理进行交互以请求信息或执行各种任务的方法还有很多。除了提供口头响应和采取程序化的操作之外,家庭助理还可以提供其他视觉或音频形式(例如,文本、警报、音乐、视频、动画等)的响应。
如图1所示,在一些实施例中,数字助理系统是根据客户端-服务器模型来实现的。数字助理系统包括在用户设备(例如,104a和104b)上执行的客户端侧部分(例如,102a和102b)(以下称为“数字助理(digitalassistant,da)客户端102”)以及在服务器系统108上执行的服务器侧部分106(以下称为“da服务器106”)。da客户端102通过一个或多个网络110与da服务器106进行通信。da客户端102提供客户端侧功能,例如面向用户的输入和输出处理以及与da服务器106的通信。da服务器106为各自驻留在相应的用户设备104(也称为客户端设备或电子设备)上的任意数量的da客户端102提供服务器侧功能。
在一些实施例中,da服务器106包括面向客户端的i/o接口112、一个或多个处理模块114、数据和模型116以及到外部服务的i/o接口118。面向客户端的i/o接口有助于数字助理服务器106的面向客户端的输入和输出处理。一个或多个处理模块114利用数据和模型116基于自然语言输入来确定用户的意图,并基于所推理的用户意图来执行任务。在一些实施例中,da服务器106通过网络110与外部服务120(例如,导航服务、消息服务、信息服务、日历服务、家用电器控制服务等)进行通信,以完成任务或获取信息。到外部服务的i/o接口118有助于这种通信。
用户设备104的示例包括但不限于家居控制中心设备、手持式计算机、个人数字助理(pda)、平板计算机、膝上型计算机、台式计算机、蜂窝电话、智能电话、增强型通用分组无线业务(enhancedgeneralpacketradioservice,egprs)移动电话、媒体播放器、导航设备、游戏机、电视、遥控器或这些数据处理设备中的任意两个或多个数据处理设备或任何其他合适的数据处理设备的组合。参考图2所示的示例性用户设备104,提供了关于用户设备104的更多细节。
通信网络110的示例包括局域网(localareanetworks,lan)和广域网(wideareanetworks,wan),例如因特网。可以使用任何已知的网络协议来实现(一个或多个)通信网络110,已知的网络协议包括各种有线或无线协议,例如以太网、通用串行总线(usb)、火线(firewire)、全球移动通信系统(globalsystemformobilecommunications,gsm)、增强型数据gsm环境(enhanceddatagsmenvironment,edge)、码分多址(codedivisionmultipleaccess,cdma)、时分多址(timedivisionmultipleaccess,tdma)、蓝牙、wi-fi、网络电话(voiceoverinternetprotocol,voip)、wi-max或任何其他合适的通信协议。
服务器系统108可以在至少一个数据处理装置和/或计算机的分布式网络上实现。在一些实施例中,服务器系统108还采用第三方服务提供商(例如,第三方云服务提供商)的各种虚拟设备和/或服务来提供服务器系统108的底层计算资源和/或基础结构资源。
尽管图1中示出的数字助理系统包括客户端侧部分(例如,da客户端102)和服务器侧部分(例如,da服务器106),但是在一些实施例中,数字助理系统仅指服务器侧部分(例如,da服务器106)。在一些实施例中,数字助理的功能可以被实现为安装在用户设备上的独立应用。另外,数字助理的客户端和服务器部分之间的功能划分可以在不同的实施例中变化。例如,在一些实施例中,da客户端102是瘦客户端,该瘦客户端仅提供面向用户的输入和输出处理功能,并将数字助理的所有其他功能委托给da服务器106。在一些其他实施例中,da客户端102被配置为执行或辅助da服务器106的一个或多个功能。
图2是根据一些实施例的用户设备104的框图。用户设备104包括存储器接口202,一个或多个处理器204以及外围设备接口206。用户设备104中的各种组件通过一条或多条通信总线或信号线耦接。用户设备104包括耦接到外围设备接口206的各种传感器、子系统和外围设备。这些传感器、子系统和外围设备收集信息和/或促进用户设备104的各种功能。
在一些实施例中,用户设备104包括提供通信功能的一个或多个有线和/或无线通信子系统224。通信子系统224通常包括各种通信端口、射频接收器和发射器和/或光学(例如,红外线的)接收器和发射器。
在一些实施例中,用户设备104包括耦接到一个或多个扬声器228和一个或多个麦克风230的音频子系统226,以促进语音启用的功能(例如,语音识别、语音复制、数字记录和电话功能)。在一些实施例中,音频子系统226耦接到语音触发系统216。在一些实施例中,语音触发系统216和/或音频子系统226包括用于接收和/或分析声音输入的低功率音频电路和/或程序(即,包括硬件和/或软件),例如包括一个或多个模数转换器、数字信号处理器(digitalsignalprocessor,dsp)、声音检测器、存储器缓冲器、编解码器等。在一些实施例中,低功率音频电路(单独的或除了用户设备104的其他组件之外)为用户设备104的一个或多个方面提供语音(或声音)触发功能,例如基于语音的数字助理或其他基于语音的服务。在一些实施例中,即使当用户设备104的其他组件(例如,处理器204、i/o子系统240、存储器250等)被关闭和/或处于待机模式时,低功率音频电路也提供语音触发功能。在一些实施例中,语音触发系统216与说话者识别系统交互或包括说话者识别系统,该说话者识别系统有助于数字助理的说话者特定的语音触发功能。
在一些实施例中,i/o子系统240也耦接到外围接口206。i/o子系统240包括用于各种输入和输出设备的输入和输出控制器,输入和输出设备例如有触摸屏显示器、触摸板、键盘、红外端口、usb端口和/或诸如触摸笔的指针设备。
存储器接口202耦接到存储器250。在一些实施例中,存储器250包括非暂时性计算机可读介质,例如高速随机存取存储器和/或非易失性存储器(例如,一个或多个磁盘存储设备、一个或多个闪存设备、一个或多个光存储设备和/或其他非易失性固态存储设备)。
在一些实施例中,存储器250存储操作系统252、通信模块254、图形用户接口模块256、传感器处理模块258、语音输入处理模块260、应用262及其子集或超集。操作系统252包括用于处理基本系统服务和用于执行硬件相关任务的指令。通信模块254有助于与一个或多个附加设备、一个或多个计算机和/或一个或多个服务器进行通信。图形用户接口模块256有助于图形用户接口处理。传感器处理模块258有助于与传感器相关的处理和功能(例如,处理由一个或多个麦克风228接收的语音输入)。语音输入处理模块260有助于语音输入处理过程和功能。应用模块262有助于用户应用的各种功能,例如电子消息传递、网页浏览、媒体处理、导航,家用电器控制和/或其他处理和功能。在一些实施例中,用户设备104在存储器250中存储一个或多个软件应用,每个软件应用与至少一个外部服务提供商相关联。
如上所述,在一些实施例中,存储器250还存储客户端侧数字助理指令(例如,在数字助理客户端模块264中)和各种用户数据266(例如,用户语音样本、用户语音打印、用户特定的词汇数据、偏好数据和/或其他数据(例如,用户的电子通讯录或联系人列表、待办事项列表、购物列表、用户对家用电器的偏好等)),来提供数字助理的客户端侧功能。
在各种实施例中,数字助理客户端模块264能够通过用户设备104的各种用户接口(例如,i/o子系统244)接受语音输入、文本输入、触摸输入和/或手势输入。数字助理客户端模块264还能够提供音频、视觉和/或触觉形式的输出。例如,输出可以提供为语音、声音、警报、文本消息、菜单、图形、视频、动画、振动和/或以上两项或更多项的组合。在操作期间,数字助理客户端模块264使用通信子系统224与数字助理服务器(例如,图1的数字助理服务器106)进行通信。
在一些实施例中,数字助理客户端模块264利用各种传感器、子系统和外围设备来从用户设备104的周围环境收集附加信息,以建立与用户输入相关联的上下文。在一些实施例中,数字助理客户端模块264将上下文信息或上下文信息的子集与用户输入一起提供给数字助理服务器(例如,图1的数字助理服务器106),以帮助推理用户的意图。
在一些实施例中,存储器250可以包括附加指令或更少的指令。此外,用户设备104的各种功能可以在硬件和/或固件中实现,包括在一个或多个信号处理和/或专用集成电路中实现。因此,用户设备104不需要包括图2所示的所有模块和应用。
图3a是根据一些实施例的示例性家庭助理系统300(也称为数字助理)的框图。在一些实施例中,家庭助理系统300在独立的计算机系统上实现。在一些实施例中,家庭助理系统300分布在多台计算机上。在一些实施例中,家庭助理的一些模块和功能被划分为服务器部分和客户端部分,其中客户端部分位于用户设备(例如,用户设备104)上并通过一个或多个网络与服务器部分(例如,服务器系统108)进行通信(例如,如图1所示)。在一些实施例中,家庭助理系统300是图1中所示的服务器系统108(和/或家庭助理服务器106)的实施例。在一些实施例中,家庭助理系统300在用户设备(例如,图1的用户设备104)中实现,从而消除了对客户端-服务器系统的需求。应当注意,家庭助理系统300仅是家庭助理系统的一个示例,并且家庭助理系统300可以具有比所示的组件更多或更少的组件、可以组合两个或更多的组件、或者可以具有不同的组件配置或布置。图3a中所示的各种组件可以在包括一个或多个信号处理和/或专用集成电路或其组合的硬件、软件、固件中来实现。
家庭助理系统300包括存储器302、一个或多个处理器304,输入/输出(i/o)接口306和网络通信接口308。这些组件通过一条或多条通信总线或信号线310相互通信。
在一些实施例中,存储器302包括非暂时性计算机可读介质,例如高速随机存取存储器和/或非易失性计算机可读存储介质(例如,一个或多个磁盘存储设备、一个或多个闪存设备、一个或多个光存储设备和/或其他非易失性固态存储设备)。
i/o接口306将家庭助理系统300的输入/输出设备316(例如显示器、键盘、触摸屏和麦克风)耦接到用户接口模块322。i/o接口306与用户接口模块322相结合以接收并相应地处理用户输入(例如,语音输入、键盘输入、触摸输入等)。在一些实施例中,当家庭助理在独立的用户设备上实现时,家庭助理系统300包括参照图2中的用户设备104所描述的任何组件和i/o以及通信接口(例如,一个或多个麦克风230)。在一些实施例中,家庭助理系统300代表家庭助理实现的服务器部分,并且通过位于用户设备(例如,图2所示的用户设备104)上的客户端侧部分与用户进行交互。
在一些实施例中,网络通信接口308包括有线通信端口312和/或无线发送和接收电路314。有线通信端口经由一个或多个有线接口(例如,以太网、通用串行总线(universalserialbus,usb)、火线(firewire)等)接收和发送通信信号。无线电路314通常从通信网络和其他通信设备接收rf信号和/或光信号,或将rf信号和/或光信号发送到通信网络和其他通信设备。无线通信可以使用多种通信标准、协议和技术中的任何一种,例如gsm、edge、cdma、tdma、蓝牙、wi-fi、voip、wi-max或任何其他合适的通信协议。网络通信接口308使得数字助理系统300能够与诸如因特网、内联网和/或无线网络(例如蜂窝电话网络、无线局域网(wirelesslocalareanetwork,lan)和/或城域网(metropolitanareanetwork,man))之类的网络以及其他设备进行通信。
在一些实施例中,存储器302的非暂时性计算机可读存储介质存储程序、模块、指令和数据结构,包括以下各项的全部或子集:操作系统318、通信模块320、用户接口模块322、一个或多个应用324和数字助理模块326。一个或多个处理器304执行这些程序、模块和指令,并从数据结构读取或向数据结构写入。
操作系统318(例如,darwin、rtxc、linux、unix、osx、ios、windows或诸如vxworks的嵌入式操作系统)包括各种软件组件和/或驱动程序,用于控制和管理常规系统任务(例如,内存管理、存储设备控制、电源管理等),并促进各种硬件、固件和软件组件之间的通信。
通信模块320通过网络通信接口308促进家庭助理系统300与其他设备之间的通信。例如,通信模块320可以与图2所示的设备104的通信模块254进行通信。通信模块320还包括用于处理由无线电路314和/或有线通信端口312接收的数据的各种软件组件。
在一些实施例中,用户接口模块322经由i/o接口306(例如,从键盘、触摸屏和/或麦克风)接收来自用户的命令和/或输入,并且在显示器上提供用户接口对象。
应用324包括被配置为由一个或多个处理器304执行的程序和/或模块。例如,如果数字助理系统在独立的用户设备上实现,则应用324可以包括用户应用,例如家居控制中心、游戏、日历应用、导航应用或电子邮件应用。如果家庭助理系统300在服务器场上实现,则应用324可以示例性地包括资源管理应用、诊断应用或调度应用。
存储器302还存储家庭助理模块(或家庭助理的服务器部分)326。在一些实施例中,家庭助理模块326包括以下子模块或其子集或超集:输入/输出处理模块328、语音到文本(speech-to-text,stt)处理模块330、自然语言处理模块332、对话流处理模块334、任务流处理模块336、服务处理模块338和说话者识别模块340。这些处理模块中的每一个处理模块都可以访问家庭助理326的以下一种或多种数据和模型或其子集或超集:本体360、词汇索引344、用户数据348、任务流模型354、服务模型356、说话者语音模型358。
在一些实施例中,使用数字助理模块326中实现的处理模块(例如,输入/输出处理模块328、说话者识别模块340、stt处理模块330、自然语言处理模块332、对话流处理模块334、任务流处理模块336和/或服务处理模块338)、数据和模型,家庭助理系统300执行以下至少一些操作:识别从用户接收的以自然语言输入表达的用户意图;主动诱发和获取充分推理用户意图所需的信息(例如,通过消除单词、姓名、意图等的歧义);确定用于实现所推理的意图的任务流;以及执行任务流以实现所推理的意图。在一些实施例中,当出于各种原因而没有或不能向用户提供令人满意的响应时,家庭助理也采取适当的操作。在一些实施例中,存储器包括家居控制模块360,该家居控制模块360利用家居控制服务的api根据从用户的语音输入推理出的用户命令和用户意图来控制在数字助理系统中注册的不同家用电器。
如图3b所示,在一些实施例中,i/o处理模块328通过图3a中的i/o设备316与用户进行交互,或者通过图3a中的网络通信接口308与用户设备(例如,图1中的用户设备104)进行交互,以获得用户输入(例如,语音输入)并提供对用户输入的响应。i/o处理模块328可选地在接收到用户输入的同时或接收到用户输入之后不久从用户设备获得与用户输入相关的上下文信息。上下文信息包括用户特定的数据、词汇和/或与用户输入有关的偏好。在一些实施例中,上下文信息还包括在接收到用户请求时设备(例如,图1中的用户设备104)的软件和硬件状态,和/或在接收到用户请求时与用户周围环境相关的信息。在一些实施例中,i/o处理模块328还向用户发送关于用户请求的后续问题,并从用户接收答案。在一些实施例中,当i/o处理模块328接收到用户请求并且该用户请求包含语音输入时,i/o处理模块328将语音输入转发给说话者识别模块340以进行说话者识别,然后转发给语音到文本(stt)处理模块330以进行语音到文本的转换。在一些实施例中,基于说话者识别结果,选择因人而异的语音到文本模型以执行语音到文本的转换。
在一些实施例中,语音到文本处理模块330通过i/o处理模块328或说话者识别模块340接收语音输入(例如,在录音中捕获的用户话语)。在一些实施例中,语音到文本处理模块330使用各种声学和语言模型来将语音输入识别为音素序列,并且最终识别为以一种或多种语言编写的单词或标记的序列。使用任何合适的语音识别技术、声学模型和语言模型(例如隐马尔可夫模型(hiddenmarkovmodels)、基于动态时间规整(dynamictimewarping,dtw)的语音识别),以及其他统计和/或分析技术来实现语音到文本处理模块330。在一些实施例中,语音到文本处理可以至少部分地由第三方服务执行或在用户的设备上执行。一旦语音到文本处理模块330获得了语音到文本处理的结果(例如,单词或标记的序列),它将结果传递给自然语言处理模块332以进行意图推理。如本文所公开的,通过使用机器生成的上下文无关文法生成的样本语句可以用作训练语音到文本处理模块的基础。
家庭助理326的自然语言处理模块332(“自然语言处理器”)采用由语音到文本处理模块330生成的单词或标记的序列(“标记序列”),并尝试将标记序列与数字助理识别的一个或多个“可操作意图”相关联。如本文中所使用的,“可操作意图”表示可以由数字助理326和/或数字助理系统300(图3a)执行的任务,并具有在任务流模型354中实现的关联的任务流。关联的任务流是数字助理系统300为了执行任务而采取的一系列编程操作和步骤。数字助理系统的能力范围取决于已经实现并存储在任务流模型354中的任务流的数量和种类,换句话说,取决于数字助理系统300识别的“可操作意图”的数量和种类。然而,数字助理系统300的有效性还取决于数字助理系统从以自然语言表达的用户请求中推理出正确的“可操作意图”的能力。如本文所公开的,机器生成的上下文无关文法可以被用来建立本体,并且可以被数字助理的自然语言处理模块用来处理自然语言文本串并推理在本体中表示的意图。
在一些实施例中,除了从语音到文本处理模块330获得的单词或标记的序列之外,自然语言处理器332还接收与用户请求相关联的上下文信息(例如,从i/o处理模块328获取)。自然语言处理器332可选地使用上下文信息来澄清、补充和/或进一步限定包含在从语音到文本处理模块330接收的标记序列中的信息。例如,上下文信息包括:用户偏好,用户设备的硬件和/或软件状态,在用户请求之前、用户请求期间或用户请求之后不久收集的传感器信息,数字助理与用户之间的先前交互(例如,对话)等。
在一些实施例中,自然语言处理基于本体360。本体360是包含多个节点的分层结构,每个节点代表与一个或多个“可操作意图”或其他“属性”相关的“可操作意图”或“属性”。如上所述,“可操作意图”表示数字助理系统300能够执行的任务(例如,“可操作”或可以被执行的任务)。“属性”表示与另一属性的可操作意图或子方面相关联的参数。本体360中的可操作意图节点和属性节点之间的链接定义了属性节点代表的参数如何与可操作意图节点代表的任务相关联。
在一些实施例中,本体360由可操作意图节点和属性节点组成。在本体360内,每个可操作意图节点直接链接到一个或多个属性节点,或通过一个或多个中间属性节点链接到一个或多个属性节点。类似地,每个属性节点直接链接到一个或多个可操作意图节点,或通过一个或多个中间属性节点链接到一个或多个可操作意图节点。
可操作意图节点及其链接的概念节点可以称为“域”。在本讨论中,每个域与各自的可操作意图相关联,并且指的是与特定可操作意图相关联的节点组(以及节点之间的关系)。
在一些实施例中,本体360包括数字助理能够理解并作用于其上的所有域(以及因此可操作意图)。在一些实施例中,示例性地,可以通过添加或去除域或节点,或者通过修改本体360内的节点之间的关系,来修改本体360。
在一些实施例中,与多个相关的可操作意图相关联的节点可以被聚集在本体360中的“超级域”下。例如,“家居控制”超级域可以包括与家用电器控制有关的属性节点和可操作意图节点的集群。与家用电器控制有关的可操作意图节点可以包括“空调”、“厨房电器控制”、“照明控制”、“节能控制”、“媒体中心控制”等。在同一超级域(例如,“家居控制”超级域)下的可操作意图节点可能具有许多共同的属性节点。例如,用于“调节室温”、“节能控制”、“炉灶控制”、“洗衣机控制”的可操作意图节点可以共享属性节点“开始时间”、“结束时间”、“节能模式”等中的一个或多个属性节点。
在一些实施例中,本体360中的每个节点与下述单词和/或短语的集合相关联,该单词和/或短语与该节点表示的属性或可操作意图有关。与每个节点相关联的单词和/或短语的集合是与该节点相关联的所谓的“词汇”。可以将与每个节点相关联的单词和/或短语的集合与该节点所表示的属性或可操作意图相关联地存储在词汇索引344(图3b)中。例如,返回到图3b,与“餐馆”属性的节点相关联的词汇可以包括诸如“食物”、“饮料”、“美食”、“饥饿”、“吃”、“比萨饼”、“快餐”、“餐食”之类的单词。对于另一个示例,与“发起电话呼叫”的可操作意图节点相关联的词汇可以包括诸如“呼叫”、“电话”、“拨号”、“铃声”、“呼叫该号码”、“打电话给”之类的单词和短语。词汇索引344可选地包括不同语言的单词和短语。
在一些实施例中,图3b所示的自然语言处理器332从语音到文本处理模块330接收标记序列(例如,文本串),并确定标记序列中的单词所牵涉的节点。在一些实施例中,如果发现标记序列中的单词或短语与本体360中的一个或多个节点相关联(通过词汇索引344),则该单词或短语将“触发”或“激活”那些节点。当“触发”多个节点时,基于所激活节点的数量和/或相对重要性,自然语言处理器332将选择可操作意图之一作为用户希望数字助理执行的任务(或任务类型)。在一些实施例中,选择具有最多“触发”节点的域。在一些实施例中,选择具有最高置信度的域(例如,基于该域的各个触发节点的相对重要性)。在一些实施例中,基于触发节点的数量和重要性的组合来选择域。在一些实施例中,在选择节点时还考虑其他因素,例如家庭助理系统300是否先前已经正确地解释了来自用户的类似请求。
在一些实施例中,数字助理系统300还将特定实体的名称存储在命名实体数据库350中,使得当在用户请求中检测到这些名称之一时,自然语言处理器332将能够识别该名称是指本体中属性或子属性的特定实例。在一些实施例中,特定实体的名称是企业、饭店、人、电影等的名称。在一些实施例中,命名实体数据库305还包括由个人用户在设备注册阶段为不同家庭设备提供的家庭设备的别名。在一些实施例中,数字助理系统300可以从诸如用户的地址簿或联系人列表、电影数据库、音乐家数据库和/或餐馆数据库之类的其他数据源中搜索和识别特定实体的名称。在一些实施例中,当自然语言处理器332识别出标记序列中的单词是特定实体的名称(诸如用户的地址簿或联系人列表中的名称,或家庭设备的名称列表中的名称)时,在为用户请求选择本体中的可操作意图时,给予该单词额外的意义。在一些实施例中,用于数字助理的触发短语被存储为命名实体,以便当它存在于用户的语音输入中时可以被识别并给予特殊的意义。
在一些实施例中,机器生成的上下文无关文法用于实现用于处理用户命令的本体和命名实体数据库,并推理出用户的意图。
用户数据348包括用户特定的信息,例如用户特定的词汇、用户偏好、用户地址、用户的默认语言和第二语言、用户的联系人列表以及每个用户的其他短期或长期信息。自然语言处理器332可以使用用户特定的信息来补充包含在用户输入中的信息,以进一步限定用户意图。在一些实施例中,机器生成的上下文无关文法用于在处理用户命令时实现用户特定的词汇和偏好,并推理出用户的意图。
一旦自然语言处理器332基于用户请求识别出可操作意图(或域),自然语言处理器332就生成结构化查询以表示所识别的可操作意图。在一些实施例中,结构化查询包括针对可操作意图的域内的一个或多个节点的参数,并且其中至少一些参数填充有用户请求中指定的特定信息和要求。例如,用户可能说“让机灵鬼工作”。在这种情况下,自然语言处理器332可能能够基于用户输入正确地将可操作意图识别为“打开空调”。根据本体,对“打开空调”域的结构化查询可以包括诸如{空调id}、{时间}、{温度}、{能量模式}等的参数。基于用户的话语中包含的信息,自然语言处理器332可以生成针对餐厅预订域的部分结构化查询,其中,该部分结构化查询包括参数{空调id=“机灵鬼”=婴儿房间中的空调=“设备地址xxxx”},{时间=“现在”},{温度=默认值=74度(华氏)}。在此示例中,用户的话语包含的信息不足,无法完成与该域相关联的结构化查询,并且某些信息会根据用户过去的偏好和存储的用户特定词汇自动填充。
在一些实施例中,自然语言处理器332将结构化查询(包括任何完成的参数)传递到任务流处理模块336(“任务流处理器”)。任务流处理器336被配置为执行以下一项或多项操作:从自然语言处理器332接收结构化查询;完成结构化查询;以及执行“完成”用户的最终请求所需的操作。在一些实施例中,在任务流模型354中提供完成这些任务所需的各种程序。在一些实施例中,任务流模型354包括用于从用户获得附加信息的程序,以及用于执行与可操作意图相关联的操作的任务流。在一些实施例中,任务流模型354中的任务流描述了用于控制在家庭助理中注册的每个家庭设备的步骤,并且基于设备名称列表,数字助理进行操作以针对由用户语音输入中的家庭设备别名指定的家庭设备执行合适的任务流中的步骤。
如上所述,为了完成结构化查询,任务流处理器336可能需要发起与用户的附加对话,以获得附加信息和/或消除话语中的潜在歧义。当需要这样的交互时,任务流处理器336调用对话处理模块334(“对话处理器”)以与用户进行对话。在一些实施例中,对话处理模块334确定如何(和/或何时)向用户询问附加信息,并且接收和处理用户响应。在一些实施例中,通过i/o处理模块328向用户提供问题并从用户接收答案。例如,对话处理模块334经由音频和/或视觉输出向用户呈现对话输出,并经由语音或物理(例如,触摸手势)响应从用户接收输入。一旦从用户接收到答案,对话处理模块334就用缺失的信息填充结构化查询,或者将该信息传递给任务流处理器336,以完成来自结构化查询的缺失信息。
一旦任务流处理器336完成了针对可操作意图的结构化查询,任务流处理器336就继续执行与可操作意图相关联的最终任务。因此,任务流处理器336根据结构化查询中包含的特定参数来执行任务流模型中的步骤和指令。例如,用于“打开空调”的可操作意图的任务流模型可以包括以下步骤和指令:识别用于打开空调的编码指令,通过家庭网络将编码指令发送到空调,在打开空调后选择温度和节能模式,并通过家庭网络将温度和节能模式的命令发送到空调。
在一些实施例中,任务流处理器336利用服务处理模块338(“服务处理器”)的协助来完成用户输入中所请求的任务或提供用户输入中所请求的信息性答案。例如,服务处理器338可以代表任务流处理器336进行操作,以向家用电器发送命令、进行电话呼叫、设置日历条目、调用地图搜索、调用用户设备上安装的其他用户应用或与之交互、以及调用第三方服务(例如,餐厅预订门户网站、社交网站或服务、银行门户网站等)或与之交互。在一些实施例中,每个服务所需的协议和应用编程接口(applicationprogramminginterfaces,api)可以由服务模型356中的相应服务模型指定。服务处理器338访问用于服务的适当服务模型,并根据服务模型按照服务所要求的协议和api来生成对该服务的请求。
在一些实施例中,自然语言处理器332、对话处理器334和任务流处理器336被共同地且迭代地用来推理和定义用户的意图,获得信息以进一步阐明和完善用户的意图,并最终产生响应(例如,向用户提供输出或完成任务)来满足用户的意图。
图4是根据一些实现的示例性智能家居环境。智能家居环境400包括建筑物450,建筑物450可选地是住宅、办公楼、车库或移动房屋。将理解的是,设备还可以被集成到不包括整个建筑物450的智能家居环境400中,例如套间、公寓或办公空间。此外,智能家居环境可以控制和/或耦接到实际建筑物450外部的设备。实际上,智能家居环境中的多个设备不需要在物理上位于建筑物450中。例如,控制泳池加热器414或灌溉系统416的设备可以位于建筑物450的外部。
所描绘的建筑物450包括通过墙壁454至少部分地彼此隔开的多个房间452。墙壁454可以包括内墙或外墙。每个房间还可以包括地板456和天花板458。设备可以安装在墙壁454、地板456或天花板458上,或与墙壁454、地板456或天花板458成一体和/或由墙壁454、地板456或天花板458支撑。
在一些实施方式中,智能家居环境400包括多个设备(包括智能的、多感测的、网络连接的设备),该多个设备在智能家居网络(例如,图2中的202)中彼此无缝集成和/或与中央服务器或云计算系统无缝集成,以提供各种有用的智能家居功能。智能家居环境400可以包括一个或多个智能的、多感测的、网络连接的恒温控制器402(以下称为“智能恒温控制器402”),一个或多个智能的、网络连接的、多感测的危害检测单元404(以下称为“智能危害检测器404”),以及一个或多个智能的、多感测的、网络连接的入口接口设备406(以下称为“智能门铃406”)。在一些实施方式中,智能恒温控制器402检测周围的气候特征(例如,温度和/或湿度)并相应地控制hvac系统403。智能危害检测器404可以检测有害物质或指示有害物质的物质(例如,烟、火和/或一氧化碳)的存在。智能门铃406可以检测到人接近某个位置或离开某个位置(例如,外门),控制门铃功能、通过音频或视觉手段宣布人的接近或离开,和/或控制安全系统上的设置(例如,当人员出入时激活或停用安全系统)。
在一些实施方式中,智能家居环境400包括一个或多个智能的、多感测的、网络连接的墙壁开关408(以下称为“智能墙壁开关408”),连同一个或多个智能的、多感测的、网络连接的墙壁插头接口410(以下称为“智能墙壁插头410”)。智能墙壁开关408可以检测环境照明条件、检测房间占用状态、并控制一个或多个灯的功率和/或暗淡状态。在一些情况下,智能墙壁开关408还可以控制风扇(例如,吊扇)的功率状态或速度。智能墙壁插头410可以检测房间或封闭空间的占用并控制对一个或多个墙壁插头的电力供应(例如,如果没有人在家,则不向该插头供电)。
在一些实施方式中,图4的智能家居环境400包括多个智能的、多感测的、网络连接的电器412(以下称为“智能电器412”),例如冰箱、火炉、烤箱、电视、洗衣机、烘干机、灯、立体声音响、对讲系统、车库门开启器、落地扇、吊扇、壁式空调、泳池加热器、灌溉系统、安全系统、空间加热器、窗式空调机组、电动风管通风口等。在一些实施方式中,当插上电源时,电器可以示例性地通过指示电器是什么类型来向智能家居网络宣告其自身,并且可以自动与智能家居的控件集成。可以通过有线或无线通信协议来促进电器到智能家居的这种通信。智能家居还可以包括各种非通信类的传统电器440,例如老式的传统洗衣机/烘干机、冰箱等,这些设备可以由智能墙壁插头410控制。智能家居环境400还可以包括各种部分通信的传统电器442,例如红外(“ir”)控制的壁式空调或其他ir控制的设备,这些设备可以由智能危害检测器404或智能墙壁开关408提供的ir信号控制。
在一些实施方式中,智能家居环境400包括一个或多个网络连接的摄像机418,摄像机418被配置为在智能家居环境400中提供视频监视和安全性。
智能家居环境400还可以包括与位于物理家庭外部但是在家庭的邻近地理范围内的设备的通信。例如,智能家居环境400可以包括泳池加热器监控器414,泳池加热器监控器414将当前泳池温度传送到智能家居环境400内的其他设备和/或接收用于控制泳池温度的命令。类似地,智能家居环境400可以包括灌溉监控器416,灌溉监控器416传送关于智能家居环境400内的灌溉系统的信息和/或接收用于控制这种灌溉系统的控制信息。
借助于网络连接性,图4的一个或多个智能家居设备可以进一步使得用户即使不接近设备也能够与该设备进行交互。例如,用户可以使用计算机(例如,台式计算机、膝上型计算机或平板电脑)或其他便携式电子设备(例如,智能手机)466与设备进行通信。网页或应用可以配置为从用户接收通信并基于该通信来控制设备和/或向用户呈现有关设备操作的信息。例如,用户可以查看设备的当前设定点的温度并使用计算机对其进行调整。在此远程通信期间,用户可以位于建筑物中,也可以位于建筑物外部。
如上所述,用户可以使用网络连接的计算机或便携式电子设备466来控制智能家居环境400中的智能恒温控制器和其他智能设备。在一些示例中,一些或全部居住者(例如,居住在家庭中的个人)可以在智能家居环境400中注册他们的设备466。可以在中央服务器处进行这样的注册,以将居住者和/或设备认证为与家庭相关联,并向居住者授予使用该设备来控制家庭中的智能设备的许可。例如当居住者在上班或度假时,居住者可以使用其注册的设备466来远程控制家庭中的智能设备。当居住者实际位于家庭内时,例如当居住者坐在家庭内的沙发上时,居住者也可以使用其注册的设备来控制智能设备。应当理解的是,代替注册设备466或者除了注册设备466的功能之外,智能家居环境400可以推断哪些人居住在家庭里并因此是居住者,以及哪些设备466与那些人相关联。这样,智能家居环境可以“学习”谁是居住者并且允许与那些人相关联的设备466控制家庭中的智能设备。
在一些实施方式中,除了包含处理和感测能力之外,设备402、404、406、408、410、412、414、416和/或418(统称为“智能设备”)能够与其他智能设备、中央服务器或云计算系统和/或其他网络连接的设备进行数据通信和信息共享。可以使用多种自定义或标准无线协议(ieee802.15.4、wi-fi、紫蜂(zigbee)、6lowpan、多线程(thread)、z-wave、智能蓝牙、isa100.11a、wirelesshart、miwi等)中的任何一种协议和/或多种自定义或标准有线协议(cat6以太网、电力猫(homeplug)等)中的任何一种协议或任何其他合适的通信协议来进行所需的数据通信,该合适的通信协议包括截至本文档的申请日期尚未开发的通信协议。
在一些实施方式中,智能设备用作无线或有线中继器。例如,第一智能设备经由无线路由器与第二智能设备进行通信。智能设备可以进一步通过与一个或多个网络462(例如,因特网)的连接来彼此通信。通过一个或多个网络462,智能设备可以与智能家居提供商服务器系统464(在本文中也称为中央服务器系统和/或云计算系统)进行通信。在一些实施方式中,智能家居提供商服务器系统464可以包括多个服务器系统,每个服务器系统专用于与智能设备的各个子集相关联的数据处理(例如,视频服务器系统可以专用于与摄像机418相关联的数据处理)。智能家居提供商服务器系统464可以与和智能设备关联的制造商、支持实体或服务提供商相关联。在一些实施方式中,用户能够使用智能设备本身来联系客户支持,而不需要使用其他通信手段,例如电话或连接互联网的计算机。在一些实施方式中,软件更新被自动地从智能家居提供商服务器系统464发送到智能设备(例如,在可用时、购买时或以例行间隔发送)。
在一些实施例中,家庭中的一个或多个智能设备包括开放的音频输入通道,音频输入通道可以捕获在其附近的音频输入并用作家庭助理(例如,家庭助理106、104、300和/或326)的音频输入设备,家庭助理用于控制安装在家庭中的所有智能设备。在一些实施例中,智能设备之一还包括数字助理模块,并且数字助理模块用作管理安装在家庭中的所有智能设备的家庭助理。在一些实施例中,独立的家庭助理设备独立于安装在家庭中的便携式设备466和智能家居设备而存在,并且独立的家庭助理设备接收并响应来自居住在家庭中的多个家庭成员的语音输入。在一些实施例中,当控制安装在家庭中的智能设备时,可能存在分布在整个住宅中的多个家庭助理设备,这些设备以独立的或彼此协作的方式进行操作。
图5a至图5c是示出了根据一些实施例的、用于针对可被机器执行的两个示例性任务的可操作意图来生成上下文无关文法的示例性过程的框图。为了说明的目的,在家居控制功能的上下文中描述了该方法(例如,设置空调温度、以及设置风扇摆动角度)。但是,该方法的其他应用也是可能的。例如,涉及设备的许多设置和功能以及共享同一设备的多个用户、在同一环境中使用相同类型的多个设备等的其他应用都可以从如本文所述的用于推理用户意图的上下文无关文法的自动机器生成中受益。
在一些实施例中,如图5a所示,程序员创建了两个模板文件,包括与用于设置空调温度的可操作意图相对应的第一模板文件(例如,ac_set_temperature.py)和与用于设置风扇摆动角度的可操作意图相对应的第二模板文件(例如,fan_set_swingangle.py)。可选地,根据相应的编程语言(例如,python、perl、c++等)的语法来编写模板文件。编程语言提供了用于在可操作意图(例如,“ac_set_temperature”或“fan_set_swingangle”)与描述与该可操作意图对应的符号字符串的一个或多个产生式规则之间建立对应关系的语法。在一些实施例中,相应的产生式规则可选地包括可以被一个以上的终结符值(也称为命名实体值)代替的一个或多个非终结符变量。在图5a(上部)所示的示例中,对于“设置空调温度”的第一个可操作意图,产生式规则“ac_set_temperature→|setactotemperature|acsettotemperature|actemperature”指定对应于“设置空调温度”的可操作意图的字符串模式,该字符串模式以多个非终结符变量(例如,“set”、“ac”、“to”和“temperature”)的串接表示。在模板文件中的相应产生式规则中,枚举了其中一些非终结符变量的终结符值。例如,变量“set”对应于终结符值“set”和“adjust”;变量“ac”对应于终结符值“air”、“conditioner”、“ac”和“air-conditioner”;变量“degree_unit”对应于终结符值“degree”;变量“to”对应于终结符值“to”。变量“temperature”的产生式规则包括用两个非终结符变量(“slot_ac_degree”,以及其后跟随的“degree_unit”)表示的字符串。包含变量“slot_ac_degree”的产生式规则引用变量“ac_degree”,该变量进一步引用文件路径为“./nonterminal/digits.nonterminal”的非终结符文件“file_degree”。基于产生式规则“slot_ac_degree→{degree}”(引用非终结符文件“file_degree”(例如,文件路径为“./nonterminal/digits.nonterminal”)),编译模板文件的编译器检索非终结符文件“digits.nonterminal”,并通过将非终结符变量“degree”替换为非终结符文件“digits.nonterminal”中列出的度数值来生成与设置空调温度的任务相对应的可操作意图的上下文无关文法。非终结符文件“digits.nonterminal”的内容如图5b所示(左)。图5c(顶部)示出了针对与设置空调温度的任务相对应的可操作意图的编译器生成的上下文无关文法。编译器生成的上下文无关文法将产生式规则“slot_ac_degree”→{ac_degree}中的变量“ac_degree”替换为替代字符串“0”|“1”|“2”|…|“32”的列表。
在一些实施例中,当为设备开发了新功能时(例如,现有电器的新功能或新型号电器的新功能、新设备的新功能等),需要生成针对新功能的至少一个新可操作意图的上下文无关文法,并将其合并到数字助理使用的现有的上下文无关文法中。在此示例中,假设添加到数字助理功能表中的新功能是“设置风扇摆动角度”的可操作意图。为了针对“设置风扇摆动角度”的可操作意图生成上下文无关文法,程序员将产生式规则写入第二模板文件“fan_set_swingangle.gy”。
如图5a(下部)所示,产生式规则“fan_set_swingangle→fanswing_anglesettoangle|setfanswing_angletoangle|fanangle”指定了与“设置风扇摆动角度”的可操作意图相对应的字符串模式,该字符串模式以多个非终结符变量(例如,“fan”、“swing_angle”、“angle”、“set”和“to”)的串接表示。在第二模板文件中的相应产生式规则中,枚举了其中一些非终结符变量的终结符值。例如,变量“set”对应于终结符值“set”和“adjust”;变量“fan”对应于终结符值“fan”;变量“to”对应于终结符值“to”;以及变量“swing_angle”对应于“swing”以及其后跟随的“angle”的字符串。变量“angle”的产生式规则包括用两个非终结符变量(“slot_angle”,以及其后跟随的“angle_unit”)表示的字符串。包含变量“slot_angle”的产生式规则引用变量“fan_angle”,该变量进一步引用文件路径为“./nonterminal/fan_angle.nonterminal”的非终结符文件“file_fan_angle”。基于产生式规则“slot_angle→{fan_angle}”(引用非终结符文件“file_fan_angle”(例如,文件路径为“./nonterminal/fan_angle.nonterminal”)),编译第二模板文件的编译器检索非终结符文件“fan_angle.nonterminal”,并通过将非终结符变量“fan_angle”替换为非终结符文件“fan_angle.nonterminal”中列出的度数值来生成与设置风扇摆动角度的任务相对应的可操作意图的上下文无关文法。非终结符文件“fan_angle.nonterminal”的内容如图5b所示(右)。图5c(底部)示出了针对与设置风扇摆动角度的任务相对应的可操作意图的编译器生成的上下文无关文法。编译器生成的上下文无关文法将产生式规则“slot_angle”→{fan_angle}中的变量“fan_angle”替换为替代字符串“0”|“15”|“30”|…|“300”的列表。
在一些实施例中,在针对设置风扇摆动角度的新功能新生成的上下文无关文法变得可用之后,可以将新生成的上下文无关文法与其他现有的和/或用于其他任务的新的上下文无关文法进行合并。如图5c所示,通过产生式规则“s->ac_set_temperature|fan_set_swingangle”将用于设置空调温度的上下文无关文法和用于设置风扇摆动角度的上下文无关文法进行组合。在一些实施例中,在适当的位置处,例如,基于功能的相关性(例如,基于域、设备的类型和/或功能的类型),将新生成的上下文无关文法合并到现有的组合的上下文无关文法中。
如上所述,上下文无关文法的生成是模块化的,并且易于扩展。程序员只需要创建一个简单的用于描述任务的命令结构的基本示例的程序,然后编译器就可以为一个或多个变量的实际命名实体值写出上下文无关文法。这对于存在大量功能和参数的情况是非常有用的,当存在大量功能和参数时会使特定域的组合的上下文无关文法非常大,并使得手动插入新功能变得困难且容易出错。现在,可以分别创建和调试每个功能的单独的上下文无关文法,然后再将其合并到针对由数字助理处理的整个域或所有域的组合的上下文无关文法中,从而使新功能和域的添加变得更加容易,对程序员所需的机构知识要求更少,并且减少了组合的上下文无关文法中冲突和错误的可能性。
图5a至图5c中的示例非常简单地说明了基本概念。在现实工作示例的实际实现中,组合的上下文无关文法中可能具有成百上千的功能和参数。因此,更新现有功能的上下文无关文法或者添加或删除某些参数值可能很难手动执行。例如,使用常规方法,程序员可能必须手动扫描数千页冗长的产生式规则,以识别校正功能和要校正并进行更改的行。人工错误一旦提交,就会影响整个组合的上下文文法的功能,使其无法实现并且会禁止组合的上下文无关文法所涵盖的功能的增加。使用本文公开的模块化、可扩展和机器生成的上下文无关文法有助于避免常规手动生成方法的缺点。
进一步,基于图5a至图5c中所示的示例,可以看出,如果模板文件被更新,例如增加一个或多个产生式规则,或者通过添加一个或多个替代的替换术语或字符串等来修改一个或多个现有的产生式规则。例如,可以将产生式规则“degree_unit→‘degree’”修改为“degree_unit→‘degree’|‘celsius’”。根据用于空调温度设定任务的模板文件已被修改或更新的确定,该设备可选地通过重新编译模板文件来为该任务重新生成上下文无关文法。程序员可以修复在重新编译第一模板文件时发现的任何错误,而不会影响现有的组合的上下文无关文法或数字助理的功能。一旦生成了更新的上下文无关文法,就可以在组合的上下文无关文法中替换同一任务现有的上下文无关文法。
在一些实施例中,也可以通过更新非终结符文件中的值来完成上下文无关文法的更新。例如,相比于过去实现的15度的增量,如果现在风扇摆动角度可以以5度的增量进行调整,则非终结符文件“fan_angle.terminal”被更新为包括诸如5、10、20、25等的附加值。在一些实施例中,根据模板文件中的产生式规则所引用的非终结符文件已经被更新的确定,重新编译模板文件,并通过将产生式规则中的相关变量替换为更新的非终结符文件中列出的命名实体值来生成上下文无关文法。
如上所述,更新与相应任务相关联的模板文件和/或非终结符文件是非常容易的,并且在由编译器检查上下文无关文法的错误并将其集成到组合的上下文无关文法之前,对非终结符文件的更新不会对组合的上下文无关文法产生影响。与常规方法相比,这使向组合的上下文无关文法中添加新功能和新参数的过程变得更简单,且更易于管理。
如前所述,很难获得用于语音到文本转换模型的训练样本。在一些实施例中,本文公开的机器生成的上下文无关文法可以用于输出字符串,该字符串包括可以从相应任务的机器生成的上下文无关文法中的产生式规则中生成的所有可能的字符串模式。使用这些字符串模式,可以训练语音到文本转换模型以识别用于触发相应任务执行的所有可能的命令。因此,不需要从真实用户说出的真实语音样本中收集字符串模式,从而使语音到文本转换模型的功能扩展更快,成本更低。
在一些实施例中,当家庭具有多个相同类型的设备(例如,多个空调)时,可以给不同的空调起不同的名称(例如,“酷猫”、“微风一”等)。在一些实施例中,通过更新与空调功能相关的模板文件以包括针对空调名称的附加的非终结符变量,来生成用于识别空调名称的更新的上下文无关文法。可选地,在产生式规则“ac→‘air’‘conditioner’|‘ac’|‘air-conditioner’”中,将空调名称的非终结符变量添加为针对“ac”的字符串的修饰符,或只是添加为产生式规则中的“‘air’‘conditioner’|‘ac’|‘air-conditioner’”的替代品。在一些实施例中,如果在产生式规则中添加了空调名称的非终结符变量(例如,ac_name)作为针对“ac”字符串的修饰符,则用户注册的空调名称将被包含在与变量ac_name对应的非终结符文件中。在一些实施例中,通过更新对应于变量ac_name的非终结符文件,可以容易地改变或添加空调的名称。可以看出,在以上示例中,上下文无关文法的机器生成很容易适用于可以通过基于语音的数字助理来控制相同类型的多个设备的方法。
在一些实施例中,在能够使得多个用户控制同一设备的上下文中,多个用户可以选择给设备起不同的名称。例如,在注册过程中,每个用户可以给同一设备起不同的别名。所有不同的别名都与同一设备序列号相关联。根据设备类型,可以对机器生成的上下文无关文法进行编程,以在分析不同用户的话语时为设备使用不同的名称集。例如,从不同用户收到的命令的产生式规则是不同的,给定设备的名称变量根据用户的身份来调用不同的非终结符文件。每个用户的非终结符文件都包含该用户为该设备所起的别名。当用户决定更改给设备的别名时,系统会根据用户输入更新非终结符文件,并通过重新编译引用设备的名称变量的模板文件来自动更新上下文无关文法。这样,用户可以根据个人喜好频繁地更新设备别名,而不会意外地对与设备相关的任务的上下文无关文法造成负面影响。
图6是表示根据一些实施例的用于机器生成用于意向推理的上下文无关文法的方法的流程图。可选地,该方法由存储在计算机存储器或非暂时性计算机可读存储介质(例如,客户端设备104的存储器250、与数字助理系统300相关联的存储器302)中并且由数字助理系统的一个或多个计算机系统的一个或多个处理器执行的指令支配,该数字助理系统包括但不限于服务器系统108和/或用户设备104-a。在一些实施例中,本说明书中所指的计算机可读存储介质和计算机系统是与数字助理系统分离的系统,并且在已经生成了上下文无关文法之后将上下文无关文法提供给数字助理系统。计算机可读存储介质可以包括磁盘或光盘存储设备、诸如闪存之类的固态存储设备或其他一个或多个非易失性存储设备。存储在计算机可读存储介质上的计算机可读指令可以包括以下一项或多项:源代码、汇编语言代码、目标代码或由一个或多个处理器解释的其他指令格式。在各种实施例中,可以组合每种方法中的一些操作和/或可以从图中所示的顺序改变一些操作的顺序。而且,在一些实施例中,可以将在单独的图中示出的操作和/或与单独的方法相关联地讨论的操作进行组合以形成其他方法,并且可以将在同一附图中示出的操作和/或与同一的方法相关联地讨论的操作分为不同的方法。在一些实施例中,计算机系统包括编译器程序,该编译器程序根据各程序语言的预定义语法来编译计算机代码,并且根据预定义的替换格式执行用非终结符文件中命名实体值对模板文件中的非终结符变量的替换(例如,如图5a至图5c所示)。在一些实施例中,计算机系统包括指令,该指令用于调用编译器以编译一个或多个模板文件,以及生成和合并在模板文件中表示的上下文无关文法。在一些实施例中,计算机系统进一步将非终结符文件存储在指定的目录路径中,并检索和解析非终结符文件,以根据本文所述的方法生成上下文无关文法。
图6示出了用于意图推理的上下文无关文法的机器生成方法600。该方法在具有一个或多个处理器和存储器的计算系统上执行。该方法包括:针对与待由机器(例如,控制一台或多台空调的数字助理)执行的第一任务(例如,设置空调温度)对应的相应可操作意图,通过编译器检索(602)第一模板文件(例如,ac_set_temperature.py);使用编译器解析(604)第一模板文件,以识别第一非终结符变量(例如,ac_degree),该第一非终结符变量引用包含多个第一命名实体值(例如,温度值,如0、1、2等)的第一非终结符文件(例如,文件路径为./nonterminal/ac_degree.nonterminal的file_ac_degree);以及基于在第一模板文件中指定的、包括至少第一产生式规则(例如,slot_ac_degree→{ac_degree})的多个产生式规则(例如,将一个变量与该变量在其他变量和终结符值中的一个或多个表达进行链接的语句),生成(606)与第一任务对应的相应可操作意图的第一上下文无关文法(例如,如图5c的上部所示,针对于ac_set_temerature),该第一产生式规则包括第一非终结符变量(例如,ac_degree),其中,生成与第一任务对应的相应可操作意图的第一上下文无关文法包括:通过将第一产生式规则中的第一非终结符变量替换为多个第一命名实体值(例如,slot_ac_degree→‘0’|‘1’|‘2’|…|‘32’)来重写第一产生式规则(例如,slot_ac_degree→{ac_degree})。
在一些实施例中,在由编译器执行第一模板文件的编译期间,执行对第一产生式规则的重写。在一些实施例中,当基于第一模板文件中指定的多个产生式规则生成第一上下文无关文法时,编译器检查第一模板文件中的语法错误(例如,基于编程语言(例如,python)的要求以及基于适当的上下文无关文法的要求)。
在一些实施例中,该方法还包括:针对与待由机器(例如,同时控制一个或多个风扇的数字助理)执行的第二任务(例如,设置风扇摆动角度)对应的相应可操作意图,通过编译器检索第二模板文件(例如,fan_set_swingangle.py),其中,第二模板文件不同于第一模板文件,并且第二任务不同于第一任务;使用编译器解析第二模板文件,以识别第二非终结符变量(例如,“fan_angle”),第二非终结符变量引用包含多个第二命名实体值(例如,风扇所接受的风扇角度设置)的第二非终结符文件(例如,文件路径为./nonterminal/fan_angle.nonterminal的file_fan_angle),其中,第二非终结符文件与第一非终结符文件不同;基于在第二模板文件中指定的、包括至少第二产生式规则(例如,slot_angle→{fan_angle})的多个产生式规则,生成与第二任务对应的相应可操作意图的第二上下文无关文法(例如,如图5c的下部所示),该第二产生式规则包括第二非终结符变量,其中,生成与第二任务对应的相应可操作意图的第二上下文无关文法包括:通过用多个第二命名实体值替换第二产生式规则中的第二非终结符变量来重写第二产生式规则;以及将与第一任务对应的相应可操作意图的第一上下文无关文法和与第二任务对应的相应可操作意图的第二上下文无关文法合并为与包括第一任务和第二任务的相应域对应的组合的上下文无关文法(例如,如图5c所示)。
在一些实施例中,该方法还包括:针对与第一任务对应的相应可操作意图,通过编译器检索更新后的第一模板文件,其中,更新后的第一模板文件至少包括相对于第一模板文件的第一变化(例如,更改现有产生式规则、添加产生式规则、删除产生式规则等);以及通过编译更新后的第一模板文件,为与第一任务对应的相应可操作意图生成更新后的第一上下文无关文法,其中,在编译更新后的第一模板文件期间,将第一模板文件中的第一产生式规则中的第一非终结符变量替换为第一非终结符文件中的多个第一命名实体值。
在一些实施例中,该方法还包括:检测对第一非终结符文件的更新,该更新包括将至少一个新的第一命名实体值添加到第一非终结符文件中的多个第一命名实体值;以及根据检测到对第一非终结符文件的更新,通过重新编译第一模板文件为与第一任务对应的相应可操作意图生成更新后的第一上下文无关文法,其中,在第一模板文件的重新编译期间,将第一产生式规则中的第一非终结符变量替换为更新后的第一非终结符文件中包括至少一个新的第一命名实体值的多个第一命名实体值。
在一些实施例中,该方法包括:针对与待由机器执行的第三任务对应的相应可操作意图,通过编译器检索第三模板文件;使用编译器解析第三模板文件,以识别第三非终结符变量,该第三非终结符变量引用针对第一注册用户的第三用户特定非终结符文件和针对第二注册用户的第四用户特定非终结符文件;以及基于在第三模板文件中指定的、包括第三产生式规则的多个产生式规则,为与针对第一注册用户的第三任务对应的相应可操作意图生成第一用户特定的上下文无关文法,并为与针对第二注册用户的第三任务对应的相应可操作意图生成第二用户特定的上下文无关文法,该第三产生式规则包含第三非终结符变量,其中,第一用户特定的上下文无关文法将第三非终结符变量替换为针对第一注册用户的第三用户特定非终结符文件中的命名实体值,以及第二用户特定的上下文无关文法将第三非终结符变量替换为针对第二注册用户的第四用户特定非终结符文件中的命名实体值。
为了说明的目的,已经参考特定实施例进行了前述描述。然而,以上说明性讨论并非旨在穷举或将所公开的实施例限定于所公开的精确形式。鉴于以上教导,许多修改和变化是可能的。选择和描述的实施例是为了最好地解释所公开思想的原理和实际应用,从而使本领域的其他技术人员能够以适合于预期的特定用途的各种修改来最好地利用它们。
将理解的是,尽管术语“第一”、“第二”等在本文中可用于描述各种元件,但是这些元件不应受到这些术语的限制。这些术语仅用于区分一个元件和另一个元件。
本文所使用的术语仅出于描述特定实施例的目的,并不旨在限制权利要求。如在实施例和所附权利要求的描述中所使用的,单数形式“一”、“一个”和“所述”也旨在包括复数形式,除非上下文另外明确指出。还应理解的是,本文所用的术语“和/或”指的是并涵盖了一个或多个相关联的所列项目的任何和所有可能的组合。将进一步理解的是,当在本说明书中使用术语“包括”时,其指定了所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除存在或增加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其组合。
如本文所使用的,术语“如果”可以被解释为表示“当……时”或“在……时”或“响应于确定……”或“根据确定……”或“响应于检测到……”,所声明的先决条件取决于上下文为真。类似地,短语“如果确定[声明的先决条件为真]”或“如果[声明的先决条件为真]”或“当[声明的先决条件为真]时”可以被解释为“在确定……时”或“根据确定……”或“响应于确定……”或“依照确定……”或“在检测到……时”或“响应于检测到……”,所声明的先决条件取决于上下文为真。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除