随着互联网的蓬勃发展,大量的文字信息不断涌现. 这些信息在新闻资讯、社交和网上购物等场景具有重要的价值,分类是上述应用场景的重要技术手段,而文字信息作为分类对象往往以单个语句或是几个词语拼接成的短句形式出现,因此建立一个准确的句子分类器是尤为关键的. 句子分类的研究具有很高的应用价值.
深度学习已经在计算机视觉[1]、语音识别[2]等领域取得了辉煌成果. 2013年,Mikolov等[3]通过CBOW和Skip-gram模型构建了word2vec工具,完成了对词向量的高效训练,让Hinton[4]提出的词向量理论得以广泛应用. 词向量作为从高维空间映射到低维空间的实数向量,能够将词语的大量潜在信息表示出来. 借助词向量,深度学习在自然语言处理领域的应用近年来成了研究热点[5-6].
卷积神经网络(convolutional neural network, CNN)能够从词向量表示的句子中获取局部敏感信息,得到高层次的句子特征,并能够有效应用于句子分类问题[7]. 目前,大多数用于句子分类的卷积神经网络模型往往直接以单一训练模型得到的句子中每个词的词向量作为输入,并提取特征,而在具体分类任务下,句子中不同的词对分类结果的影响是不同的,同时每个词对应的词向量受限于单一词向量训练模型,这两方面均影响最终提取的用于分类的句子特征. 针对上述问题,在前人研究成果的基础上,本文提出一种基于词向量注意力机制的双路卷积神经网络句子分类模型(Double CNN sentence classification with attention mechanism of word embeddings, AT-DouCNN). 该模型同时具有以下2个特点:
1)模型对句子中每个词对应的词向量进行调整得到扩展词向量,使得具体分类任务下句子中的关键信息更易被提取.
2)以不同词向量训练模型得到的词向量同时作为输入,分别进行卷积和池化,并在全连接层进行融合,使得提取的句子特征更加丰富.
在多个公开数据集下将该模型与几个典型的句子分类模型进行对比,实验结果表明本文所提出的模型具有良好的句子分类效果.
1 相关工作
句子分类作为自然语言处理的基础研究问题一直受到研究人员的关注. 在深度学习大规模应用到自然语言处理领域之前,研究人员大多采用统计学习的方法,并结合语言学的思想. 针对具体分类任务,多种基于文本语言学特征的分类方法相继被提出. Turney[8]定义了5种句法模式,从评论中提取观点,并能够有效地应用到情感分类问题中. Yu等[9]用形容词标注的方法,在观点语句分类问题上取得了良好的效果. Wiebe等[10]通过基于规则的方法,利用主观性线索自动生成训练数据,并加入自我训练机制提升了主客观句的分类效果. Nakagawa等[11]利用带有隐变量的CRF模型,提出一种基于依存树的情感分类模型. Silva等[12]采用SVM模型并结合多种语言学特征,有效地应用在问题分类中. Wang等[13]在朴素贝叶斯方法的基础上,提出了MNB和NB-SVM 2种分类模型,并提取bigram特征,用于情感和主题的分类任务.
深度学习在自然语言处理领域的应用推动了句子分类问题的研究. Socher等[14]提出了一种递归神经张量网络(recursive neural tensor network, RNTN)模型,利用解析树表示短语,提升了句子情感分类的效果. Kalchbrenner等[15]提出了一种动态卷积神经网络(dynamic convolutional neural network, DCNN)模型,该模型以词向量作为输入,并通过宽卷积和动态k-max池化提取句子特征,有效地应用在情感和问题的分类任务中. Kim[7]提出了经典的卷积神经网络句子分类模型,同时给出几种变形,通过多个卷积核对词向量组成的矩阵进行卷积,然后进行最大池化提取句子特征,并用于多个分类任务. Zhou等[16]将卷积神经网络和长短期记忆网络(long-short term memory, LSTM)相结合,提出一种C-LSTM模型,该模型利用CNN提取句子中短语的特征,然后将短语特征输入到LSTM中获取具有短语间依赖信息的句子特征,在情感和问题的分类任务上同时取得了良好的效果.
总的来看,借助词向量、基于深度学习的句子分类模型在大多数分类任务中取得了比基于统计学习和语言学思想的传统方法更好的分类效果,并能够同时适用于多个不同的分类任务.
2 句子分类模型AT-DouCNN
2.1 词向量注意力机制
注意力机制最早应用于图像处理领域,能够使神经网络在处理图像数据时重点关注对目标任务重要的信息.在自然语言处理领域,注意力机制能够有效提高机器翻译[17]、特定目标情感分析[18]等任务的效果.在句子分类问题中,句子中的每个词对具体任务分类结果的影响是不同的,例如在情感分类任务中的一个句子“the film is one of the year’s best.”,句子中的词语“best”对句子整体被判定为正向起到了关键作用,其重要性要大于句子中的其他词语. 基于注意力机制的神经网络模型在解决句子分类问题时应识别句子中哪一部分信息是重要的,并高度关注这些信息.
在长短期记忆网络、门控循环单元网络(gated recurrent unit, GRU)等记忆网络模型中,输入的词语之间具有依赖关系,基于注意力机制的记忆网络能够借助一个上下文向量(context vector),通过训练识别句子中词语的重要程度[19]. 在普通的卷积神经网络中,输入的词语之间是相互独立的,zhao等[20]提出了一种词向量注意力机制,通过计算句子中每个词语与其他词语在具体分类任务中的关联系数构建该词语的上下文向量,并与该词语对应的词向量连接作为输入,能够使得句子中与其他词语关系系数较大的词语得到更多关注,这些词语往往是分类的重要信息.图1给出了该词向量注意力机制的核心结构.
图 1
词向量注意力机制的核心结构
Fig. 1
Core architecture of attention mechanism of word embeddings
假定一个句子的长度为n,hi∈Rk(1≤i≤n)为句子中第i个词对应的k维词向量表示. 在图1中,
$n = 6$
,
${h_1}$
~
${h_6}$
是对应的词向量表示.令
${m_i}$
为
${h_i}$
的上下文向量,
${m_i}$
由多个词向量的加权和得到:
${m_i} = \sum\limits_{j = 1,j \ne i}^n {\left({\alpha _{i,j}} \,\, {h_j}\right)} .$
(1)
式中:αi, j为注意力权重,通过softmax函数[17]得到:
${\alpha _{i,j}} = \frac{{\exp\, \, ({\rm{score}}\;({h_i},{h_j}))}}{{ \displaystyle\sum\limits_{j' = 1}^n {\exp \, \, ({\rm{score}}\;({h_i},{h_{j'}}))} }}.$
(2)
从式(2)中可以得到
${\alpha _{i,j}} \geqslant 0,\;\;\sum\limits_{j = 1}^n\, {{\alpha _{i,j}}} = 1.$
式(2)中的score函数用来计算2个词语间的关联系数,从而衡量词语之间的相关性,函数定义如下:
${\rm {score}}\,({h_i},{h_j}) ={ v_{\rm a}}{^{\rm{T}}}\tanh\,\, ({{ W}_{\rm a}}\,[{h_i} \oplus {h_j}]).$
(3)
其中,
${ v}_{\rm{a}}$
和
${{ W}_{\rm a}}$
为训练参数.
从式(1)~(4)可以看出,对于一个句子中的词语i及对应的词向量
${h_i}$
,该词语与句子中其他词语j(
$j \ne i$
)的关联系数score越大,计算上下文向量
${m_i}$
的注意力权重
${\alpha _{i,j}}$
则越大. 例如对句子“the film is one of the year’s best.”进行情感分类,通过对模型的训练,句子中的某个词语如“film”与词语“best”的关联系数score(“film”, “best”)大于“film”与其他词语的关联系数,因此词语“best”在词语“film”的上下文向量中具有更大的注意力权重,从而能够让模型通过这种注意力机制更多地关注词语“best”.
考虑到句子中2个词语间的相关性往往随着距离的增大而趋于减弱,zhao等[20]在式(4)的基础上引入了距离衰减因子
$\lambda $
,从而能够更加准确地描述2个词语的相关性:
${\rm{score}}\,({h_i},{h_j}) = {(1 - \lambda )^u} \cdot { {v}_{\rm a}}{^{\rm{T}}}\tanh\,\, ({{ W}_{\rm a}}[{h_i} \oplus {h_j}]).$
(4)
其中
$\lambda \in [0,1)$
,
$u = \left| {j - i} \right| - 1$
. 当
$\lambda $
趋近于0时,2个词语间的相关性几乎不受距离因素的影响;当
$\lambda $
趋近于1时,2个词语间的相关性则几乎取决于距离因素.
通过词向量
${h_i}$
和上下文向量
${m_i}$
,可以得到最终的扩展词向量,并用于后续的卷积操作:
${h'_i} = {h_i} \oplus {m_i}.$
(5)
2.2 AT-DouCNN模型介绍
本文提出一种基于词向量注意力机制的双路CNN句子分类模型AT-DouCNN. 模型由输入层、注意力层、卷积层、池化层、合并层和全连接层6个部分组成. 模型整体框架如图2所示.
图 2
AT-DouCNN模型整体框架
Fig. 2
Overall framework of AT-DouCNN model
第一层是输入层. 句子中每个词需要转化为神经网络能够识别的词向量作为输入. 本文提出的模型同时利用word2vec和Glove两种方法得到每个词语的词向量. word2vec是一种广泛使用的高效词向量训练工具[3],其基本思想是对出现在上下文环境里的词语进行预测,得到的词向量能够很好地建立词与词在语义和语法上的联系. Glove是Penning-ton等[21]通过语料库构建共现矩阵得到的一种基于全局信息的词向量训练模型,与word2vec相比,Glove更加充分地利用了语料库的全局统计信息.
假设一个分类任务的数据集中最大句子长度为n,不足长度n的句子采用零填充(zero padding)到最大长度,令
${{ x}_{i}} \in {{{\bf R}}^{{d}}}$
为使用word2vec得到的第i个词的d维词向量表示,
${{ y}_i} \in {{{\bf R}}^{e}}$
为使用Glove得到的第i个词的e维词向量表示,所有的词分别组成句子矩阵
${ A} \in {{\bf R}^{n \times d}}$
和
${ B} \in {{\bf R}^{n \times e}}$
并作为模型的输入.
第二层是注意力层. 将输入句子矩阵A和B中每个词语的词向量表示xi、yi按照上述的式(1)~(2)、(4)~(5)得到对应的扩展词向量表示分别为
${ x}{'_i} \in {{\bf R}^{2d}}$
、
${ y}{'_i} \in {{\bf R}^{2d}}$
,进而组成新的句子矩阵分别为
${ M} \in {{\bf R}^{n \times 2d}}$
、
${ N} \in {{\bf R}^{n \times 2e}}$
.
第三层是卷积层. 对于句子矩阵M和N,分别利用卷积核
$w \in {{\bf R}^{g \times 2d}}$
和
$v \in {{\bf R}^{h \times 2e}}$
进行卷积操作:
${s_i} = {f_1}(w\cdot {{ x}'_{i:i + g - 1}} + {b_0}),$
(6)
${t_i} = {f_2}(v\cdot {{ y}'_{i:i + h - 1}} + {b_1}).$
(7)
式中:f1、f2为激活函数,
${{ x}'_{i:i + g - 1}}\left( {{{ y'}_{i:i + h - 1}}} \right)$
为矩阵M(N)的第i行到第i+g–1(i+h–1)行,b0、b1∈R为偏置项,si、ti表示卷积操作所提取的局部特征. 滑动窗口大小为g和h的卷积核w、v分别作用于
$\left\{ {{{ x'}_{1:g}},\;{{ x'}_{2:g + 1}},\; \ldots ,\;{{ x'}_{n - g + 1:n}}} \right\}$
、
$\left\{ {{{ y'}_{1:h}},\;{{ y'}_{2:h + 1}},\; \ldots ,\;{{ y'}_{n - h + 1:n}}} \right\}$
得到对应的特征图(feature map):
$S = {\rm{ }}[{s_1},{s_2},\cdots,{s_{n - g + 1}}],$
(8)
$T = [{t_1},{t_2},\cdots,{t_{n - h + 1}}].$
(9)
其中
$S \in {{\bf R}^{n - g + 1}}$
,
$T \in {{\bf R}^{n - h + 1}}$
. 使用多个卷积核能够提取更多的特征进而可得到多个特征图.
第四层是池化层. 对卷积核产生的特征图S、T进行最大池化操作,获得卷积核获取的局部特征中的最重要特征,即
$\hat s = \max\,\, (S)$
、
$\hat t = \max\,\, (T)$
. 假设对M、N进行卷积操作的卷积核的个数分别为a和b,则可得到
$\hat s = [{\hat s_1},{\hat s_2},\cdots,{\hat s_a}],$
(10)
$\hat t = [{\hat t_1},{\hat t_2},\cdots,{\hat t_b}].$
(11)
式中:
$\hat s \in {{\bf R}^a}$
,
$\hat t \in {{\bf R}^b}$
.
第五层是合并层. 对池化层得到的
$\hat s$
和
$\hat t$
进行合并操作,得到最终的句子特征:
$r = \hat s \oplus \hat t.$
(12)
式中:
$r \in {{\bf R}^{a + b}}$
.
第六层是全连接层. 将合并层得到的句子特征r作为全连接层的输入,并利用softmax函数得到每个类别的概率,进而得到最终的分类结果,即
$z = {{ W}_{\rm s}}r + {B_{\rm s}},$
(13)
${p_i} = {{\exp\,\, ({z_i})}}\left/{{\displaystyle\sum\limits_{j = 1}^C {\exp \,\,({z_j})} }}.\right.$
(14)
式中:
${ W}_{\rm s} \in {{\bf R}^{C \times \left| r \right|}}$
和
${B_{\rm s}} \in {{\bf R}^C}$
分别为全连接层的权重矩阵和偏置,C为数据集的类别数,pi为句子属于第i个类别的概率.
2.3 模型训练
本文采用反向传播算法通过最小化交叉熵代价函数训练AT-DouCNN模型,代价函数为
${\rm {Loss}} = - \frac{1}{D}\sum\limits_{i = 1}^D \sum\limits_{j = 1}^C\; \left({{{\hat p}_{ij}}\log } \, {p_{ij}}\right)+ \beta\, {\left\| \theta \right\|^2}.$
(15)
其中D为训练的样本数,
$\hat p$
为句子的实际类别,
$p$
为句子的预测类别,
$\, \beta {\left\| \theta \right\|^2}$
为正则项. 对于模型的训练方式,本文根据Adadelta更新准则[22]采用基于mini-batch的随机梯度下降方法. Batch size和正则化因子根据验证集的表现进行人工调整. 针对深度学习方法在较小数据集上易过拟合的特点,本文采用early stopping的方法,根据验证集上的效果决定模型停止训练的时刻.
3 实验与分析
在本文的实验中,设置word2vec和Glove训练的词向量的维数均为300,使用从10亿数量级的英文新闻语料库训练得到的word2vec词向量[23]以及从抓取的开源网络文本数据中训练得到的Glove词向量[24],采用随机初始化的方法处理实验数据集中没有出现在word2vec或glove词表中的词语. 对于模型的每路卷积操作,设置卷积核的滑动窗口大小均为3、4、5,每种尺寸的卷积核得到的特征图的数量为100,激活函数选取ReLU(rectified linear units)函数[7].
3.1 数据集
为了验证模型的有效性,本文采用SST-1[25]、SST-2和TREC[26] 3个公开的数据集进行实验. SST-1是细粒度情感分类数据集,包含非常正面、正面、中性、负面、非常负面5种类别标签. SST-2是粗粒度情感分类数据集,除去了SST-1数据集中的中性评论,包含正面和负面2种类别标签. TREC是问题分类数据集,将问题按照内容分成了6个类别. 3个数据集的相关信息如表1所示.
表 1 数据集的相关信息
Table 1 Relevant information of datasets
3.2 实验结果与分析
3.2.1 距离衰减对AT-DouCNN模型泛化能力的影响
引入距离衰减是词语间关联系数计算的扩展,能够表现出词语间的距离因素对相关性的影响,从而更加准确地描述2个词语的相关性. 距离衰减因子
$\lambda $
的选取决定了距离因素对词语间相关性影响的大小,在一定程度上影响着句子分类的效果. 为了得到模型在每个数据集上合适的
$\lambda $
值,限制指数级的距离衰减对式(3)中句子相关性计算的影响程度,选取
$\lambda \in \left[ {0,0.3} \right]$
. 以错误率σ 为评价指标,通过实验得到了如图3所示的实验结果.
图 3
距离衰减对AT-DouCNN模型泛化能力的影响
Fig. 3
Effect of distance decay on generalization ability of AT-DouCNN model
通过图3可以看出,对于不同分类任务下的数据集,
$\lambda $
值对模型泛化能力的影响并不一致. 对于平均句子长度分别为18、19、10的数据集SST-1、SST-2、TREC,
$\lambda $
值分别为0.09、0.09或0.12、0时,模型的泛化能力达到最强. 实验结果进一步印证了文献[20]中
$\lambda $
取值与句子长度相关的观点,对于平均句子长度较长的数据集SST-1和SST-2,引入合适的距离衰减能够通过模型训练更准确地得到词语间的关联系数,进而提升分类性能;而对于平均长度较短的数据集TREC,句子中的词语间具有较强的关联性,距离衰减因子为0或较小值时即可达到良好的分类效果. 由于引入的距离衰减是指数级的,随着
$\lambda $
的增大,距离因素对词语间相关性的影响将快速增大,每个词语附近的词对应的词向量趋向于得到上下文向量中更大的注意力权重,使得模型的泛化能力逐渐下降.
3.2.2 注意力机制与双路卷积神经网络对句子分类效果的影响
将本文提出的AT-DouCNN模型分别与基于注意力机制的单路卷积神经网络模型(AT-CNN)以及双路卷积神经网络模型(DouCNN)进行对比,其中AT-CNN模型是在经典卷积神经网络模型[7]的基础上引入上述的词向量注意力机制,以同一种词向量作为输入,这里同样选取
$\lambda \in $
$\left[ {0,0.3} \right]$
. DouCNN模型不引入注意力机制,其输入层和AT- DouCNN 模型相同,并直接对输入词向量进行卷积、池化等操作. 设置AT-CNN和DouCNN模型的卷积核滑动窗口大小、每种尺寸卷积核得到的特征图数量以及训练方式均与AT-DouCNN模型相同. 以准确率ε为评价指标,实验结果如图4所示.
图 4
AT-DouCNN模型与AT-CNN模型和DouCNN模型的对比
Fig. 4
Comparison between AT-DouCNN and AT-CNN, DouCNN
通过图4可知,AT-DouCNN模型相比其他2种模型具有更好的句子分类效果. 相比AT-CNN模型,AT-DouCNN模型以不同词向量训练模型得到的词向量同时作为输入,对不同种类的词向量分别进行卷积和池化操作,并在高层进行特征融合,避免了单一词向量训练模型的限制,使得所提取的句子特征更加丰富;相比DouCNN模型,AT-DouCNN模型引入了词向量注意力机制,使得具体分类任务下句子中的关键信息更易被提取,从而得到更加准确的句子特征. 本文提出的AT-DouCNN模型同时结合了注意力机制和双路卷积神经网络两方面的优势,使得句子分类的准确率进一步提高.
3.2.3 不同词向量作为输入的句子分类效果比较
word2vec和Glove是生成词向量的经典工具,以此为理论基础能够生成其他的词向量训练工具,fastText是其中之一. fastText模型分为词向量训练和文本分类两部分,词向量训练可以看作word2vec的扩展. 与word2vec中每个词对应一个词向量相比,fastText引入了子字(subword)信息[27],以字符n-gram为单位(n一般取值为3~6),每个词可以产生多个字符n-gram,每个n-gram对应1个词向量,每个词的词向量是所有字符n-gram词向量的和. 对于未登录词,也可通过分解的字符n-gram得到对应的词向量. fastText文本分类模型[28]可看作一个浅层的神经网络,将文本用所有词的词向量均值表示,从隐层通过非线性变换得到输出层.
本节引入了fastText词向量,将fastText、word2vec和Glove词向量两两组合作为AT- DouCNN模型的输入进行比较,同时加入了以fastText词向量为输入的AT-CNN模型以及fastText文本分类模型作为对比. AT-CNN和AT-DouCNN模型均按前文所述的方式进行训练,fastText词向量通过维基百科和英文新闻等语料库训练得到[29],维数为300,并作为fastText文本分类模型的预训练词向量[30]. 实验结果如图5所示.
图 5
不同输入词向量的句子分类效果对比
Fig. 5
Comparison of sentence classification results with different input word embeddings
通过图5可知,以fastText、word2vec和Glove词向量两两组合作为输入的AT-DouCNN模型在3个数据集上的句子分类效果较为接近,由于模型所提取的句子特征更加丰富,其分类效果均优于以fastText词向量为输入的AT-CNN模型,同时也说明本文所提出的模型能够适用于多组不同的词向量作为输入,得到良好的分类效果. 此外,AT-CNN和AT-DouCNN模型通过卷积和池化操作提取句子的局部特征,用高层特征表示文本,在3个数据集上的分类效果均明显优于以词向量均值表示文本的fastText文本分类模型.
3.2.4 AT-DouCNN模型与其他句子分类模型的比较
将AT-DouCNN模型与其他句子分类模型进行对比,设定以word2vec词向量和Glove词向量作为本文所提出模型的输入,选取以下几种具有代表性的模型:
1)RNTN[14]:递归神经张量网络模型,利用解析树表示短语,面向情感分析任务.
2)DCNN[15]:动态卷积神经网络模型,通过宽卷积和动态k-max池化提取句子特征.
3)CNN-non-static[7]:卷积神经网络模型,将输入的词向量矩阵作为训练过程中的可调参数.
4)CNN-multichannel[7]:卷积神经网络模型,将可调参数的词向量矩阵和不可调参数的词向量矩阵相结合作为输入.
5)C-LSTM[16]:将卷积神经网络和长短期记忆网络相结合的句子分类模型.
6)SVM[12]:结合多种语言学特征的问题分类模型.
从图6中可以看出,以word2vec和Glove词向量作为输入的AT-DouCNN模型在情感分类的2个数据集上的效果明显优于RNTN模型,在问题分类数据集上的效果略优于SVM模型,在3个数据集上的效果均优于C-LSTM模型以及所对比的其他CNN模型. 该模型利用不同的词向量同时作为输入,并引入词向量注意力机制,从而能够得到更加准确和丰富的句子特征,进而提高了句子分类的准确率. 此外,文献[12]提出的SVM模型在规模较小的问题分类数据集上取得了不亚于大多数神经网络模型的分类效果,但该模型基于语言学规则,在处理句子分类任务上具有一定的局限性,而本文提出的神经网络模型能够自动提取句子特征,在不同的分类任务上同时具有良好的效果.
图 6
AT-DouCNN模型与其他句子分类模型的对比
Fig. 6
Results of AT-DouCNN against other sentence classification models
4 结 语
本文提出了一种基于词向量注意力机制的双路卷积神经网络句子分类模型AT-DouCNN. 该模型以不同训练模型得到的词向量同时作为输入,有效地利用不同种类的词向量得到更加丰富的句子特征. 同时该模型利用词向量注意力机制使得具体分类任务下句子中的关键信息更易被提取. 在多组公开数据集上的实验结果表明:本文所提出模型的分类准确率分别达到50.6%、88.6%和95.4%,分类效果优于经典卷积神经网络模型的48.0%、87.2%和93.6%以及所对比的其他经典神经网络模型.
本文提出的模型能够对句子等短文本进行有效分类,适用于不同的分类任务,并能够扩展到问题筛选,商品评论分析等多种实际应用场景. 对于未来的工作,可对卷积神经网络和循环神经网络的内部结构进行更加深入的探索,并应用到自然语言处理领域的其他问题中.