一种基于深度学习的FAQ检索式问答构建方法及系统与流程

文档序号:24411297发布日期:2021-03-26 19:26阅读:461来源:国知局
一种基于深度学习的FAQ检索式问答构建方法及系统与流程
一种基于深度学习的faq检索式问答构建方法及系统
【技术领域】
1.本发明涉及教育技术领域,尤其是一种基于深度学习的faq检索式问答构建方法及系统。


背景技术:

2.知识库有两种含义:一种是指专家系统设计所应用的规则集合,包含规则所联系的事实及数据,它们的全体构成知识库,这种知识库是与具体的专家系统有关,不存在知识库的共享问题,另一种是指具有咨询性质的知识库,这种知识库是共享的,不是一家所独有的,从今后的发展来看,巨型知识库将会出现,还依赖于硬件及软件条件的发展,下一代计算机所应考虑的重要问题之一是知识库的设计,以知识库为背景的知识库机及共管理系统构设计,知识库的概念来自两个不同的领域,一个是人工智能及其分支

知识工程领域,另一个是传统的数据库领域,由人工智能(ai)和数据库(db)两项计算机技术的有机结合,促成了知识库系统的产生和发展。
3.自从krizhevsky等人提出基于深度学习理论的深度卷积神经网络alexnet后,识别领域进入了新的纪元。深度卷积神经网络通过卷积运算由浅入深的提取知识的不同层次的特征,并通过学习算法使网络自动的调节卷积核的参数进行学习,在知识分类和识别上已经取得了显著效果。
4.但现有根据问题检索知识库和问答知识库,根据检索结果将答复发送给答复反馈模块,答复反馈模块用于将答复通过语言、文字或者照片反馈给用户,解决了现有通过搜索引擎获取医疗知识耗时且信息准确性难判的问题,然而现有知识库的检索存在以下不足:1)、在对知识库内的信息进行采集刷新的过程中,系统无法对收集的信息和知识进行的分类、整理,导致信息和知识不能有序化保存在知识库内,使用较为混乱,导致在检索的过程中,影响检索的速度。2)、通过组织用户对系统答复结果进行审阅修改,并依据其审阅修改不断完善更新知识库,由于系统答复结果繁杂,会耗费了用户大量的精力和时间,同时人工审阅修改降低了知识库的更新速度,不利于其发展。
5.如何将深度卷积神经网络技术与知识库相结合,从大量的样本中自动提取出词语之间的关系,发掘传统模型很难发掘的隐含在大量数据中含义不明显的特征,是目前迫切需要解决的一项技术问题。


技术实现要素:

6.本发明提供一种基于深度学习的faq检索式问答构建方法及系统,深度文本匹配模型能够从大量的样本中自动提取出词语之间的关系,并能结合短语匹配中的结构信息和文本匹配的层次化特性,发掘隐含在大量数据中含义不明显的特征,更精细地描述文本匹配问题。
7.为达到上述明目的,采用的技术方案如下:
8.一种基于深度学习的faq检索式问答构建方法,包括以下步骤:
9.步骤s1,获取用户问题,并整理与所述用户问题相关的文档内容;
10.步骤s2,构建训练集和测试集;
11.步骤s3,在测试集和训练集的基础上,增强数据;
12.步骤s4,模型建立及迭代优化;
13.步骤s5,模型建立完之后,设置问答系统,用户任意问问题,系统会根据神经网络模型预测该问题属于哪一类,进而给出相应的答案。
14.进一步地,所述步骤s1中,对于有大量问答记录的场景,问答记录里面包括很多高频的知识点,所述高频的知识点包括问题和答案;
15.所述高频的知识点对应的问法通常并不唯一,即知识库的结构为一个问题集合对应同一个答案,其针对faq数据有以下三种数据类型:
16.(1)、标准问q:faq中问题的标准用户query;
17.(2)、答案a:faq中标准问对应的标准回答;
18.(3)、相似问q1,q2

:跟标准问语义相似可用同一答案回答的query;
19.其中,标准问q、对应答案a、以及该标准问q对应的所有相似问q1,q2,

