一种融合CNN与双向LSTM的智能问答方法及系统与流程

文档序号:18642664发布日期:2019-09-11 23:42阅读:435来源:国知局
一种融合CNN与双向LSTM的智能问答方法及系统与流程

本发明涉及自然语言处理与智能问答应用领域,具体涉及一种融合cnn与双向lstm的智能问答方法。



背景技术:

问答(questionanswering,qa)系统起源于图灵测试,随着时间的发展,问答系统领域也发生了重大变革。按照处理的数据格式不同,问答系统分别经历了结构化知识库阶段、无结构文本阶段、基于问题.答案数据阶段。随着互联网的普及,网上出现了大量的文本和各种大型论坛,这为社区智能问答系统的兴起奠定了基础。2005年以来,互联网相继涌现了大量的问答社区,基于社区的问答系统逐渐成了问答系统的一个重要研究分支。

yu等人提出了一种基于lsa(latentsemanncanalysxs,lsa)一j的问题一答案匹配度计算方法,该方法统计分析大量问答句子,构建潜在语义空问,计算句子间的语义空间相似度,有效地解决了词的同义和多义问题。carmel提出了一种改进的单词权重计算模型,加入了词语的词性和依赖关系等语法特性,这些特征被用来训练排序模型,验证了该方法的有效性。bian等人提出一种针对事实类问题的答案获取框架gbrank,能够较好的从大规模的社交媒体信息中挖掘结构完好的事实类答案。helman从句法角度探索问题和答案的相关性,将句子表示成句法树的形式,通过构造树状的编辑模型计算句子问的句法相似度。ko等人将问题的所有答案属于最佳答案的可能性看成联合概率分布,概率分布中得分较高的候选答案被认为是该问题的最佳答案。

深度学习理论在答案抽取和排序任务上也有一定应用。wang使用双向长短时记忆网络进行答案选择,将bilstm与关键词匹配模型相结合,由b1lstm输出问题答案间的匹配结果。zhou等人将答案选择看成答案标注问题,首先使用卷积神经网络(convoluhonalneuralnetwork,cnn)抽取问题和答案的分布式表示,然后将联合表示作为循环记忆网络的输入,以学习所有答案与问题的匹配关系。

传统cqa系统使用有监督学习,训练答案排序和问题检索模型,但该方法需要抽取复杂的文本特征,特征工程需

要较多的工程经验,很难在特征构造上做到最优,并且该方法在新的数据集上泛化性能较差,对新数据集往往需求重新进行特征抽取和特征工程。目前基于深度学习的方法通常基于单一的卷积神经网络或循环神经网络,无法全面准确地提取影响智能问答精度的各项特征。



技术实现要素:

有鉴于此,本发明的目的在于提供一种融合cnn与双向lstm的智能问答方法,融合cnn与双向lstm,能够全面准确地提取影响智能问答精度的各项特征。

为实现上述目的,本发明采用如下技术方案:

一种融合cnn与双向lstm的智能问答方法,包括以下步骤:

步骤a:采集智能问答系统中的问题以及对应的回答记录,构建问答对训练集qa;

步骤b:采集智能问答系统中每个用户的问题回答记录,构建用户的历史回答训练集ua;

步骤c:根据问答对训练集qa和用户的历史回复训练集ua,训练融合cnn与双向lstm的深度学习网络模型m;

步骤d:智能问答系统接受用户的提问,将提问输入到训练好的深度学习网络模型m中,输出匹配的答案。

进一步的,所述步骤c具体包括以下步骤:

步骤c1:将问答对训练集中qa的每个问答对输入到卷积神经网络中,得到每个问答对的联合表征向量;

步骤c2:将得到的每个问答对的联合表征向量输入到双向lstm网络中,得到每个问答对的上下文表征向量;

步骤c3:基于用户的历史回答训练集ua,采用多注意力机制进行学习,对用户进行建模,得到用户表征向量;

步骤c4:根据用户置信水平分数与用户专业水平分数,得到用户问答信誉度,作为非文本表征向量;

