一种基于BERT和独立循环神经网络的问句分类方法与流程

文档序号:24067452发布日期:2021-02-26 13:37阅读:103来源:国知局
一种基于BERT和独立循环神经网络的问句分类方法与流程
一种基于bert和独立循环神经网络的问句分类方法
技术领域
[0001]
本发明属于自然语言处理领域,具体涉及一种基于bert和独立循环神经网络(indrnn)的问句分类方法。


背景技术:

[0002]
自然语言处理(naturallanguageprocessing,nlp)也称自然语言理解(naturallanguageunderstanding,nlu),是利用计算机为工具对人类特有的书面形式和口头形式的自然语言的信息进行各种类型处理和加工的技术,问答系统是自然语言处理的一个研究方向,即通过计算机系统对用户提出的问题的理解,利用自动推理等手段,在有关知识资源中自动求解答案并作出相应的回答,主要包含文本理解、信息检索和答案抽取三部分。对于社区问答来说,用户使用自然语言的表达方式提出问题,而其他用户通过用户的问题贡献自己的答案。用户通过社区问答搜索到自己想要的问题和答案。问句理解是对问题的类别进行确认,从而为社区问答系统的信息检索过程缩小问题和答案的搜索范围,提高准确性,所以提高社区问答问句分类准确性,是提高社区问答系统整体可用性可靠性的必要条件。
[0003]
在问句分类之前需要对问句类别进行确定。目前对于中文问句的分类并没有一个统一的标准,在国际中比较的权威的分类体系是uiuc问句分类体系,这是一个基于答案类型的层次分类体系。但是uiuc分类体系是针对英文类别的,在中文问句分类体系方面,哈工大在uiuc的分类系统的基础上根据汉语固有的特点定义了一套中文分类体系,主要包含七个大类:人物、地点、数字、时间、实体、描述、未知;每一个大类下面又细分了一些小类,总共60个,而对于现如今比较流行的问答社区来说,都有自己的一套分类规则,例如百度知道和知乎,问题根据类型分为“体育”、“电脑”、“经济”等。
[0004]
目前问句分类主要分为两个大的方向,首先是基于统计机器学习的分类方法,其次是基于深度学习的方法,主要是使用各类神经网络模型。hui等人在进行问句分类时考虑到问题文本中词序和词间距的因素,提出了一种扩展类规则模型,但该方法需要定义大量的扩展类规则;mishra等人根据从问题文本中抽取的词特征、语义特征和句法特征来训练不同的分类器(朴素贝叶斯、最近邻、支持向量机)进行问题的分类,该方法面对海量数据处理时性能较差;liu等人在svm的基础上提出了一种依赖句法关系和词性特征的核函数方法,但是该方法不能充分捕捉语义信息;杨思春等人为了解决问句分类研究中特征提取开销过大的问题,提出了一种包含基本特征和词袋绑定特征的问句特征模型,以此来获取更加有效的问句特征集。由于上述方法中不能处理大量的文本,其数据分类的准确性较低,急需一种能快速准确的对问句数据进行分类的方法。


技术实现要素:

[0005]
为解决以上现有技术存在的问题,本发明提出了一种基于bert和独立循环神经网络的问句分类方法,该方法包括:实时获取待分类的问句数据,将待分类的问句数据输入到
训练好的问句分类模型中,得到分类后的数据;问句分类模型包括bert模型和基于注意力机制的独立循环神经网络indrnn模型;对问句分类模型进行训练的过程包括:
[0006]
s1:获取社区问答问句原始数据集,对社区问答问句原始数据集进行预处理,得到训练集、验证集和测试集;
[0007]
s2:将训练集中的数据输入到bert模型中提取特征,得到含有语义特征的序列向量;
[0008]
s3:将含有语义特征的序列向量输入到基于注意力机制的indrnn模型中,得到独立循环神经网络的隐藏状态;
[0009]
s4:将独立循环神经网络的隐藏状态进行叠加,在进行叠加过程中采用注意力机制捕获上下文的相关信息,得到神经网络输出结果;
[0010]
s5:将神经网络的输出结果输入到softmax层,得到分类结果;
[0011]
s6:根据分类结果计算基于注意力机制的indrnn模型的损失函数;
[0012]
s7:采用adam算法对损失函数进行优化,对基于注意力机制的indrnn模型反向传播训练,不断修改、更新各层神经元的参数值以及连接权重;
[0013]
s8:将验证集中的数据输入到问句分类模型中,确定模型参数的最佳值,使误差值达到最小,完成问句分类模型的训练;
[0014]
s9:将测试集中的数据输入到训练好的问句分类模型中,得到预测结果。
[0015]
优选的,对社区问答句原始数据集进行预处理的过程包括:对数据集进行清洗,去除数据集中重复和残缺的问答语句;将清洗后的数据集按70%:15%:15%的比例划分为训练集、验证集和测试集。
[0016]
优选的,得到含有语义特征的序列向量的过程包括:
[0017]
s21:将训练集中的数据划分为标签和内容,再将划分后的数据进行分词处理,得到分词文本序列;
[0018]
s22:对分词文本序列进行全词掩码处理,对处理好后序列的头部添加一个特殊标记[cls],每个句子采用标记[sep]分隔;
[0019]
s23:将标记后的序列向量输入到双向transformer编码器中提取特征向量;
[0020]
s24:采用多头注意力机制对提取的特征向量进行拼接,得到含有语义特征的序列向量。
[0021]
进一步的,采用多头注意力机制对提取的特征向量进行拼接的公式为:
[0022]
multihead(q,k,v)=concat(head1,...,head
n
)w
o
[0023][0024][0025]
优选的,得到循环神经网络隐藏状态的过程为:
[0026]
s31:神经元cell获取语义特征的序列向量x
t
和一个神经元输出的循环神经网络隐藏状态h
t-1