,一起组成一个知识点。
20.进一步地,所述步骤s1中,需要建立一个更加合理的知识库,要求每个知识点只包含一个意图,且知识点之间没有交叉、歧义、冗余等容易造成混淆的因素;
21.而且,所述知识库的标注为每个faq积累一定数量的有代表性的相似问。
22.进一步地,所述步骤s1的后期持续维护包括:新faq发现,以及原faq的合并、拆分和纠正等。
23.进一步地,所述步骤s2中,具体包括以下步骤:
24.测试集构造:将相似问中的第一条相似问q1作为query,从faq知识库的所有知识点中通过lucene召回30个知识点作为候选集;
25.训练集构造:包含两部分,一部分是正例的构造,另一部分是负例的构造,所述正例的构造和所述负例的构造中数据的构造方式将直接影响到最终的效果;
26.在正例的构造中,因为每个知识点的第一个相似问是作为测试集中出现的,所以在构造训练集的时候排除掉所有知识点中的第一条相似问q1;这样,有多于2个相似问的知识点、还有多于的其他相似问可以用来构造训练集;将这些识点中的标准问和从相似问的第二条开始(即[q2,q3,

,qn])可以按照不同方式构造出正例和负例。
[0027]
进一步地,所述步骤s2中,在训练集正例的构造中,去除所有知识点中的第一条相似问q1,其他相似问及标准问两两组合成正例pair对;对于相似问多的知识点进行剪切。
[0028]
进一步地,所述步骤s2中,训练集负例的构造方式包括:按jaccard距离召回、按lucene召回、从其他知识点中随机选择和按照正例中各问题出现的比例从其他知识点中采样选择,以及每个句子和句子中的名词/动词构成pair对;而针对知识点分布不均衡的问题,对相似问很多的知识点进行相似问剪切。
[0029]
进一步地,所述步骤s3中,由于深度学习需要较多的数据,为了增强数据,采用以下策略:
[0030]
交换两个句子之间的顺序;
[0031]
对句子进行分词,重新组合生成新的句子;
[0032]
打乱句子的顺序,随机抽取句子。
[0033]
进一步地,所述步骤s4中,模型的基本框架一般都是将待匹配的两个句子分别使用两个encoder来获取对应context信息,然后将二者的context信息进行匹配,得到匹配后的特征信息;或者模型的基本框架在匹配之后的特征后面加上一些其他的传统文本特征,将所有这些特征进行concat;模型的基本框架最后接上softmax层,做最终的分类;模型建立及迭代优化具体包括以下步骤:
[0034]
步骤s41,embedding层:使用word2vec训练词向量;
[0035]
首先,基于word2vec工具,分别将词向量转化为问题词向量和答案词向量,从而得到问答文本集合所对应的问题词向量矩阵q=(q1,q2,

,q
l
)和答案词向量a=(a1,a2,

,a
m
),其中,l和m分别为问答文本集合中题和答案的数量,q
i
(1≤i≤l)为第i个问题所对应的列向量,aj(1≤j≤m)为第j个答案所对应的列向量;
[0036]
接着,把问题词向量矩阵q和答案词向量a输入到lstm网络中去训练学习词序序列的语义特征信息,为了便于并行矩阵的计算,本发明中输入的长度选定一个最大值,句子中的词语较少则用0补充,大于最大的词语长度的句子则会截掉,模型中所有权重w和偏置b随机初始化为u(

0.05,+0.05)均匀分布;
[0037]
在学习过程中,首先通过lstm网络内部的遗忘门ft来决定lstm网络从细胞单元状态中丢弃哪些信息,同时,t时刻的词语会读取t

1个隐藏层的输出h t

1和当前时刻输入词向量q t,以及输入一个在0到1之间的偏置b f,并传递给t

1时刻的细胞单元状态c t

1,其计算方式为:ft=σ(w f[q t,h t

1]+b f),其中σ为sigmoid激励函数,w f为遗忘门杈重矩阵;
[0038]
其次,通过输入门i t来决定什么值需要进行更新,其计算公式表示为:i t=σ(w i[q t,h t

1]+b i),其中σ为sigmoid激励函数,w i为输入门杈重矩阵,b i为0到1之间的偏置;
[0039]
然后,根据tanh非线性激活函数来创建候选值其计算公式表示为:其中w c为候选杈重矩阵,b c为0到1之间的偏置;在此基础上,更新t时刻的细胞单元内部状态c t,其计算公式为:
[0040][0041]
最后,计算并获取输出门的向量为ot,其计算公式为:ot=σ(w o[q t,h t

1]+b o),其中σ为sigmoid激励函数,w o为输出门杈重矩阵,b o为0到1之间的偏置,以及lstm网络隐藏层的输出值h t,其计算公式为:h t=ot*tanh(c t);
[0042]
步骤s42,encoder层:卷积具有局部特征提取的功能;
[0043]
用cnn来提取句子中类似n

