用于语义智能任务学习和自适应执行的方法和系统

文档序号:1895044 发布日期:2021-11-26 浏览:2次 >En<

阅读说明:本技术 用于语义智能任务学习和自适应执行的方法和系统 (Method and system for semantic intelligent task learning and adaptive execution ) 是由 H.金 S.纳马 于 2020-03-04 设计创作,主要内容包括:一种方法包括在电子设备处接收针对由电子设备操作的第一应用的命令。在电子设备处捕获由第一应用响应于与第一应用的交互而呈现的特征。在电子设备处捕获经由与第一应用的交互而与第一应用通信的数据。基于所捕获的特征和所通信的数据来学习任务。(A method includes receiving, at an electronic device, a command for a first application operated by the electronic device. Features presented by a first application in response to interaction with the first application are captured at an electronic device. Data communicated with a first application via interaction with the first application is captured at an electronic device. A task is learned based on the captured features and the communicated data.)

用于语义智能任务学习和自适应执行的方法和系统

技术领域

本申请涉及2019年3月29日提交的美国序列号16/370,411,其全部内容通过引用并入本文。

一个或多个实施例一般涉及经由电子设备上的演示进行的任务学习,具体地,涉及基于第一应用的命令的任务学习,以及基于该任务将该命令应用于第二应用。

背景技术

个人助理(PA)和智能体(smart agent)存在于移动设备、电视设备、家庭扬声器、消费电子产品等中,以在多模式设备上实现用户任务。在移动设备中,PA和智能体主要与一个或多个应用(app)一起工作,以通过语音命令、快捷按钮或手势根据用户请求执行特定任务。例如,任务可以与诸如“添加日历事件”、“发送消息”、“预订票务”、“预订旅程”等的用户请求相关联。

发明内容

技术问题

一个或多个实施例一般涉及基于第一应用的命令的任务学习,以及基于该任务将该命令应用于第二应用。

问题的解决方案

在一个实施例中,一种方法包括在电子设备处接收针对由电子设备操作的第一应用的命令。在电子设备处捕获由第一应用响应于与第一应用的交互而呈现的特征。在电子设备处捕获经由与第一应用的交互而与第一应用通信的数据。基于所捕获的特征和所通信的数据来学习任务。

在一些实施例中,一种电子设备包括存储指令的存储器。至少一个处理器执行包括被配置为如下的过程的指令:在电子设备处接收针对由电子设备操作的第一应用的命令;在电子设备处捕获由第一应用响应于与第一应用的交互而呈现的多个特征;在电子设备处捕获经由与第一应用的交互而与第一应用通信的数据;以及基于所捕获的多个特征和所通信的数据来学习任务。

在一个或多个实施例中,一种包括程序的非暂时性处理器可读介质,当该程序由处理器执行时,执行一种方法,该方法包括在电子设备处接收针对由电子设备操作的第一应用的命令。在电子设备处捕获由第一应用响应于与第一应用的交互而呈现的特征。在电子设备处捕获经由与第一应用的交互而与第一应用通信的数据。基于所捕获的特征和所通信的数据来学习任务。

在一些实施例中,电子设备包括存储指令的存储器;以及执行指令的至少一个处理器,该至少一个处理器被配置为:在电子设备处接收针对由电子设备操作的第一应用的命令;在电子设备处捕获与第一应用的交互;以及从与第一应用的交互中提取用于理解命令的槽(slot)类型和槽值。

从下面的详细描述中,一个或多个实施例的这些和其他方面和优点将变得明显,当结合附图时,这些详细描述通过示例的方式示出了一个或多个实施例的原理。

发明的有益效果

一个或多个实施例一般涉及基于第一应用的命令的任务学习,以及基于该任务将该命令应用于第二应用。

附图说明

为了更全面地理解实施例的性质和优点以及优选的使用模式,应当参考结合附图阅读的以下详细描述,在附图中:

图1示出了根据一些实施例的通信系统的示意图;

图2示出了根据一些实施例的能够单独地或组合地执行智能任务学习和自适应处理的、包括电子设备和云或服务器环境的系统的架构的框图;

图3示出了根据一些实施例的语义智能任务学习和自适应执行系统(STaLES)及其操作的高级框图;

图4示出了根据一些实施例的动态app适配和交互式任务执行(DynAmITE)处理的高级流程;

图5示出了根据一些实施例的STaLES执行框图的高级流程;

图6A示出了根据一些实施例的备忘录app/应用的第一版本的示例屏幕状态和输入数据元素;

图6B示出了根据一些实施例的备忘录app/应用的第二版本的示例屏幕状态;

图7示出了根据一些实施例的事件/动作执行线程的流程图;

图8A-图8C示出了用于说明学习包括搜索航班的任务的app的示例屏幕;

图9A-图9C示出了根据一些实施例的用于使用所学习的任务来搜索航班的app的示例屏幕;

图10示出了根据一些实施例的用于学习第一旅行应用的任务以通过第二旅行应用使用的示例;

图11示出了根据一些实施例的用于经由用户演示的新任务的用户发起的自然语言理解(natural language understanding,NLU)开发的过程流程图;

图12示出了根据一些实施例的从用户教导中提取槽类型和槽值的过程流程图;

图13A-图13C示出了根据一些实施例的用于演示特定任务的消息app的示例屏幕截图;

图14示出了根据一些实施例的用于为NLU引擎开发构建标记话语样本的过程流程图;

图15示出了根据一些实施例的用于智能任务学习和自适应处理的过程的框图;并且

图16是示出包括实现一个或多个实施例的计算系统的信息处理系统的高级框图。

具体实施方式

以下描述是为了说明一个或多个实施例的一般原理,并不意味着限制本文要求保护的发明构思。此外,本文描述的特定特征可以在各种可能组合和置换中的每一种中与其他描述的特征结合使用。除非本文中另有具体定义,否则所有术语都将给出其最广泛的可能解释,包括说明书中暗示的含义以及本领域技术人员理解的和/或字典、论文等中定义的含义。

应当注意的是,术语“…中的至少一个”是指下面的一个或多个元素。例如,“a、b、c和其组合中的至少一个”可以单独解释为“a”、“b”或“c”;或者解释为“a”和“b”组合在一起,解释为“b”和“c”组合在一起;解释为“a”和“c”组合在一起;或者解释为“a”、“b”和“c”组合在一起。

一个或多个实施例一般涉及基于第一应用的命令的任务学习,以及基于所学习的任务将命令再次应用于第一应用和/或第二应用。一些实施例提供智能任务学习和自适应执行系统处理,包括使用智能学习系统(intelligent learning system,ILS)使用生成的字节码任务,如2019年3月29日提交的美国序列号16/370,411中所述,其全部内容通过引用并入本文。在一些实施例中,一种方法包括在电子设备处接收针对由电子设备操作的第一应用的命令。在电子设备处捕获包括由第一应用响应于与第一应用的交互而呈现的视觉特征的特征。在电子设备处捕获经由与第一应用的交互而与第一应用通信的数据。基于所捕获的特征和所通信的数据来学习任务。在一些实施例中,基于所学习的任务,将命令应用于第二应用。