步骤c5:将分别从步骤c2、c3、c4学习得到的上下文表征向量、非文本表征向量连接,并输入到全连接层,实现特征融合,得到最终表征向量;

步骤c6:将最终表征向量输入到深度学习网络模型m的全连接层,根据目标损失函数loss,利用反向传播方法计算深度网络中各参数的梯度,并利用随机梯度下降方法更新参数;

步骤c7:当深度学习网络模型m产生的损失值迭代变化小于设定阈值不再降低或者达到最大迭代次数,则终止神经网络模型的训练。

进一步的,所述步骤c1具体包括以下步骤:

步骤c11:遍历问答对训练集qa,对qa中的每个问答序列qa=[q,a1,...,at,...,al],其中q表示问题,{at|t=1,2,...,l}为问题q的答案集合,l为问题q对应的答案数量,由问题q和答案集合中的每个答案at构成一个问答对(q,at);

步骤c12:分别对问答对(q,at)中的问题q和答案at进行分词处理,去除停用词,之后转成词向量形式,作为卷积神经网络的输入;

其中智能问答系统中的每个问题q由问题描述qs和问题主体qb组成,qs是智能问答系统中用户输入的问题q的标题部分s=[s1,s2,…,sn],qb是用户输入的问题q的详细描述部分b=[b1,b2,...,bm],问题q由s和b连接表示,输入答案句

其中si,i=1,2,...,n为qs中第i个单词所对应的词向量,bi,i=1,2,...,m为qb中第i个单词所对应的词向量,aj,j=1,2,...,n为at中第j个单词所对应的词向量,m为qb经过分词以及去除停用词后剩余的词语数量,n为at经过分词以及去除停用词后剩余的词语数量;bi、aj通过在预训练的词向量矩阵e∈rd×|d|中查找词语对应的分布式表征向量得到;

其中d表示词向量的维度,|d|是词典d的大小;

步骤c13:将向量化后的问题q和答案at分别输入到并行的两个带有注意力机制的卷积神经网络中,通过卷积层与池化层后分别得到问题的表征融合向量xq和答案的表征向量xat,将xq和xat用一个连接向量xt表示,输入到全连接的隐藏层来得到问答对的表示向量vt:

xt=[xq,xat]

vt=σ(whxt+bh)

其中分别是两个卷积神经网络的参数,wh,bh是全连接掩藏层的参数,σ是激活函数,输出vt是输入问答对(q,at)的表征向量;

步骤c14:对问题q和答案集合{at|t=1,2,...,l}中的每个答案构成的问答对(q,at),重复步骤c12;迭代结束后得到问答序列qa=[q,a1,...,at,...,al]对应的问答对向量序列pr=[v1,...,vt,...,vl]。

进一步的,所述步骤c2具体为:对于长短期记忆网络的正向,依次输入v1,...,vt,...,vl,对于长短期记忆网络的反向,则依次输入vl,...,vt,...,v1,其中,vt表示问答对(q,at)的联合表示;计算每个问答对在正向和反向的隐层状态值,得到每个问答对的隐层向量,得到问答对序列的表征向量h:

h=[h1,...,ht,...,hl]

其中,vt为文本中第t个问答对的联合表征向量,表示问题d中第t个问答对的在正向长短期记忆网络中的隐层状态向量,表示问答对(q,at)在反向长短期记忆网络中的隐层状态向量,f为长短期记忆网络中对隐层状态的计算函数,ht为正向和反向状态向量的连接。

进一步的,所述步骤c3中具体包括以下步骤:

步骤c31:问题由问题描述和问题主体两部分组成,s表示问题描述,由词向量化后的问题描述组成,b表示问题主体,由向量化后的问题主体组成,通过正交分解学习s和b的每个词向量间的相似性和差异性

s=[s1,s2,...,sn]

b=[b1,b2,...,bm]

其中si表示问题描述第i个词的向量化表示,bi表示问题主题第i个词的向量化表示

步骤c32:通过全连接层计算多维注意力权重,使用tanh函数激活,然后将获得的向量归一化产生多重注意力机制,得到的输出是问题描述中的每个词向量对问题主体的权重之和,计算公式如下:

其中,wp1和bp1为训练的参数,c为可调整的参数,是词的权重,⊙表示逐点相乘,是每个问题主题b词向量b乘上对问题描述s的第i个单词si的权重之和,s=[s1,s2,...,sl],b=[b1,b2,...,bm];

步骤c32:获取问题描述的相似向量,计算公式如下:

fpara=σ(wp3semb+wp3sap+bp2)

spara=fpara⊙semb+(1-fpara)

其中wp3,wp3,b是训练参数,σ是激活函数,⊙表示逐点相乘

步骤c33:将问题和用户历史回答对齐,计算问题表征和用户历史回答表征的注意力和加权和,计算公式如下:

其中,wa1,wa2为训练的参数,表示spara和sorth连接的第i个词向量,表示答案的第j个词向量,为了计算注意力权重。

步骤c34:将问题和用户历史回答对齐,计算问题表征和用户历史回答表征的注意力和加权和,计算公式如下:

as=ws2tanh(ws1sai+bs1)+bs2

其中ws2,ws1,bs1,bs2是可训练的参数,csum通过同样的方法得到

步骤c35:将问题的表征向量和用户的历史回答向量连接:

u=[ssum,ccum]。

进一步的,所述步骤c4包括以下步骤:

步骤c41:计算用户的专业水平得分,用户的专业水平得分受用户在回答问题时的积极性和参与程度的影响,计算公式如下:

其中,f(uj)为用户参与程度,问题根据所提问的领域的不同有不同的问题类型,xj是用户uj提供的答案总数,μ,ub是基于用户的答案分布模式确定的阈值,用于奖励大多数活跃用户;g(uj)为用户最佳答案级别,expe(uj)表示用户专业化程度;

步骤c42:计算用户的置信水平con(uj),计算公式如下:

con(uj)=yj/xj

其中yj是用户j的最佳答案数,xj是答案总数

步骤c43:根据用户置信水平得分与用户专业水平得分,计算用户的信誉分数,计算公式如下:

sj=con(uj)·expe(uj)

其中,sj表示用户j的信誉分数,为置信水平con(uj)和用户专业水平expe(uj)的乘积。

进一步的,所述步骤c6具体包括以下步骤:

步骤c61:将特征向量输入到全连接层,并使用softmax归一化,计算答案属于各类别的概率,计算公式如下:

y=fdense(wdense1·h+wdense2·u+wdense3·sj)

p(yi)=softmax(y)

其中,wdense1,wdense2,wdense3为全连接层权重矩阵,,fdense为激活函数,,p(yi)为预测为类别i的概率,0≤p(yi)≤1,l为类别的总数;

步骤c62:用交叉熵作为损失函数计算损失值,通过梯度优化算法adagrad进行学习率更新,利用反向传播迭代更新模型参数,以最小化损失函数来训练模型;

其中最小化损失函数,loss的计算公式如下,

其中d为问答对训练集。

进一步的,基于融合cnn与双向lstm的智能问答方法的系统,其特征在于,包括:

预处理模块,对问答对数据集和用户历史回答数据集进行预处理,去除停用词,分词,词向量化;

深度网络训练模块,用于使用问答对数据集和用户历史回答数据集训练基于融合cnn与双向lstm的深度网络;

判定模块,用于将回答输入到深度网络进行类别判定。

本发明与现有技术相比具有以下有益效果:

本发明融合cnn与双向lstm,能够全面准确地提取影响智能问答精度的各项特征。

附图说明

图1是本发明的方法流程图。

图2是本发明系统实施例的实现流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

请参照图1,本发明提供一种融合cnn与双向lstm的智能问答方法,包括以下步骤:

步骤a:采集智能问答系统中的问题以及对应的回答记录,构建问答对训练集qa;

步骤b:采集智能问答系统中每个用户的问题回答记录,构建用户的历史回答训练集ua;

步骤c:根据问答对训练集qa和用户的历史回复训练集ua,训练融合cnn与双向lstm的深度学习网络模型m;