gram的关键信息,考虑文本的上下文信息,将lstm网络的输出结果作为输入到cnn网络中,去学习更深层次的句子n

gram局部特征信息;
[0044]
设定卷积窗口大小为k,相邻的词向量拼接矩阵为z,卷积核数为c,那么卷积的过程如下:
[0045]
g=f(w z+b),
[0046]
其中,f是relu激活函数,w和b为随机正态分布初始化u(0,0.05)的杈重矩阵和偏
置;
[0047]
经过卷积操作后,可以得到问题文本的深层词向量矩阵dq和答案文本的深层词向量矩阵da。
[0048]
步骤s43,匹配层(matching):在得到两个句子的表示后,要针对两个句子的表示进行matching操作;
[0049]
获得的问题文本深层词向量矩阵dq和答案文本深层词向量矩阵da,计算问答文本对中每对词之间的一个匹配程度矩阵s,计算方式如下:
[0050]
s(i,j)=tanh(dqi

adj)
[0051]
其中tanh为非线性激活函数,dqi表示问题文本中第i个词向量,daj表示答案文本中第j个词向量,

为向量点乘,s(i,j)表示问题文本第i个词与答案文本第j个词之间的语义匹配分数;
[0052]
接着,对匹配程度矩阵s做行级的最大池化,并生成向量gq,其中第i个值表示问题文本第i个词对答案的重要性程度,同时,对匹配程度矩阵s做列级的最大池化,并生成向量ga,其中第j个值表示答案文本第j个词对问题的重要性程度;
[0053]
然后,分别对gq和ga选取最大的p个值,分别把这p个值对应的词语重新输入到lstm网络中,并选取最后时刻的隐藏层输出,分别得到维度为h的语义特征向量oq和oa,从而根据oq与oa来计算向量间的空间距离值作为问题文本和答案文本匹配的程度。
[0054]
一种基于深度学习的faq检索式问答系统,包括:
[0055]
问答模块,用于接收用户的输入问题,并对所述输入问题进行预处理;所述预处理过程包括构建训练集和构建测试集、并在构建训练集和构建测试集的基础上增强数据,将预处理后的所述输入问题发送至深度学习模块;
[0056]
深度学习模块,用于提取所述预处理后的输入问题中的特征信息,并根据所述特征信息生成对应的问题词向量,并根据预设的问题分类模型、问题匹配模型和问题词向量信息,从知识库模块中获取相匹配的标准问题及精确度较高的答案,并将精确度较高的答案返回至问答模块;
[0057]
所述知识库模块,用于判断知识库中是否存在与未识别问题对应的标准问题,并在所述知识库中存在与所述未识别问题对应的标准问题时,对与所述未识别问题对应的标准问题进行标注,并在所述知识库中不存在与所述未识别问题对应的标准问题时,根据未识别问题创建新标准问题,并对所述新标准问题进行标注,同时补充新标准问题对应的标准答案;
[0058]
所述深度学习模块还用于根据标注的与所述未识别问题对应的标准问题及匹配答案模型化训练。
[0059]
本发明的优点:
[0060]
本发明相比于传统方法,深度文本匹配模型能够从大量的样本中自动提取出词语之间的关系,并能结合短语匹配中的结构信息和文本匹配的层次化特性,发掘传统模型很难发掘的隐含在大量数据中含义不明显的特征,更精细地描述文本匹配问题。
[0061]
【说明书附图】
[0062]
图1是本发明中faq检索式问答构建方法流程图;
[0063]
图2是本发明的模型构建框架图;
[0064]
图3是本发明中faq检索式问答系统各模块之间的关系图。
【具体实施方式】
[0065]
下面通过具体实例对本发明的内容作进一步的说明。
[0066]
第一方面:一种基于深度学习的faq检索式问答构建方法,如图1和图2所示,包括以下步骤:
[0067]
步骤s1,获取用户问题,并整理与所述用户问题相关的文档内容;
[0068]
在步骤s1中,对于有大量问答记录的场景,例如智能客服,问答记录里面包括很多高频的知识点,所述高频的知识点包括问题和答案;
[0069]
该高频的知识点对应的问法通常并不唯一,即知识库的结构为一个问题集合对应同一个答案,其针对faq数据有以下三种数据类型:
[0070]
(1)、标准问q:faq中问题的标准用户query;
[0071]
(2)、答案a:faq中标准问对应的标准回答;
[0072]
(4)、相似问q1,q2