在一些实施例中,语义智能任务学习和自适应执行系统(STaLES)(例如,图3的STaLES 300)包括人工智能(AI)处理,其可以学习执行来自不同应用源的各种任务,诸如票务预订、个人通信、商业搜索、社交网络上的共享等。例如,在旅行应用(例如,)上学习“票务预订任务”,并且任务学习知识可以用于重复地在相同应用上执行任务。如果用户使用其他旅行应用,诸如等,STALES可以应用从所学习的知识,也在这些应用上执行任务。STaLES学习如何执行来自一个应用的任务,并使用不同的输入参数跨应用重新执行/执行所学习的任务。在一些实施例中,系统从诸如自然语言、事件、视觉数据等各种数据元素中学习。事件包括:基于用户动作生成的设备响应;系统事件,诸如通告、警告;硬件状态改变事件,诸如Wi-Fi连接改变等;后台运行的其他应用的服务事件;和学习应用的脱离上下文(out ofcontext)事件等。例如,用户可以通过演示出发日期、返回日期、出发地点、目的地地点等的选择来使用第一旅行应用。用户对第一旅行应用的使用涉及文本输入、按钮选择、下拉菜单等。第一旅行应用的演示使用可以用作用于第二旅行应用的信息,即使两个旅行应用之间输入或选择数据的方法不同。

对于经由个人(或虚拟)助理支持任务的应用,这些任务必须在每个适用的应用上明确实现。例如,基于“预订机票”的话语的任务是应当在多个应用(诸如等)上执行的任务。然而,用户可能已经在他们的电子设备(例如,图2的电子设备120)上安装了不同的app/应用。为了为所有用户实现任务,开发人员通常会为每个单独的app/应用实现特定的应用编程接口(application programming interface,API)。为了减少多个应用上的冗余和实现工作,一个或多个实施例提供了通过从一个app/应用学习一个任务并在许多其他相关app/应用上运行或执行来有效工作的智能系统。STaLES有效地将来自用户界面(user interface,UI)动作、事件、自然语言和视觉元素的所有输入用于语义理解。

在一个或多个实施例中,STaLES以最小的(模型)训练智能地识别任务,跨相关app/应用学习和执行。STaLES识别任务的多个参数,并以高准确度有效地理解和实现任务。在一些实施例中,STaLES提供以下内容:在任务最初被学习的源app/应用上执行所学习的任务;从视觉元素、文本、图标和动作提供语义任务执行;STaLES在在不同于源应用的目标app/应用上执行所学习的任务时提供动态应用适配,并且其动态地选择在语义上与原始app/应用上的原始任务类似的每个元素(例如,文本、选择、按钮、下拉菜单项等);可以在多种动态状态、上下文屏幕等下在多个应用上执行一次性学习任务;STaLES通过使用任务执行时的用户反馈来提供一致的性能和准确度;STaLES在任务跨各种app/应用执行之后提供任务识别和推荐;并且STaLES提供多app/应用、多设备和多平台建模系统,该系统在语义上被分类到相同类别的其他app/应用上执行所学习的任务。在一个实施例中,基于输入值、应用域、在任务执行中执行的动作的数量等来执行任务识别。在一个实施例中,应用域分类器识别合适的目标应用以在多个应用上执行任务。

可以基于从各种条件加载的应用的当前UI和/或活动来确定应用的状态。如果应用没有在后台执行(例如,后台状态),则它作为确定应用的默认状态的新应用进程启动。如果用户在执行任务之前使用了应用,并且应用保持在后台,则它将从“活动保存实例”或“持续状态”启动,并从用户停止的地方重新开始。在一些应用(诸如等)中,UI元素基于(多个)用户动作而改变。例如,当用户在UI上向下滚动时,呈现新的内容。因此,它有助于识别基于用户动作频繁改变的动态UI元素。诸如“窗口内容已改变”、“窗口状态已改变”、“窗口已改变”和“onActivitySaveInstanceState”的事件对于识别应用状态也很重要。

图1是根据一个或多个实施例的通信系统10的示意图。通信系统10可以包括发起向外通信操作的通信设备(发送设备12)和通信网络110,其中发送设备12可以使用通信网络110发起和进行与通信网络110内的其他通信设备的通信操作。例如,通信系统10可以包括从发送设备12接收通信操作的通信设备(接收设备11)。尽管通信系统10可以包括多个发送设备12和接收设备11,但是为了简化附图,在图1中各自仅示出了一个。

可操作来创建通信网络的任何合适的电路、设备、系统或这些的组合(例如,包括通信塔和电信服务器的无线通信基础设施)可用于创建通信网络110。通信网络110能够使用任何合适的通信协议来提供通信。在一些实施例中,通信网络110可以支持例如传统电话线、有线电视、Wi-Fi(例如,IEEE 802.11协议)、高频系统(例如,900MHz、2.4GHz和5.6GHz通信系统)、红外、其他相对本地化的无线通信协议或其任意组合。在一些实施例中,通信网络110可以支持无线和蜂窝电话以及个人电子邮件设备(例如,)使用的协议。这些协议可以包括例如GSM、GSM加EDGE、CDMA、四频带和其他蜂窝协议。在另一示例中,远程通信协议可以包括Wi-Fi和使用VOIP、LAN、WAN或其他基于TCP-IP的通信协议来发出或接收呼叫的协议。当位于通信网络110内时,发送设备12和接收设备11可以通过诸如路径13的双向通信路径或通过两个单向通信路径进行通信。发送设备12和接收设备11都能够发起通信操作并接收发起的通信操作。

发送设备12和接收设备11可以包括用于发送和接收通信操作的任何合适的设备。例如,发送设备12和接收设备11可以包括但不限于包括语音助理(个人助理、虚拟助理等)的设备,诸如移动电话设备、电视(TV)系统、智能TV系统、相机、便携式摄像机、具有音频视频能力的设备、平板电脑、可穿戴设备、智能电器、智能相框以及能够无线通信(有或没有支持无线的附件系统的帮助)或经由有线路径(例如,使用传统电话线)通信的任何其他设备。通信操作可以包括任何合适形式的通信,包括例如语音通信(例如,电话呼叫)、数据通信(例如,数据和控制消息、电子邮件、文本消息、媒体消息)、视频通信或这些的组合(例如,视频会议)。

图2示出了系统100的架构的框图,该系统100能够使用电子设备120(例如,移动电话设备、TV系统、相机、便携式摄像机、具有音频视频能力的设备、平板电脑、平板设备、可穿戴设备、智能电器、智能相框、智能照明等)、云或服务器140、或电子设备120和云计算(例如,可配置计算系统资源和更高级服务的共享池等)或服务器(例如,管理网络资源的计算机、设备或程序等)140的组合对至少一个应用使用用户演示来执行虚拟助理或智能体的智能任务学习和自适应处理。发送设备12(图1)和接收设备11都可以包括电子设备120的一些或全部特征。在一些实施例中,电子设备120可以包括显示器121、麦克风122、音频输出123、输入机构124、通信电路125、控制电路126、相机128、处理和存储器129、智能任务学习和自适应(例如,使用图3的STaLES 300)处理130和/或131(用于在电子设备120上、在云/服务器140上、在电子设备120和云/服务器140的组合上进行处理,与通信电路125进行通信以对云或服务器140获得/提供其信息;并且可以包括用于但不限于如下所述的示例的任何处理)、和任何其他合适的组件。应用1-N 127被提供,并且可以从云或服务器140、通信网络110(图1)等获得,其中N是等于或大于1的正整数。

在一些实施例中,音频输出123、显示器121、输入机构124、通信电路125和麦克风122所使用的所有应用可以由控制电路126互连和管理。在一个示例中,能够向其他调谐设备发送音乐的手持音乐播放器可以被结合到电子设备120中。

