对话状态生成方法和装置与流程

文档序号:21820583发布日期:2020-08-11 21:36阅读:256来源:国知局
对话状态生成方法和装置与流程

本发明属于智能对话技术领域,尤其涉及对话状态生成方法和装置。



背景技术:

现有技术中,fjst:flatjointstatetracker单调联合状态追踪器,使用一个双向lstm网络去编码对话历史,并且用一个单独的ffn(feedforwardnetwork,前馈神经网络)来预测每个插槽的取值。

hjst:hierarchicaljointstatetracker层级联合状态追踪器,像fjst一样使用一个lstm来编码对话历史,不同点在于使用的是一个分级结构。

sumbt:slot-utterancematchingbelieftracker插槽-对话对应信念追踪器,使用bert作文编码器来编码对话文本和<插槽,取值>元组,之后根据对话文本与备选的<插槽,取值>元组之间的距离来为每个取值打分,最后选取得分最高的取值赋给对应的插槽。

hyst:hybridstatetracker混合状态追踪器,使用了层级化的rnn,针对“本体集合固定”和“本体集合可扩展”两种不同的设定做了融合。

dst-reader:dialoguestatetracking-reader对话状态追踪阅读器,从阅读理解任务的角度建模了对话状态追踪任务,在文本中找到对应取值在对话文本中的起始位置。

dst-span:dialoguestatetracking-span对话状态追踪跨度,像dst-reader一样,将所有的<领域,插槽>元组看成扩展后的插槽,不同的地方在于使用了预训练过的bert作为编码器。

dst-picklist:dialoguestatetracking-picklist对话状态追踪选择表,类似于sumbt,预先定义了一个基于选择列表的插槽,用于分类哪些插槽出现过,并且使用了预训练的bert进行编码,此方法依赖于预先定义好的本体集合。

ds-dst:dual-strategydialoguestatetracker双策略对话状态追踪器,与hyst类似,是一个融合了dst-span和dst-picklist的系统。dstqa:将多领域对话状态追踪任务使用问答任务进行建模,针对每一个<领域,插槽>元组生成一个询问取值的问题。

trade:transferabledialoguestategenerator可转移对话状态生成器,使用了一个插槽门模型对每个插槽进行分类,并且使用一个使用了指针的生成器去生成对话状态。

comer:conditionalmemoryrelationnetwork条件性记忆关系网络。使用了一个层级化的解码器去生成当前的对话状态,将对话状态作为目标序列。

发明人在实现本申请的过程中发现,上述技术依靠自然语言理解技术提取的语义来预测当前的对话状态,或是通过端到端的方式共同学习。但严重依赖于手工制作的特征和复杂的领域特定词汇来进行去词表化,很难扩展到新的领域。同时,之前的技术并没有明确地考虑插槽间的关系,而是独立地预测每个插槽的取值,忽略了数据稀疏性的问题。



技术实现要素:

本发明实施例提供一种对话状态生成方法及装置,用于至少解决上述技术问题之一。

第一方面,本发明实施例提供一种对话状态生成方法,包括:构建插槽、领域和<领域,插槽>元组之间的模式图;对历史对话状态和对话文本分别进行编码,其中,所述历史对话状态有多个<领域,插槽,取值>三元组构成;将所述模式图、编码后的历史对话状态和编码后的对话文本输入至融合网络;分别获取所述融合网络输出的对应于所述模式图的领域隐藏向量、插槽隐藏向量和<领域,插槽>元组隐藏向量,对应于所述编码后的历史对话状态的历史对话状态隐藏向量,以及对应于所述编码后的对话文本的对话文本隐藏向量;将所述领域隐藏向量、所述插槽隐藏向量和所述<领域,插槽>元组隐藏向量输入至插槽门分类器,获取所述插槽门分类器的第一输出;将所述历史对话状态隐藏向量和所述对话文本隐藏向量输入至取值解码器,获取所述取值解码器的第二输出;以及将所述第一输出和所述第二输出进行结合生成当前轮的对话状态。

第四方面,本发明实施例提供一种对话状态生成装置,包括:模式图构建单元,配置为构建插槽、领域和<领域,插槽>元组之间的模式图;编码单元,配置为对历史对话状态和对话文本分别进行编码,其中,所述历史对话状态有多个<领域,插槽,取值>三元组构成;输入融合单元,配置为将所述模式图、编码后的历史对话状态和编码后的对话文本输入至融合网络;输出单元,配置为分别获取所述融合网络输出的对应于所述模式图的领域隐藏向量、插槽隐藏向量和<领域,插槽>元组隐藏向量,对应于所述编码后的历史对话状态的历史对话状态隐藏向量,以及对应于所述编码后的对话文本的对话文本隐藏向量;插槽门分类单元,配置为将所述领域隐藏向量、所述插槽隐藏向量和所述<领域,插槽>元组隐藏向量输入至插槽门分类器,获取所述插槽门分类器的第一输出;取值解码单元,配置为将所述历史对话状态隐藏向量和所述对话文本隐藏向量输入至取值解码器,获取所述取值解码器的第二输出;以及结合单元,配置为将所述第一输出和所述第二输出进行结合生成当前轮的对话状态。