[0027]
s32:将参数矩阵u和上一个神经元的输出h
t-1
进行点乘运算,将参数矩阵w与语
义特征的序列向量x
t
相乘,将上述点乘运算结果与乘法运算结果相加,并加上偏置项b,得到待激活序列向量;
[0028]
s33:将待激活序列向量传给激活函数σ得到循环神经网络隐藏状态h
t

[0029]
s34:输出循环神经网络的隐藏状态h
t
并将其传给下一个神经元cell;
[0030]
计算独立循环神经网络隐藏状态的公式为:
[0031][0032]
优选的,得到隐藏状态的过程包括:
[0033]
s41:将独立循环神经网络的隐藏状态进行双向叠加:
[0034][0035][0036][0037]
其中,和表示前向和后向indrnn隐藏状态;t
i
表示i位置单词经过bert层输出的向量;n表示单词个数;h
i
表示当前隐藏层状态;
[0038]
s42:根据当前隐藏层状态h
i
和单词上下文向量u
w
计算当前单词注意力权重a
i
,计算公式为:
[0039]
u
i
=tanh(w
s
h
i
+b
s
)
[0040][0041]
其中h
i
为当前隐藏层状态;u
i
为h
i
的隐藏表示;w
s
为权重矩阵;b
s
为偏置项;u
w
表示词级上下文向量,随机生成,作为模型的训练参数;n表示单词数量;a
i
表示问题文本中第i个单词的权重。
[0042]
s43:据注意力权重向量a
i
和当前隐藏状态h
i
计算得到注意力向量s
i
,计算公式为:
[0043][0044]
s44:将向量s
i
输入到softmax层,得到预测结果。
[0045]
进一步的,预测结果的表达式为:
[0046]
p
i
=softmax(w
s
s
i
+b
s
)
[0047]
优选的,损失函数为:
[0048][0049]
优选的,采用adam算法对损失函数进行优化的过程包括:从训练集中采集m个样本{x
m
},样本对应的目标为实际标签的概率y;计算目标y对应的梯度g;根据对应的梯度g对参数进行更新和修正。
[0050]
进一步的,进行更新和修正的内容包括:
[0051]
更新有偏一阶矩估计:s

ρ1s+(1-ρ1)g
[0052]
更新有偏二阶矩估计:r

ρ2r+(1-ρ2)g2[0053]
修正一阶矩的偏差:
[0054]
修正二阶矩的偏差:
[0055]
计算更新:
[0056]
应用更新:θ

