用于会话系统的错误恢复的制作方法

文档序号:29110979发布日期:2022-03-02 05:53阅读:143来源:国知局
用于会话系统的错误恢复的制作方法
用于会话系统的错误恢复


背景技术:

1.会话系统处理用户话语并且通过自动地执行动作来做出响应,所述动作诸如是回答问题、调用应用编程接口(api)、或者基于所述用户话语以其他方式辅助用户。会话系统限于处理硬编码的模板的预先定义的集合,这限制了能够由自动化助理执行的动作。


技术实现要素:

2.提供本概述以简化的形式介绍一组概念,所述概念在下文的详细描述中进一步描述。本概述并无意图识别所要求保护的主题的关键特征或基本特征,也并不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题并不限于解决在本公开的任何部分中所指出的任何或所有缺点的实现方式。
3.一种方法包括识别用于处理的用户话语。所述方法还包括使用先前训练的代码生成机根据所述用户话语来生成数据流程序,所述数据流程序被配置为在成功运行时产生返回值。所述方法还包括开始对所述数据流程序的运行。响应于达到由对所述数据流程序的运行导致的错误状况,所述方法还包括:在所述数据流程序产生所述返回值之前,暂停对所述数据流程序的运行。所述方法还包括使用所述先前训练的代码生成机来生成错误处理数据流程序,其中,所述错误处理数据流程序被配置为:产生所述返回值;开始对所述错误处理数据流程序的运行以产生所述返回值;并且输出所述返回值。
附图说明
4.图1a-1d示出了用于自动化助理的示例性数据流架构。
5.图1e示出了在用户与自动化助理之间的示例性对话。
6.图2示出了处理包含歧义的用户话语的方法。
7.图3a-3c示出了包含歧义的示例性用户话语和用于处理所述示例性用户话语的对应数据流程序。
8.图4示出了在对用户话语的处理期间处理错误的方法。
9.图5a-5f示出了示例性用户话语、用于处理可能导致错误的示例性用户话语的对应数据流程序、以及用于解决所述错误的替代数据流程序。
10.图6示出了示例性计算系统。
具体实施方式
11.会话计算接口可以被用于经由自然语言(例如经由语音和/或提交的文本)与用户进行交互。作为示例,自动化助理可以被用于经由自然语言交互来辅助用户。尽管本公开使用自动化助理作为示例性会话计算接口,但是该示例是非限制性的,并且可以根据本公开实现会话计算接口用于任何合适的目的,例如,允许用户使用自然语言来与任何合适的计算机硬件和/或计算机软件进行交互。这样,在本公开中对自动化助理的每次引用同样适用于任何其他会话计算机接口或者被配置为对语音或文本输入做出响应的其他计算框架。
12.自动化助理能够使用自然语言处理(nlp)技术(例如,机器学习分类器)来处理输入的用户话语(例如,用户语音和/或提交的文本),以便执行与所述输入的用户话语相关的预先定义的、硬编码的动作。例如,自动化助理可以支持预先定义的多个硬编码的模板,其中,每个模板具有能够被填充以对硬编码的动作进行参数化的多个时隙。作为示例,自动化助理可以支持预先定义的交互以调用应用编程接口(api),例如,在餐厅预订座位、呼叫叫车服务、或者查询天气。然而,尽管自动化助理可以经由预先定义的模板来支持多个不同的预先定义的动作,但是仅经由模板来支持预先定义的动作的自动化助理可能不被配置为执行更复杂或新颖的行为。
13.本公开涉及一种使用数据流编程语言的数据流程序来处理用户话语的自动化助理(例如,除了使用模板之外或者替代使用模板)。所述自动化助理使用先前训练的代码生成机来生成和/或输出针对用户话语的数据流程序,其中,所述数据流程序使用多个预先定义的函数来定义用于处理所述用户话语的个体步骤。
14.通过使用由先前训练的代码生成机所生成的数据流程序来处理用户话语可以导致经改善的用户体验、自动化助理或者其他交互式计算机服务的经改善的效率(例如,经改善的存储使用和/或经改善的处理时间)、和/或用于对不同的用户话语做出响应的经改善的能力。作为示例,所述数据流程序可以针对不同的用户话语编码各种不同的处理策略,包括:基于所述用户话语执行计算、访问用于对所述用户话语做出响应的api等。所述代码生成机可以生成特定于正在被处理的用户话语的数据流程序,其可以使得能够更有效地(例如,不执行不相关的步骤)并且以经改善的用户满意度(例如,通过生成更好地解决在用户话语中所表达的请求的程序)来处理所述用户话语。此外,可以暂停遇到一个或多个错误的数据流程序,以便利用错误恢复程序,例如利用所述数据流程序的修改版本或者利用替代数据流程序,来处理所述错误。这样,使用先前训练的代码生成机和数据流程序的方法可以更稳健地适用于可能发生错误的不同情况,因为可以通过运行错误恢复数据流程序来处理不同类型的错误。
15.因此,图1a示出了用于自动化助理系统100的数据流架构。自动化助理系统100被配置为通过操作先前训练的代码生成机104来处理用户话语102,所述先前训练的代码生成机104被配置为输出针对用户话语102的数据流程序106。尽管本公开聚焦于经由自然语言(例如,语音和提交的文本)的交互,但是诸如自动化助理系统100的会话计算接口还可以允许经由任何其他合适的输入方法的交互,例如,经由触摸屏输入和/或按钮按压的交互。类似地,尽管本公开聚焦于处理用户话语102,但是可以以类似的方式来处理诸如按钮按压事件的其他输入。例如,先前训练的代码生成机104可以被配置为输出针对一个或多个按钮按压事件的数据流程序106。先前训练的代码生成机104可以被训练为识别不同种类的非语言输入事件,例如,基于被按下的特定按钮、按钮按压相对于其他输入事件的计时等。
16.数据流程序106被示为包括多个函数节点的图,其中,所述函数节点是利用由箭头示出的输入和输出来描绘的。所述数据流程序被配置为产生由最底部的箭头所指示的返回值。先前训练的代码生成机104被配置为基于所述用户话语将多个预先定义的函数110中的任意函数添加到所述数据流程序。每个预先定义的函数定义用于处理用户话语102的一个或多个个体步骤。数据流程序106可运行以使得所述自动化助理例如通过执行任何合适的响应动作来对所述用户话语做出响应。数据流程序106的所述预先定义的函数可以可运行
以使得所述自动化助理执行任何合适的响应动作,例如,将响应输出为语音和/或文本(例如,输出如在图1a中所示的助理响应120)、调用api以使用所述api来执行动作(例如,从餐厅订购食物、利用叫车服务安排乘车、在日历服务中安排会面、拨打电话)。尽管本公开聚焦于其中所述自动化助理通过输出助理响应(例如,作为语音和/或文本)来对话语做出响应的示例,但是这些示例是非限制性的,并且在本文中所描述的所述预先定义的函数和数据流程序可以被配置为使得所述自动化助理以任何合适的方式对话语做出响应,例如通过使用api执行一个或多个动作来替代或补充输出助理响应。
17.在本文中所描述的先前描述的代码生成机104可以被用于以任何合适的形式对用户话语做出响应。例如,先前描述的代码生成机104可以被配置为识别用户话语,并且根据所述用户话语来产生定义用于对所述用户话语做出响应的可运行计划的数据流程序。所得到的数据流程序可以例如由自动化助理来运行以处理所述用户话语。在一些示例中,可以运行用于对所述用户话语做出响应的所述数据流程序来对所述用户话语做出响应,而不需要使用代码生成机104生成任何额外代码。换言之,代码生成机104被配置为输出用于处理用户话语的完整计划。替代地或另外地,代码生成机104可以被配置为输出用于对用户话语做出响应的数据流程序,其中,在代码生成机104被用于生成定义用于完成对所述用户话语的处理的另外的计划的另外的代码之前运行所述数据流程序的一些或全部。代码生成机104可以被用于以任何合适的方式来规划和运行数据流程序,包括在运行之前完成规划和/或以任何合适的形式交织进行规划和运行。
18.先前训练的代码生成机104可以基于任何合适的技术,诸如现有技术的或者未来的机器学习(ml)、人工智能(ai)、和/或自然语言处理(nlp)技术。在一些示例中,先前训练的代码生成机104包括:编码器机器,其被配置为将用户话语102编码为语义特征(例如,由先前训练的代码生成机104学习的语义向量空间中的向量);以及解码器机器,其被配置为通过输出来自多个预先定义的函数110的一个或多个函数来解码所述语义特征。在一些示例中,所述解码器机器被配置为根据用于组合来自多个预先定义的函数110中的函数的类型化句法来输出一个或多个函数,由此将所述解码器机器的输出限制为类型良好、完全可运行的数据流程序。多个预先定义的、可组合函数110支持一系列不同的自动化助理行为,例如,调用api、回答问题、查找用户数据和/或利用来自针对所述自动化助理而维护的特定于上下文的对话历史130的历史上下文。如在图1a中由虚线箭头所示的,特定于上下文的对话历史130可以包括对话的任何合适的方面,例如用户话语102、数据流程序106、和/或所得到的助理响应120。
19.因此,用户话语102、针对用户话语102生成的数据流程序106、和/或所述自动化助理的任何相关助理响应120可以被存储在特定于上下文的对话历史130中。因此,特定于上下文的对话历史130定义了多个概念(例如,概念130a,以及包括概念130n的任意合适数量的概念)。“概念”在本文中被用于指代在用户与自动化助理之间的交互的任何相关或潜在相关的方面。例如,概念可以包括实体(例如,个人、地点、事物、数字、日期)、用户查询的意图(例如,订购食物的意图、查询天气的意图、安排会面的意图)、由自动化助理执行的动作(例如,订购食物、查询天气、调用api、查找与实体相关的信息、识别特定用户话语、执行由多于一个动作组成的合成动作)、或者任何其他合适的特征。可以以任何合适的方式定义概念,例如基于用户话语102的文本内容。在一些示例中,根据数据流程序片段132a来定义概
念130a。例如,数据流程序片段132a可以包括被配置为查找与特定实体有关的信息的一个或多个函数,和/或被配置为使得所述自动化助理执行特定动作的一个或多个函数。
20.在一些示例中,多个预先定义的函数110包括一个或多个历史访问函数,其被配置为访问特定于上下文的对话历史130。因此,数据流程序106可以包括这样的历史访问函数。例如,多个预先定义的函数110和数据流程序106均包括历史访问函数112,历史访问函数112被配置为访问如由箭头所示的特定于上下文的对话历史130。在一些示例中,多个预先定义的函数110包括搜索历史函数,所述搜索历史函数被配置为从特定于上下文的对话历史130中查找概念(例如,getsalient()函数,其被配置为查找先前讨论的实体或者查找先前执行的动作),如将关于图1b、2和3a-3f所进一步讨论的。在一些示例中,多个预先定义的函数110包括程序重写函数,所述程序重写函数由被存储在所述特定于上下文的对话历史中的指定概念来参数化并且被配置为基于来自特定于上下文的对话历史130的概念来生成与指定概念相关的新的数据流程序片段(例如,clobber()函数,其被配置为基于指定概念来生成新的重写程序,例如,以编写用于执行关于新实体的先前动作或者用于执行关于先前讨论的实体的新动作的新程序)。在一些示例中,被存储在所述特定于上下文的对话历史中的指定概念包括目标子概念,并且所述程序重写函数还由用于替换所述目标子概念的替换子概念来参数化。因此,所述新的数据流程序片段对应于通过替换子概念而替换了目标子概念的指定概念。具体地,在一些示例中,所述新的数据流程序片段包括基于与所述指定概念相对应的历史数据流程序片段的重写的数据流程序片段,其中,与所述目标子概念相对应的子程序片段由与替换子概念相对应的不同子程序片段来替换。将关于图1c、2和3f-3g进一步讨论所述程序重写函数。
21.通过从特定于上下文的对话历史130中查找和/或重写概念,所述自动化助理能够重复动作、执行具有修改的动作、查找相关实体或者与先前动作相关的其他细节等。例如,所述自动化助理可以通过基于与来自特定于上下文的对话历史130的概念130a相对应的程序片段132a重新运行代码来重复动作或者执行具有修改的动作。此外,如果在输出助理响应120之前在对数据流程序106的运行期间达到任何错误状况,则数据流程序106和/或被存储在特定于上下文的对话历史130中的其他程序片段可以被重新运行(例如,具有修改或者没有修改)以从错误中恢复,如将关于图1d、4和5a-5h进一步描述的。
22.因此,图1b示出了自动化助理系统100的聚焦于多个预先定义的函数110中的搜索历史函数112的不同视图。搜索历史函数112被配置为通过使用来自特定于上下文的对话历史130的概念解决任何歧义来处理歧义的用户话语102。如由从特定于上下文的对话历史130通向搜索历史函数112的虚线箭头所示的,搜索历史函数112被配置为访问来自特定于上下文的对话历史130的一个或多个概念以确定消歧概念134。
23.在一些示例中,消歧概念134是由程序片段136来定义的。作为示例,如果用户话语102指代歧义实体(例如,通过代词或者部分名称,诸如“tom”),则搜索历史函数112可以被配置为在特定于上下文的对话历史130中搜索歧义实体(例如,基于部分名称“tom”)以找到与所述歧义实体相匹配的澄清实体(例如,具有名为“tom”或者诸如“thomas”的相关名称的实体)。在一些示例中,所述澄清实体可以由全名(例如,“thomas jones”)来定义。在其他示例中,所述澄清实体可以由被配置为查找所述澄清实体的代码(例如,在用户的地址簿中查找名为“tom”的人员的代码)来定义。
24.在一些示例中,消歧概念134指示在用户话语与来自所述特定于上下文的对话历史的先前用户话语之间的桥接回指。作为示例,如果用户问“我什么时候与charles共进午餐?”并且然后接着问“到那里需要多长时间?”则在随后的用户话语中的“那里”一词指代与charles共进午餐的地点。因此,搜索历史函数112可以被配置为搜索对应于与charles共进午餐的位置的概念。例如,所述概念可以包括递归地使用搜索历史函数112来寻找显著(salient)事件(亦即,与charles会面)的数据流程序片段,以及用于获得显著事件的地点的进一步指令。更一般而言,由搜索历史函数112找到的概念可以包括递归地调用搜索历史函数112以找到任何合适的子概念的数据流程序,例如,以便根据搜索其他显著子概念来定义显著概念。
25.将关于图2和图3a-3c来进一步描述搜索历史函数112。
26.图1c示出了自动化助理系统100的聚焦于程序重写函数112'的另一不同视图。程序重写函数112'被配置为通过以来自特定于上下文的对话历史130的指定概念152开始来产生重写概念140(例如,由重写程序片段142定义的),其中,指定概念152包括要利用不同的替换子概念156来修改/替换的至少一个替换目标子概念154。作为示例,指定概念152可以指代所述自动化助理的动作,包括“在当地寿司餐厅进行预订”。因此,目标子概念154可以是描述“寿司餐厅”,并且替换子概念156可以是替代描述“卷饼餐厅”。具体地,指定概念152可以由用于调用api以进行餐厅预订的程序片段来定义,其中,所述api由与指示进行预订的餐厅的目标子概念154相对应的程序片段来参数化。因此,程序重写函数112'被配置为输出与“在当地卷饼餐厅进行预订”相对应的重写概念140,使得重写概念140可以被用于执行由在当地卷饼餐厅进行预订组成的新动作(例如,通过运行程序片段142)。将关于图2和图3c进一步描述程序重写函数112'。
27.图1d示出了自动化助理系统100的聚焦于处理在对数据流程序106的运行期间可能出现的错误的另一视图。尽管在图1d中未示出,但是如在图1a-1c中所示的,用户话语102、数据流程序106和/或助理响应120可以在处理用户话语时被存储到特定于上下文的对话历史130中。
28.如果在输出助理响应120之前在对数据流程序106的运行期间达到错误状况,则所述数据流程序可以被暂停并且被保存为暂停的运行160。错误处理执行机170被配置为从错误状况中恢复以便产生助理响应120'。例如,错误处理执行机170可以实现方法400,在下文关于图4描述了方法400。为了从所述错误状况中恢复,错误处理执行机170可以修改和/或重新执行暂停的运行160。替代地或另外地,错误处理执行机170可以运行替代程序片段180。例如,错误处理执行机170可以通过使用程序重写函数来利用替代程序片段180替换数据流程序106的程序片段,和/或通过运行替代程序片段而不是数据流程序106,来修改暂停的运行160。替代程序片段180可以根据特定于上下文的对话历史130导出(例如,替代程序片段180可以是先前运行的程序片段)、根据多个预先定义的函数110构建和/或由先前训练的代码生成机104输出。在一些示例中,先前训练的代码生成机104被配置为识别错误状况,并且输出被配置为从错误中恢复的新程序片段。例如,可以关于一个或多个训练示例来训练先前训练的代码生成机104,每个训练示例包括示例性错误状况以及用于对所述错误做出响应的示例性数据流程序片段。例如,先前训练的代码生成机104可以关于大量经注释的对话历史(如下文将描述的)被训练,其中,所述经注释的对话历史中的一些或全部经注释
的对话历史包括错误状况的发生。
29.在一些示例中,所述错误状况可能由于用户话语102中的歧义而出现,其中,由用户话语102提供的信息不足以基于所述用户话语完全服务用户。作为示例,如果所述用户话语是“安排与tom的会面”,但是在用户的地址簿中有多于一个“tom”,则可能不清楚安排与谁的会面。因此,在一些示例中,错误处理执行机170被配置为运行代码以产生包含澄清问题122的初始助理响应120'。澄清问题122被输出以供用户对新的、澄清用户话语102做出响应。因此,能够使用先前训练的代码生成机104来处理所述澄清用户话语以产生用于对所述澄清用户话语做出响应的新的数据流程序106。包含澄清问题的错误恢复将在下文关于图4和图5a-5h进一步讨论。先前训练的代码生成机104可以经由在多个经注释的对话历史上的监督训练来训练。在许多示例中,先前训练的代码生成机104在大量经注释的对话历史(例如,数百、数千、数万或者更多)上被训练。经注释的对话历史描述与正在和自动化助理进行交互的用户相关联的、利用用于对所述用户交互做出响应的示例性数据流程序进行注释的状态信息。例如,经注释的对话历史可以包括根据本公开的(如下文关于图3a-3c和图5a-5f所描述的)、利用适合于由自动化助理响应于在特定于上下文的对话历史中建立的上下文而运行的示例性数据流程序进行注释的特定于上下文的对话历史。在示例中,特定于上下文的对话历史包括按时间次序布置的多个事件(例如,带时间戳的事件),包括用户话语、由自动化助理运行的数据流程序、由自动化助理输出的响应、和/或在运行数据流程序时达到的错误状况。
30.作为非限制性示例,经注释的对话历史可以包括特定于上下文的对话历史,其中,最近的事件是示例性用户话语,其利用用于关于由所述特定于上下文的对话历史建立的上下文对所述示例性用户话语做出响应的示例性数据流程序进行注释。因此,可以训练先前训练的代码生成机104以在给定示例性用户话语和特定于上下文的对话历史的情况下再现所述示例性数据流程序。所述示例性数据流程序可以以任何合适的序列/布置包含任何合适的函数,从而经由训练,所述代码生成机被配置为以合适的序列输出合适的函数。例如,所述示例性数据流程序可以包括搜索历史函数,并且因此,可以训练所述代码生成机以合适的序列输出搜索历史函数以及其他函数,以用于对用户话语做出响应(例如,以使得自动化助理执行任何合适的响应动作,诸如将响应输出为文本和/或语音,或者调用api)。在一些示例中,经注释的对话历史包括特定于上下文的对话历史,其中,最近的事件是错误状况的发生(例如,不是用户话语为最近的事件),其利用数据流程序进行注释以用于从所述错误中恢复。因此,先前训练的代码生成机104可以关于这样的经注释的对话历史被训练以生成用于从错误状况中恢复的合适的数据流程序。
31.经注释的对话历史可以例如从人类演示者处以任何合适的方式获得。例如,可以向一个或多个人类演示者示出特定于上下文的对话历史(例如,根据从与人类交互获得的使用数据导出的特定于上下文的对话历史,和/或机器生成的特定于上下文的对话历史),并且针对每个特定于上下文的对话历史,被要求提供合适的数据流程序以对所述特定于上下文的对话历史做出响应。由人类演示者提供的所述数据流程序可以以任何合适的方式使用预先定义的函数来响应于用户话语和/或错误状况来执行范围广泛的任务。
32.例如,基于被示出示例性用户话语或示例性错误状况,人类演示者可以提供示例性数据流程序,其执行任何合适的计算、输出响应(例如,询问用户的澄清问题,或者回答用
户发出的查询)、听取来自用户的话语(例如,从用户获得澄清)、调用api等。此外,所述示例性数据流程序可以包括搜索历史函数(例如,“getsalient()”)和/或程序重写函数(例如,“clobber()”),其利用任何合适的参数来调用,例如以根据所述特定于上下文的对话历史来执行数据流程序片段。因此,通过对多个经注释的对话历史进行训练,可以训练代码生成机104以生成类似于由人类演示者所提供的那些的数据流程序,以便对用户话语做出响应和/或从错误中恢复。
33.所述数据流程序(例如,由先前训练的代码生成机和/或示例性数据流程序生成的数据流程序)是根据多个预先定义的可组合函数来构建的。所述预先定义的可组合函数可以被组合成以任何合适的次序调用预先定义的可组合函数并且以任何合适的方式参数化所述预先定义的可组合函数的程序。因此,基于在训练期间提供的示例性数据流程序,可以训练所述先前训练的代码生成机以输出针对用户话语的合适的数据流程序。所述先前训练的代码生成机器并不限于硬编码行为。例如,替代或者除了对在训练期间看到的示例性用户话语做出响应之外,所述先前训练的代码生成机被配置为通过生成对应的、新颖的数据流程序(其在训练期间可能尚未提供)来处理新颖的用户话语(其在训练期间可能也尚未提供)。
34.为了根据在训练期间看到的特定训练示例进行概括并且利用新颖的数据流程序对新颖的用户话语做出响应,可以以任何合适的方式(例如,如下文将关于图6所描述的,在任何合适的训练数据上,例如,在大量经注释的对话历史上,使用任何合适的ml、ai和/或nlp模型)来训练所述先前训练的代码生成机。在一些示例中,可以关于损失函数来训练所述先前训练的代码生成机以评估数据流程序是否是对用户话语的合适响应,其中,所述损失函数被配置为当所述代码生成机成功地再现训练示例时(例如,在给定特定于上下文的对话历史的情况下,通过产生与由人类注释者提供的相同的数据流程序)指示零损失或相对小的损失(例如,不要求调整,或者对训练参数的相对较小的调整)。然而,尽管当所述代码生成机成功地再现训练示例时所述损失函数可以被配置用于相对小的损失,但是当所述代码生成机再现不同的数据流程序时,例如,当被运行时具有类似效果的数据流程序,和/或由人类用户(例如,人类演示者和/或自动化助理设备的最终用户)指示为满意的数据流程序,所述损失函数也可以被配置用于相对小的损失。在训练期间用于泛化的这些示例性方案是非限制性的,并且可以利用任何合适的ai、ml和/或nlp技术来适当地训练代码生成机以响应于各种用户话语来生成合适的数据流程序。
35.在一些示例中,可以通过操作先前训练的错误检测模型来识别错误状况。例如,可以经由在多个经注释的对话历史上的监督训练来训练所述先前训练的错误检测模型,其中,对所述经注释的对话历史进行注释以指示何时发生错误。例如,可以通过向一个或多个人类演示者示出特定于上下文的对话历史并且要求人类演示者指示所述特定于上下文的对话历史何时指示错误状态来获得所述经注释的对话历史。
36.除了诸如搜索历史函数和程序重写函数的历史访问函数之外,所述多个预先定义的可组合函数可以包括任何合适的函数,例如,被配置为在继续对数据流程序的运行之前侦听特定用户话语的侦听函数、被配置为输出对在数据流程序的运行期间确定的值的描述的响应函数、和/或用于处理从用户话语获得的值和/或在数据流程序的运行期间计算出的值(例如,数据结构操作,诸如根据数据形成元组,或者算术运算)的原始计算函数。
37.在一些示例中,所述多个预先定义的可组合函数包括被配置为调用外部(即,第三方)api的外部函数。例如,可以调用外部api与现实世界的服务进行交互(例如,在叫车服务中安排汽车、订餐或者在餐厅预订)。在一些示例中,所述多个预先定义的可组合函数包括被配置为执行关于外部函数的结果的计算的推理函数。所述推理函数可以封装关于所述api的高级行为,否则其将需要使用所述api的多个不同的低级函数。例如,外部叫车api可以支持用于安排汽车、在路线上添加停靠点以及最终决定安排的路线的函数。因此,推理函数可以被配置为:接收目的地,并且基于所述目的地来安排汽车,为用户添加与上车地点相对应的停靠点,添加与目的地相对应的停靠点,并且最终决定包括与上车地点和目的地相对应的停靠点的安排的路线。通过使用推理函数来封装高级行为,所述代码生成机能够很容易地输出类型良好的代码,其用于使用外部api来执行高级行为,而无需使用外部api的低级函数来输出个体步骤。在一些示例中,可以关于一个或多个约束来定义推理函数,并且运行所述推理函数可以包括运行约束满足程序来满足所述一个或多个约束,然后使用由针对所述约束的解决方案定义的参数来调用外部api。在一些示例中,所述一个或多个约束可以包括“模糊”或“软”约束,并且因此,解决所述约束可以包括运行适合于“模糊”逻辑推理的推理程序,例如马尔可夫逻辑推理程序。
38.在一些示例中,所述多个预先定义的可组合函数包括被配置为访问用户定制的设置并且基于所述用户定制的设置来执行计算的用户定制的函数。例如,所述用户定制的函数可以被配置为基于用户定制的时间表(例如,日历数据)来确定用户是否空闲。可以使用被配置为调用外部api(例如,用于查找日历数据的api)的外部函数来实现用户定制的函数。
39.在一些示例中,所述多个预先定义的可组合函数包括智能决策函数,其中,所述智能决策函数被配置为使用先前训练的机器学习模型来执行计算。作为示例,所述搜索历史函数可以是智能决策函数,所述智能决策函数被配置为使用先前训练的相关检测机来搜索所述特定于上下文的对话历史。作为另一示例,所述多个预先定义的可组合函数可以包括智能决策函数,所述智能决策函数被配置为以特定于用户和/或特定于人群的方式来评估是否是“早晨”,例如,所述函数可以被配置为识别用户认为是“早晨”的时间可能取决于一周中的一天或者一年中的时间而异。例如,所述智能决策函数可以被配置为评估在工作日的6am到11am之间为“早晨”,但是可以被配置为评估周末的9am到12pm之间为早晨。可以以任何合适的方式来训练所述智能决策函数,例如基于标记的时间示例以及用户是否认为所述时间为早晨。如与用户定制的函数一样,所述智能决策函数可以考虑诸如用户的工作日程、日历和/或手机使用的辅助信息,例如以基于用户是否在给定的日子可能已经醒来确定这是否为“早晨”。在一些示例中,智能决策函数可以被配置为评估歧义(例如,歧义的用户话语或歧义的约束),并且选择消歧数据流程序来对歧义做出响应。
40.在一些示例中,所述多个预先定义的可组合函数包括宏函数,其中,所述宏函数包括多个其他预先定义的可组合函数,并且被配置为运行所述多个其他预先定义的可组合函数。例如,宏函数能够被用于使用低级函数对高级任务的相关低级步骤进行排序和组织。通过使用宏函数来封装高级行为,所述代码生成机能够容易地输出用于执行所述高级行为的类型良好的代码,而无需使用低级函数来输出个体步骤。
41.简要地转到图1e,图1e示出了在用户与自动化助理之间的对话的第一示例,其中,
所述自动化助理处理其中没有歧义的用户话语102'。特定于上下文的对话历史130被示出为包括概念130a、130b以及直到130n的另外的概念。然而,在该示例中,用户话语102'是无歧义的,并且可以在不参考特定于上下文的对话历史130的情况下进行处理。用户询问“我与tom jones的下一次会面是什么时候?”并且得到先前训练的代码生成机输出数据流程序106'。
42.数据流程序106'以非限制性示例句法示出,其中,方括号指示表达式的返回值,例如,[events]指示用于查找与标准集合相匹配的所有事件的表达式的返回值,并且[time]指示所述集合中的第一个这样的事件的开始时间。示例性句法包括各种函数,包括搜索历史函数(例如,“getsalient()”)和程序重写函数(例如,“clobber()”)以及其他函数(诸如原始函数、api函数等,如在本文中所描述的)。所述示例性函数以指示函数的名称(例如,“find”、“getsalient”、“clobber”,以及其他命名的函数)函数调用句法以及用于调用所述函数的包含参数的括号来示出。所述示例性函数调用句法是非限制性的,并且可以以任何合适的方式(例如,使用任何合适的形式语言句法)来对函数进行调用和参数化。示例性函数名称表示具有在本文中未示出的实现方式的预先定义的函数。例如,每个预先定义的函数可以由所述自动化助理可运行的一个或多个指令的任何合适的序列来实现,以执行任何合适的步骤(例如,产生由函数名称指示的行为、在本公开中所阐述的行为、和/或任何其他合适的行为,诸如执行计算、调用api、输出音频、经由显示器视觉地呈现信息等)。例如,“find”函数可以以任何合适的方式来实现,例如,通过调用api来查找被存储在用户日历中的信息。
[0043]
如所示的,所述数据流程序查找具有名为“tom jones”的参与者的事件。所述数据流程序计算诸如[events]和[time]的值,并且然后使用“描述”函数输出响应120',所述“描述”函数被配置为输出对值[time]的描述,例如作为经由自动化助理设备的扬声器的语音。因此,响应120'指示与tom jones的下一次会面的会面时间,亦即“在12:30”。
[0044]
图2示出了用于处理包含歧义的用户话语的示例性方法200。所述方法使用搜索历史函数利用特定于上下文的对话历史中的信息来解决所述歧义。如在图3a中所示的,所述特定于上下文的对话历史可以包括针对对话而跟踪的任何合适的信息,诸如指示先前用户话语304的概念334和指示先前运行的数据流程序片段326的概念324。
[0045]
在202处,方法200包括识别包含歧义的用户话语。例如,图3a示出了示例性歧义的用户话语302,其中,用户询问“在那之后是什么?”。话语自身没有给出足够的信息来对用户做出响应,例如,因为“那”在没有进一步上下文的情况下不指代任何特定事件。
[0046]
在一些示例中,在204处,方法200包括识别与歧义相关的约束。例如,返回图3a,话语包括词语“在那之后”,并且因此,方法200包括识别用户正在指代相关时间的约束。例如,所述先前训练的代码生成机可以是在一个或多个训练示例上进行训练的,在在所述训练示例中中,用户话语包括与时间相关的词语,诸如当用户正在指代时间时的“之后”。例如,所述时间可以是由针对安排的事件的时间表定义的开始时间,其中所述安排的事件诸如是在用户日历中所安排的事件。
[0047]
因此,简要地返回到图2,在206处,方法200包括使用所述先前训练的代码生成机来产生用于对所述用户话语做出响应的数据流程序,其中,所述数据流程序包括所述搜索历史函数,其在图3a中所示的示例性句法中被称为“getsalient”。可以运行所述搜索历史
函数以从所述特定于上下文的对话历史中查找相关信息以便解决所述歧义。如在208处所描述的,所述搜索历史函数被配置为从所述特定于上下文的对话历史中的一个或多个概念中选择最高置信度的消歧概念,以便使用所述最高置信度的消歧概念来解决所述歧义。
[0048]
例如,在图3a中,在用户谈论与tom jones的会面之后,特定于上下文的对话历史130包括概念334,所述概念334包括先前的用户话语304,在先前的用户话语304中,用户询问“我与tom jones的下一次会面是什么时候?”以及由先前响应于先前用户话语304而运行的数据流程序片段326(例如,如在图1e中所示的数据流程序106')定义的概念324。数据流程序322被配置为:确定特定事件(例如,与tom的下一次会面)、确定针对所述事件的开始时间、并且描述所述时间。因此,所述搜索历史函数“getsalient”被配置为从所述特定于上下文的对话历史中搜索相关时间,以便使用所述相关时间来查找在该时间之后发生的事件并且输出指示在该时间之后发生什么事件的响应330。所述相关时间可以是在与tom的会面有关的数据流程序326中定义的[time]值。因此,响应330指示在与tom的会面之后,还有与richard brown的另一次会面。
[0049]
返回到图2,在一些示例中,如在210处所描述的,所述搜索历史函数被配置为在所述特定于上下文的对话历史中搜索一个或多个候选概念中满足与所述歧义相关的约束的子集,其中,在该子集内找到最高置信度的消歧概念。例如,在图3a中,基于包括词语“在那之后”的话语302,所识别出的约束可以包括用户正在指代由针对安排的事件的时间表所定义的相关时间的约束(如上文所描述的),因此来自特定于上下文的对话历史130的相关概念应当是“时间”类型的值。因此,所述搜索历史函数“getsalient(time())”被配置为从特定于上下文的对话历史130中搜索具有“时间”类型的相关值的子集,例如,包括[time]值。
[0050]
在一些示例中,如在212处所描述的,所述搜索历史函数被配置为使用先前训练的相关检测机来识别所述歧义的约束,并且基于这样的识别出的约束来选择与消歧概念相对应的消歧数据流程序片段。例如,如在图3a中所示的,基于“时间”类型约束,可以选择数据流程序片段326以用于消歧。所述先前训练的相关检测机可以包括现有技术的和/或未来的ml、ai和/或nlp技术的任何合适的组合。
[0051]
在一些示例中,可以经由在多个经注释的对话历史上的监督训练来训练所述先前训练的相关检测机,其中,经注释的对话历史包括未解决的搜索历史函数,所述未解决的搜索历史函数被标记有将解决所述未解决的搜索历史函数的消歧概念。因此,在给定未解决的搜索历史函数的情况下,可以训练所述先前训练的相关检测机以预测合适的消歧概念。例如,经注释的对话历史可以包括使用所述搜索历史函数的数据流程序片段(例如,包括“getsalient”的数据流程序322)以及将解决所述歧义的示例性消歧概念(例如,概念324包括定义[time]=[vents][0].start的数据流程序片段326)。
[0052]
在一些示例中,经注释的对话历史可以由人类演示者来提供,他们可以被示出歧义的用户话语和包括所述搜索历史函数的对应数据流程序,并且被要求提供在所述歧义的用户话语的上下文中与所述搜索历史函数适当匹配的示例性数据流程序片段。在一些示例中,由人类演示者从所述特定于上下文的对话历史中选择将解决所述未解决的搜索历史函数的消歧概念。在一些示例中,所述消歧概念是从人类演示者接收到的示例性数据流程序片段。例如,可以要求人类演示者通过组合所述预先定义的可组合函数中的一个或多个可组合函数和/或来自所述特定于上下文的对话历史的一个或多个数据流程序片段来提供所
述数据流程序片段。例如,可以要求人类演示者使用图形用户界面(gui)从所述特定于上下文的对话历史中选择一个或多个消歧概念,和/或使用这样的概念和可从菜单选择的预先定义的可组合函数来组合新程序。在一些示例中,所述消歧概念与所述特定于上下文的对话历史无关,例如,人类演示者可以指示用于解决被约束为查找日期的搜索历史函数的显著日期是“今天”,而不管所述特定于上下文的对话历史中的概念。
[0053]
在产生包括所述搜索历史函数的所述数据流程序之后,在214处,方法200可选地还包括运行所述数据流程序。因此,在216处,方法200可选地还包括输出由运行所述数据流程序得到的响应。例如,如在图3a中所示的,可以运行数据流程序322,包括运行所述搜索历史函数以从所述历史中搜索显著“时间”类型值以确定值[time2],并且找到在[time2]之后开始的事件(例如,通过调用api来访问用户的日历)。因此,可以输出响应330,以告诉用户“在与tom的会面之后,您有与richard brown会面,从1:30开始”。
[0054]
图3b-3c示出了解决包含歧义的用户话语的另外的示例。如在图3b中所示的,在一些示例中,针对所述歧义的约束指示歧义实体和歧义实体的实体属性,并且一个或多个候选概念的子集仅包括来自所述特定于上下文的对话历史的、具有所述实体属性的那些候选实体。例如,在用户话语302'中,用户要求“安排2:30与他会面”。描述符“他”在没有进一步上下文的情况下可能有歧义,因为其可以指代使用男性代词“他”的任何人。然而,特定于上下文的对话历史130包括潜在相关实体,所述潜在相关实体包括由概念350a所指示的tom jones和由概念350b所指示的jane smith。如上文所描述的(并且在此未详细示出),概念350a和概念350b可以以任何合适的形式来表示,例如,概念350a可以对应于用于使用api访问用户地址簿以查找名为“tom jones”的个人的数据流程序片段。基于所述用户话语,数据流程序322'被配置为基于具有男性代词(“他”)的属性来寻找显著个人。因此,如果所述历史包括相关实体“tom jones”和“jane smith”,并且“tom jones”使用男性代词而“jane smith”使用女性代词,那么所述搜索历史函数(“getsalient”)可以找到更相关的实体“tom jones”。因此,响应360指示会面被安排在2:30并且tom jones正在被邀请。
[0055]
在一些示例中,如在图3c中所示的,所述约束指示对由所述自动化助理执行的动作的歧义引用以及与所述动作相关的约束属性。因此,所述一个或多个候选概念的子集包括具有约束属性的多个候选动作,其中,每个候选动作是由候选数据流程序片段来定义的。例如,用户话语302”指示用户希望替代地邀请“jane”,但是根据用户话语302”关于邀请jane参加什么事件是歧义的。因此,与所述动作相关的约束属性是所述动作与邀请个人参与事件相关。因此,可能存在由所述自动化助理执行的相关动作,其作为概念306被存储在特定于上下文的对话历史130中。如所示的,概念306包括与由所述助理执行的动作相对应的数据流程序308,例如,与在图3b中所示的交互中设置的会面相对应的代码。用于解决所述歧义的数据流程序308被配置为使用所述搜索历史函数(“getsalienf”)来搜索相关事件。
[0056]
在一些示例中,由用户在用户话语中指示的概念可以基于外在和/或情境属性和/或者基于在用户与自动化助理之间的会话内的概念的出处来指示。作为示例,用户话语可以通过提及“第二次会面”来指代会面事件,“第二次会面”可以指代经由外在和/或情境属性的会面,例如在用户的日程表上的第二次会面。替代地或另外地,“第二次会面”可以指代在用户与自动化助理之间的会话中所讨论的第二次会面。作为本文中的监督训练的结果,
所述代码生成机可以被配置为从上下文中适当地识别用户使用诸如“第二次会面”之类的短语所指代的是什么。
[0057]
在一些示例中,也如在图3c中所示的,数据流程序322”包括程序重写函数(在示例性句法中被称为“clobber”),其由被存储在特定于上下文的对话历史中的指定概念(“[designated]”)来参数化,并且被配置为基于来自特定于上下文的对话历史130的概念来生成与指定概念相关的新的数据流程序片段(例如,编写用于执行关于新实体的先前动作的新程序)。在一些示例中,所述指定概念(“[designated]”,亦即与tom jones的新会面的安排)包括目标子概念(“replacementtarget”,亦即事件的受邀者tom jones)。因此,由用于替换所述目标子概念的替换子概念来进一步参数化所述程序重写函数,亦即,“[replacing]”指示针对所述会面的新受邀者jane。因此,新的数据流程序片段与在其中利用替换子概念对目标子概念进行了替换的指定概念相对应。换言之,所述程序重写函数产生新的数据流程序,所述新的数据流程序被配置为邀请jane smith参加先前与tom jones设置的同一事件。具体地,在一些示例中,所述新的数据流程序片段包括基于与所述指定概念相对应的历史数据流程序片段的重写的数据流程序片段,其中,与所述目标子概念相对应的子程序片段由与所述替换子概念相对应的不同子程序片段来替换。
[0058]
所述程序重写函数可以以任何合适的方式来参数化。例如,所述指定概念、替换目标子概念和替换子概念可以根据特定于上下文的对话历史130来导出(例如,替代程序片段180可以是先前执行的程序片段)、根据多个预先定义的函数110来构建和/或由先前训练的代码生成机104来输出。例如,先前训练的代码生成机104可以关于一个或多个训练示例进行训练,所述一个或多个训练示例包括示例性程序重写函数,以及针对所述程序重写函数的每个参数的示例性数据流程序片段。在一些示例中,关于包括程序重写函数的大量不同的训练示例来训练先前训练的代码生成机。
[0059]
在以上示例中,使用所述特定于上下文的对话历史来处理所述用户话语,导致输出自动化助理响应。然而,在一些示例中,在对用户话语的处理期间可能会出现错误。然而,根据本公开的数据流程序可以被配置用于对包含返回值的一个或多个数据值的无状况评估。因此,处理数据流程序可以包括运行所述数据流程序以便获得所述返回值。然而,尽管所述数据流程序可以被配置用于对包括所述返回值的所述数据值进行无状况评估,但是在对所述数据流程序的处理期间可能发生错误,例如由于用户话语中的歧义,其妨碍基于所述用户话语来完全解决数据流程序。因此,响应于在运行所述数据流程序时检测到任何错误状况,可以暂停对所述数据流程序的运行。在暂停对所述数据流程序的运行之后,所述先前训练的代码生成机可以被用于基于对所述数据流程序的暂停的运行来生成替代的错误处理数据流程序。因此,可以运行替代的错误处理数据流程序以便从错误状况中恢复。
[0060]
图4示出了当在这样的处理期间可能发生错误时用于由自动化助理处理用户话语的示例性方法400。在402处,方法400包括识别用于处理的用户话语。例如,图5a示出了包括用户话语502的示例性对话,其中,用户询问“谁是dan的经理?”。如在先前的示例中,在处理所述用户话语时,所述自动化助理维护特定于上下文的对话历史130,其被用于跟踪与在用户与自动化助理之间的先前交互相关的概念,例如,概念540a、540b和540c,其在本示例中未详细示出。
[0061]
在404处,方法400包括使用先前训练的代码生成机根据所述用户话语来生成数据
流程序(例如,图5a中所示的数据流程序522)。所述数据流程序被配置为在成功运行时产生返回值,例如,返回对dan的经理的描述。因此,所述数据流程序包括计算第一值[rl],所述第一值[rl]被配置为名为例如“dan”的所有相关人员的列表,其中,预期结果的列表是包括恰好一个条目的单项列表,例如,针对名为例如“dan”的人员的独有结果。假设找到了名为“dan”的单个个人并且将其保存为[rl],则所述数据流程序还包括通过找到[rl]的经理来计算另一值[r2],并且描述所述结果。
[0062]
在405处,方法400包括运行所述数据流程序。因此,在406处,方法400包括开始对所述数据流程序的运行。简要地回到图5a,评估[rl]包括例如通过访问特定于上下文的对话历史130和/或访问用户的地址簿来搜索名为“dan”的个人。然而,当评估[rl]时,会达到错误状况532,因为存在一个以上的名为例如“dan”的个人,亦即“dan a”和“dan b”,所以名为例如“dan”的人员列表不是单项。因此,该差异被检测为错误状况532,错误状况532包括描述在其中检测到错误状况的事件的数据流程序片段。所述错误事件指示所述错误是由于歧义造成的。
[0063]
在408处,响应于达到由对所述数据流程序的运行导致的错误状况,方法400包括处理所述错误状况。处理所述错误状况包括:在410处,在所述数据流程序产生所述返回值之前,在计算和描述所述返回值(例如,返回值[r2])之前,暂停对所述数据流程序(例如,如在图5a中所示的数据流程序522)的运行。为了解决所述错误状况(例如,错误状况532),所述自动化助理被配置为描述所述错误,例如,以便从用户获得消歧信息。因此,可选地在418处,处理所述错误状况可以包括输出澄清问题并且识别澄清用户话语,例如,通过循环返回到402以识别进一步的用户话语。如在图5a中所示的,所述自动化助理输出包括澄清问题“您是指dan a还是dan b?”的响应534。
[0064]
现在转到图5b,在暂停对所述数据流程序的运行并且输出包括所述澄清问题的所述响应之后,所述自动化助理可以接收后续的用户话语以获得用于处理所述错误的消歧信息。因此,错误的数据流程序522和错误状况532被(分别)作为概念520和概念530保存在特定于上下文的对话历史中,同时处理指示“dan a”的新用户话语502'。
[0065]
因此,在412处,方法400还包括使用所述先前训练的代码生成机来生成错误处理数据流程序,其中,错误处理数据流程序552被配置为产生所述返回值(例如,错误处理数据流程序552是计算与[r2]相对应的期望值的替代手段)。
[0066]
在一些示例中,达到所述错误状况包括检测到当运行所述数据流程序的有问题的程序片段时的错误,例如,在图5a中所示的所述错误状况在评估定义[rl]值的有问题的程序片段时出现,亦即,“find(person(name:like(“dan”))).results.singleton()”。因此,生成所述错误处理数据流程序包括基于所述有问题的程序片段[rl]来输出新的数据流程序。如在示例中所示的,错误处理数据流程序552使用所述搜索历史函数(“getsalient”)来查找名为“dan a”的相关人员,将结果保存为[r3]。在一些示例中,数据流程序可以包括被配置为返回“意图”的“intensionof”函数,其在本文中指代对数据流程序片段的引用。错误处理数据流程序552使用与[error]事件相对应的数据流程序片段,亦即在错误状况532的数据流程序片段中定义的“intensionof[rl]”。
[0067]
如在图5b中所示的,基于所述有问题的程序片段的新的数据流程序包括被配置为在所述数据流程序中利用替代程序片段来替换所述有问题的程序片段的程序重写函数(例
如,“clobber”)。错误处理数据流程序552通过使用所述程序重写函数(“clobber”)以通过利用不同的子概念[r3]替换由[r4]定义的目标子概念(亦即导致错误的有问题的程序片段)来重写原始返回值[r2]来定义新的计算[newcompl]。
[0068]
在一些示例中,如在图5b中所示的,所述替代程序片段包括被配置为基于与所述有问题的程序片段的关系在所述特定于上下文的对话历史中搜索所述替代程序片段的搜索历史函数。因此,所述子概念[r3]由用于使用所述搜索历史函数查找名为“dan a”的相关个人的代码来定义。
[0069]
在414处,方法400包括开始对所述错误处理数据流程序的运行以产生返回值。例如,错误处理数据流程序522被配置为通过运行新计算[newcompl]来返回值[r2']。在420处,方法400包括输出所述返回值。在输出返回值之后,在422处,方法400还包括基于所述返回值来输出响应,例如,图5b示出了响应514,响应514表示“dan的经理是tom jones”。
[0070]
在一些示例中,对数据流程序的运行可以导致达到多于一个不同的错误状况。例如,在达到并且完全地解决第一错误状况之后,可能达到另一错误状况。替代地或另外地,自动化助理可以被配置为检测多于一个同时的错误状况,并且通过生成关于所有这样的错误状况的错误处理数据流程序来同时地处理任何这样的错误状况。
[0071]
在一些示例中,方法400包括在对所述错误处理数据流程序的运行期间识别另外的错误,并且运行错误恢复循环,包括产生和运行另外的错误处理数据流程序,直到所述另外的错误处理数据流程序之一产生所述返回值。因此,响应于在408处达到所述错误状况而处理错误状况包括响应于在416处检测到另外的错误状况而返回到408以处理这样的另外的错误状况。通过依次检测每个错误并且生成错误处理数据流程序以从(一个或多个)错误中恢复,可以顺序地和/或同时地解决任意数量的错误。
[0072]
图5c示出了处理两种不同的错误状况的示例。图5c被示为一系列用户话语和响应,并且未示出与话语/响应有关的特定于上下文的对话历史和数据流程序。在第一用户话语504中,用户要求安排与dan和tom的会面。然而,可能有不止一个相关的dan,并且类似地,可能有不止一个相关的tom。因此,以类似于在图5a-5b中所示的方式,所述自动化助理被配置为输出响应534',响应534'询问用户想要与哪个dan安排会面。用户在用户话语506中响应他们的意思是“dan a”。所述自动化助理被配置为输出随后的响应536,其询问用户想要与哪个tom安排会面。用户在用户话语508中响应他们的意思是“tom j”。因此,在“dan”和“tom”被消除歧义之后,所述自动化助理被配置为安排所述会面并且输出指示所述会面已经被安排的响应538。
[0073]
在一些示例中,如在图5d中所示的,响应于用户话语510,由所述先前训练的代码生成机生成的所述数据流程序使用搜索历史函数来指定用于解决的概念,亦即通过搜索在用户话语510中提到的“他”的显著匹配来找到个人[r1]。然而,所述搜索历史函数可以找到两个或更多个相关概念,如由错误状况534”所指示的。例如,特定于上下文的对话历史130可以包括与“dan a”相对应的概念530a和与“tom j”相对应的另一概念530b。例如,与“dan a”相对应的概念可以由诸如在图5b中所示的错误恢复数据流程序中定义的片段“[r2']=execute([newcompl])”的数据流程序片段来定义,或者由诸如“[r3]=getsalient(person(name:like(“dan a”)))”的任何其他合适的数据流程序片段来定义,并且可以类似地定义与“tom j”相对应的概念。因此,所述自动化助理被配置为输出包含澄清问题的响应536”,
所述澄清问题要求用户提供指示两个或更多个相关概念之一的澄清响应(例如,亦即指示“dan a”或“tom j”)。所述错误处理数据流程序还被配置为接收澄清用户话语512,并且基于所述澄清话语来解决所述歧义。因此,在解决了用户在原始用户话语510中指代“dan a”之后,所述自动化助理被配置为执行动作[r2]以拨打“dan a”的电话号码并且输出描述该动作的响应538”。
[0074]
在一些示例中,如在图5e中所示的,所述错误是歧义,其中,所述数据流程序使用搜索历史函数指定用于解决的概念,所述搜索历史函数找到零个相关概念,并且所述错误处理数据流程序可运行以输出要求用户:提供指示相关概念的澄清响应的澄清问题、接收澄清用户话语、并且基于所述澄清话语来解决所述歧义。例如,在图5e中,用户在用户话语524中要求“打电话给他以确认会面”。所得到的数据流程序526可运行以找到相关个人并且呼叫该个人。然而,特定于上下文的对话历史130可能不包含与相关个人相对应的任何概念(例如,因为最近没有讨论过男性人员)。因此,错误状况534'"指示没有找到匹配来查找要计算[rl]的显著个人。因此,所述自动化助理被配置为运行错误处理数据流程序(未示出),其包括获取澄清响应582以找出呼叫谁并且呼叫该人(例如,通过使用所述程序重写函数来基于[r1]和/或[r2]创建新的计算,类似于在图5a-5b中所示的示例)。在用户澄清他们在用户话语516中的意思是“dan a”之后,错误处理数据流程序552被配置为关于由用户提供的澄清来拨打“dan a”的电话号码以便完成与原始数据流程序522相同的步骤。因此,所述数据流程序被配置为输出指示正在拨打所述呼叫的响应584。
[0075]
在一些示例中,如在图5f中所示的,所述错误是缺乏确认,其中,所述数据流程序指定仅在接收到用户确认响应之后才执行的动作并且所述用户话语不包括这样的用户确认响应,并且所述错误处理数据流程序可运行以输出确认问题,所述确认问题要求用户在执行所述动作之前提供所述用户确认响应。例如,用户在用户话语518中要求安排乘车前往会面。数据流程序562能够找到显著会面并且确定现在可乘车到达会面,将所得到的值存储在[r2]中。例如,[r2]可以包括与安排乘车相关的任何合适的信息,诸如由叫车服务api发布的资源描述符。数据流程序562被配置为基于所得到的值来安排乘车,但是仅在获取来自用户的确认之后。没有确认可以被检测为错误状况554。因此,错误处理数据流程序(未示出)可以被配置为输出响应556,所述响应556指示乘车的费用并且要求用户进行确认。在用户话语520中,用户指示他们确实想要安排乘车。因此,所述错误处理数据流程序可以继续安排乘车,例如通过重新运行计算[r3],并且输出指示执行了动作的响应558。
[0076]
在一些示例中,通过向用户询问一个或多个后续问题,可以利用在本文中所描述的错误处理机制来确定用于处理用户话语所需的信息。例如,如果用户话语包括关于执行由一个或多个约束参数化的特定动作的请求,并且所述用户话语指定用于指定约束的约束值中的一些但不是全部约束值,则动作可能不在指定剩余约束之前执行。因此,缺失的约束参数可以被检测为错误,并且相应地,所述先前训练的代码生成机被配置为输出错误处理数据流程序。例如,所述错误处理数据流程序可运行以提出问题从而指导用户提供用于指定剩余约束的进一步信息,并且使用从用户接收到的这样的进一步信息来执行所请求的动作。替代地或另外地,所述错误处理数据流程序可运行以利用默认值指定所述剩余约束中的一个或多个剩余约束。作为示例,如果用户要求“安排下周四上午10点与charles的会面”,则所得到的数据流程序可以被配置为执行由日期、时间、受邀者和持续时间参数化的
会面安排。由于所述用户话语提到“charles”、“周四”和“上午10点”,因此可以指定针对日期、时间和受邀者的约束。然而,可能未指定针对持续时间的约束,从而导致错误状况。因此,所述先前训练的代码生成机可以被配置为输出错误处理数据流程序以指定针对所述持续时间的剩余约束。所述错误处理数据流程序可以被配置为询问用户后续问题“会面应当进行多长时间?”,以便获取可以确定会面持续时间的另一用户话语。替代地,所述错误处理数据流程序可以被配置为确定用于指定所述约束的默认值,例如,30分钟的默认会面持续时间。可以由所述代码生成机基于对示例性默认值的监督训练,通过使用所述搜索历史函数、使用任何其他智能决策函数、使用用户定制的函数(例如,以访问用户的默认会面持续时间偏好)、或者以任何其他合适的方式来确定默认值。在一些示例中,由数据流程序定义的动作是使用api推断函数实现的,所述api推断函数可以由一个或多个约束来参数化。因此,如果任何这样的参数不是由用户话语来定义的,则可以通过运行约束满足程序来推断所述参数中的一些或所有参数。例如,对于用于需要会面开始时间和会面结束时间的安排会面的api推断函数,可以基于所述会面开始时间和所述持续时间来推断所述会面结束时间。类似地,可以基于所述会面结束时间和所述持续时间来推断所述会面开始时间。因此,在询问问题、假设默认值或者以其他方式处理缺失约束之前,错误处理数据流程序可以被配置为针对api推断函数推断尽可能多的约束。在一些示例中,替代生成用于指定约束的单个默认值,错误处理数据流程序可以被配置为生成用于指定所述约束的多个不同的候选值并且要求用户选择特定候选值。在一些示例中,所述错误处理数据流程序可以使用多个不同的候选值来参数化并且运行多个不同的api调用(例如,使用api推断函数),并且要求用户基于api调用的结果来选择候选值。例如,所述错误处理数据流程序可以尝试安排具有不同持续时间的多个不同会面,并且要求用户选择所得到的安排之一。在一些示例中,所述错误处理数据流程序可以基于api调用的结果来过滤候选选项,例如,尝试安排具有不同持续时间的多个不同的会面并且要求用户在不导致安排冲突的会面之间进行选择,同时省略如由会面安排api所指示的、具有将导致安排冲突的持续时间的候选。
[0077]
在一些示例中,所述替代程序片段由所述先前训练的代码生成机来输出。因此,所述先前训练的代码生成机可以是利用监督训练基于多个训练示例以输出所述替代程序片段的,其中,训练示例包括将导致错误状况的示例性有问题的程序片段,以及将不导致错误状况的解决替代程序片段。换言之,所述先前训练的代码生成机可以以关于生成针对用户话语的代码以及关于生成用于对错误做出响应的代码相类似的方式来进行训练。在任一情况下,所述先前训练的代码生成机被配置为使用多个预先定义的、可组合函数来生成程序,所述可组合函数以任何合适的序列来布置以用于处理用户话语和/或错误。在一些示例中,关于大量训练示例来训练所述先前训练的代码生成机,在所述训练示例中达到错误状况并且其中替代程序片段可运行以例如通过成功地产生返回值从所述错误中恢复。
[0078]
在本文中所描述的方法和过程可以被绑定到一个或多个计算设备的计算系统。具体地,这样的方法和过程可以被实现为可运行的计算机应用程序、网络可访问的计算服务、应用编程接口(api)、库、或者以上和/或者其他计算资源的组合。
[0079]
图6示意性示出了计算系统600的简化表示,计算系统600被配置为提供在本文中所描述的计算函数中的任何到所有计算函数。计算系统600可以采用一台或多台个人计算机、网络可访问服务器计算机、平板计算机、家庭娱乐计算机、游戏设备、移动计算设备、移
动通信设备(例如,智能电话)、虚拟/增强/混合现实计算设备、可穿戴计算设备、物联网(iot)设备、嵌入式计算设备和/或者其他计算设备的形式。
[0080]
计算系统600包括逻辑子系统602和存储子系统604。计算系统600可选地包括输入/输出子系统606、通信子系统608和/或在图6中未示出的其他子系统。
[0081]
逻辑子系统602包括被配置为运行指令的一个或多个物理设备。例如,所述逻辑子系统可以被配置为运行作为一个或多个应用、服务或者其他逻辑构造的部分的指令。所述逻辑子系统可以包括被配置为运行软件指令的一个或多个硬件处理器。另外地或替代地,所述逻辑子系统可以包括被配置为运行硬件或固件指令的一个或多个硬件或固件设备。所述逻辑子系统的处理器可以是单核或多核,并且在其上运行的指令可以被配置用于顺序、并行和/或分布式处理。所述逻辑子系统的个体组件可选地可以被分布在两个或更多个单独的设备中,所述设备可以远程地定位和/或被配置用于协调处理。所述逻辑子系统的各方面可以由在云计算配置中配置的远程可访问的联网计算设备来虚拟化和运行。
[0082]
存储子系统604包括一个或多个物理设备,所述物理设备被配置为临时地和/或永久地保存计算机信息,诸如能由所述逻辑子系统运行的数据和指令。当所述存储子系统包括两个或更多个设备时,所述设备可以被共同定位和/或远程地定位。存储子系统604可以包括易失性、非易失性、动态、静态、读/写、只读、随机访问、顺序访问、位置可寻址、文件可寻址、和/或内容可寻址的设备。存储子系统604可以包括可移除和/或内置设备。当所述逻辑子系统运行指令时,存储子系统604的状态可以被转换—例如,以保存不同的数据。
[0083]
逻辑子系统602和存储子系统604的各方面可以被一起集成到一个或多个硬件逻辑组件中。例如,这样的硬件逻辑组件可以包括特定于程序和特定于应用的集成电路(pasic/asic)、特定于程序和特定于应用的标准产品(pssp/assp)、片上系统(soc)和复杂可编程逻辑器件(cpld)。
[0084]
所述逻辑子系统和所述存储子系统可以协作以实例化一个或多个逻辑机器。如在本文中所使用的,术语“机器”被用于统称硬件、固件、软件、指令和/或协作以提供计算机函数的任何其他组件的组合。换言之,“机器”从来都不是抽象的概念,并且总是具有有形的形式。机器可以由单个计算设备来实例化,或者机器可以包括由两个或更多个不同计算设备实例化的两个或更多个子组件。在一些实现方式中,机器包括与远程组件(例如,由服务器计算机的网络提供的云计算服务)协作的本地组件(例如,由计算机处理器运行的软件应用)。给予特定机器其函数的软件和/或者其他指令可以可选地作为一个或多个未执行模块保存在一个或多个合适的存储设备上。例如,所述先前训练的代码生成机、先前训练的相关检测机、和/或错误处理执行机是根据本公开的机器的示例。
[0085]
机器可以使用现有技术和/或未来机器学习(ml)、人工智能(ai)和/或自然语言处理(nlp)技术的任何合适的组合来实现。例如,所述先前训练的代码生成机和/或先前训练的相关检测机可以结合任何合适的ml、ai和/或nlp技术,包括任何合适的语言模型。
[0086]
可以并入在一个或多个机器的实现方式中的技术的非限制性示例包括支持向量机、多层神经网络、卷积神经网络(例如,包括用于处理图像和/或视频的空间卷积网络、用于处理音频信号和/或自然语言句子的时间卷积神经网络、和/或被配置为跨一个或多个时间和/或空间维度来卷积和汇集特征的任何其他合适的卷积神经网络)、循环神经网络(例如,长短期记忆网络)、联想存储器(例如,查找表、散列表、bloom过滤器、神经图灵机和/或
神经随机存取存储器)、词嵌入模型(例如,glove或word2vec)、无监督空间和/或聚类方法(例如,最近邻算法、拓扑数据分析和/或k均值聚类)、图形模型(例如(隐)马尔可夫模型、马尔可夫随机场、(隐)条件随机场和/或ai知识库)和/或自然语言处理技术(例如,令牌化、词干提取、选区和/或依存解析和/或意图识别、分段模型和/或超分段模型(例如,隐动态模型))。
[0087]
在一些示例中,在本文中所描述的方法和过程可以使用一个或多个可微函数来实现,其中,可以关于可微函数(例如,关于训练数据,和/或关于目标函数)的输入和/或输出来计算和/或估计可微函数的梯度。这样的方法和过程可以至少部分地由一组可训练参数来确定。因此,针对特定方法或过程的可训练参数可以通过任何合适的训练程序进行调整,以便持续地改进方法或过程的功能。
[0088]
用于调整可训练参数的训练程序的非限制性示例包括:监督训练(例如,使用梯度下降或者任何其他合适的优化方法)、零样本(zero-shot)、少样本(few-shot)、无监督学习方法(例如,基于从无监督聚类方法导出的类别的分类)、强化学习(例如,基于反馈的深度q学习)和/或生成式对抗神经网络训练方法、信念传播、ransac(随机样本一致性)、上下文赌博机方法、最大似然方法和/或期望最大化。在一些示例中,可以关于测量多个组件的集体功能的性能的目标函数(例如,关于强化反馈和/或关于标记的训练数据)来同时地训练在本文中所描述的多个方法、过程和/或系统的组件。同时地训练多个方法、过程和/或组件可以改进这样的集体功能。在一些示例中,一个或多个方法、过程和/或组件可以独立于其他组件进行训练(例如,对历史数据的离线训练)。
[0089]
所述先前训练的代码生成机和/或先前训练的相关检测机可以并入任何合适的语言模型。语言模型可以利用词汇特征来指导采样/搜索词语以识别语音。例如,语言模型可以至少部分地由词语或者其他词汇特征的统计分布来定义。例如,语言模型可以通过n元语法的统计分布来定义,根据词汇统计定义在候选词语之间的转移概率。所述语言模型还可以基于任何其他适当的统计特征,和/或利用一种或多种机器学习和/或统计算法处理统计特征的结果(例如,由这样的处理产生的置信度值)。在一些示例中,例如基于假设音频信号中的词语来自特定词汇,统计模型可以约束可以针对音频信号识别哪些词语。
[0090]
替代地或另外地,所述语言模型可以基于先前被训练以表示在共享潜在空间中的音频输入和词语的一个或多个神经网络,例如,由一个或多个音频和/或词语模型学习的向量空间(例如,wav2letter和/或word2vec)。因此,寻找候选词语可以包括基于由针对音频输入的音频模型编码的向量来搜索共享潜在空间,以便找到候选词语向量以利用词语模型进行解码。所述共享潜在空间可以用于针对一个或多个候选词语来评估候选词语在语音中被表征的置信度。
[0091]
所述语言模型可以与声学模型结合使用,所述声学模型被配置为针对候选词语和音频信号,基于词语的声学特征(例如,mel频率倒谱系数、共振峰等)来评估候选词语被包含在音频信号中的语音中的置信度。可选地,在一些示例中,所述语言模型可以并入声学模型(例如,对所述语言模型的评估和/或训练可以基于声学模型)。所述声学模型定义了例如基于经标记的语音在声学信号与诸如音素的基本声音单元之间的映射。所述声学模型可以基于现有技术或未来机器学习(ml)和/或人工智能(ai)模型的任何合适组合,例如:深度神经网络(例如,长短期记忆、时间卷积神经网络、受限玻尔兹曼机、深度信念网络)、隐马尔可
夫模型(hmm)、条件随机场(crf)和/或马尔可夫随机场、高斯混合模型、和/或者其他图形模型(例如,深度贝叶斯网络)。要利用声学模型处理的音频信号可以以任何合适的方式进行预处理,例如,以任何合适的采样率编码、傅立叶变换、带通滤波等。可以训练所述声学模型以基于利用经标记的音频数据的训练来识别在声学信号与声音单元之间的映射。例如,可以基于包括语音和校正文本的经标记的音频数据来训练声学模型,以便学习在语音信号与由所述校正文本表示的声音单元之间的映射。因此,可以不断地改进所述声学模型以提高其用于正确地识别语音的效用。
[0092]
在一些示例中,除了统计模型、神经网络和/或声学模型之外,所述语言模型可以并入任何合适的图形模型,例如,隐马尔可夫模型(hmm)或条件随机场(crf)。在给定语音和/或迄今为止识别出的其他词语的情况下,所述图形模型可以利用统计特征(例如,转移概率)和/或置信度值来确定识别词语的概率。因此,所述图形模型可以利用统计特征、先前训练的机器学习模型、和/或声学模型来定义在图形模型中所表示的状态之间的转移概率。
[0093]
当被包含时,输入/输出子系统606可以包括一个或多个显示器,其可以被用于呈现由存储子系统604所保存的数据的视觉表示。该视觉表示可以采用图形用户界面(gui)的形式。输入/输出子系统606可以包括实际上利用任何类型的技术的一个或多个显示设备。在一些实现方式中,显示子系统可以包括一个或多个虚拟现实、增强现实、或者混合现实显示器。当被包含时,输入/输出子系统606还可以包括一个或多个扬声器,所述扬声器被配置为输出语音,例如,以呈现由存储子系统604保存的数据的可听表示,诸如自动化助理响应。
[0094]
当被包含时,输入/输出子系统606可以包括一个或多个输入设备或者与一个或多个输入设备接口。输入设备可以包括传感器设备或用户输入设备。用户输入设备的示例包括:键盘、鼠标、触摸屏或游戏控制器。在一些实施例中,所述输入子系统可以包括所选择的自然用户输入(nui)组件或者与所选择的自然用户输入(nui)组件接口。这样的组件可以是集成的或外围的,并且输入动作的转换和/或处理可以在机上或机外处理。示例性nui组件可以包括用于语音和/或语音识别的麦克风;用于机器视觉和/或手势识别的红外、彩色、立体和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼部跟踪器、加速度计和/或陀螺仪。
[0095]
当被包含时,通信子系统608可以被配置为将计算系统600与一个或多个其他计算设备通信地耦合。通信子系统608可以包含与一种或多种不同通信协议兼容的有线和/或无线通信设备。所述通信子系统可以被配置为经由个域网、局域网和/或广域网进行通信。
[0096]
本公开是通过示例并且参考相关附图来呈现的。在图中的一幅或多幅图中可能基本相同的组件、过程步骤和其他元件被协调地标识并且以最少的重复进行描述。然而,将注意到,协调地标识的元件也可能在某种程度上不同。还将注意到,一些图可能是示意性的并且未按比例绘制。在图中所示的各种绘图比例、纵横比和组件数量可能被故意地扭曲,以使特定特征或关系更容易看到。
[0097]
在示例中,一种方法包括:识别用于由自动化助理来处理的用户话语;使用先前训练的代码生成机根据所述用户话语来生成数据流程序,所述数据流程序被配置为:在成功运行时产生返回值;开始对所述数据流程序的运行;响应于达到由对所述数据流程序的运行导致的错误状况:在所述数据流程序产生所述返回值之前,暂停对所述数据流程序的运行;使用所述先前训练的代码生成机来生成错误处理数据流程序,其中,所述错误处理数据
流程序被配置为:产生所述返回值;开始对所述错误处理数据流程序的运行以产生所述返回值;并且输出所述返回值。在该示例或者任何其他示例中,达到所述错误状况包括检测到当运行所述数据流程序的有问题的程序片段时的错误,并且其中,生成所述错误处理数据流程序包括基于所述有问题的程序片段来输出新的数据流程序。在该示例或者任何其他示例中,基于所述有问题的程序片段的所述新的数据流程序包括程序重写函数,所述程序重写函数被配置为在所述数据流程序中利用替代程序片段来替换所述有问题的程序片段。在该示例或者任何其他示例中,所述方法还包括维护特定于上下文的对话历史,其中,所述替代程序片段是搜索历史函数,所述搜索历史函数被配置为基于与所述有问题的程序片段的关系在所述特定于上下文的对话历史中搜索所述替代程序片段。在该示例或者任何其他示例中,所述替代程序片段是由所述先前训练的代码生成机输出的,并且其中,所述先前训练的代码生成机是利用监督训练基于多个训练示例被训练以输出所述替代程序片段的,其中,训练示例包括:将导致错误状况的示例性有问题的程序片段,以及将不导致所述错误状况的解决替代程序片段。在该示例或者任何其他示例中,所述方法还包括:在对所述错误处理数据流程序的运行期间识别另外的错误,并且运行错误恢复循环,所述错误恢复循环包括产生和运行另外的错误处理数据流程序,直到所述另外的错误处理数据流程序中的一个错误处理数据流程序产生所述返回值。在该示例或者任何其他示例中,所述错误是歧义,其中,所述数据流程序使用搜索历史函数来指定用于解决的概念,所述搜索历史函数找到两个或更多个相关概念,并且所述错误处理数据流程序课运行以:输出澄清问题,所述澄清问题要求所述用户提供指示所述两个或更多个相关概念中的一个相关概念的澄清响应,接收澄清用户话语,并且基于所述澄清话语来解决所述歧义。在该示例或者任何其他示例中,所述错误是歧义,其中,所述数据流程序使用搜索历史函数来指定用于解决的概念,所述搜索历史函数找到零相关概念,并且所述错误处理数据流程序可运行以:输出澄清问题,所述澄清问题要求所述用户提供指示相关概念的澄清响应,接收澄清用户话语,并且基于所述澄清话语来解决所述歧义。在该示例或者任何其他示例中,所述错误是缺乏确认,其中,所述数据流程序指定仅在接收到用户确认响应之后才执行的动作并且所述用户话语不包括这样的用户确认响应,并且所述错误处理数据流程序可运行以输出确认问题,所述确认问题要求所述用户在执行所述动作之前提供所述用户确认响应。
[0098]
在示例中,一种自动化助理系统包括:麦克风;扬声器;逻辑子系统;以及存储子系统,其保存指令,所述指令能由所述逻辑子系统运行以:识别用于由自动化助理来处理的用户话语;使用先前训练的代码生成机根据所述用户话语来生成数据流程序,所述数据流程序被配置为:在成功运行时产生返回值;开始对所述数据流程序的运行;响应于达到由对所述数据流程序的运行导致的错误状况:在所述数据流程序产生所述返回值之前,暂停对所述数据流程序的运行;使用所述先前训练的代码生成机来生成错误处理数据流程序,其中,所述错误处理数据流程序被配置为:产生所述返回值;开始对所述错误处理数据流程序的运行以产生所述返回值;并且输出所述返回值。在该示例或者任何其他示例中,达到所述错误状况包括检测到当运行所述数据流程序的有问题的程序片段时的错误,并且其中,生成所述错误处理数据流程序包括基于所述有问题的程序片段来输出新的数据流程序。在该示例或者任何其他示例中,基于所述有问题的程序片段的所述新的数据流程序包括程序重写函数,所述程序重写函数被配置为在所述数据流程序中利用替代程序片段来替换所述有问
题的程序片段。在该示例或者任何其他示例中,所述指令还可运行以维护特定于上下文的对话历史,其中,所述替代程序片段是搜索历史函数,所述搜索历史函数被配置为在所述特定于上下文的对话历史中搜索所述替代程序片段。在该示例或者任何其他示例中,所述替代程序片段是由所述先前训练的代码生成机器输出的,并且其中,所述先前训练的代码生成机器是利用监督训练基于多个训练示例被训练以输出所述替代程序片段的,其中,训练示例包括:将导致错误状况的示例性有问题的程序片段,以及将不导致所述错误状况的解决替代程序片段。在该示例或者任何其他示例中,所述指令还可运行以:识别在对所述错误处理数据流程序的运行期间的另外的错误;并且运行错误恢复循环,所述错误恢复循环包括产生和运行另外的错误处理数据流程序,直到所述另外的错误处理数据流程序中的一个错误处理数据流程序产生所述返回值。在该示例或者任何其他示例中,所述错误是歧义,其中,所述数据流程序使用搜索历史函数来指定用于解决的概念,所述搜索历史函数找到两个或更多的相关概念,并且所述错误处理数据流程序可运行以:经由所述扬声器来输出澄清问题,作为语音音频,所述澄清问题要求所述用户提供指示所述两个或更多个相关概念中的一个相关概念的澄清响应;从所述麦克风接收澄清用户话语;并且基于所述澄清话语来解决所述歧义。在该示例或者任何其他示例中,所述错误是歧义,其中,所述数据流程序使用搜索历史函数来指定用于解决的概念,所述搜索历史函数找到零相关概念,并且所述错误处理数据流程序可运行以:经由所述扬声器输出澄清问题,作为语音音频,所述澄清问题要求所述用户提供指示相关概念的澄清响应;从所述麦克风接收澄清用户话语;并且基于所述澄清话语来解决所述歧义。在该示例或者任何其他示例中,所述错误是缺乏确认,其中,所述数据流程序指定仅在接收到用户确认响应之后才执行的动作并且所述用户话语不包括这样的用户确认响应,并且所述错误处理数据流程序输出确认问题,所述确认问题要求所述用户在执行所述动作之前提供所述用户确认响应。
[0099]
在示例中,一种方法包括:识别用于由自动化助理来处理的用户话语;使用先前训练的代码生成机根据所述用户话语来生成数据流程序,所述数据流程序被配置为:在成功运行时产生返回值;开始对所述数据流程序的运行;检测到当运行所述数据流程序的有问题的程序片段时的错误状况;响应于检测到所述错误状况:在所述数据流程序产生所述返回值之前,暂停对所述数据流程序的运行;使用所述先前训练的代码生成机基于所述有问题的程序片段来生成错误处理数据流程序,其中,所述错误处理数据流程序包括程序重写函数,所述程序重写函数被配置为在所述数据流程序中利用替代程序片段替换所述有问题的程序片段,并且其中,所述错误处理数据流程序被配置为:产生所述返回值;开始对所述错误处理数据流程序的运行以产生所述返回值;并且输出所述返回值。在该示例或者任何其他示例中,所述替代程序片段是由所述先前训练的代码生成机输出的,并且其中,所述先前训练的代码生成机是利用监督训练基于多个训练示例被训练以输出所述替代程序片段的,其中,训练示例包括:将导致错误状况的示例性有问题的程序片段,以及将不导致所述错误状况的解决替代程序片段。
[0100]
将理解,在本文中所描述的配置和/或方法本质上是示例性的,并且这些特定实施例或示例不应被视为限制性的,因为许多变化是可能的。在本文中所描述的特定例程或方法可以代表任何数量的处理策略中的一种或多种。因此,所示出和/或描述的各种动作可以按照所示出和/或描述的序列、以其他序列、并行执行或省略。同样,上述过程的次序可以改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1