步骤d:智能问答系统接受用户的提问,将提问输入到训练好的深度学习网络模型m中,输出匹配的答案。

在本实施例中,所述步骤c具体包括以下步骤:

步骤c1:将问答对训练集中qa的每个问答对输入到卷积神经网络中,得到每个问答对的联合表征向量;

步骤c2:将得到的每个问答对的联合表征向量输入到双向lstm网络中,得到每个问答对的上下文表征向量;

步骤c3:基于用户的历史回答训练集ua,采用多注意力机制进行学习,对用户进行建模,得到用户表征向量;

步骤c4:根据用户置信水平分数与用户专业水平分数,得到用户问答信誉度,作为非文本表征向量;

步骤c5:将分别从步骤c2、c3、c4学习得到的上下文表征向量、非文本表征向量连接,并输入到全连接层,实现特征融合,得到最终表征向量;

步骤c6:将最终表征向量输入到深度学习网络模型m的全连接层,根据目标损失函数loss,利用反向传播方法计算深度网络中各参数的梯度,并利用随机梯度下降方法更新参数;

步骤c7:当深度学习网络模型m产生的损失值迭代变化小于设定阈值不再降低或者达到最大迭代次数,则终止神经网络模型的训练。

在本实施例中,所述步骤c1具体包括以下步骤:

步骤c11:遍历问答对训练集qa,对qa中的每个问答序列qa=[q,a1,...,at,...,al],其中q表示问题,{at|t=1,2,...,l}为问题q的答案集合,l为问题q对应的答案数量,由问题q和答案集合中的每个答案at构成一个问答对(q,at);

步骤c12:分别对问答对(q,at)中的问题q和答案at进行分词处理,去除停用词,之后转成词向量形式,作为卷积神经网络的输入;

其中智能问答系统中的每个问题q由问题描述qs和问题主体qb组成,qs是智能问答系统中用户输入的问题q的标题部分s=[s1,s2,...,sn],qb是用户输入的问题q的详细描述部分b=[b1,b2,...,bm],问题q由s和b连接表示,输入答案句

其中si,i=1,2,...,n为qs中第i个单词所对应的词向量,bi,i=1,2,...,m为qb中第i个单词所对应的词向量,aj,j=1,2,...,n为at中第j个单词所对应的词向量,m为qb经过分词以及去除停用词后剩余的词语数量,n为at经过分词以及去除停用词后剩余的词语数量;bi、aj通过在预训练的词向量矩阵e∈rd×|d|中查找词语对应的分布式表征向量得到;

其中d表示词向量的维度,|d|是词典d的大小;

步骤c12:将向量化后的问题q和答案at分别输入到并行的两个带有注意力机制的卷积神经网络中,通过卷积层与池化层后分别得到问题的表征融合向量xq和答案的表征向量xat,将xq和xat用一个连接向量xt表示,输入到全连接的隐藏层来得到问答对的表示向量vt:

xt=[xq,xat]

vt=σ(whxt+bh)

其中分别是两个卷积神经网络的参数,wh,bh是全连接掩藏层的参数,σ是激活函数,输出vt是输入问答对(q,at)的表征向量;

步骤c13:对问题q和答案集合{at|t=1,2,...,l}中的每个答案构成的问答对(q,at),重复步骤c12;迭代结束后得到问答序列qa=[q,a1,...,at,...,al]对应的问答对向量序列pr=[v1,...,vt,...,vl]。

在本实施例中,所述步骤c2具体为:对于长短期记忆网络的正向,依次输入v1,...,vt,...,vl,对于长短期记忆网络的反向,则依次输入vl,...,vt,...,v1,其中,vt表示问答对(q,at)的联合表示;计算每个问答对在正向和反向的隐层状态值,得到每个问答对的隐层向量,得到问答对序列的表征向量h:

h=[h1,...,ht,...,hl]

其中,vt为文本中第t个问答对的联合表征向量,表示问题d中第t个问答对的在正向长短期记忆网络中的隐层状态向量,表示问答对(q,at)在反向长短期记忆网络中的隐层状态向量,f为长短期记忆网络中对隐层状态的计算函数,ht为正向和反向状态向量的连接。