第三方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例的对话状态生成方法的步骤。

第四方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行本发明任一实施例的对话状态生成方法的步骤。

本申请的方法和装置提供的方案,直观上,在对话状态追踪任务的公认性能评判准则下达到了目前最好的效果。进一步的,本申请实施例提出的使用模式图嵌入知识的方法对这一任务的性能提升起了关键且具有创新意义的作用。最后,我们这一方法在保证性能最佳的同时,将计算损耗降到了最低。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的一种对话状态生成方法的流程图;

图2为本发明一实施例提供的一种对话状态生成方法的一具体实施例的流程图;

图3为本发明一实施例提供的一具体实施例的模式图;

图4为本发明一实施例提供的一具体实施例的结构图;

图5为本发明一实施例提供的一种对话状态生成装置的框图;

图6是本发明一实施例提供的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,其示出了本申请的对话状态生成方法一实施例的流程图,本实施例的对话状态生成方法可以适用于判断当前对话状态,本申请在此没有限制。

如图1所示,在步骤101中,构建插槽、领域和<领域,插槽>元组之间的模式图;

在步骤102中,对历史对话状态和对话文本分别进行编码,其中,所述历史对话状态有多个<领域,插槽,取值>三元组构成;

在步骤103中,将所述模式图、编码后的历史对话状态和编码后的对话文本输入至融合网络;

在步骤104中,分别获取所述融合网络输出的对应于所述模式图的领域隐藏向量、插槽隐藏向量和<领域,插槽>元组隐藏向量,对应于所述编码后的历史对话状态的历史对话状态隐藏向量,以及对应于所述编码后的对话文本的对话文本隐藏向量;

在步骤105中,将所述领域隐藏向量、所述插槽隐藏向量和所述<领域,插槽>元组隐藏向量输入至插槽门分类器,获取所述插槽门分类器的第一输出;

在步骤106中,将所述历史对话状态隐藏向量和所述对话文本隐藏向量输入至取值解码器,获取所述取值解码器的第二输出;

在步骤107中,将所述第一输出和所述第二输出进行结合生成当前轮的对话状态。

本申请的方法和装置提供的方案,直观上,在对话状态追踪任务的公认性能评判准则下达到了目前最好的效果。进一步的,本申请实施例提出的使用模式图嵌入知识的方法对这一任务的性能提升起了关键且具有创新意义的作用。最后,我们这一方法在保证性能最佳的同时,将计算损耗降到了最低。

在一些可选的实施例中,所述构建插槽、领域和<领域,插槽>元组之间的模式图包括:将每一领域与其他领域之间互连;将每一领域与所述每一领域下的所有插槽互连;将具有共用取值的插槽互连;将每一<领域,插槽>元组所包含的领域和插槽互连;基于以上互连构建插槽、领域和<领域,插槽>元组之间的模式图。通过将领域之间互连,领域与插槽互连,<领域,插槽>元组所包含的领域和插槽互连,从而可以构建插槽、领域和<领域,插槽>元组之间的模式图。

在一些可选的实施例中,所述将所述领域隐藏向量、所述插槽隐藏向量和所述<领域,插槽>元组隐藏向量输入至插槽门分类器,获取所述插槽们分类器的第一输出包括:经由所述插槽门分类器对所述模式图中每个<领域,插槽>元组所对应的隐藏向量进行三分类,形成<领域,插槽,取值>三元组,其中,三分类的结果对应不同的取值。

进一步可选的,所述三分类的结果对应的取值包括none,dontcare和ptr。

进一步可选的,将所述历史对话状态隐藏向量和所述对话文本隐藏向量输入至取值解码器,获取所述取值解码器的第二输出包括:经由所述取值解码器根据所述历史对话状态隐藏向量和所述对话文本隐藏向量使用带有拷贝机制的rnn去解码;给每一<领域,插槽>生成对应的取值,其中,解码rnn的初始隐藏状态为当前需要生成取值的<领域,插槽>元组对应的隐藏向量。

在进一步可选的实施例中,所述将所述第一输出和所述第二输出进行结合生成当前轮的对话状态包括:若所述取值为none,则所述<领域,插槽>元组对应的<领域,插槽,取值>三元组不会出现在所述当前轮的对话状态中,并且丢弃所述取值解码器的结果;若所述取值为dontcare,则所述<领域,插槽,取值>三元组中的取值为don’tcare,丢弃所述取值解码器的结果,将所述<领域,插槽,取值>三元组记录至所述当前轮的对话状态;以及若所述取值为ptr,则所述<领域,插槽,取值>三元组中的取值由所述取值解码器的结果决定,将所述<领域,插槽,取值>三元组记录至所述当前轮的对话状态中。从而根据插槽门分类器三分类结果的取值的不同,最后与取值解码器的结合也不同,得到的最后结合的结果也不同,从而最终生成的当前轮的对话状态也不同。