θ+δθ
[0057]
本发明有益效果:
[0058]
(1)本发明利用bert模型,得到的向量序列能捕捉更多的内在信息,相对rnn更加高效、能捕捉更长距离的依赖,提高预测精度。
[0059]
(2)由于循环神经网络(rnn)处理时间序列问题时有梯度爆炸和梯度消失问题,本发明使用合适优化参数的独立循环神经网络(indrnn)对文本序列处理,能达到很好的预测效果。与传统模型相比具有更好的自适应性。
[0060]
(3)使用注意力机制衡量对应时间段的数据预测的结果,具有更好的预测效果。
附图说明
[0061]
图1为本发明的整体流程图;
[0062]
图2为本发明的模型训练过程图;
[0063]
图3为本发明的模型结构图。
具体实施方式
[0064]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0065]
本发明的一种问句分类方法的实施例,如图3所示,包括:首先将处理后的数据输入到bert模型中,通过transformer的自注意力机制,将词与词之间的关联程度转为权重系数矩阵,将不同的attention结果拼接起来,得到embedding词向量。将embedding词向量输入到indrnn神经网络中,在indrnn中,每个神经元只接收来自当前时刻的输入和它本身在上一时刻的隐藏状态信息,下一层中的每个神经元独立地处理前一层中所有神经元的输出,降低了构建深度网络结构的难度,增强了对更长序列的建模能力。经过注意力机制衡量序列中每个词的重要性,最后通过softmax层进行预测。
[0066]
一种问句分类方法的优选实施例,其方法包括:实时获取待分类的问句数据,将待分类的问句数据输入到训练好的问句分类模型中,得到分类后的数据;问句分类模型包括bert模型和基于注意力机制的独立循环神经网络indrnn模型。
[0067]
如图1所示,首先问句经过预处理输入bert模型生成序列向量;其次将序列向量输
入到indrnn模型,同时indrnn模型中融合注意力机制,更好地关联上下文获取语义信息;最终经过归一化处理输出训练结果。
[0068]
如图2所示,对问句分类模型进行训练的过程包括:
[0069]
s1:获取社区问句原始数据集,对社区问句原始数据集进行预处理,得到训练集、验证集和测试集;
[0070]
s2:将训练集中的数据输入到bert模型中提取特征,得到含有语义特征的序列向量;
[0071]
s3:将含有语义特征的序列向量输入到基于注意力机制的indrnn模型中,得到独立循环神经网络的隐藏状态;
[0072]
s4:将独立循环神经网络的隐藏状态进行叠加,在进行叠加过程中采用注意力机制捕获上下文的相关信息,得到神经网络输出结果;
[0073]
s5:将神经网络的输出结果输入到softmax层,得到分类结果;
[0074]
s6:根据分类结果计算基于注意力机制的indrnn模型的损失函数;
[0075]
s6:采用adam算法对损失函数进行优化,对基于注意力机制的indrnn模型反向传播训练,不断修改、更新各层神经元的参数值以及连接权重;
[0076]
s7:将验证集中的数据输入到问句分类模型中,确定模型参数的最佳值,使误差值达到最小,完成问句分类模型的训练;
[0077]
s8:将测试集中的数据输入到训练好的问句分类模型中,得到预测结果。
[0078]
社区问答问句原始数据集来自百度公开数据集,该数据采集自百度知道,大约包含了100万条各个类别的数据,总共选取教育、健康、生活、娱乐、游戏、体育、商业、文化、汽车、电子10个类别各两万条总共20万条数据;数据集进行清洗,去除数据集中重复和残缺的问答语句;将清洗后的数据集按照70%:15%:15%分为训练集、验证集和测试集。
[0079]
得到含有语义特征的序列向量的过程包括:将训练集中的数据划分为标签和内容两个部分,将划分好的数据输入到bert模型中;首先通过分词处理得到分词文本序列;然后对分词序列的部分词进行全词掩码mask处理,再为序列的开头添加一个特殊标记[cls],句子间用标记[sep]分隔;将序列向量输入到双向transformer进行特征提取,最后得到含有丰富语义特征的序列向量。
[0080]
采用注意力机制对数据进行处理,其公式为:
[0081][0082]
其中,attention(
·
)表示注意力机制;q表示查询向量,k表示键向量、v表示值向量;softmax(
·
)表示归一化函数,t为矩阵转置的标识,d
k
表示一个query和key向量的维度。
[0083]
将多头注意力机制得到的不同attention结果拼接起来得到最终输出序列向量:
[0084]
multihead(q,k,v)=concat(head1,...,head
n
)w
o
[0085]
head
i
=attention(qw
iq
,kw
ik
,vw
iv
)
[0086]
其中,multihead(
·
)表示多头注意力head数;q表示查询向量,k表示键向量、v表示值向量;concat(
·
)表示拼接不同的注意力;head
i
表示不同的注意力;w
o
表示multihead
线性变换的参数。
[0087]
将bert层作为embedding层输入到indrnn模型;indrnn模型t时刻的输出表达式为:
[0088][0089]
其中,t表示时刻,x
t
表示t时刻的输入,即上述的bert模型的输出序列向量;w表示隐藏层之间的权重,σ表示神经元的激活函数;u表示输入层和隐藏层之间的权重;b表示偏置值;表示矩阵元素积;h
t-1
表示t-1时刻(即前一个时刻)的隐藏层输出,即在t时刻每个隐藏层神经元只接受此刻的输出以及t-1时刻自身的状态作为输入。
[0090]
当需要构建多层循环神经网络时,新的隐藏层输出为:
[0091][0092]
其中,h
t
表示t时刻的前一层隐藏层输出;h

t-1
表示新的隐藏层在t-1时刻的输出;h

t
表示新的隐藏层输出;w

表示新的隐藏层之间的权重,σ表示神经元的激活函数;u

是前一个隐藏层和当前隐藏层之间的权重;b