在一些实施例中,音频输出123可以包括用于向电子设备120的用户提供音频的任何合适的音频组件。例如,音频输出123可以包括内置在电子设备120中的一个或多个扬声器(例如,单声道或立体声扬声器)。在一些实施例中,音频输出123可以包括远程耦合到电子设备120的音频组件。例如,音频输出123可以包括耳机、头戴式耳机或耳塞,其可以通过电线(例如,通过插孔耦合到电子设备120)或无线地(例如,头戴式耳机或耳机)耦合到通信设备。

在一些实施例中,显示器121可以包括任何合适的屏幕或投影系统,用于提供用户可视的显示。例如,显示器121可以包括结合在电子设备120中的屏幕(例如,LCD屏、LED屏、OLED屏等)。作为另一示例,显示器121可以包括用于在远离电子设备120的表面上提供内容显示的可移动显示器或投影系统(例如,视频投影仪)。显示器121可操作来在控制电路126的指导下显示内容(例如,关于通信操作的信息或关于可用媒体选择的信息)。

在一些实施例中,输入机构124可以是用于向电子设备120提供用户输入或指令的任何合适的机构或用户接口。输入机构124可以采取各种形式,诸如按钮、小键盘、拨号盘、点击轮、鼠标、视觉指示器、遥控器、一个或多个传感器(例如,相机或视觉传感器、光传感器、接近传感器等)、触摸屏、手势识别、语音识别等。输入机构124可以包括多点触摸屏。

在一些实施例中,通信电路125可以是可操作来连接到通信网络(例如,图1的通信网络110)并且将通信操作和媒体从电子设备120发送到通信网络内的其他设备的任何合适的通信电路。通信电路125可操作来使用任何合适的通信协议与通信网络接口,诸如Wi-Fi(例如,IEEE 802.11协议)、高频系统(例如,900MHz、2.4GHz、和5.6GHz通信系统)、红外、GSM、GSM加EDGE、CDMA、四频带和其他蜂窝协议、VOIP、TCP-IP或任何其他合适的协议。

在一些实施例中,通信电路125可以使用任何合适的通信协议来创建通信网络。例如,通信电路125可以使用短程通信协议来创建短程通信网络,以连接到其他通信设备。例如,通信电路125可以使用协议创建本地通信网络,以将电子设备120与耳机耦合。

在一些实施例中,控制电路126可操作来控制电子设备120的操作和性能。控制电路126可以包括例如处理器、总线(例如,用于向电子设备120的其他组件发送指令)、存储器、存储装置或用于控制电子设备120的操作的任何其他合适的组件。在一些实施例中,一个或多个处理器(例如,在处理和存储器129中)可以驱动显示器并处理从用户接口接收的输入。存储器和存储装置可以包括例如高速缓存、闪存、ROM和/或RAM/DRAM。在一些实施例中,存储器可以专门用于存储固件(例如,用于诸如操作系统、用户接口功能和处理器功能的设备应用)。在一些实施例中,存储器可操作来存储与电子设备120与其执行通信操作的其他设备相关的信息(例如,保存与通信操作相关的联系信息或存储与用户选择的不同媒体类型和媒体项目相关的信息)。

在一些实施例中,控制电路126可操作来执行在电子设备120上实现的一个或多个应用的操作。可以实现任何合适数量或类型的应用。尽管下面的讨论将列举不同的应用,但是应当理解,一些或所有的应用可以组合成一个或多个应用。例如,电子设备120可以包括应用1-N 127,包括但不限于:自动语音识别(ASR)应用、OCR应用、对话应用、PA(或智能体)app、地图应用、媒体应用(例如,图库app、快速时间(QuickTime)、移动音乐(Mobile Music)应用或移动视频(Mobile Video)应用)、社交网络应用(例如,等)、日历应用(例如,用于管理事件、约会等的日历)、互联网浏览应用,推荐应用等。在一些实施例中,电子设备120可以包括可操作来执行通信操作的一个或多个应用。例如,电子设备120可以包括消息应用、电子邮件应用、语音邮件应用、即时消息应用(例如,用于聊天)、视频会议应用、传真应用或用于执行任何合适的通信操作的任何其他合适的应用。

在一些实施例中,电子设备120可以包括麦克风122。例如,电子设备120可以包括麦克风122,以允许用户在通信操作期间或者作为建立通信操作的手段或者作为使用物理用户接口的替代,发送用于应用1-N 127的语音控制和导航的音频(例如,语音音频)。麦克风122可以结合在电子设备120中,或者可以远程耦合到电子设备120。例如,麦克风122可以结合在有线头戴式耳机中,麦克风122可以结合在无线耳机中,麦克风122可以结合在遥控器设备中,等等。

在一些实施例中,相机模块128包括一个或多个相机设备,相机设备包括用于捕获静止和视频图像的功能、编辑功能、用于发送、共享照片/视频等的通信互操作性等。

在一些实施例中,电子设备120可以包括适于执行通信操作的任何其他组件。例如,电子设备120可以包括电源、端口或用于耦合到主机设备的接口、辅助输入机构(例如,ON/OFF开关)或任何其他合适组件。

图3示出了根据一些实施例的STaLES 300及其操作的高级框图。在一些实施例中,STaLES 300和相关联的操作的高级框图包括第一设备(设备1 311,例如,图2的电子设备120)、app(或应用)350(例如,移动app、扬声器app、TTV app等)、语音命令话语340(例如,针对PA的话语,诸如“预订机票”等)、STaLES设备:x 301、y 302和z 303(例如,执行STaLES处理的图2的电子设备120)、动态app适配和交互式任务执行(DynAmITE)处理330。在一个或多个实施例中,ILS服务320用于生成和提供字节码任务,以及存储在云/服务器140中的经训练的任务310,如在2019年3月29日提交的美国序列号16/370,411中所述,其全部内容通过引用并入本文。

在一些实施例中,STaLES 300从设备1 311生成的UI动作和事件中自动学习任务。当用户给出语音命令340来执行任务时,STaLES 300被触发。ILS320生成经训练的任务310,并将其存储在云140中。例如,当用户给出作为“创建事件”的语音命令并且系统不知道如何执行任务时,STaLES 300调用ILS 320来学习任务。STaLES 300从每个用户UI动作的各种数据(诸如文本、图像、事件状态和UI元素、系统事件、app/应用(例如,(多个)app 350)的上下文和状态)中学习。在一个或多个实施例中,当任务仅被学习一次时,STaLES 300可以在其他类似的app/应用上执行所学习的任务。STaLES 300改进了移动设备中的PA的能力,以最小的训练跨多个域的app/应用实现广泛的任务。

在一些实施例中,STaLES 300可以在具有相同语义数据的任何相同或类似类别应用上学习一个特定任务。在执行任务执行时,STaLES 300人工模拟人类智能来识别app/应用的每个屏幕上的特定元素和标志/图标。相同的所学习的任务可以在单个app/应用的多个版本(例如,软件升级等)上执行。STaLES300与DynAmITE处理330(也参见图4)一起工作,其中相同app/应用的不同版本能够执行该任务。在一些实施例中,STaLES 300基于用户反馈改进了任务执行的准确度和稳定性。当STaLES 300执行来自经训练的任务的动作时,它可以提示用户指示任何动作是否正确的反馈。例如,STaLES 300从一个带有标记为“发送”的发送按钮的应用中学习了“发送SMS”的任务。当使用另一应用在系统中执行相同的任务时,该应用的发送按钮标记有一个图标图像。STaLES 300识别可能的发送按钮来执行动作“发送”,但是在继续之前,它要求用户确认,使得用户反馈有助于高准确度地执行动作。在一个或多个实施例中,如果任务执行需要更多的输入数据,STaLES提示来自用户的反馈或输入。基于多个用户输入,STaLES能够理解任务性质、执行目标应用,从而为STaLES 300提供了极大的灵活性,以进行持续改进。在一个或多个实施例中,当用户使用语音命令来请求执行任务时,如果不存在目标应用来执行任务,则STaLES 300可以识别任务序列,并且基于过去的话语和过去的训练知识来将可用的app/应用定为目标。例如,在过去,用户任务涉及向PA提供话语以在旅行应用(例如,)上预订机票。用户现在提供用于在(这是她的设备或系统所不支持的)上预订票务的任务的话语。系统可以将该任务识别为使用旅行应用实现预订票务的任务。相应地,它使用过去的任务序列信息,并选择可用的替代旅行应用(例如,)来执行任务。