进一步可选的,所述模式图、编码后的历史对话状态和编码后的对话文本均由对应的词向量、分块向量和位置向量求和得到。

下面对通过描述发明人在实现本发明的过程中遇到的一些问题和对最终确定的方案的一个具体实施例进行说明,以使本领域技术人员更好地理解本申请的方案。

发明人在实现本申请的过程中发现,现有技术中存在的缺陷主要是由于现有技术中的方案都是独立地预测每个槽值的取值。

发明人还发现,本领域技术人员如果要解决上述缺陷,通常会采用数据增强的方法来增大数据量,以此提高数据空间的覆盖率;在我们的方案中采用的是通过缩小数据空间的方法来增大数据覆盖率,以此缓解数据稀疏性的问题。

本申请实施例的方案使用了图神经网络来编码插槽、领域和<领域,插槽>元组之间的依存关系,并使用融合网络,将知识、历史对话状态和对话文本融合起来以达到知识嵌入的目的,同时在预测当前对话状态的时候可以从对话文本和历史对话状态两个不同的成分中生成或拷贝出来。

其中,模型的输入由三部分构成——模式图,历史对话状态和对话文本,每一部分,由词向量(结构图中的tokenembedding和nodeembedding)、分块向量(结构图中的segmentembedding)和位置向量(结构图中的positionembedding)求和得到。

流程图如图2所示,对话状态由若干个<领域,插槽,取值>三元组构成,我们要针对所有的<领域,插槽>元组,得到其对应的取值。

1、模式图(如图3所示),本质是一个图神经网络,用来编码插槽(标“1”的点,如starts、area)、领域(标“2”的点,如taxi、hotel)和<领域,插槽>元组(标“3”的点,如hotel-area、restaurant-area)之间的关系。模式图的构建遵循以下几条原则:

(1)领域与领域之间互连

(2)对每个领域,其与其下所有的插槽互连

(3)如果两个插槽的取值可以共用则两者互连(如destination和departure的取值都可以是某个地址,则两者需要互连)

(4)每个<领域,插槽>元组与所含的领域和插槽互连领域、插槽和<领域,插槽>元组分别使用三个不同的分块向量,不使用位置向量。

2、历史对话状态编码,对话状态由若干个<领域,插槽,取值>三元组构成,每个三元组都可以写成形如“领域-插槽-取值”的词序列,同样使用图神经网络去编码,每个三元组词序列中每个词互连,且每个词都要与一个公用的通信节点(图中的[cls])相连。通信节点和其他节点使用不同的分块向量,每个三元组的位置向量相互独立(如图3所示)。

3、由通信节点([cls])、系统回应文本和用户回应文本构成的词序列,三者分别使用不同的分块向量,位置统一编码。

之后使用融合网络(结构图4中的contextandschemafusionnetworks)将三者融合,融合后,每个输入的元素都有对应的隐藏向量(即流程图中的黑色虚线所框住的部分两侧的向量是一一对应的),输出由插槽门分类器和取值解码器构成。

1、插槽门分类器(结构图4中的slot-gateclassifier)针对模式图中每个<领域,插槽>元组所对应的隐藏向量,进行三分类,判断其对应的取值是none,dontcare和ptr中的哪一个。若为none则该元组对应的<领域,插槽,取值>三元组不会出现在当前的对话状态中,忽略取值解码器的结果。若为dontcare,则对应的<领域,插槽,取值>三元组中的取值为don’tcare,忽略取值解码器的结果,该三元组会被记录到当前的对话状态。若为ptr则对应的<领域,插槽,取值>三元组中的取值由取值解码器的结果决定,该三元组会被记录到当前的对话状态中。

2、取值解码器(结构图中的rnn-basedvaluedecoder)根据历史对话状态和对话文本对应的隐藏向量使用带有拷贝机制的rnn去解码,给每个<领域,插槽>生成对应的取值,解码rnn的初始隐藏状态为当前需要生成取值的<领域,插槽>元组对应的隐藏向量。

最后,结合插槽门分类器和取值解码器的结果得到当前轮的对话状态。

发明人在实现本申请的过程中,还尝试过以下方案:

1、尝试了在取值解码器中只使用历史对话状态的隐藏向量和只使用对话文本的隐藏向量两种方案,效果不佳,原因在于对话状态由两部分构成——历史的和更新的,历史的只能从历史对话状态中拷贝得到,更新的只能从对话文本中得到,即便用了融合网络做了信息融合,也很难保证信息的损失。

2、尝试了使用全连接的模式图和全不连接的模式图,效果略差,原因在于全联接的模式图虽然包含了当前所使用的模式图,但冗余信息太多,全不连接的模式图本质上和其他现有技术的做法是一致的,没有缓解数据稀疏性的问题。

在对话文本的输入中还尝试了使用同时使用当前轮和上一轮的对话文本,效果没有明显的优势或者劣势,但是由于输入序列长度的增加,消耗了更多的计算资源。

本申请实施例提供的技术方案能够实现的有益效果:

直观上,我们的技术在对话状态追踪任务的公认性能评判准则下达到了目前最好的效果。进一步的,我们提出的使用模式图嵌入知识的方法对这一任务的性能提升起了关键且具有创新意义的作用。最后,我们这一方法在保证性能最佳的同时,将计算损耗降到了最低。

以下通过分析和实验的过程与结果解析本申请的技术方案,以使本领域技术人员能够更好地理解本申请的方案。

用于多域对话状态跟踪的高效上下文和模式融合网络

对话状态跟踪(dst,dialoguestatetracking)之前是在已知所有对话的情况下,对当前对话状态进行预测。对于多域dst,由于状态候选的数量和对话长度的增加,数据稀疏性问题成为了一个主要障碍。为了有效地对对话上下文进行编码,我们建议使用之前的对话状态(预测的)和当前的对话话语作为dst的输入。为了考虑不同领域与插槽之间的关系,利用了涉及领域知识的模式图。本文提出了一种新的上下文和模式图融合网络,通过内部和外部注意机制对对话上下文和模式图进行编码。实验结果表明,我们的方法可以在multiwoz2.0和multiwoz2.1基准上获得最佳的开放本体集的dst性能。

介绍

对话状态跟踪(dst,dialoguestatetracking)是面向任务的对话系统的关键组件,该系统涵盖某些垂直领域,例如预订酒店和旅行计划。作为一种上下文感知的语言理解任务,dst旨在提取隐藏在人机对话中的用户目标或意图,并将其表示为紧凑的对话状态,即一组插槽及其相应的值。例如,如图1所示,从对话框中提取(名称,“亨廷顿万豪酒店”)等(位置,值)对。建立用于对话管理的高质量dst是至关重要的,因为对话状态决定了下一个机器动作和反馈。

最近,受商业对话系统的迅猛发展的推动,多域dst对于帮助跨域用户至关重要。如图1所示,对话框涵盖三个域。此外,开放本体集、可扩展的dst也引起了越来越多的研究兴趣,即每个插槽的候选值都没有预先定义,这使得该系统在实际场景中可行。

(1)多域dst:大多数传统的状态跟踪方法都集中在单个域上,提取域中每个槽的值。通过将单个域中的域替换为域-插槽对(即域特定的插槽),它们可以直接适应多/混合域对话。尽管它很简单,但是这种用于多域dst的方法会独立地为每个域插槽提取值,这可能无法从插槽共现捕获特征。例如,星级较高的酒店通常更昂贵(价格范围)。

(2)开放本体集的dst:没有预先定义的本体,提出了一些方法来使用编码器-解码器体系结构或指针网络从对话上下文中为所有插槽生成或提取值。它们可以提高针对看不见的槽值的可伸缩性和鲁棒性,而它们中的大多数在上下文编码中效率不高,因为它们会编码所有之前的讲话会话对话。值得注意的是,多域对话可能涉及很长的历史,例如multiwoz数据集平均每个对话包含约13个回合。

在这项工作中,我们专注于没有预先定义的本体的多域dst。为了解决由于域-插槽对数量和对话轮次数量增加而导致的数据稀疏性问题,我们强调dst模型应合并域-插槽关系并有效地进行上下文编码。1)为了考虑域和插槽之间的关系,我们引入了包含域,插槽,域-插槽节点及其关系的模式图。它缺乏先验知识,可以帮助减轻数据不平衡问题。2)为了有效地对对话上下文进行编码,我们尝试从之前的对话状态和当前轮对话话语中获取上下文表示。在本文中,我们提出了具有上下文和模式融合网络(csfn-dst)的多域对话状态跟踪器。利用融合网络通过内部和外部注意机制同时编码之前的对话状态、当前轮对话和模式图。插槽门控分类器和基于rnn的值解码器利用每个域-插槽节点的最终表示来预测相应的值,这是上下文感知和模式感知的。我们提出的csfn-dst在multiwoz2.0和multiwoz2.1基准上进行了评估。对每个组件的消融研究进一步表明,上下文和图式都是必不可少的。这项工作的贡献概括为:

·我们是第一个利用之前对话状态和当前话语(即一轮)进行无上下文dst的人,从而可以进行有效的状态跟踪。

·为了完全编码模式图和对话上下文,引入了具有内部和外部注意机制的融合网络。

·实验结果表明,我们的方法可以在multiwoz2.0(51.57%)和multiwoz2.1(52.29%)上实现开放本体集的dst的最新技术性能(联合目标精度)。

2相关工作