在本实施例中,所述步骤c3中具体包括以下步骤:

步骤c31:问题由问题描述和问题主体两部分组成,s表示问题描述,由词向量化后的问题描述组成,b表示问题主体,由向量化后的问题主体组成,通过正交分解学习s和b的每个词向量间的相似性和差异性

s=[s1,s2,...,sn]

b=[b1,b2,...,bm]

其中si表示问题描述第i个词的向量化表示,bi表示问题主题第i个词的向量化表示

步骤c32:通过全连接层计算多维注意力权重,使用tanh函数激活,然后将获得的向量归一化产生多重注意力机制,得到的输出是问题描述中的每个词向量对问题主体的权重之和,计算公式如下:

其中,wp1和bp1为训练的参数,c为可调整的参数,是词的权重,⊙表示逐点相乘,是每个问题主题b词向量b乘上对问题描述s的第i个单词si的权重之和,s=[s1,s2,...,sl],b=[b1,b2,...,bm];

步骤c32:获取问题描述的相似向量,计算公式如下:

fpara=σ(wp3semb+wp3sap+bp2)

spara=fpara⊙semb+(1-fpara)

其中wp3,wp3,b是训练参数,σ是激活函数,⊙表示逐点相乘

步骤c33:将问题和用户历史回答对齐,计算问题表征和用户历史回答表征的注意力和加权和,计算公式如下:

其中,wa1,wa2为训练的参数,表示spara和sorth连接的第i个词向量,表示答案的第j个词向量,为了计算注意力权重。

步骤c34:将问题和用户历史回答对齐,计算问题表征和用户历史回答表征的注意力和加权和,计算公式如下:

as=ws2tanh(ws1sai+bs1)+bs2

其中ws2,ws1,bs1,bs2是可训练的参数,csum通过同样的方法得到

步骤c35:将问题的表征向量和用户的历史回答向量连接:

u=[ssum,ccum]。

在本实施例中,所述步骤c4包括以下步骤:

步骤c41:计算用户的专业水平得分,用户的专业水平得分受用户在回答问题时的积极性和参与程度的影响,计算公式如下:

其中,f(uj)为用户参与程度,问题根据所提问的领域的不同有不同的问题类型,xj是用户uj提供的答案总数,μ,ub是基于用户的答案分布模式确定的阈值,用于奖励大多数活跃用户;g(uj)为用户最佳答案级别,expe(uj)表示用户专业化程度;

步骤c42:计算用户的置信水平con(uj),计算公式如下:

con(uj)=yj/xj

其中yj是用户j的最佳答案数,xj是答案总数

步骤c43:根据用户置信水平得分与用户专业水平得分,计算用户的信誉分数,计算公式如下:

sj=con(uj)·expe(uj)

其中,sj表示用户j的信誉分数,为置信水平con(uj)和用户专业水平expe(uj)的乘积。

在本实施例中,所述步骤c6具体包括以下步骤:

步骤c61:将特征向量输入到全连接层,并使用softmax归一化,计算答案属于各类别的概率,计算公式如下:

y=fdense(wdense1·h+wdense2·u+wdense3·sj)

p(yi)=softmax(y)

其中,wdense1,wdense2,wdense3为全连接层权重矩阵,,fdense为激活函数,,p(yi)为预测为类别i的概率,0≤p(yi)≤1,l为类别的总数;

步骤c62:用交叉熵作为损失函数计算损失值,通过梯度优化算法adagrad进行学习率更新,利用反向传播迭代更新模型参数,以最小化损失函数来训练模型;

其中最小化损失函数,loss的计算公式如下,

其中d为问答对训练集。

本发明还提供了用于实现上述方法的智能问答系统,包括:

预处理模块,对问答对数据集和用户历史回答数据集进行预处理,去除停用词,分词,词向量化;

深度网络训练模块,用于使用问答对数据集和用户历史回答数据集训练基于融合cnn与双向lstm的深度网络;

判定模块,用于将回答输入到深度网络进行类别判定。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

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