:跟标准问语义相似可用同一答案回答的query;
[0073]
其中,标准问q、对应答案a、以及该标准问q对应的所有相似问q1,q2,

,一起组成一个知识点。
[0074]
同时,需要建立一个更加合理的知识库,要求每个知识点只包含一个意图,且知识点之间没有交叉、歧义、冗余等容易造成混淆的因素;而且,所述知识库的标注为每个faq积累一定数量的有代表性的相似问。以及步骤s1的后期持续维护包括:新faq发现,以及原faq的合并、拆分和纠正等。
[0075]
步骤s2,构建训练集和测试集;
[0076]
测试集构造:将相似问中的第一条相似问q1作为query,从faq知识库的所有知识点中通过lucene召回30个知识点作为候选集;
[0077]
训练集构造:包含两部分,一部分是正例的构造,另一部分是负例的构造,所述正例的构造和所述负例的构造中数据的构造方式将直接影响到最终的效果;
[0078]
在正例的构造中,因为每个知识点的第一个相似问是作为测试集中出现的,所以在构造训练集的时候排除掉所有知识点中的第一条相似问q1;这样,有多于2个相似问的知识点、还有多于的其他相似问可以用来构造训练集;将这些识点中的标准问和从相似问的第二条开始(即[q2,q3,

,qn])可以按照不同方式构造出正例和负例。
[0079]
在训练集正例的构造中,去除所有知识点中的第一条相似问q1,其他相似问及标准问两两组合成正例pair对;对于相似问多的知识点进行剪切。
[0080]
训练集负例的构造方式包括:按jaccard距离召回、按lucene召回、从其他知识点中随机选择和按照正例中各问题出现的比例从其他知识点中采样选择,以及每个句子和句子中的名词/动词构成pair对;而针对知识点分布不均衡的问题,对相似问很多的知识点进行相似问剪切。
[0081]
步骤s3,在测试集和训练集的基础上,增强数据;
[0082]
由于深度学习需要较多的数据,为了增强数据,采用以下策略:
[0083]
交换两个句子之间的顺序;
[0084]
对句子进行分词,重新组合生成新的句子;
[0085]
打乱句子的顺序,随机抽取句子。
[0086]
步骤s4,模型建立及迭代优化;
[0087]
模型的基本框架一般都是将待匹配的两个句子分别使用两个encoder来获取对应context信息,然后将二者的context信息进行匹配,得到匹配后的特征信息;或者模型的基本框架也可以在匹配之后的特征后面加上一些其他的传统文本特征,将所有这些特征进行concat;模型的基本框架最后接上softmax层,做最终的分类;如图2所示的模型的框架图,模型建立及迭代优化具体包括以下步骤:
[0088]
步骤s41,embedding层:使用word2vec训练词向量;
[0089]
首先,基于word2vec工具,分别将词向量转化为问题词向量和答案词向量,从而得到问答文本集合所对应的问题词向量矩阵q=(q1,q2,

,q
l
)和答案词向量a=(a1,a2,

,a
m
),其中,l和m分别为问答文本集合中题和答案的数量,q
i
(1≤i≤l)为第i个问题所对应的列向量,aj(1≤j≤m)为第j个答案所对应的列向量;
[0090]
接着,把问题词向量矩阵q和答案词向量a输入到lstm网络中去训练学习词序序列的语义特征信息,为了便于并行矩阵的计算,本发明中输入的长度选定一个最大值,句子中的词语较少则用0补充,大于最大的词语长度的句子则会截掉,模型中所有权重w和偏置b随机初始化为u(

0.05,+0.05)均匀分布;
[0091]
在学习过程中,首先通过lstm网络内部的遗忘门ft来决定lstm网络从细胞单元(cell)状态中丢弃哪些信息,同时,t时刻的词语会读取t

1个隐藏层的输出h t

1和当前时刻输入词向量q t,以及输入一个在0到1之间的偏置b f,并传递给t

1时刻的细胞单元状态c t