表示当前层的偏置值;表示矩阵元素积。
[0093]
在问句分类任务中,最终目标是根据问句文本内容来预测对应问句文本的类别,即根据问句文本词向量x1到x
n
预测分类的值。
[0094]
通过将独立循环神经网络的隐藏状态进行叠加,并在此过程利用注意力机制来捕获上下文相关信息。
[0095]
首先将独立循环神经网络的隐藏状态进行双向叠加:
[0096][0097][0098][0099]
其中,和表示前向和后向indrnn隐藏状态;t
i
表示i位置单词经过bert层输出的向量;n表示问句中的单词个数;h
i
表示当前隐藏层状态;
[0100]
其次,并非所有的单词对句子表达都有同等的贡献,因此引入注意力机制来衡量单词的重要性,其计算公式为:
[0101]
u
i
=tanh(w
s
h
i
+b
s
)
[0102][0103]
其中h
i
为当前隐藏层状态;u
i
为h
i
的隐藏表示;w
s
为权重矩阵;b
s
为偏置项;u
w
表示词级上下文向量,随机生成,作为模型的训练参数;n表示单词数量;a
i
表示问题文本中第i个单词的权重。
[0104]
根据注意力权重向量a
i
和当前隐藏层状态h
i
计算得到注意力向量s
i
,其计算公式为:
[0105][0106]
注意力向量s
i
通过softmax层输入,得到的预测结果为:
[0107]
p
i
=softmax(w
s
s
i
+b
s
)
[0108]
其中,p
i
表示预测分类结果,softmax(
·
)表示对数据进行归一化处理,w
s
表示权重矩阵,s
i
表示注意力层输出向量,b
s
表示偏移量。
[0109]
计算真实状态y和预测状态p
i
之间的交叉熵,其表达式为:
[0110][0111]
其中,x表示样本,y表示实际标签的概率,p
i
表示预测概率,n表示样本总数量。
[0112]
网络经过正向传播和反向传播,不断修改、更新各层神经元的参数值以及连接权重,验证集用于确定参数的最佳值,使误差值达到最小,直到满足迭代停止条件,得到训练好的模型。
[0113]
采用adam算法最小化损失函数优化模型。adam是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重。adam通过计算梯度的一阶矩估计和二阶矩估计为不同的参数设计独立的自适应性学习率。主要计算过程为:从训练集中采集m个样本{x
m
},样本对应的目标为实际标签的概率y;计算目标y对应的梯度g;根据对应的梯度g对参数进行更新和修正。
[0114]
进行更新和修正的内容包括:
[0115]
更新有偏一阶矩估计:s

ρ1s+(1-ρ1)g
[0116]
更新有偏二阶矩估计:r

ρ2r+(1-ρ2)g2[0117]
修正一阶矩的偏差:
[0118]
修正二阶矩的偏差:
[0119]
计算更新:
[0120]
应用更新:θ

θ+δθ
[0121]
其中,s表示偏一阶矩估计,ρ1表示矩估计的指数衰减速率,r表示偏二阶矩估计,ρ2表示矩估计的指数衰减速率,表示修正的一阶矩偏差,表示t时刻指数衰减速率,表示修正的二阶矩偏差,表示t时刻指数衰减速率,θ表示参数向量,δθ表示计算得到的偏差值,∈表示步长,δ表示小常数。
[0122]
在进行更新和修正过程中,将步长∈默认为0.001;矩估计的指数衰减速率ρ1和ρ2默认为0.9和0.999;数值稳定的常数δ默认为10-8
;初始化一阶和二阶矩变量s=0和r=0,初始化时间步t=0。
[0123]
对预测的结果进行评价,评价指标为精确率、召回率和f1值。
[0124]
精确率是指正确分类的正例个数占分类为正例的实例个数的比例。精确率的表达
式为:
[0125][0126]
其中,tp表示实例为正确分为该类的样本数目;fp表示实例不是该分类,但是预测为该类的数量。采用宏平均的度量标准,先对每一个类计算精确率,然后对所有类的精确率求算术平均值:
[0127][0128]
其中,macro_p表示宏平均精确率,n表示分类类别,p
i
表示第i类的精确率。
[0129]
召回率是指正确分类的正例个数占实际正例个数的比例。召回率recall的表达式为:
[0130][0131]
其中,fn表示实例是该分类,但是被预测为其他类别的数量。采用宏平均的度量标准,先对每一个类计算召回率,然后对所有类别的召回率求算术平均值:
[0132][0133]
其中,macro_r表示宏平均召回率,n表示分类类别,ri表示第i类的召回率。
[0134]
f1能够对precision和recall进行整体的评价,其表达式为:
[0135][0136]
采取宏平均的度量标准:
[0137][0138]
其中,macro_f1表示整体评价指标,是基于精确率和召回率计算得出。
[0139]
以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1