在一些实施例中,STaLES 300通过语音输入和人类演示(例如,触摸、点击、打字、手势等)来学习新任务。STaLES 300几乎没有与PA和智能助理集成的API接口,PA和智能助理将输入作为用户执行任务的意图。在一个或多个实施例中,STaLES 300可以跨属于相同域的不同于源应用的各种app/应用来执行任务。STaLES 300使得能够使用一个任务的知识来支持类似应用或任务中的许多附加任务。例如,STaLES 300学习了“发送SMS”任务,该任务需要如“联系人”和“文本”的两个输入参数来实现任务。它可以在支持SMS功能的其他应用上执行相同的任务。与这些任务一起,知识可以被共享以执行不同应用的类似任务,如“发布推文”、“在Facebook/LinkedIn上共享帖子”、“在WhatsApp上发送消息”等。在所有这些情况下,任务只需要如“联系人”和“文本”的两个输入参数来成功执行任务。

小任务可以是大任务执行的一个小块。STaLES 300提供学习一次,并在涉及多设备、多系统(AndroidTM、TizenTM等)和多用户的许多地方应用所学习的任务的能力,这显著减少了开发工作和时间、成本和资源,以实现支持PA能力的特定任务。

当用户通过语音或文本调用命令时,PA在应用上的履行动作可以执行或自动化多个任务。传统上,这些任务是在特定的app/应用上静态实现的。用户没有选择任务执行顺序的选项。在一些实施例中,STaLES 300在它在其中学习用户UI动作的序列的app/应用上工作,并且可以将这些转换成目标app/应用上的可运行或可执行任务。目标应用可以是在其中学习任务的相同app/应用或相同类别的类似app/应用(例如,旅行app/应用、餐馆app/应用、交通app/应用等)。在一个示例中,“预订机票”是可以在各种app/应用上完成的任务。STaLES 300从一个app/应用学习任务来预订票务,并且所学习的任务可以在相同设备或不同设备上的另一机票app/应用上执行。

在一些实施例中,当用户开始用UI交互演示任务时,用户执行的每个动作都被STaLES 300捕获,包括一个或多个图标图像、(多个)文本(显示的或输入的)等、以及这些元素的(多个)类型。元素的类型有助于识别和预测在执行过程期间可以执行的操作。例如,当学习针对“城市”的“查找酒店”任务时,UI元素的类型输入槽值是“编辑文本”,因此用户可以输入任何值作为城市。当任务再次执行时,它可以执行输入文本值到“编辑文本”。当“查找酒店”任务在不同版本或其他设备应用上针对与UI元素相同的城市槽值“ListView”执行时,其中用户只能选择特定城市。因此,可以在UI元素上执行的唯一动作是“选择”。STaLES300可以在执行任务时识别UI元素上的动作。STaLES 300支持具有上下文理解的多模式GUI,因此它理解运行在不同电子设备(诸如多种形式因素的手机、TV、可穿戴设备、智能冰箱等)上的相同应用的界面变化。例如,“从Netflix搜索电影”在TV设备上不同于在移动设备上。两者实现相同的任务执行,但是在不同的环境和不同的GUI中。STaLES 300基于可执行的动作、属性和UI元素的类型来辨识UI元素。如果UI元素不同但共享共同的功能,即使任务在交叉平台或设备上执行,STaLES300也可以对适当的元素进行分类和预测。这些GUI中的一些可能非常复杂,有数百个对象,每个对象具有许多不同的属性、语义以及与其他对象的关系。

图4示出了根据一些实施例的用于DynAmITE处理330的高级流程。DynAmITE处理330是STaLES 300中的任务执行过程,其中任务在目标app/应用上执行。目标app/应用可以是在其中学习任务的源app/应用,或者是类似类别的不同app/应用。DynAmITE处理330理解每个事件,并使用app/应用上下文以最高可能的准确度执行。在一个或多个实施例中,DynAmITE处理330被设计成在执行作为任务的一部分的动作时考虑上下文来与目标app/应用一起工作。在一些实施例中,DynAmITE处理330可以包括两个实时服务线程:一个线程是事件或动作执行线程410,在目标应用执行上下文中运行,这意味着在目标应用上执行动作。事件执行线程410在目标应用的存储器上下文中运行,另一个是事件分派线程430,在STaLES上下文中运行。当任务字节码420被输入到任务动作提取器425时,在一个实施例中,语义事件被输入到事件执行线程410和事件分派线程430,其中任务动作提取器425是读取任务的语义事件的protobuf(协议缓冲器)文件读取器。

在一个或多个实施例中,在目标应用上下文中,事件执行线程410包括活动屏幕411、元素分类器412,其中活动屏幕411是每个事件/动作应当在其中执行的当前UI活动屏幕,元素分类器412是包含图标/图像和文本分类器的UI元素分类器,该UI元素分类器对活动屏幕411中存在的每个元素进行分类并生成所有UI元素的元素语义数据413。UI元素查找器414搜索从事件/动作分派线程430分派的事件和/或动作,以在特定UI元素上执行该动作。动作管理器415(包括生成器416、执行器417和验证器418)在一个或多个UI元素上执行动作。生成器416生成等同于从事件/动作分派线程430分派的事件/动作的特定动作,诸如鼠标或光标的点击、鼠标或光标的长时间点击、UI元素上的选择或滑动等。执行器417在元素上执行动作,并且验证器418在执行动作之后基于来自系统的响应进行验证。例如,当执行器417执行“按钮点击”动作时,系统生成响应事件“BUTTON_CLICKED”,其通过验证器418验证该动作。事件/动作分派线程430包括从任务字节码420中提取的事件或动作431。每个动作被分派给事件/动作执行线程410,其中验证器432验证事件或动作(诸如按钮选择、输入UI元素等)的类型。可选的用户输入433和事件发射器434仅在UI元素是用户需要输入数据来执行任务的输入类型时生成或提供提示。

在一些实施例中,DynAmITE处理330(图3)通过首先从包括分类任务的可用任务列表(诸如经训练的任务310(例如,从图3的云140,或从图3的设备(诸如设备1 311)))启动任务来执行。活动屏幕411可以包括正用于任务的电子设备(例如,图3的设备1 311)的UI屏幕。元素语义数据413是用于基于图标或文本确定UI元素通用含义的理解的文本和图像的等效分类值。例如,“发送按钮”可以在应用屏幕活动上显示为“发送”文本或用于“发送”的图标表示。在这两种情况下,STaLES 300(图3)必须从两个值中确定通用含义。UI元素查找器414确定执行当前命令(例如,图3的语音命令话语340)的适当元素。事件分派线程430用验证器432验证事件431,并生成(或获得)用户输入433的提示,该用户输入433是来自用户的经由语音、键盘、手势等输入的数据。在由事件发射器434执行最终命令之前,用户输入433根据任务回顾提供来自用户的反馈。

