掌桥专利:专业的专利平台
掌桥专利
首页

一种基于预训练模型的知识驱动对话方法

文献发布时间:2023-06-19 12:13:22


一种基于预训练模型的知识驱动对话方法

技术领域

本发明涉及人工智能技术领域,具体涉及一种基于预训练模型的知识驱动对话方法。

背景技术

人工智能的长远目标之一是实现与人类正常对话交流,其中背景知识对对话系统的成功起着至关重要的作用。预训练时代的到来,也极大地促进了开放领域对话的发展。例如,CDial-GPT2和OpenAI GPT-2模型已经证明,在大规模数据集上训练的Transformer模型可以捕获文本数据中的长期依赖,并生成流利的文本。这类模型能够捕获粒度较细的文本数据,并产生高分辨率的输出,从而模拟人类编写的文本。如果我们希望这些模型生成包含正确的现实知识或可控内容的文本,我们可以利用额外的知识信息进行生成。

将知识融入到对话生成中可以使生成的结果更加多样化和可控。例如,将搞笑知识融入到生成模型中可以生成幽默的对话。在一个开放域对话系统中,如何利用背景知识进行有效的交互是一个非常重要但又具有挑战性的问题。其中背景知识可以表示为知识图谱、非结构化文本或描述性语料库。

现有的知识驱动对话系统在生回复应时通常假定背景知识已经知道,这与人类真实聊天场景不同,在真实聊天场景中,知识驱动的对话系统需要根据对话上下文选择合适的知识,并生成流畅的回复,就像人类聊天一样。

发明内容

针对现有技术中的上述不足,本发明提供了一种基于预训练模型的知识驱动对话方法。

为了达到上述发明目的,本发明采用的技术方案为:

一种基于预训练模型的知识驱动对话方法,包括如下步骤:

S1、构造基于知识驱动的主题预测模型、知识匹配模型以及对话生成模型的训练数据集,并利用构造的训练数据及对对应模型进行训练得到知识驱动对话系统;

S2、利用步骤S1得到的知识驱动对话系统获取用户语句,并将获取的用户语句拼接在历史语句最后,并根据历史语句对所述用户语句进行主题提取得到相对应的主题知识;

S3、利用主题预测模型根据历史语句对步骤S2所提取的主题进行排序,将排序结果与步骤S2中所提取的主题知识进行比较,选择其中的最佳主题并为最佳主题匹配多个候选主题知识;

S4、将步骤S3中匹配到的候选主题知识和与主题知识对应的历史语句发送至知识匹配模型并对所匹配到的主题知识进行排序,选择其中的最佳主题知识;

S5、将步骤S3获取的最佳主题及其主题知识步骤S4获取的最佳知识以及对应的历史语句一起发送至对话生成模型中生成目标回复,并将生成的目标回复添加到历史语句最后。

上述方案的有益效果是:能有效与用户对话;会根据与用户的对话历史,自己检索贴切的相关对话主题与知识,并生成合乎逻辑且多样性的回复。

进一步的,所述步骤S1中构建的训练数据集分别表示为:

上述进一步方案的有益效果是,构建出训练数据与知识库,训练数据用于训练系统中的各个模型,知识库用于在实际对话中进行主题与知识检索。

进一步的,所述步骤S2中根据历史语句对所述用户语句进行主题提取得到相对应的主题知识的具体方法为:

S21、获取用户对话并利用LAC算法对用户对话进行中文词条分割、语义标记以及专有名词识别;

S22、根据步骤S21的计算结果,将用户对话匹配对应的主题,并以该主题为节点匹配多个主题知识。

上述进一步方案的有益效果是,利用成熟且快速的算法对历史语句进行主题与知识粗召回,这一步使用轻量级算法,先在大量主题与知识中筛选一部分可能性最大主题知识,以便后减轻手续重量级算法的计算开销。

进一步的,所述步骤S3具体包括:

S31、根据历史对话计算用户对话中每个主题的概率值;