1,其计算方式为:ft=σ(w f[q t,h t

1]+b f),其中σ为sigmoid激励函数,w f为遗忘门杈重矩阵;
[0092]
其次,通过输入门i t来决定什么值需要进行更新,其计算公式表示为:i t=σ(w i[q t,h t

1]+b i),其中σ为sigmoid激励函数,w i为输入门杈重矩阵,b i为0到1之间的偏置;
[0093]
然后,根据tanh非线性激活函数来创建候选值其计算公式表示为:其中w c为候选杈重矩阵,b c为0到1之间的偏置;在此基础上,更新t时刻的细胞单元内部状态c t,其计算公式为:
[0094][0095]
最后,计算并获取输出门的向量为ot,其计算公式为:ot=σ(w o[q t,h t

1]+b o),其中σ为sigmoid激励函数,w o为输出门杈重矩阵,b o为0到1之间的偏置,以及lstm网络隐藏层的输出值h t,其计算公式为:h t=ot*tanh(c t);
[0096]
步骤s42,encoder层:卷积具有局部特征提取的功能;
[0097]
用cnn来提取句子中类似n

gram的关键信息,考虑文本的上下文信息,将lstm网络的输出结果作为输入到cnn网络中,去学习更深层次的句子n

gram局部特征信息;
[0098]
设定卷积窗口大小为k,相邻的词向量拼接矩阵为z,卷积核数为c,那么卷积的过程如下:
[0099]
g=f(w z+b),
[0100]
其中,f是relu激活函数,w和b为随机正态分布初始化u(0,0.05)的杈重矩阵和偏
置;
[0101]
经过卷积操作后,可以得到问题文本的深层词向量矩阵dq和答案文本的深层词向量矩阵da。
[0102]
步骤s43,匹配层(matching):在得到两个句子的表示后,要针对两个句子的表示进行matching操作;
[0103]
获得的问题文本深层词向量矩阵dq和答案文本深层词向量矩阵da,计算问答文本对中每对词之间的一个匹配程度矩阵s,计算方式如下:
[0104]
s(i,j)=tanh(dqi

adj)
[0105]
其中tanh为非线性激活函数,dqi表示问题文本中第i个词向量,daj表示答案文本中第j个词向量,

为向量点乘,s(i,j)表示问题文本第i个词与答案文本第j个词之间的语义匹配分数;
[0106]
接着,对匹配程度矩阵s做行级的最大池化,并生成向量gq,其中第i个值表示问题文本第i个词对答案的重要性程度,同时,对匹配程度矩阵s做列级的最大池化,并生成向量ga,其中第j个值表示答案文本第j个词对问题的重要性程度;
[0107]
然后,分别对gq和ga选取最大的p个值,分别把这p个值对应的词语重新输入到lstm网络中,并选取最后时刻的隐藏层输出,分别得到维度为h的语义特征向量oq和oa,从而根据oq与oa来计算向量间的空间距离值作为问题文本和答案文本匹配的程度。
[0108]
步骤s5,模型建立完之后,设置问答系统,用户任意问问题,系统会根据神经网络模型预测该问题属于哪一类,进而给出相应的答案。
[0109]
第二方面,该基于深度学习的faq检索式问答系统,如图2和图3所示,包括:
[0110]
问答模块,用于接收用户的输入问题,并对输入问题进行预处理;预处理过程包括构建训练集和构建测试集、并在构建训练集和构建测试集的基础上增强数据,将预处理后的所述输入问题发送至深度学习模块;
[0111]
深度学习模块,用于提取预处理后的输入问题中的特征信息,并根据特征信息生成对应的问题词向量,并根据预设的问题分类模型、问题匹配模型和问题词向量信息,从知识库模块中获取相匹配的标准问题及精确度较高的答案,并将精确度较高的答案返回至问答模块;
[0112]
知识库模块,用于判断知识库中是否存在与未识别问题对应的标准问题,并在知识库中存在与未识别问题对应的标准问题时,对与未识别问题对应的标准问题进行标注,并在知识库中不存在与未识别问题对应的标准问题时,根据未识别问题创建新标准问题,并对新标准问题进行标注,同时补充新标准问题对应的标准答案;
[0113]
该深度学习模块还用于根据标注的与未识别问题对应的标准问题及匹配答案模型化训练。
[0114]
本发明相比于传统方法,深度文本匹配模型能够从大量的样本中自动提取出词语之间的关系,并能结合短语匹配中的结构信息和文本匹配的层次化特性,发掘传统模型很难发掘的隐含在大量数据中含义不明显的特征,更精细地描述文本匹配问题。
[0115]
以上所述实施例只是为本发明的较佳实施例,并非以此限制本发明的实施范围,除了具体实施例中列举的情况外;凡依本发明之方法及原理所作的等效变化,均应涵盖于本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1