传统的对话状态跟踪模型依靠自然语言理解提取的语义来预测当前的对话状态,或以端到端的方式共同学习语言理解。这些方法严重依赖手工制作的特征和复杂的领域特定词典来进行去词汇化,这很难扩展到新领域。最近,大多数有关dst的工作都集中在使用深度神经网络(例如cnn,rnn,lstm-rnn等)编码对话上下文,并预测每个可能的插槽的值。对于多域dst,将插槽-值对扩展为目标的域-插槽-值对。但是,它们没有明确考虑插槽关系,而是独立预测每个插槽的值,这可以缓解数据稀疏性问题。具有预先定义的本体的dst大多数之前的工作都假设预先提供了预先定义的本体,即,每个域的所有插槽及其值都是已知的。具有预先定义的本体的dst可以简化为每个时段的值分类任务。但是,这些方法可能不适用于实际情况。由于很难获得完整的本体,即使存在完整的本体,可能的插槽值的数量也可能是巨大且可变的(例如歌曲名称)。开放本体集的dst没有预先定义的固定本体,有些作品选择通过使用编码器-解码器体系结构或指针网络直接从对话上下文中为每个插槽生成或提取值。这些方法可以提高针对未知插槽值的可伸缩性和鲁棒性,而大多数方法在上下文编码中效率不高,因为它们会在每个对话回合中对所有之前的话语进行编码。特别是,多域对话可能涉及很长的历史。图神经网络最近,对于图的表示学习的图神经网络(gnn)方法引起了人们的兴趣。他们可以聚合来自图结构的信息并编码节点特征,可以利用它们学习推理和引入无序结构信息。提出了许多gnn变量,并且还应用了各种nlp任务,例如文本分类,机器翻译,对话策略优化。我们引入多头注意力和融合网络可对模式图进行编码。

3问题定义

在多域对话状态跟踪问题中,我们假设涉及n个域(例如出租车,旅馆),包括在每个域中的插槽被表示为集合因此,总共有j个可能的域插槽对,即,由于不同的域可能包含相同的插槽,因此我们将所有不同的m个插槽都表示为其中m<j。对话可以正式表示为{(a1,u1,b1),(a2,u2,(b2),··,(at,ut,bt)},其中at是代理在第t轮说的话,ut是在t轮的用户话语,而bt表示相应的对话状态。at和ut是单词序列,而bt是一组领域与插槽值三元组,例如(酒店,价格范围,价格昂贵)。值vj是第j个域插槽对的真字序列。dst的目标是在给定对话历史记录的情况下正确预测每个域插槽对的值。以前的大多数作品都选择将对话历史中的所有单词[a1,u1,a2,u2,···,at,ut]串联起来作为输入。但是,这可能导致增加的计算时间。在这项工作中,我们建议仅利用当前的对话转数at,ut和之前的对话状态bt-1来预测新状态bt。在训练期间,我们使用bt-1的真实标注,而之前的预测对话状态将用于推理阶段。

图3示出了模式图。图中示出了插槽(标“1”的点,如starts、area)、领域(标“2”的点,如taxi、hotel)和<领域,插槽>元组(标“3”的点,如hotel-area、restaurant-area)之间的关系。

模式图

为了考虑不同的领域与插槽对之间的关系(可以将其表示为模式图),我们建议将模式图作为附加输入合并以指导上下文编码。在图中,存在三种节点来表示所有域d,插槽s和域插槽对[ds]={[ds]1,[ds]2,···,[ds]j},即n个域节点,m个插槽节点和j个域插槽节点。图2显示了一个示例。除了域节点彼此链接之外,在三种情况下可以包括不同节点之间的边缘:

1.如果,我们在插槽sm和域dn节点之间添加一条边缘。

2.如果一个域插槽对由域dn和插槽sm组成,则从dn和sm到该域插槽节点分别有两个边。

3.如果两个不同插槽的候选值将重叠,则它们之间也存在边,例如目的地和出发点。

4多域dst的上下文和架构融合网络

在本节中,我们将介绍用于多域dst的方法,该方法通过融合网络对当前对话轮次(at和ut),之前对话状态bt-1和模式图g进行编码。之后,我们可以获得所有j域插槽对的上下文感知和模式感知节点嵌入。最后,利用插槽门分类器和基于rnn的值解码器为每个域插槽对提取值。图3示出了csfn-dst的概况。为了描述建议的csfn-dst,我们正式定义输入和输出,如下所示。

图3:建议的csfn-dst的概述。它以模式图,当前对话话语和之前对话状态作为输入,并预测当前对话状态。它由嵌入层,上下文和模式融合网络,插槽门分类器和基于rnn的值解码器组成。

对话话语

我们将第t轮对话话语表示为一个联合序列,其中[cls]和[sep]是分离的特殊标记,是序列级联的操作。由于[cls]旨在捕获序列嵌入,因此它与其他标记具有不同的段类型。xt的输入嵌入是词嵌入,分段嵌入和位置嵌入的总和,如图3所示。之前的对话状态如前所述,对话状态是一个领域-插槽-值的三元组集合,每个元组具有一个提及的值(不是none)。因此,我们将之前的对话状态表示为其中k是bt-1中的三元组数。每个三元组d-s-v表示为一个子序列,即域和插槽名称被标记,例如,价格范围被替换为“价格范围”。表示为词序列的值。对于特殊价值的dontcare,这意味着用户不在乎该值,将其替换为“不关心”。bt-1的输入嵌入也是词,分段和位置嵌入的总和。由于三元组的集合不是连续的,因此将重新枚举不同三元组的位置。模式图如前所述,模式图由n个域节点,m个插槽节点和j个域插槽节点组成。排列为通过对域/插槽/域插槽中词的平均嵌入来初始化节点嵌入。图中省略了位置嵌入。图的边缘表示为矩阵,其项为1或0,将在融合网络中使用。为了强调不同类型节点之间的边缘在计算中可能有所不同,我们利用节点类型来获取段嵌入。状态预测下一个对话状态bt是dst的目标。状态预测分为两个阶段:1)我们首先为每个域-插槽节点应用一个插槽门分类器。分类器在{none,dontcare,ptr}中做出决定,其中none表示此时未提及域-插槽对,dontcare表示用户可以接受此插槽的任何值,而ptr表示该插槽应由模型使用实际值处理。2)对于标有ptr的域插槽对,我们进一步引入了基于rnn的值解码器以生成其值的词序列。