在一些实施例中,事件执行线程410在受限app/应用上下文中执行任务。在一些实施例中,app上下文410中的事件执行线程包括UI元素查找器414和动作管理器415,其中UI元素查找器414可用于基于由元素语义数据413分类的分类语义数据来查找对应的UI元素,动作管理器415在特定UI元素上执行动作。动作管理器415收集每个执行事件的反馈。当从事件分派线程430接收到事件时,UI元素查找器414基于“资源Id”搜索特定的UI元素以执行动作。在AndroidTM系统中,放置在活动屏幕411上的由唯一ID标识的每个UI元素被称为“资源Id(ResourceId)”。ResourceId是由应用开发人员分配给UI元素的唯一字符串,并且可以跨对应的应用访问。UI元素查找器414在生成的UI元素语义数据413中执行数据搜索,该生成的UI元素语义数据413以树(tree)格式生成和结构化,以在需要访问时有效地执行搜索操作(一个示例在图6A中示出)。事件/动作执行线程410从事件/动作分派线程430接收动作来执行。UI元素查找器414基于“UI元素的语义代码”查找UI元素,该“UI元素的语义代码”是基于文本或图像图标被分类以识别类似元素的组的唯一代码。如果活动屏幕411UI语义数据包含相同类别中的多于一个元素,则UI元素查找器414基于元素的描述查找UI元素。例如,“发送”和“推文”在语义上属于相同类别,但是两者具有UI元素查找器414基于唯一语义代码、UI元素类别、元素描述、屏幕中的元素坐标以及可以在UI元素上执行的动作来查找的不同的描述UI元素。

在一些实施例中,元素UI元素查找器414对各种参数起不同的作用,以查找适当的UI元素。一个示例(情况1)可能发生在源(所学习的)app/应用UI没有改变的时候,也就是说,任务学习和执行发生在相同应用上。另一示例(情况2)可能发生在源app/应用UI没有改变但“ResourceId”不可用或已经改变的时候。“ResourceId”是开发人员在开发应用时分配的每个UI元素的唯一标识符。在情况2中,如果app/应用活动UI没有改变,但是ResourceId不可用(例如,混淆)或者ResourceId已经改变(当以最高精度学习新任务时,UI元素ResourceId不可用),则事件/动作执行线程(在目标应用上下文中)410通过使用UI元素的x、y坐标,从app/应用的UI活动的元素语义数据413获得UI元素。在又一示例中(情况3),在一个源app/应用上学习任务,并且在任务执行期间应用UI已经更新,UI元素查找器414使用来自UI元素语义数据413的UI元素的语义数据唯一语义代码从活动中识别正确的元素。

在一些实施例中,如果在当前活动屏幕411中没有找到合适的UI元素,则UI元素查找器414基于应用中的可用活动来识别合适的活动屏幕411。所有活动都在应用的宣告文件中声明。宣告文件是与应用相关联的配置文件,所有许可、活动、数据库和其他资源在在应用中被使用之前都在其中声明。屏幕状态改变器740基于与参与的全部活动的活动数据相关的任务学习数据,从从宣告文件获取的活动列表中选择适当的活动,并将其加载到屏幕上。活动数据包括活动描述、UI元素总数、元素类型、活动是否参与了任务学习过程等。为了从可用的活动中识别正确的活动屏幕411,UI元素查找器414使用诸如由应用的开发人员在宣告文件中添加的活动屏幕的元数据“活动的总UI元素”、“来自活动描述的活动屏幕的类型”之类的参数。在一个实施例中,DynAmITE处理330与被称为“正确活动-正确元素”的逻辑一起工作,该逻辑确定最佳可能活动并选择UI元素来精确和正确地执行任务。当启动具有持续状态的应用时,即用户将应用从上次关闭的状态恢复时,应用将在下次启动时从其被关闭的保存状态恢复。因此,如果应用从持续状态启动,那么DynAmITE处理330遵循“正确活动?正确元素”方法来识别源活动屏幕411和执行作为任务执行的一部分的动作的正确元素。在一个或多个实施例中,活动识别代码是由生成器416生成的用以从应用的可用活动列表中识别活动的唯一标识符。如果目标活动与学习活动没有变化,则可以通过使用ResourceId的UI元素找到目标活动。对于一些实施例,下面描述了示例情况,其中搜索可以使用用于查找执行动作的元素的UI元素查找器414来查找不正确的活动。

图5示出了根据一些实施例的事件分派线程430的高级流程。在一些实施例中,事件分派线程430在验证器432验证事件之后从任务队列分派每个事件431。验证器432用UI元素和UI元素类的语义数据来验证事件431。STaLES 300处理(图3)具有预定义的UI元素类数据的完整列表,以验证UI元素和执行动作。每个事件431根据UI元素的类型进行分类,以执行特定的动作。需要输入编辑文本(EditText)、选项按钮(OptionButton)、列表视图(ListView)、下拉列表视图(DropdownListView)类型的UI元素,以便从用户输入中选择期望值(使用语音或键盘输入)。这些UI元素接受来自用户的值,以成功完成任务。这些UI元素用用户特定的值填充或选择,这些值或者从用户话语获得,或者从由事件/动作分派线程430(图4)利用输入提示533动态地向用户发出的提示获得。在成功输入之后,事件发射器434将事件431发射到应用上下文410(图4)中的事件/动作执行线程,在其中利用app/应用上下文执行动作。

图6A示出了根据一些实施例的备忘录app/应用的第一版本的示例屏幕状态和输入数据元素。示例备忘录app/应用的第一版本包括两个屏幕和接受作为标题和描述的输入值的两个UI元素,以及两个动作UI元素“添加”和“保存”,用于创建新备忘录(例如,文本备忘录或注释、音频备忘录或注释等)。第一屏幕610包括UI“添加”按钮。第二屏幕620包括标题625UI条目、描述626UI条目和UI保存按钮。在一些实施例中,STaLES 300处理使用app/应用的元素分类器412(图4)来分类或辨识UI语义元素。由元素语义数据413(图4)生成树中的UI元素语义数据结构。生成的语义UI元素数据在图6A中示出为元素SEM-ADD 630、SEM_TITLE 635、SEM_DATA 636和SEM_SAVE 640。屏幕610中的添加按钮的UI语义元素数据是SEM_ADD630。屏幕620中的标题625UI条目的UI语义元素数据是SEM_TITLE 635。屏幕620中的描述626UI条目的UI语义元素数据是SEM_DATA 636。屏幕620中的UI保存按钮的UI语义元素数据是SEM_SAVE 640。

