基于计算图的任务型会话管理框架、设备及存储介质
技术领域
本申请涉及会话计数领域,尤其涉及基于计算图的任务型会话管理框架、设备及存储介质。
背景技术
现有的对话管理方案大多是基于dialog flow对话流。对话流是一种基于状态转移的对话管理框架,其形式类似对话剧本的流程图。
目前,现有对话管理的框架因为采用了基于对话流的设计,适用于处理简单的单轮交互任务以及固定流程的封闭型多轮交互任务。封闭型是指执行任务过程中不需要进行其它任务的交互。缺点是在框架层面缺乏对复杂多轮交互任务的支持,以及缺乏对用户在对话中的任务自由切换,上下文信息的指代和省略,任务子流程间跳转,多任务同时执行的支持。
发明内容
有鉴于此,本申请提供一种基于计算图的任务型会话管理框架、设备及存储介质,能够解决上述背景中提到的技术问题。
本申请的一些实施方式提供了一种基于计算图的任务型会话管理框架。以下从多个方面介绍本申请,以下多个方面的实施方式和有益效果可互相参考。
第一方面,本申请提供一种基于计算图的任务型会话管理框架,包括:
任务管理模块,用于维护每一次会话任务的任务状态,并记录所述任务状态,所述任务状态包括所述会话任务中各状态节点的当前状态;
任务执行引擎,用于获取所述会话任务的计算图和所述任务状态,并运行所述计算图,所述任务执行引擎包括:
加载模块,用于在当前会话中,根据所述会话任务加载所述会话任务的计算图,所述计算图中包括完成所述会话任务的步骤和与所述步骤关联的所述状态节点,所述状态节点包括输入节点和输出节点;
计算模块,用于确定出所述输入节点和所述输出节点,根据所述输入节点对所述计算图中的所述步骤执行前向计算和/或后向计算,以更新所述输出节点;
汇总模块,用于汇总所述计算模块在运行每一个所述步骤时产生的系统动作输出。
作为本发明第一方面的一个实施例,所述任务状态还包括:所述当前会话信息,未完成的所述输出节点列表和更新的所述状态节点列表。
作为本发明第一方面的一个实施例,所述当前会话信息包括会话ID和会话计数中的一种或两种。
作为本发明第一方面的一个实施例,所述状态节点的当前状态包括:所述状态节点的当前值和更新计数。
作为本发明第一方面的一个实施例,所述计算图为有向无环图。
作为本发明第一方面的一个实施例,所述步骤的类型包括根据用户输入更新节点、调用各种查询/搜索接口、交互并进行推荐、从列表中选择、预测节点值、功能的执行和节点值的选取中的一种或多种。
作为本发明第一方面的一个实施例,在所述任务执行引擎执行所述会话任务时,所述任务管理模块确认是否有当前的会话任务,
若无,则新建所述当前的会话任务,并对新建的所述会话任务进行维护更新;
若有,则读取已有的会话任务中的任务状态。
作为本发明第一方面的一个实施例,所述计算模块还用于:根据确定出所述输入节点和所述输出节点,解析所述计算图,得到需要执行的步骤和每个步骤的执行顺序,按照每个步骤的执行顺序对所述计算图中的所述步骤执行前向计算和/或后向计算。
作为本发明第一方面的一个实施例,按照每个步骤的执行顺序对所述计算图中的所述步骤执行前向计算的条件包括:所述输入节点的会话计数最大值大于所述输出节点的会话计数最大值;所述输入节点中有输入;或者,所述输出节点中有输出。
作为本发明第一方面的一个实施例,所述计算模块用于对有输出的输出节点的计数进行更新,并更新至节点队列用于继承。
作为本发明第一方面的一个实施例,若有所述系统动作输出,所述计算模块用于将所述系统动作加入动作输出队列。
作为本发明第一方面的一个实施例,所述计算模块还用于当判断所述输出节点未完成,标上未满足标识。
作为本发明第一方面的一个实施例,按照每个步骤的执行顺序对所述计算图中的所述步骤执行后向计算的条件包括:当每个所述步骤运行后有未满足输出的输出节点。
作为本发明第一方面的一个实施例,在执行所述后向计算的过程中,所述计算模块用于调整未满足的输出节点值或标识未满足的输入节点。
作为本发明第一方面的一个实施例,若有所述系统动作输出,所述计算模块用于将所述系统动作加入动作输出队列。
第二方面,本申请还提供一种电子设备,包括:
存储器,用于存储由设备的一个或多个处理器执行的指令,以及
处理器,用于执行上述第一方面实施例的任务型会话管理框架。
第三方面,本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器运行时,使得处理器执行上述第一方面的任务型会话管理框架。
附图说明
图1为本申请的示例性的任务型对话管理的场景图;
图2为本申请一个实施例的任务型对话管理框架的结构示意图;
图3为本申请一个实施例基于任务型会话管理框架执行任务的流程图;
图4为本申请一个实施例的任务的计算图;
图5为本申请一个实施例的任务型对话管理的结构示意图;
图6为本申请一个实施例的电子设备的结构示意图;
图7为本申请一些实施例的一种设备的框图;
图8为本申请一些实施例的一种片上系统(SoC)的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
对话管理Dialog Manager,在对话系统中负责管理整个对话流程,根据自然语言理解(Natural Language Understanding,NLU),结合对话历史信息,确定系统目标,并生成系统动作(Action)。主要任务包括对话状态维护、执行业务逻辑或调用业务接口、生成系统决策等。
现有的对话管理方案大多是基于dialog flow对话流,对话流是一种基于状态转移的对话管理框架,其形式类似对话剧本的流程图。基本思想是通过设计的对话剧本来定义整个任务的多轮交互过程。在对话过程中,通过条件判断来进入流程中的某个或某些节点执行对应业务逻辑,并输出系统动作。不同任务功能的实现通过编写不同对话剧本的方式实现;对话状态包括当前在对话流程中的位置及其它可用于节点条件判断的信息。而在框架层面没有明确的机制来实现不同任务间的自由切换和信息互通。
也就是说,在这个过程中,用户往往不会一次完整表达所有相关信息,会分多次来表达。同时,有些业务功能(比如订外卖,搜索目的地并导航等)也很难在一轮交互内完成,需要多个步骤的交互。因此,对话系统在与用户的多轮对话交互中,如何根据用户表达的需求和意图,为用户提供系统所具有的功能是需要考虑的。本发明的技术方案通过一个对话管理框架来方便在对话系统上实现不同的任务功能,同时维护任务执行过程中的状态,实现任务间的自由切换和信息互通。
参考图1,图1示例性的任务型对话管理的场景图。如图1所示,该场景图中,包括任务管理模块110、任务执行引擎120、以及任务插件130。其中,任务插件130是与任务关联的可以提供具体的业务能力,以框架规定的形式开发。任务管理模块110与任务执行引擎与任务本身无关。任务执行引擎130作为核心模块与任务本身是无关联的,任务执行引擎120可以按固定的算法逻辑,从任务插件130获得当前会话任务的计算图,根据当前任务的计算图和任务的状态(task state)执行计算图的计算。任务管理模块110维护当前的会话任务的任务状态,并记录任务状态。任务执行引擎可以从任务管理模块获得任务状态按照固定的算法逻辑运行计算图中的步骤,并在运行步骤的过程中产生系统输出动作。可以尽可能的为用户提供可能的输出动作,达到用户的意图。
参考图2,图2为本申请一个实施例的任务型对话管理框架的结构示意图。结合图1所示,该示意图包括任务管理模块110和任务执行引擎120和任务插件,其中,任务管理插件可以包括计算图131(Task Schema)和步骤132(Step)。任务执行引擎在每次执行的当前会话任务时,需要加载需要执行的计算图,然后从计算图中确定输入节点和输出节点(即为任务的目标节点),然后运行计算图中的各步骤。在运行的过程中类似模拟训练,采用分为前向计算(forward propagation)和后向计算(backward propagation)。每个计算图的步骤(step)在运行中都可能产生系统动作输出(action)。结束后汇总合并队列中的系统动作输出。任务管理模块会对任务执行引擎执行的个步骤中的个状态节点进行更新统计以确定当前的会话任务的任务状态。其中,任务状态可以包括当前会话信息,例如会话id,会话计数(counter)等,未完成的所述输出节点(目标节点)列表,最近更新的状态节点(Node)列表,以及任务各状态节点(Node)的当前状态,例如节点的当前值(value)、更新计数(counter)等。并且任务执行引擎在执行步骤时,可以从任务管理模块内获取这些信息,以实现对每个步骤输入和输出的依赖,同时,以使得用户在会话过程中,能够不断基于用户输入和对话状态来确定出系统要执行的动作。
本发明由于采用计算图来描述任务而不是流程图,计算图只是描述完任务的必须步骤,每个步骤的输入输出及相互依赖,没有固定的交互流程。在执行任务时,根据当前的对话状态实时选择所需执行的步骤来完成任务,能够根据当前各节点状态的不同以及执行结果的不同可以产生丰富的交互流程可能性,来满足用户自由交互的需求。
此外,在执行任务计算图时,采用前向计算和后向计算结合来执行解析后的部分计算图,前向计算主要负责更新各节点状态。后向计算负责追溯未满足的节点输出并做可能的调整。两个过程中都可能输出系统交互动作,从而满足用户的不同需求和可能的意图。
本申请中,任务执行引擎和任务管理模块与任务本身无关,可以解耦任务开发与框架核心能力。对于任务开发者来说,可以聚焦在任务的计算图(task schema)的设计和任务各步骤(step)的实现上,不用关心框架的核心能力实现。同时,一些任务步骤也可作为通用组件,使开发者在开发新任务时,可以复用。
下面结合具体实施例对本申请的基于任务型会话管理框架执行任务的流程进行描述。
参考图3,图3示例性的示出了基于任务型会话管理框架执行任务的流程图,如图3所示,包括以下步骤:
S310,任务执行引擎接收会话任务(session),并加载与该会话任务对应的计算图。例如,用户输入的导航路线任务等。其中,该计算图是一个有向无环图(DAG)采用具有通用性的有向无环图(DAG)作为计算图的形式。将外部信号,用户输入等作为输入节点,任务目标作为输出节点来构建任务计算图。同时,系统交互动作作为各步骤执行过程中的产出。
S320,在所述任务执行引擎执行所述会话任务之前,所述任务管理模块确认是否有当前的会话任务。会话由会话ID(session_id)、会话计数session_counter和会话内容(session_content)组成。会话计数逐轮增加。会话内容记录未完成目标节点和各域状态信息。
当确定若无,则执行S330,新建所述当前的会话任务,并对新建的所述会话任务进行维护更新。
若有,则执行S340,读取已有的会话任务中的任务状态。
S350,更新会话计数。
S360,任务执行引擎按照正向顺序执行每个步骤。其中步骤的类型可以包括update(根据用户输入更新节点)、search(调用各种查询/搜索接口)、recommend(交互并进行推荐)、select(从列表中选择)、predict(预测节点值)、execute(各种功能的执行)和route(节点值的选取)。其中,各步骤中的功能不限定实现方式,可以是调用外部接口来实现,也可以是由规则逻辑实现,或是用各类机器学习,深度学习的模型算法来实现。例如:update包含的对话状态追踪(DST)能力可以由规则映射来实现,也可以由一个基于深度学习的DST模型来实现。recommend包含的推荐能力可以由简单的调用推荐引擎来实现,也可以由基于深度学习的交互式推荐模型来强化推荐功能。
若输入节点的计数(counter)最大值大于输出节点的计数最大值,或输入节点有输入,输出节点中有输出时,则需执行与这些节点关联步骤的forward函数,反之则跳过执行。若有输出,更新输出Node的counter,更新至节点队列用于继承。若有系统动作action输出,将action加入action输出队列。
判断所需输出的目标节点是否完成,若否,标上未满足标识。
若步骤关联的输出节点未满足要求,则执行后向计算,即执行backward函数;反之跳过。Backward函数执行过程中,调整未满足的输出节点值或标识未满足的输入节点,同时可能输出系统动作action,例如询问/澄清/确认等交互动作。
S370,汇总在运行每一个步骤时产生的系统动作输出。
参考图4,图4示例性的示出了本发明一个实施例的导航任务的计算图。
该计算图中包括各个步骤和每一个步骤关联的状态节点,其中,矩形框代表步骤,圆形代表状态节点,菱形代表输出。如图4所示,状态节点分为输入节点410,一般包括用户输入及其它信号输入,和上一轮的指定状态输入等。输出节点420,也即目标节点(goal)。是系统当前要为用户执行的任务。以及处于输入节点和输出节点之间的中间状态节点430,是执行任务过程中产生以及依赖的信息。任务执行引擎在执行会话任务时按照计算图中的各步骤进行运算。例如,基于当前的输入节点的场景信号,如用户的车辆在某一地点。基于该场景信号的输入,执行更新步骤,得到当前的位置。若当前的状态节点是当前路线,基于当前路线执行查询步骤,查询后得到待选择的路线,在经过路由、展示以及与这些步骤关联的选择路径和焦点路径等中间状态节点,最终输出路线并展示给用户。在这个过程中系统动作可能会输出供用户选择的路线。例如“为您选择了最快的路线,您要走哪条路线”等。从而便于猜到用户的意图,为用户提供更多的方便。
在一些实施例中,系统动作输出还可以是如图4所示的“正在搜索虹桥站,你要去什么菜系的饭店,你要导航去哪里”,“附近找到这些景点”“为你选择虹桥火车站,你要去你常去的肯德基吗你要去A还是B”,“去年我们去过那里”,“找到多条路线”,“开始导航”“还有十分钟到”等等。
根据本发明实施例的管理框架可以实现丰富的交互流程可能性,来满足用户自由交互的需求,系统交互动作作为各步骤执行过程中的产出。任务与核心的任务执行引擎和任务管理模块无关联可以解耦任务,使得开发者可以集中开发任务计算图的设计和任务各步骤的实现上,便于开发。并且一些步骤可以通用,提高了资源利用率。
参考图5,图5示例性示出了任务型对话管理的结构示意图,包括:
任务管理模块510,用于维护每一次会话任务的任务状态,并记录所述任务状态,所述任务状态包括所述会话任务中各状态节点的当前状态;
任务执行引擎520,用于获取所述会话任务的计算图和所述任务状态,并运行所述计算图,所述任务执行引擎包括:
加载模块521,用于在当前会话中,根据所述会话任务加载所述会话任务的计算图,所述计算图中包括完成所述会话任务的步骤和与所述步骤关联的所述状态节点,所述状态节点包括输入节点和输出节点;
计算模块522,用于确定出所述输入节点和所述输出节点,根据所述输入节点对所述计算图中的所述步骤执行前向计算和后向计算,以更新所述输出节点;
汇总模块523,用于汇总所述计算模块在运行每一个所述步骤时产生的系统动作输出。
本发明的电子设备的各模块的工作过程及作用,在上述实施例中,已经详细的说明,具体可参见上述实施例图1-图4的描述,此处不再赘述。
参考图6,本申请还提供了一种电子设备,包括:
存储器610,用于存储由设备的一个或多个处理器执行的指令,以及
处理器620,用于执行上述实施例图1-图4描述的任务型对话管理框架执行方法。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器运行时,使得处理器执行上述实施例图1-图4描述的任务型对话管理框架执行方法。
现在参考图7,所示为根据本申请的一个实施例的设备1200的框图。设备1200可以包括耦合到控制器中枢1203的一个或多个处理器1201。对于至少一个实施例,控制器中枢1203经由诸如前端总线(Front Side Bus,FSB)之类的多分支总线、诸如快速通道互连(Quick Path Interconnect,QPI)之类的点对点接口、或者类似的连接1206与处理器1201进行通信。处理器1201执行控制一般类型的数据处理操作的指令。在一实施例中,控制器中枢1203包括,但不局限于,图形存储器控制器中枢(Graphics Memory Controller Hub,GMCH)(未示出)和输入/输出中枢(Input Output Hub,IOH)(其可以在分开的芯片上)(未示出),其中GMCH包括存储器和图形控制器并与IOH耦合。
设备1200还可包括耦合到控制器中枢1203的协处理器1202和存储器1204。或者,存储器和GMCH中的一个或两者可以被集成在处理器内(如本申请中所描述的),存储器1204和协处理器1202直接耦合到处理器1201以及控制器中枢1203,控制器中枢1203与IOH处于单个芯片中。存储器1204可以是例如动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、相变存储器(Phase Change Memory,PCM)或这两者的组合。在一个实施例中,协处理器1202是专用处理器,诸如例如高吞吐量MIC处理器(Many Integerated Core,MIC)、网络或通信处理器、压缩引擎、图形处理器、通用图形处理器(General PurposeComputing on GPU,GPGPU)、或嵌入式处理器等等。协处理器1202的任选性质用虚线表示在图7中。
存储器1204作为计算机可读存储介质,可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。例如,存储器1204可以包括闪存等任何合适的非易失性存储器和/或任何合适的非易失性存储设备,例如一个或多个硬盘驱动器(Hard-Disk Drive,HDD(s)),一个或多个光盘(Compact Disc,CD)驱动器,和/或一个或多个数字通用光盘(Digital Versatile Disc,DVD)驱动器。
在一个实施例中,设备1200可以进一步包括网络接口(Network InterfaceController,NIC)1206。网络接口1206可以包括收发器,用于为设备1200提供无线电接口,进而与任何其他合适的设备(如前端模块,天线等)进行通信。在各种实施例中,网络接口1206可以与设备1200的其他组件集成。网络接口1206可以实现上述实施例中的通信单元的功能。
设备1200可以进一步包括输入/输出(Input/Output,I/O)设备1205。I/O 1205可以包括:用户界面,该设计使得用户能够与设备1200进行交互;外围组件接口的设计使得外围组件也能够与设备1200交互;和/或传感器设计用于确定与设备1200相关的环境条件和/或位置信息。
值得注意的是,图7仅是示例性的。即虽然图7中示出了设备1200包括处理器1201、控制器中枢1203、存储器1204等多个器件,但是,在实际的应用中,使用本申请各方法的设备,可以仅包括设备1200各器件中的一部分器件,例如,可以仅包含处理器1201和NIC1206。图7中可选器件的性质用虚线示出。
根据本申请的一些实施例,作为计算机可读存储介质的存储器1204上存储有指令,该指令在计算机上执行时使系统1200执行根据上述实施例中的计算方法,具体可参照上述实施例图1-图4描述的任务型对话管理框架执行方法,在此不再赘述。
现在参考图8,所示为根据本申请的一实施例的SoC(System on Chip,片上系统)1300的框图。在图8中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图8中,SoC1300包括:互连单元1350,其被耦合至应用处理器1310;系统代理单元1380;总线控制器单元1390;集成存储器控制器单元1340;一组或一个或多个协处理器1320,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(Static Random Access Memory,SRAM)单元1330;直接存储器存取(DMA)单元1360。在一个实施例中,协处理器1320包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等。
静态随机存取存储器(SRAM)单元1330中可以包括用于存储数据和/或指令的一个或多个计算机可读介质。计算机可读存储介质中可以存储有指令,具体而言,存储有该指令的暂时和永久副本。该指令可以包括:由处理器中的至少一个单元执行时使Soc1300执行根据上述实施例中的计算方法,具体可参照上述实施例图1-图4描述的任务型对话管理框架执行方法,在此不再赘述。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、光盘只读存储器(Compact Disc Read Only Memory,CD-ROMs)、磁光盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically ErasableProgrammable Read Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。