4.1多头注意力

在描述融合网络之前,我们首先介绍多头注意力,这是一个基本模块。多头注意力可以描述为将查询和一组键值对映射到输出,其中查询,键,值和输出都是向量。将输出计算为值的加权总和,其中分配给每个值的权重是通过查询与相应键的兼容性函数来计算的。假设存在向量y={y1,···,y|y|}的源序列,即y∈r|y|×dm,向量z={z1,···,z|的目标序列z|},即z∈r|z|×dm。对于每个向量yi,我们可以通过以下方式计算yi在z上的注意力向量oi:

其中wqh∈rdm×dk,wkh∈rdm×dk,wvh∈rdm×dk,wo∈rdm×dm是线性投影的参数矩阵,而h是头数,即dm=dk*h。我们可以为每个yi计算oi并获得输出矩阵o∈r|y|×dm。整个过程表示为映射mhθ:

o=mult1headθ(y,z),(5)

4.2基于图的多头注意力

为了将多头注意应用于图,图邻接矩阵a∈r|y|×|z|用于掩盖不相关的节点/词。因此,等式(4)更改为:

并且等式(5)修改为:

o=graphmultiheadθ(y,z,a)(6)

等式(5)可以视为等式(6)的特例,其中,该图是完全连接的,即a=1。

4.3上下文和架构融合网络

上下文和架构融合网络(csfn)用于计算xt,bt-1和g中词或节点的隐藏状态。令分别表示xt,bt-1和g在i层的隐藏状态,其中|.|获取词或节点号。第0层的隐藏状态是输入嵌入。对于csfn的每一层,它都由内部和外部注意力组成,以合并不同类型的输入:

第i层对话语音xt的隐藏状态更新如下:

其中ln(.)是层归一化函数,ffn(x)是一个前馈神经网络函数,它具有两个线性变换,并且两者之间具有relu激活。

ffn(x)=max(0,xw1+b1)w2+b2

类似地,第i层的模式图g的隐藏状态更新如下:

其中ag为模式图的邻接矩阵。最后,在第i层的之前对话状态bt-1的隐藏状态更新如下:

其中是之前对话状态的邻接矩阵。邻接矩阵表示bt-1中的每个三元组是分开的,而不对称的词彼此相连。[cls]词与所有三元组相连,作为传输节点进行服务器处理。在lcsfn层之后,我们具有顶部隐藏状态

4.4插槽门分类

我们利用g中的第j个域插槽节点的拓扑向量进行插槽门分类,并且在轮次t处第j个域插槽对的概率计算如下:

其中获得具有相应索引的行向量。插槽门分类的损失为

其中在轮次处第j个领域与插槽对的单热门标签。

4.5基于rnn的取值解码器

在对槽口门进行分类之后,有标记为ptr类的j’领域与插槽对表示领域与插槽应取实值。它们表示为而j’=|ct|。

我们使用门控循环单元(gru)解码器。gru初始化为通过将词嵌入作为输入直到生成[eos]词,来递归更新隐藏状态

值生成器将隐藏状态转换为概率分布在第k个步骤中查看词汇表。

其中是在编码器和解码器之间共享的词嵌入矩阵。att(.,.)是一个获取注意力权重的函数,更多详细信息,请参见附录b。我们使用软拷贝机制来获取所有候选词的最终输出分布:

其中是上下文向量,是可训练参数。

取值解码器的损失函数为

其中是在第k步的第j个领域与插槽对的one-hot词标签。在训练过程中,可以通过以下不同损失的总和来联合训练和优化上述模块:

5实验

5.1数据集

我们使用multiwoz2.0和multiwoz2.1来评估我们的方法。multiwoz2.0是一个面向任务的数据集,涵盖了七个领域的人与人之间的书面对话,由10348个多回合对话组成。multiwoz2.1是multiwoz2.0的修订版,它使用一组不同的内部注释器和规范的实体名称进行了重新注释。根据其他研究员的工作,大约32%的状态注释已得到纠正,从而抵消了噪声的影响。请注意,医院和警察被排除在外,因为它们以非常低的频率出现在训练集中,甚至没有出现在测试集中。为此,实验中涉及了五个域(餐厅,火车,酒店,出租车,景点),具有17个不同的插槽和30个域插槽对。附录a中显示了multiwoz2.1的详细统计信息。