图6B示出了根据一些实施例的备忘录app/应用的第二版本的示例屏幕状态。示例备忘录app/应用的第二版本包括三个屏幕状态和接受输入值的三个UI元素,以及执行动作(诸如鼠标或光标“点击”)的三个UI元素。屏幕611包括与备忘录app/应用的第一版本中相同的UI添加按钮。屏幕650不同于第一版本,并且包括用于开始下一个UI屏幕660的UI备忘录按钮。屏幕660包括UI标题条目625、UI描述条目626、UI位置条目661的添加,以及具有图标的UI“保存”按钮,而不是如在app/应用的第一版本中的单词“保存”。在一些实施例中,UI元素查找器414从生成的树中查找语义元素,并将这些语义元素用于app/应用的第二版本的类似UI元素。UI元素树是基于三个主要参数生成的,即文本、图标和图像、UI元素的类型。文本分类器701为文本分类器701在其上进行训练的相同的相关关键词生成语义代码。例如,“发送”、“发布”、“分派”和“写入”在语义上都用于相同的目的,用于类似应用(诸如SMS、和其他社交媒体app)中的动作。图标分类器702对从移动设备的多个应用收集的多个(~4000)图标图像进行训练。跨应用的相同发送动作使用各种图标图像供用户理解。文本、图像或两者在语义上共享相同的含义。对于执行特定动作(诸如发送动作)来说是唯一的UI元素的类型仅使用按钮作为UI元素。要在应用中放置按钮动作,开发人员使用诸如图像按钮(ImageButton)、文本视图(TextView)和按钮(Button)的UI元素。所有UI元素共享类似的属性来执行按钮动作。当需要在活动屏幕上执行动作时,UI元素查找器414从语义数据搜索所有属性类似的相同UI元素。

图7示出了根据一些实施例的事件/动作执行线程410的流程图。在一些实施例中,任务字节码420用于提取任务数据以及目标应用710需要在其上执行任务的应用包数据。任务提取器425利用活动屏幕(活动)411将目标应用710启动到存储器。(元素)分类器412基于UI元素数据文本、图标图像、描述和元素类型,对用户在活动屏幕411上可视或不可视的每个UI元素进行分类。分类器412包括文本分类器701和图标分类器702。分类器412生成活动屏幕411的UI元素语义数据413。当执行线程从任务字节码420接收要在屏幕上执行的动作时,必须从活动屏幕411的UI元素语义数据413中找到特定的动作UI元素。

在一些实施例中,UI元素查找器414执行搜索操作来查找语义上等价的UI元素,以执行任务字节码420中的当前动作。UI元素查找器414输出搜索结果730作为语义上等于来自任务字节码420的动作的“动作UI元素找到”732或“动作元素未找到”731。如果搜索结果没有找到732,则动作生成器416生成要在UI元素上执行的动作。动作生成器416基于来自任务字节码420的可用数据生成适当的动作。这些动作可以包括UI动作,诸如点击、长时间点击、滑动、选择等。例如,如果动作是“事件_滚动(event_scroll)”并且方向是向上的,则动作生成器416生成“滑动_手势(swipe_gesture)”动作,并且方向是(UI的)底部到顶部。动作生成器416向“动作执行器”417提供动作,用于在适当的输入UI元素类型770上的当前活动屏幕411的输入UI元素上的动作执行760。当任务在app 710的不同版本(不同于所学习的版本)上执行时,动作验证器418验证动作和UI元素。动作验证器418在继续执行动作(UI元素上的动作执行750)之前向用户提供用于反馈的提示(语音/类型输入提示433)。为了确保动作被执行,动作验证器418在执行由系统自动生成的动作(输入UI元素上的动作执行760)之后验证反馈事件。如果动作执行器417执行在诸如列表视图、编辑文本、日历等UI元素上的动作执行750,每个任务执行都需要输入值来完成任务,该输入值通过语音/类型输入提示433使用语音或文本从用户获得。如果搜索结果730产生结果为“动作元素未找到”731,则当前活动屏幕411不具有适当的语义UI元素来执行动作,并且被输入到屏幕状态改变器740以改变app 710的当前活动屏幕411。当前活动屏幕411数据在学习任务时可从任务字节码420获得。当屏幕状态改变时,该过程将从分类器412到UI元素语义数据413重复,并且在新屏幕上执行语义数据搜索,等等。

图8A-图8C示出了用于说明学习包括搜索航班的任务的app的示例屏幕810、820和830。在该示例中,STaLES 300处理(图3)从用户演示中学习来自应用的任务(预订或查看可用机票)。STaLES 300处理将使用不同的输入参数在app上执行相同的任务。

图9A-图9C示出了根据一些实施例的用于使用所学习的任务来搜索航班的app的示例屏幕910、920和930。STaLES 300处理使用从学习中获得的语义UI元素在app/应用上执行从app学习的相同任务,并且来自app屏幕810、820、830(图8A-图8C)的这样的UI元素被输入到app屏幕910和920以产生屏幕930。

图10示出了根据一些实施例的用于学习第一旅行应用1010的任务以通过第二旅行应用1020使用的示例。在第一旅行应用1010中,用户通过使用多种类型的七个UI元素来演示任务“搜索航班”:动作UI元素1011(往返/单程1012)、输入UI元素1013(从、到、日期(从、到)、旅客和类别1014)和动作UI元素1015(搜索1016)。STaLES 300处理(图3)捕获元数据信息,诸如UI元素的类型、语义文本或图标值、来自往返/单程1012、从、到、日期、旅客和类别1014、以及动作搜索1016的元素UI坐标。在第一旅行应用1010屏幕中,“往返/单程”1012的值被学习为“动作元素”,因为UI元素“按钮”被用户用来执行动作。

第二旅行应用1020包括具有输入UI元素1023(往返/单程1022,包括从、到、日期(从、到)、旅客和类别1024)和动作UI元素1025(搜索1026)的屏幕。当在第二旅行应用1020上执行相同的任务“搜索航班”时,“往返/单程”1022值被标记为“选项按钮”,其被视为输入值,STaLES 300处理应当在第二旅行应用1020的屏幕上的两个选项按钮上执行“选择”动作。

传统上,要在个人助理中执行任务,需要NLU/NLP的专业知识,需要编程技能,并且需要使用集成开发环境(IDE)工具的知识。一些实施例提供用于消除这些传统要求,而替代地使终端用户能够向他们的PA教导任务。这使得PA易于个性化,并可扩展到终端用户。

图11示出了根据一些实施例的用于经由用户演示的新任务的用户发起的NLU开发的过程1100流程图。在一个或多个实施例中,过程1100可以用STaLES 300(图3)来实现。在块1110中,用户可以提供指示针对新任务的语音命令的自然话语,然后通过演示(有或没有语音)开始教导如何在电子设备(例如,图3的设备1 311)上执行新任务。演示可以包括电子设备的屏幕上的操作(例如,点击、打字输入等),并且可选地还包括自然语言的语音指令。在块1120中,过程1100对任务执行演示执行屏幕跟踪。在一个或多个实施例中,STaLES 300“观察”用户如何执行任务。过程1100自动识别用户在屏幕上演示的位置和内容,并将屏幕交互映射到语音命令话语中的单词/短语。在块1130中,过程1100确定UI槽类型并执行UI槽值提取。通过过程1100提取的信息是“槽类型”和样本“槽值”。用户可以演示任务一次或多次。利用提取的槽类型和槽值作为输入,用户的话语被转换成标记话语,其被提供来执行NL训练。在块1140中,过程1100基于提取的槽信息构建标记的话语作为NLU引擎开发的训练样本。在NL引擎被训练之后,下一次当用户发出相同或语义类似的语音命令时,NLU引擎能够理解语音命令以便执行任务。