S32、选择概率值最大的主题并查询该主题是否在S2提取的主题中,若在则该主题为最佳主题,若不在则根据概率值大小选择下一个主题进行查询;

S33、保留所选择的最佳主题所对应的所有主题知识得到主题知识集合,并去除与之无关的主题知识。

上述进一步方案的有益效果是,对S2粗召回的主题知识进行进一步筛选,选择其中最合乎对话上下文的主题。

进一步的,所述步骤S4具体包括:

S41、将步骤S3匹配到的多个候选主题知识以及历史语句分别进行编码,得到对应的向量;

S42、对步骤S41得到的向量进行拼接计算,得到对应向量所对应的得分,并按照得分结果将所对应的主题知识进行排序;

S43、选择得分超过得分最高的前n条主题知识作为最佳主题知识输出。

上述进一步方案的有益效果是,与S3中召回的最佳主题相关联的知识还有不少,所以需要进一步对这些关联的知识进行相关性排序,以便找出最佳知识。

进一步的,所述步骤S5具体包括:

S51、将历史语句与对应的主题知识进行拼接形成长文本;

S52、将S51中的长文本发送至对话生成模型,计算词典里每个字的条件概率;

S53、根据步骤S52中的条件概率最大的字作为回复字,并拼接到输入历史语句中。

S54、重复S51至S53,直到生成停止符号,即获得一句完整句子。

(此步骤建议审核正确性,原文总结内容感觉有不完善的地方)

上述进一步方案的有益效果是,利用S4找到的最佳知识与历史对话语句,生成相关回复语句。

进一步的,所述步骤S52中条件概率的计算方式为:

P(s

其中,s

上述进一步方案的有益效果是,利用生成句子的理论基础即语言模型进行句子生成。

8.根据权利要求7所述的一种基于预训练模型的知识驱动对话方法,其特征在于,所述步骤S52与S53中计算目标回复句子的生成概率为:

其中,m为目标回复中的字数,ω

附图说明

图1为本发明一种基于预训练模型的知识驱动对话方法流程示意图。

图2为本发明基于预训练模型的知识驱动对话对话方法中各模块之间的关系示意图。

图3为本发明实施例主题预测模型结构示意图。

图4为本发明实施例知识匹配模型结构示意图。

图5为本发明实施例对话生成模型结构示意图。

图6为本发明实施例粗召回实验对比图。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

一种基于预训练模型的知识驱动对话方法,如图1所示,包括如下步骤:

S1、构造基于知识驱动的主题预测模型、知识匹配模型以及对话生成模型的训练数据集,以便利用构造的训练数据及对对应模型进行训练得到知识驱动对话系统;

在本实施例里,用已经公开的KdConv的数据集

在训练阶段,我们将数据集D

主题预测模型:

知识匹配模型:

对话生成模型:

S2、在实际对话中,针对用户的历史语句进行回复时,我们有很多主题与知识可供选择,所以我们需要先对主题与知识进行初召回。

在实际使用时,我们需要对话系统能快速生成回复。在使用预训练模型时,如果把每一个知识都送到模型中进行处理,响应速度无法满足对话要求。所以我们提出使用成熟快速的LAC算法来粗召回主题和知识。

LAC的全称是Lexical Analysis of Chinese,是百度自然语言处理部门联合开发的词汇分析工具,实现了中文词条分割、部分语义标记、专有名词识别等功能。本文利用LAC工具实现了主题粗召回的功能。

我们假设T

其具体方法为:

S21、获取用户对话并利用LAC算法对用户对话进行中文词条分割、语义标记以及专有名词识别;

S22、根据步骤S21的计算结果,将用户对话匹配对应的主题,并以该主题为节点匹配多个主题知识。

S3、利用主题预测模型根据历史语句对步骤S2所提取的主题进行排序,将排序结果与步骤S2中所提取的主题知识进行比较,选择其中的最佳主题并为最佳主题匹配多个候选主题知识,

在本实施例里,包括如下步骤

S31、根据历史对话计算用户对话中每个主题的概率值;如图3所示,主题预测模型需要根据历史对话输出知识库中每个主题的概率值;

S32、选择概率值最大的主题并查询该主题是否在S2召回的主题中,若是则该主题为最佳主题,若不是则根据概率值大小选择下一个主题进行查询。

本实施例里使用预训练的模型RoBERTa-wwm-ext进行微调,将[CLS]隐藏状态向量放到一个线性层中,该层输出主题最终的分类结果O

O

其维度为题目数量之和,其中O

S33、保留所选择的最佳主题所对应的所有主题知识得到主题知识集合,并去除与之无关的主题知识:找到T

S4、将步骤S3中匹配到的候选主题知识和与主题知识对应的历史语句发送至知识匹配模型并对所匹配到的主题知识进行排序,选择其中的最佳主题知识;

在本实施例里,使用Sentence-Bert作为知识匹配模型,如图4所示,使用预先训练好的RoBERTa-wwm-ext初始化模型里面的Bert模块。Sentence-Bert的孪生BERT分别用来编码历史对话和知识,这样可以容纳较长的数据,减少计算时间。

本实施例里具体包括如下步骤:

S41、将步骤S3匹配到的多个候选主题知识以及历史语句分别进行编码,得到对应的向量。分别将历史语句和知识送入孪生BERT进行编码,用[CLS]隐藏状态向量分别作为向量a和向量b。

S42、对步骤S41得到的向量进行拼接计算,得到对应向量所对应的得分,并按照得分结果将所对应的主题知识进行排序:对向量a和向量b进行相应的拼接计算操作,并将结果向量送入线性层,线性层输出最终的分类结果S

S43、选择得分最高的前n条主题知识作为最佳主题知识输出。

本实施例通过优化交叉熵损失来训练知识排名的模型:

其中s

S5、将步骤S4获取的最佳知识发送至对话生成模型中生成目标回复,并将生成的目标回复添加到历史语句最后。

在实施例里,方法的核心是语言模型。我们首先将一个多轮对话会话中的n-1条语句(n是语句的数量)拼接处理成历史对话。每个样本都由历史对话和相关主题知识拼接连成一个长文本S=k

P(s

其中,s

s

其中,m为目标回复句中的词数量,ω

本实施例中采用Bert2Transformer作为对话生成模型,如图5所示,Bert2Transformer模型是基于Transformer框架,但编码器是Bert-base,解码器是12层Transformer的解码器。为了让解码器获得一些先验信息,我们使用Bert的词向量来初始化解码器的词向量和线性输出层。

实验验证:

我们使用数据集KdConv进行实验。KdConv是一个中文多领域知识驱动的对话数据集,它将多轮对话中的话题建立在知识图谱上。语料中包含了来自三个领域(电影、音乐和旅游)的4.5K场话,共86K条语句,平均每场对话19.0轮。

在所有数据集上,我们使用BLEU1、2、3、4-gram的平均分数和Distinct-2来衡量最终的生成质量。其中BLEU衡量生成的句子和标签之间的相似度,Distinct来衡量生成句子的多样性程度。

主题粗召回实验:在粗召回阶段,我们分别对比了TF-IDF、LAC和Aho-Corasick算法。由于它们都是现成的工具,我们直接将所有的训练数据作为测试样本进行测试。对于每个样本,为了控制输入长度,我们最多可以取对话历史中的最后10句作为历史语句。我们用准确率作为衡量标准,比较这三种算法的前n∈[1,50]输出中包含正确主题的准确率,换句话说,每个算法测试50个不同召回个数的准确率。假设有T条评价样本,在本实验中T=62938,具体公式如下:

其中i∈(0,1,2)分别表示采用TF-IDF、LAC和Aho-Corasick算法,k

主题预测模型实验:由于主题有12149个,所以主题预测模型是一个多分类模型,共有12149个分类结果。我们将历史语句作为输入数据,知识图谱中三元组的节点元素为分类标签,即主题。其中,最长的输入数据长度被截断为400,最多使用历史语料的最后10句。同时,使用[SEP]特俗符来分割不同的对话语句。然后,我们分别对基础模型和大模型进行实验,如表1所示,

表1

知识匹配模型实验:知识匹配模型是一个二分类模型,输入知识和对话历史语句,输出二分类概率值。历史语句数据长度和知识长度分别控制在400以内,最多使用历史语料的最后10句作为历史语句数据。我们使用[SEP]特殊符来分割不同的对话语句。在实验中,我们分别比较了Sentence-Bert模型和基于pairwise的Bert模型。由于Sentence-Bert需要分别对历史语句和知识数据进行编码,所以我们还使用孪生Bert和两个不同的Bert对数据进行编码后的效果进行测试。结果如表2所示。我们比较不同模型在验证集和测试集上的准确率。这里的准确率只是模型对数据二元分类的准确率,与最终知识选择的准确率不同。

表2

其中"-diff"是指使用两种不同的Bert来编码知识和历史语句。从结果来看,使用孪生Bert的性能要比使用两个不同的Bert好很多。

最终知识选择的准确性如下表所示。这显示了从粗略召回到最终知识选择的准确率。粗略召回阶段我们使用LAC算法,输入最多10个历史语句,输出50个主题进行后续模型处理。模型分类后我们分别比较了第一个知识是合适知识的准确率,以及前三个知识和前五个知识包含合适知识的准确率。

最终知识选择的准确性如表3所示。该结果为从粗略召回主题到最终知识选择的准确率。粗略召回阶段我们使用LAC算法,输入最多10个历史语句,输出50个主题进行后续模型处理。模型分类后我们分别比较了第一个知识是合适知识的准确率,以及前三个知识和前五个知识包含合适知识的准确率。

表3

其中“No.”表示所选知识点的数量。我们分别显示了排序后前1、3、5条知识中包含的正确知识的准确率。“√”表示本实验中使用该预训练模型进行微调,

对话生成模型实验:我们分别使用CDial-GPT2和Bert2transformer作为生成模型进行对比实验。以最近10个历史语句和m条知识作为输入,生成回复,其中m=1,3,进行对比实验。历史语句数据长度和知识长度之和控制在400以内,并[speaker1][speaker2]特殊符分割不同的历史语句,使用[SEP]特殊符分割不同的知识。

在回复生成阶段,主题预测模型和知识匹配模型分别使用RoBERTa-wwm-ext-large模型和Sentence-Bert base模型,其结果如表4所示。这里分别列出了使用真实知识、召回一条知识和召回三条知识所产生的结果。表4系统的生成结果。“+NSP”表示通过多任务训练的模型。“+1kb”表示模型在训练过程中每个训练样本包含一个知识。“+3kb”表示模型在训练过程中每个训练样本包含三个知识。“+share”表示编码器与解码器共享词向量。“AVG.B”表示取BLEU1、2、3、4的平均平均值作为最终得分。“Dis-2”表示为Distinct-2分数。

表4

从整体结果来看,Bert2transformer模型的性能最好。Bert2Transformer在用三个知识进行训练和生成时可以达到SOTA。而多任务训练并没有提高模型性能,而是降低。

从使用真知识产生的结果来看,选择三个知识进行训练的模型比选择一个知识进行训练的模型具有更大的潜力。

从使用召回知识生成的结果来看,当使用多个知识进行训练和生成时,CDial-GPT2的性能降低,而我们的Bert2transformer的性能得到了提高。多余的知识会变成噪声,影响CDial-GPT2的生成效果。但Bert2transformer可以在多个知识中选择最合适的知识进行生成。可以看出,我们的Bert2transformer在提取关键信息方面更为优秀。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

相关技术
  • 一种基于预训练模型的知识驱动对话方法
  • 一种基于大型通用预训练模型控制对话生成的方法
技术分类

06120113212547