5.2实验设置

我们将csfn的隐藏大小dm设置为400,带有4个注意力头,通过将glove嵌入和字符嵌入串联来初始化具有400维的词嵌入。我们在{4,5,6,7,8}上进行网格搜索,以获取验证集中csfn的层号。我们使用的批处理大小为32。使用adam对dst模型进行训练,学习率为1e-4。

表1:在multiwoz2.0和multiwoz2.1的测试集上的联合目标精度(%)。使用bert意味着使用了带有上下文词嵌入的预训练bert模型。

在训练期间,我们使用之前对话状态的基本事实和基本事实值标记。在推论中,应用了前一轮的预测对话状态,并且在值解码器的解码过程中使用了贪婪搜索策略。

5.3基准模型

我们与以下现有模型进行了比较,它们既是基于预定义固定本体的,又是开发本体集的:fjst:它利用双向lstm网络对对话历史进行编码,并利用单独的ffn预测每个广告位的值。hjst:它使用像fjst这样的lstm对对话历史进行编码,但是使用了分层网络。sumbt:它利用bert作为对话上下文和插槽值对的编码器。此后,它将使用距离度量为每个带有对话上下文的候选空位值对评分。hyst:这是一种基于分层rnn的混合方法,既包含基于本体的预定义设置又包含开发本体集的设置。dst-reader:从文本阅读理解的角度对dst进行建模,并在对话上下文中获取相应文本跨度的开始和结束位置。dst-span:像dstreader一样,将所有领域与插槽对都视为基于跨度的槽,并为编码器应用预训练的bert。dst-picklist:类似于sumbt,它定义了基于分类列表的分类插槽,并对编码器应用了预训练的bert。它依赖于预先定义的本体。ds-dst:与hyst类似,它是ds-span和ds-picklist的混合系统。dstqa:它将多域dst建模为一个问答问题,并生成一个询问每个域插槽对值的问题。trade:它包含一个用于插槽分类的插槽门模块和一个用于生成对话状态的指针生成器。comer:它使用分层解码器来生成当前对话状态本身作为目标序列。

5.4领域结果

联合目标准确度是我们实验中的评估指标,表示为预测对话状态与测试集中的地面真实情况完全一致的轮次比率。表1显示,在开发本体集设置下,我们的模型csfn-dst可以胜过multiwoz2.0和multiwoz2.1上的其他模型。另外,我们的使用bert2的方法可以在预先定义的基于本体的环境中使用最佳系统实现非常有竞争力的性能。使用预训练的bert时,请使用bert编码器初始化csfn的所有参数,并使用bert初始化词/位置嵌入。

表2:multiwoz2.1上的特定领域联合精度。

表3:multiwoz2.1上的插槽门f1分数。

表4:加上插槽门分类完全正确情况下的multiwoz2.1的联合目标精度。

表5:multiwoz2.1的消融研究结果。其中,“省略在解码器中”原文“omitinthedecoder”,“省略在解码器中”原文“omitinthedecoder”,“没有架构图”原文“noschemagraph”,“先前的话语原文”原文“thepreviousutterance”。

为了说明有关csfn-dst有效性的更多详细信息,我们从多个角度比较了我们的模型(不带bert)和trade(以前的最佳模型)。表2显示了域特定的四方法和trade。域特定精度是在预测对话状态的子集上测量的精度,该子集仅包含属于某个域的插槽。表3显示了插槽门分类的f1分数。似乎我们提出的csfn-dst在dontcare检测上可以大大胜过trade。给定完全正确的插槽门分类,我们还比较了csfn-dst和trade的值解码器。表4中的结果表明,我们的模型在值预测创造方面可以胜过trade。

5.5消融研究

我们进行了一些消融研究,以回答关于我们的方法的一些问题,如表5所示。对于值解码器而言,之前的对话状态或当前言语是否必不可少?在基于rnn的值解码器中,我们选择忽略上一个对话状态或当前话语结果表明,两者对于产生正确的值至关重要。模式图有帮助吗?在csfn-dst中,利用了具有域-插槽关系的模式图。为了检查所使用的架构图的有效性,我们通过替换已完全连接到一个节点或独立于节点的i来移除知识共享域插槽关系。表5中的结果表明,具有域-插槽关系的架构图至关重要。我们是否需要更多背景信息?在我们的模型中,仅使用了当前的对话话语,这比涉及整个对话上下文的之前方法更为有效。但是,我们想问一问,当使用更多上下文时是否会提高性能。在表5中,它表明合并之前的对话语音xt-1没有任何改善。

6结论和未来工作

我们引入了具有上下文和架构融合网络的多域对话状态跟踪器,该跟踪器涉及插槽关系并独立地学习每个域插槽对的深层特征表示。来自不同域的插槽及其关系以架构图的形式组织。之前的预测对话状态和当前对话话语用于上下文编码。提出了基于图的多头注意力,内部和外部注意力机制的融合网络,以对对话上下文和模式进行完全编码。我们的方法在开发本体集的multiwoz2.0和2.1基准上实现了最新的联合目标精度。消融研究还表明,模式图确实有助于提高性能。训练期间使用之前状态的地面真相。训练和推理阶段的不匹配将在将来进行研究。