图12示出了根据一些实施例的从用户教导中提取槽类型和槽值(图11的过程1100)的过程流程图。在一个或多个实施例中,在块1210中,获得用户话语(来自图11的块1110)。在块1220中,获得用户的演示(来自图11的块1110)。对于从用户教导中提取的槽类型和槽值,过程1100可以支持不具有语音指令的用户教导或具有语音指令的用户教导(即,块1230)。在一些实施例中,在块1225中,过程1100提供对响应于块1210中的用户话语而执行的任务的演示的屏幕跟踪。在块1235中,过程1100提取用户操作(例如,文本单词或图标)中的何处/什么以及它们在UI屏幕中的哪里。从电子设备的屏幕提取文本单词/短语或(多个)视觉图标UI元素(例如,使用OCR等)。在块1240中,如果提取的UI元素是文本单词/短语,则STaLES 300(图3)可以直接使用UI元素作为槽类型。在块1240中,如果提取的UI元素是视觉图标,则STaLES 300可以使用任何方法提取其语义含义,并且使用其语义含义的文本单词作为槽类型。用户输入到UI元素中的输入(话语的一部分)被提取为“槽值”。

在一些实施例中,对于具有语音指令的用户教导,过程1100使用用户指令。在用户指令中,用户使用自然语言来表示他们的操作的语义。在块1230中来自用户话语的语义单词被用作槽类型,并且可以跳过块1225以继续块1235。在这个路径中,用户输入到UI元素中的输入(话语的一部分)被用作“槽值”。

图13A-图13C示出了根据一些实施例的用于演示特定任务的消息app的示例屏幕截图1310、1320和1330。在一个实施例中,用户通过演示“向Mary发送消息:生日快乐”的特定任务来教导如何执行“向某人发送消息”的任务。对于一个或多个实施例,用户可以用或不用语音进行教导。在图13A中,用户在其电子设备屏幕1310上打开消息(例如,经典消息app)app。消息app呈现包括等待用户输入的一个或多个域(field)的UI元素。例如,消息app可以具有一个询问消息的接收者的域,以及用于消息的正文的另一域。在图13B中,在屏幕1320上指示“通过号码或联系人搜索”的消息app行上,用户键入“Mary”。在指示“消息”的行上,用户键入“生日快乐”。在图13C中,用户在屏幕1330上点击“发送”按钮以发出消息。返回到图11-图12,过程1100执行屏幕跟踪(在块1225中),并且在块1235中提取“号码或联系人”作为“接收者”的一个槽类型;并提取“Mary”作为该槽类型的一个潜在槽值。类似地,块1235提取“消息”作为一个槽类型;以及“生日快乐”作为该槽的一个潜在槽值。在一个或多个实施例中,教导可以被执行多次。在一个示例实施例中,在用户教导执行“向Mary发送消息:生日快乐”之后,用户可以用其他话语再次教导,例如,“告诉Amy我要迟到了”。在屏幕上指示“通过号码或联系人搜索”的行上,用户键入“Amy”。在屏幕上指示“消息”的行上,用户键入“我要迟到了”。然后用户点击屏幕上的“发送”按钮以发出消息。基于这两个教导示例,块1235提取“号码或联系人”作为槽类型“接收者”;用“Mary”作为该槽类型的一个潜在槽值,“Amy”作为另一潜在槽值。类似地,块1235处理提取“消息”作为一个槽类型;“生日快乐”作为该槽类型的一个潜在槽值,“我要迟到了”作为该槽类型的另一潜在槽值。

在另一实施例中,用户通过演示如何用语音指令“向Mary发送生日快乐消息”来教导如何执行“向某人发送消息”的任务。用户在电子设备屏幕上打开消息(经典)app。在屏幕上指示“通过号码或联系人搜索”的行上,用户键入“Mary”,同时发出“我正在键入Mary作为接收者”或简单地“接收者”的语音指令。在屏幕上指示“消息”的行上,用户键入“生日快乐”,同时发出“我正在键入生日快乐作为消息”或简单地“消息”的语音指令。然后用户点击屏幕上的“发送”按钮以发出消息。在块1235中,过程1100经由NLU提取“接收者”作为一个槽类型,提取“Mary”作为该槽类型的一个潜在槽值。过程1100知道“接收者”映射到屏幕上的“通过号码或联系人搜索”的行。类似地,在块1235中,过程1100提取“消息”作为一个槽类型;以及“生日快乐”作为该槽的一个潜在槽值。在一个或多个实施例中,教导可以被执行多次。在用户通过执行“向Mary发送生日快乐消息”进行教导之后,用户可以用“告诉Amy我要迟到了”的另一话语再次教导。在屏幕上指示“通过号码或联系人搜索”的行上,用户键入“Amy”,同时发出“我正在键入Amy作为接收者”的语音指令。在屏幕上指示“消息”的行上,用户键入“我要迟到了”,同时发出“我正在键入我要迟到了作为消息”的语音指令。然后用户点击“发送”按钮以发出消息。基于这两个教导实例,块1235提取“接收者”作为一个槽类型,提取“Mary”作为该槽类型的一个潜在槽值,以及“Amy”作为另一潜在槽值。类似地,“消息”被提取作为一个槽类型,“生日快乐”被提取作为该槽类型的一个潜在槽值,“我要迟到了”被提取作为该槽类型的另一潜在槽值。该过程还将消息app与确定的槽类型和槽值相关联,以形成任务。

图14示出了根据一些实施例的用于为NLU引擎开发(图11的过程1100)构建标记话语样本的过程流程图。在一个或多个实施例中,在块1410中,输入与新任务相关联的(多个)用户话语。在块1420中,从块1240(也参见图12)输入提取的槽类型和槽值。块1420用上述提取的槽类型和槽值构建进一步标记/注释的(多个)用户教导话语。用于NLU引擎开发的(多个)话语样本基于提取的槽类型和槽值来构建标记话语样本。在块1430中,如果需要,过程1100经由释义,用给定的槽类型和槽值组成用于相同的任务的类似话语。在块1440中,从1330或从用户输入或其他可应用的源获得更多带注释的话语作为结果。在块1450中,过程1100训练NLU模型。为了执行NL训练(在块1450中)和NLU引擎的开发,需要提取的槽类型和槽值以及标记话语。在一个或多个实施例中,可以实现任何已知的NL训练方法。在NLU引擎被训练之后,NLU引擎能够在将来理解来自用户的针对这个新教导的任务的新话语。例如,经训练的NLU引擎将能够通过将“David”解析为接收者以及将“你在哪里”解析为消息,来理解新的话语“给David写一条信息:你在哪里?”。在一个实施例中,PA能够响应于这样的用户话语来调用消息app,并相应地发出消息。

在一个示例实施例中,用户通过演示如何“向Mary发送消息:生日快乐”来教导如何执行任务“向某人发送消息”。在块1420中,过程1100基于用户教导构建用于NLU引擎训练的标记数据点。“向Mary发送信息:生日快乐”这一原始教导话语没有被标记。在块1235(图12)和块1420中的用户演示和处理之后,未标记的话语变成标记话语,其中“Mary”被标记为“接收者”槽类型;而“生日快乐”被标记为“消息”槽类型。另一教导话语“告诉Amy我要迟到了”现在变成带标记的,其中“Amy”被标记为“接收者”槽类型;而“我要迟到了”被标记为“消息”槽类型。在块1450中,两个被教导的未标记话语现在都变成了标记数据点,并且可以用于训练NLU引擎。

在一个或多个实施例中,现在所有用户教导的话语被标记,并且在块1450中,仅将标记的用户教导的话语提供回来用于NL训练。在一些实施例中,可以实现任何释义生成器来生成甚至更多的话语(在块1440中),并用提取的槽类型来标记它们。释义生成器可以在云/服务器140(图2)或在电子设备(例如,图2的电子设备120、图3的设备1 311等)上运行/执行。所有标记的话语都可以提供给NL训练。

图15示出了根据一些实施例的用于智能任务学习和自适应处理的过程1500的框图。在一些实施例中,在块1510中,过程1500包括在电子设备(例如,图2的电子设备120、图3的设备1 311、图16的系统1600等)处接收针对由电子设备操作的第一应用(或app)的命令(例如,由PA接收的语音命令等)。在块1520中,过程1500在电子设备处(例如,使用图3的STaLES300)捕获由第一应用响应于与第一应用的交互而呈现的多个特征(例如,由第一应用显示的特征、UI元素)。在块1530中,过程1500在电子设备处(使用STaLES 300)捕获经由与第一应用的交互而与第一应用通信的数据(例如,文本、语音、图标等UI元素)。在块1540中,过程1500基于所捕获的多个特征和所通信的数据来学习任务。在块1550中,过程1500基于任务将命令应用于第二应用(例如,第一应用的不同版本、类似类型的应用等)。

在一些实施例中,过程1500可以包括构建表示所通信的数据之间的相关性的图(例如,图3的元素语义数据413的UI树)。所通信的数据包括用户语音数据。过程1500还可以包括基于该图来确定所捕获的多个特征的语义含义。多个特征可以包括文本特征、图标特征或两者。

在一个或多个实施例中,在过程1500中,基于任务将命令应用于第二应用还可以包括基于命令从任务集中选择任务,应用任务来实现与第二应用的部分交互,以及应用来自不同任务集的另一任务来补充与第二应用的剩余交互。

在一些实施例中,任务包括:表示与第一应用交互的动作序列的数据集,以及与动作序列相关联的语义块队列。多个特征包括包含UI元素的视觉特征。

在一个或多个实施例中,过程1500可以包括从与第一应用的交互中提取槽类型(例如,UI条目槽类型)和槽值(例如,UI条目数据值)。对于不具有语音指令的与第一应用的交互,所述提取包括从电子设备显示的界面提取文本数据UI元素或一个或多个视觉图标;文本数据直接用作槽类型。一个或多个视觉图标被处理以提取语义含义,并且该语义含义被用作另一槽类型。

在一些实施例中,在过程1500中,对于具有语音指令的与第一应用的交互,语音指令的至少一部分被用作槽值。

在一个或多个实施例中,过程1500还可以包括基于槽类型和槽值构建用于NLU引擎开发的标记话语样本。

图16是示出包括实现一个或多个实施例的计算系统的信息处理系统的示例性高级框图。系统1600包括一个或多个处理器1611(例如,ASIC、CPU等),并且还可以包括电子显示设备1612(用于显示图形、文本和其他数据)、主存储器1613(例如,随机存取存储器(RAM)、高速缓存设备等)、存储设备1614(例如,硬盘驱动器)、可移动存储设备1615(例如,可移动存储驱动器、可移动存储器、磁带驱动器、光盘驱动器、其中存储有计算机软件和/或数据的计算机可读介质)、用户接口设备1616(例如,键盘、触摸屏、小键盘、定点设备)以及通信接口1617(例如,调制解调器、无线收发器(诸如Wi-Fi、蜂窝)、网络接口(诸如以太网卡)、通信端口或PCMCIA槽和卡)。

通信接口1617允许软件和数据通过互联网1650、移动电子设备1651、服务器1652、网络1653等在计算机系统和外部设备之间传送。系统1600还包括前述设备1611至1617连接到其的通信基础设施1618(例如,通信总线、交叉杆或网络)。

经由通信接口1617传送的信息可以是信号的形式,诸如电子、电磁、光学或能够由通信接口1617经由承载信号的通信链路接收的其他信号,并且可以使用电线或电缆、光纤、电话线、蜂窝电话链路、射频(RF)链路和/或其他通信信道来实现。

在电子设备(例如,图2的电子设备120)中的一个或多个实施例的一个实施方式中,系统1600还包括图像捕获设备1620,诸如相机128(图2),以及音频捕获设备1619,诸如麦克风122(图2)。系统1600还可以包括应用处理或处理器,如MMS 1621、SMS 1622、电子邮件1623、社交网络接口(SNI)1624、音频/视频(A/V)播放器1625、网络浏览器1626、图像捕获1627等。

在一些实施例中,系统1600包括智能学习处理1630,智能学习处理1630可以实现类似于关于如上所述的ILS 300处理(图3)、流程400处理(图4)、流程500处理(图5)、流程600处理(图6)、流程700处理(图7)、流程800处理(图8)和过程1400(图13)描述的处理。在一个实施例中,智能学习处理1630连同操作系统(O/S)1629可以被实现为驻留在系统1600的存储器中的可执行代码。在另一实施例中,智能学习处理1630可以以硬件、固件等提供。

在一个实施例中,主存储器1613、存储设备1614和可移动存储设备1615可以各自或以任何组合存储用于上述实施例的指令,这些指令可以由一个或多个处理器1611执行。

如本领域技术人员所知,根据所述架构,上述示例架构可以以多种方式实现,诸如由处理器执行的程序指令、软件模块、微代码、计算机可读介质上的计算机程序产品、模拟/逻辑电路、专用集成电路、固件、消费电子设备、AV设备、无线/有线发射机、无线/有线接收机、网络、多媒体设备等。此外,所述架构的实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。

已经参考根据一个或多个实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述了一个或多个实施例。这种图示/图的每个块或其组合可以通过计算机程序指令来实现。当提供给处理器时,计算机程序指令产生机器,使得经由处理器执行的指令创建用于实现流程图和/或框图中指定的功能/操作的装置。流程图/框图中的每个块可以表示实现一个或多个实施例的硬件和/或软件模块或逻辑。在替代实施方式中,块中提到的功能可以不按图中提到的顺序发生、同时发生,等等。

术语“计算机程序介质”、“计算机可用介质”、“计算机可读介质”和“计算机程序产品”通常用于指诸如主存储器、辅助存储器、可移动存储驱动器、安装在硬盘驱动器中的硬盘等介质。这些计算机程序产品是用于向计算机系统提供软件的装置。计算机可读介质允许计算机系统从计算机可读介质中读取数据、指令、消息或消息包以及其他计算机可读信息。例如,计算机可读介质可以包括非易失性存储器,诸如软盘、ROM、闪存、磁盘驱动器存储器、CCD-ROM和其他永久存储装置。例如,它可用于在计算机系统之间传输信息,诸如数据和计算机指令。计算机程序指令可以存储在计算机可读介质中,该计算机可读介质可以指导计算机、其他可编程数据处理装置或其他设备以特定方式运行,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个或多个块中指定的功能/动作的指令的制品。

表示本文的框图和/或流程图的计算机程序指令可以被加载到计算机、可编程数据处理装置或处理设备上,以使得在其上执行的一系列操作产生计算机实现的过程。计算机程序(即,计算机控制逻辑)存储在主存储器和/或辅助存储器中。计算机程序也可以经由通信接口接收。这种计算机程序在被执行时,使得计算机系统能够执行本文讨论的实施例的特征。具体地,计算机程序在被执行时使得处理器和/或多核处理器能够执行计算机系统的特征。这种计算机程序表示计算机系统的控制器。一种计算机程序产品包括计算机系统可读的、并且存储由计算机系统执行以执行一个或多个实施例的方法的指令的有形存储介质。

尽管已经参照实施例的特定版本描述了实施例;然而,其他版本也是可能的。因此,所附权利要求的精神和范围不应限于本文包含的优选版本的描述。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:统一应用程序通知框架

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!