请参考图5,其示出了本发明一实施例提供的一种对话状态生成装置的框图。

如图5所示,一种用于语音模组的对话状态生成的装置500,包括模式图构建单元510、编码单元520、输入融合单元530、输出单元540、插槽门分类单元550、取值解码单元560和结合单元570。

其中,模式图构建单元510,配置为构建插槽、领域和<领域,插槽>元组之间的模式图;编码单元520,配置为对历史对话状态和对话文本分别进行编码,其中,所述历史对话状态有多个<领域,插槽,取值>三元组构成;输入融合单元530,配置为将所述模式图、编码后的历史对话状态和编码后的对话文本输入至融合网络;输出单元540,配置为分别获取所述融合网络输出的对应于所述模式图的领域隐藏向量、插槽隐藏向量和<领域,插槽>元组隐藏向量,对应于所述编码后的历史对话状态的历史对话状态隐藏向量,以及对应于所述编码后的对话文本的对话文本隐藏向量;插槽门分类单元550,配置为将所述领域隐藏向量、所述插槽隐藏向量和所述<领域,插槽>元组隐藏向量输入至插槽门分类器,获取所述插槽门分类器的第一输出;取值解码单元560,配置为将所述历史对话状态隐藏向量和所述对话文本隐藏向量输入至取值解码器,获取所述取值解码器的第二输出;以及结合单元570,配置为将所述第一输出和所述第二输出进行结合生成当前轮的对话状态。

应当理解,图5中记载的诸模块与参考图1中描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征以及相应的技术效果同样适用于图5中的诸模块,在此不再赘述。

值得注意的是,本申请的实施例中的模块并不用于限制本申请的方案,例如修改接收模块可以描述为接收语音模组发送的针对某一受控设备修改后的设备名和/或场景模式,以及所述语音模组的账户信息的模块。另外,还可以通过硬件处理器来实现相关功能模块,例如结果返回模块也可以用处理器实现,在此不再赘述。

在另一些实施例中,本发明实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的对话状态生成方法;

作为一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,计算机可执行指令设置为:

构建插槽、领域和<领域,插槽>元组之间的模式图;

对历史对话状态和对话文本分别进行编码,其中,所述历史对话状态有多个<领域,插槽,取值>三元组构成;

将所述模式图、编码后的历史对话状态和编码后的对话文本输入至融合网络;

分别获取所述融合网络输出的对应于所述模式图的领域隐藏向量、插槽隐藏向量和<领域,插槽>元组隐藏向量,对应于所述编码后的历史对话状态的历史对话状态隐藏向量,以及对应于所述编码后的对话文本的对话文本隐藏向量;

将所述领域隐藏向量、所述插槽隐藏向量和所述<领域,插槽>元组隐藏向量输入至插槽门分类器,获取所述插槽门分类器的第一输出;

将所述历史对话状态隐藏向量和所述对话文本隐藏向量输入至取值解码器,获取所述取值解码器的第二输出;

将所述第一输出和所述第二输出进行结合生成当前轮的对话状态。

非易失性计算机可读存储介质可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据对话状态生成装置的使用所创建的数据等。此外,非易失性计算机可读存储介质可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,非易失性计算机可读存储介质可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至对话状态生成装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本发明实施例还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行上述任一项对话状态生成方法。

图6是本发明实施例提供的电子设备的结构示意图,如图6所示,该设备包括:一个或多个处理器610以及存储器620,图6中以一个处理器610为例。对话状态生成方法的设备还可以包括:输入装置630和输出装置640。处理器610、存储器620、输入装置630和输出装置640可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器620为上述的非易失性计算机可读存储介质。处理器610通过运行存储在存储器620中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例对话状态生成方法。输入装置630可接收输入的数字或字符信息,以及产生与对话状态生成装置的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

作为一种实施方式,上述电子设备应用于对话状态生成装置中,包括:

至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:

构建插槽、领域和<领域,插槽>元组之间的模式图;

对历史对话状态和对话文本分别进行编码,其中,所述历史对话状态有多个<领域,插槽,取值>三元组构成;

将所述模式图、编码后的历史对话状态和编码后的对话文本输入至融合网络;

分别获取所述融合网络输出的对应于所述模式图的领域隐藏向量、插槽隐藏向量和<领域,插槽>元组隐藏向量,对应于所述编码后的历史对话状态的历史对话状态隐藏向量,以及对应于所述编码后的对话文本的对话文本隐藏向量;

将所述领域隐藏向量、所述插槽隐藏向量和所述<领域,插槽>元组隐藏向量输入至插槽门分类器,获取所述插槽门分类器的第一输出;

将所述历史对话状态隐藏向量和所述对话文本隐藏向量输入至取值解码器,获取所述取值解码器的第二输出;

将所述第一输出和所述第二输出进行结合生成当前轮的对话状态。

本申请实施例的电子设备以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(5)其他具有数据交互功能的电子装置。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1