APP下载

融合CNN和标签特征的中文文本情绪多标签分类

2020-04-01李德玉罗锋王素格

关键词:向量卷积标签

李德玉,罗锋,王素格

(1.山西大学 计算机与信息技术学院,山西 太原 030006;2.计算智能与中文信息处理教育部重点实验室,山西 太原 030006)

0 引言

随着社交媒体的快速发展,人们越来越倾向于通过社交媒介来表达自己的观点和看法,例如,微信、微博和博客等,这些社交媒介已经成为人们生活的一部分,用于传递出人们内心的各种情绪和情感状态,记录着人们生活的点点滴滴。通常,人们以写博文的形式来表达自己对某一产品的情绪,例如:“生日那天,男朋友送了我一件非常漂亮的生日礼物,我特别喜欢,而且,妈妈还专程来学校看我,我感觉特别幸福。”。这篇博文同时蕴含着“喜欢”和“幸福”两种情绪,即作者对男朋友送的礼物很喜欢,同时对妈妈过来看我感到很幸福。然而,传统的情绪分析方法主要针对单标签分类或者多类别分类,他们都是给文本分配一个情绪标签[1],不能很好反映文本蕴含多种情绪信息。为了给一个文本分配多个情绪标签,多标签分类方法为其提供了技术支持。

当前,文本情感分析主要使用统计和机器学习的方法[2]。这些方法通常需要先利用向量空间模型(VSM)[3]对文本进行特征表示,再使用机器学习方法训练相关的分类器,进而预测新文本的情感信息。但是,当处理多标签情绪分类时,这些传统的分类方法表现不佳。VSM难于利用文本中词的上下文信息,丢失了很多重要的语义和情绪信息,这将影响情绪分类的性能。另一方面,文本和标签之间的相关性以及标签与标签之间的相关性对于多标签情绪分类又是至关重要[4]。例如,当一篇文本中出现“高兴”情绪时,又出现“喜欢”情绪的可能性就比较高,即当多种情绪同现出现时,说明它们之间有某种联系。若能有效地利用它们,可以提升多标签的分类性能[5]。

随着深度学习技术在文本领域的日趋成熟,特别是词向量技术[6]和卷积神经网络(CNN)[7]以及循环神经网络(RNN)[8]在文本领域的广泛应用,给文本情绪分析带来了新的机遇。2013年,Google开源了一款用于词向量计算的工具——Word2Vec[6],他可以在百万数量级的词典和上亿数据集上进行高效训练,不仅利用词的上下文信息,而且还度量了词与词之间的相似性,从而受到很多NLP研究者的青睐。本文将深度学习技术和文本情绪多标签分类相结合,提出一种融合标签特征的CNN文本情绪多标签分类方法,通过Word2Vec对文本进行词向量表示,再利用CNN对文本进行深层次的情绪特征表示,同时融入标签特征来强化文本与标签之间的相关性,以此提高情绪分类的性能。

目前,多标签分类方法主要有两种,即问题转换的方法和算法适应的方法[9]。前者通过改变多标签分类的数据,使之转换为一个或多个单标签分类或者多类分类问题,其基本方法主要有二元关联方法(BR)[10]、分类器链(CC)[11]、随机K标签集法(RAkEL)[12]、校准的标签排序法(CLR)[13]等。算法适应的方法则是直接改变原有的单标签分类和多类分类方法,将其扩展到多标签分类上。其中,MLKNN[14]、AdaBoost.MH[15]、RankSVM[16]和BPMLL[17]是这类方法的代表。由于多标签分类中,多个标签之间存在着依赖关系,很多学者提出了一些基于集成学习和层次分类的多标签分类方法,也取得了不错的效果。

目前,很多学者对文本情感分析做了大量的研究工作,基于深度学习的方法使情感分析的性能得到了显著提升。Kalchbrenner等人[18]提出了一种基于Dynamic-CNN(DCNN)的方法来构建句子级别的语义模型,他们使用动态的K-Max池化方法来得到句子的特征表示,基于此特征,在输出层进行情感分类。Santos等人[19]提出了一种字符级别的句子CNN模型(charCNN),该模型使用两层的卷积网络从字和文本句子中抽取相关的特征来进行情感分类。Wang等人[20]利用LSTM和BI-LSTM模型来进行twitter的情感分类。Wang等人[21]提出一种CNN和RNN联合的结构来进行文本的情感分类,他们通过CNN来得到文本的局部情感特征,用RNN来学习长距离的依赖信息。Huang等人[22]提出将句法知识编码到树形的LSTM模型中来提高短语和句子的表示能力,以此来进行文本的情感分类。Akhtar等人[23]提出一种基于多层感知器集成模型来对金融微博和新闻进行细粒度的情感分类。Qian等人[24]提出一种符合语言规范的LSTM模型来进行文本的情感分类,该模型将情感语料、否定词、强度词等语言资源融入LSTM中来更精确地捕获句子中的情感。Zhao等人[25]提出了一种循环随机游走网络学习方法,利用用户发布的推文及其社交关系的深层语义表征,对特定推文进行情感分类。

不同于情感分类,情绪分类是对文本中情绪信息进行更细粒度的划分。当一篇文本或语料同时出现多种情绪信息,许多研究者们开始运用多标签的思想来解决此类问题。Yang等人[26]提出了一种三段式的多标签情绪分类方法,分别从推文级和词级对文本进行计算。该方法首先利用jaccard similarity和KNN对整篇微博的情绪信息进行分类,然后在词语级别上,运用朴素贝叶斯方法计算属于每类情绪的概率,最后,通过设置合理的阈值来进行最终的多标签分类。该方法有效地利用了标点符号、表情符号以及词典信息来标记数据。Liang等人[27]运用标签排序的思想来解决情绪分类问题。Buitinck等人[28]提出了一种处理影评数据的多标签情绪分类方法。该方法结合词袋模型和文本篇章特征将评论文本标记为预先设定的情绪标签集的一个子集,然后结合一对多的SVM方法,利用RAKEL对文本进行情绪多标签分类。Liu等人[29]提出利用情绪词典提取微博语料中的情绪特征以及原始分割词特征,他们利用DUTSD、NTUSD和Hownet这三个情感词典来抽取文本的情绪信息,并将其融入文本的表示中,最后使用kNN(MLkNN和BRkNN)算法作为基准方法进行了实验对比,实验结果证明CLR分类效果是最好的。

情绪标签之间的相关性是影响情绪多标签分类准确率的重要因素,有效的利用标签之间的相关性可以显著的提升多标签情绪分类的性能。一个文本中可能包含不同强度的情绪信息,这些情绪有的是互斥的,有的则是共存的。根据这一特性,一些研究者将情绪强度分布要素加入到多标签情绪分析工作中。Li等人[30]提出了利用MME最大熵模型检测短文本情绪分布的方法,他们利用估计词与社会情绪之间的关系。同时又引入了L-BFGS算法泛化MME,以便提高在多种规模的语料库(新闻、微博等)中的预测能力。Wang等人[31]提出了一种将CNN和CLR相结合的方法来处理多标签情绪分类方法,他们利用skip-gram语言模型训练词汇的分布表示,将微博语句中的词表示成实数向量作为卷积神经网络的输入,利用卷积神经网络来提取情绪文本的特征。基于此特征,利用CLR多标签分类方法进行分类,得到微博属于某一情绪类别的概率排序信息,但是该方法没有将情绪标签信息加入到情绪文本的表示中,使得文本表示和情绪标签之间的关联度不够高。

多标签情绪分类方法的复杂性和难度都比较高,且该研究方向才刚刚起步[32],一些研究者主要思想是利用特征抽取的方法来抽取文本的特征,然后利用多标签方法进行分类。但传统的特征抽取方法很难利用文本中词的上下文信息,其抽取的文本特征之间彼此也是孤立的,同时也没有利用文本和情绪标签之间的关联信息,使得传统的文本多标签分类方法在处理情绪分类时效果略显不佳。本文提出一种基于标签特征的CNN文本情绪多标签分类方法,利用Word2Vec对句子进行词向量表示,然后使用CNN来对文本进行深层次的情绪表示,并在输出层进行多标签分类,同时,我们利用标签特征强化文本和标签之间的联系,提高分类的准确率,实验表明,我们的方法取得了较好的效果。

1 融合标签特征的CNN模型(LF-CNN)

卷积神经网络(CNN)是一种特殊的前馈神经网络,其网络结构主要由输入层、卷积层、池化层、全连接层和输出层组成。输入层输入训练好的文本词向量;卷积层是特征抽取层,使用不同的过滤器来抽取不同的文本特征;池化层主要对卷积层的特征进行降维和采样,得到局部最优值。本文使用融合标签特征的CNN模型,如图1所示。

图1 基于卷积神经网络和标签特征的模型Fig.1 A model based on convolutional neural network and label features

在图1中包括两个部分,分别为文本表示和情绪标签表示。

文本表示:将每个文本和其对应的多个标签作为输入层,将每个文本X表示为n×k的矩阵,其中,n是文本中词的个数,k代表词向量的维度,文本中词的词向量xi采用Word2vec的Skip-gram进行训练,即得到X=(x1,x2, …,xn)。将文本中对应位置的词向量依次拼接,得到文本的词向量表示矩阵。其具体操作如公式(1)。

X=x1⨁x2⨁…⨁xn.

(1)

式中,⨁表示行向量方向的拼接操作,则X就是一个相应的n×k的词向量矩阵。

卷积层:主要是学习文本的局部特征,使用卷积核w∈Rh×k对输入层的词向量矩阵进行卷积操作,对大小为h的连续窗口进行卷积,具体操作见公式(2)。

ci=f(w·xi:i+h-1+b) ,

(2)

其中,ci代表卷积得到的第i个特征值,f为RELU激活函数,w为滤波器的权重矩阵,其中w∈Rh×k,h×k为选取的滤波器的大小,b代表偏置项,xi:i+h-1代表文本的第i个词到i+h-1个词的词向量表示,该滤波器可以应用于{x1:h,x2:h+1,…,xn-h+1:n},用于获得文本不同部位的特征,从而得到一个文本特征向量。因此,经过一个过滤器卷积后,得到一个特征向量C=[c1,c2, …,cn-h+1],其中,C∈Rn-h+1。本文选择多个过滤器来进行特征的提取,同时设置多个通道数,从而得到不同局部大小多个特征向量,经过以上操作即可实现对原始文本进行特征表示。

池化层:对卷积层的特征向量C采样。本文采用最大池化的方式得到局部的最优特征,见公式(3)。

(3)

文本标签表示:将每一个文本对应的情绪标签作为特征。设总标签个数为m,则每个文本对应的情绪标签表示为长度为m的序列,即L=(l1,l2,…,li,…,lm)。每个情绪标签对应的词向量通过word2vec得到,而其余的标签用零向量表示。若将所有的l1,l2,…,li,…,lm对应的词向量拼接起来,即可得到每个文本的情绪标签矩阵Le。对于情绪标签的卷积操作、池化操作与文本X的两种操作相同,也是利用公式(2)和(3)。由于每个文本的标签信息只存在于训练集中,测试并未标出。因此,测试时将测试集中文本的标签向量全部填充为0。该方法在训练过程中可以使用文本的多个标签信息来加强文本和标签之间的表示,有利于训练过程中参数的选择,提高分类的精度。

连接层:将文本X及其情绪标签矩阵Le分别进行卷积和池化操作后,得到文本表示S′和情绪标签特征表示L′。再在连接层将S′和L′拼接,作为整个文本的表示,见公式(4)。在输出层,使用sigmoid函数进行分类,获得文本属于每一类情绪标签的概率,如公式(5)所示。

Sl=S′⨁L′

(4)

Y=sigmoid(W·Sl+b) ,

(5)

其中,Se表示文本的情绪特征向量,Y表示对应于每个标签的概率向量,W是权重短阵,b是偏置。

2 实验结果与分析

2.1 实验数据

本文选用了NLPCC2014的微博情绪分类数据集,其中,训练集有14 000条微博,测试集有3 000条,验证集有1 000条,且每条微博有一个或两个情绪标签。将微博情绪分为7类:like, happiness, surprise, anger, fear, disgust, sadness,每一条微博都标注相应的情绪标签。该数据集中带有同类情绪(正或负)的标签共现的频数很多,正类情绪和负类情绪共现的很少,同时出现like和happiness这两类情绪的样本占有比率最大,主要原因是他们之间的相关度最大。like和disgust几乎不同时出现,说明这两类的情感关联度不大。

2.2 实验过程

2.2.1 词向量训练

为了使用Word2vec进行词向量训练,我们从网上爬取了大量的无标注的微博文本,得到一个10 G的无标注的微博文本数据集U,经过简单地去噪和jieba分词之后,再使用Word2vec的Skip-gram模型[6],根据其默认的参数从U中训练出中文词语词向量表示,构建一个词向量查找表,然后将训练好的词向量进行保存。

2.2.2 训练过程及超参数设置

根据我们提出的方法,构建出相应的模型,该模型输出层采用Sigmoid进行分类,训练过程采用dropout和L2正则化来防止过拟合,并采用adagrad进行优化和参数的更新与迭代。训练过程中,本文将文本的情绪标签信息和情绪文本分别进行卷积操作,利用情绪标签信息来辅助文本训练过程参数的调整,通过设置一个标志项,测试时,将标签的卷积标志设置为FALSE,只需要输入测试情绪文本就可以得到对应的情绪标签信息。我们设置词向量维度为200,卷积核函数使用RELU激活函数,过滤器窗口大小为3、4、5,迭代次数为50次,批处理大小为100,学习率为0.001,正则化系数为1×10-8。

2.3 评价指标

本文采用不同的评价指标对算法性能进行评估,样本的总个数为n。对于任意一个样本Xi,Yi′表示分类器预测的标签集,Yi为样本对应的真实标签集,ri(y)表示在所有预测出的标签中标签y的排序位置。

1) 正确率Accuracy:指完全预测正确的样本占所有样本的比例,这是一种非常严格的评价方式,要求预测标签序列和实际标签序列完全一致。

(6)

2) 平均精度AvgPrec(Average Precision):指在预测样本的标签排序中,排在预测样本相关标签前面的也是实际相关标签的概率的平均,计算公式如(7)所示。

(7)

其值越大说明预测出来的标签越相关,当值为1时达到最好性能。

3) 1-错误率(One-Error):指分类器对每个样本的预测标签序列中,排序靠前的标签不属于该样本的实际标签集合的标签所占的比率。计算公式如(8)所示。

(8)

2.4 实验结果

为了验证我们的方法的有效性,选用多标签分类中常用的方法与本文方法进行比较实验。方法如下:

(1)校准的标签排序方法CLR[13]:该方法是常用的多标签分类方法,首先使用tf-idf得到情绪文本的特征向量,然后使用CLR方法对文本情绪进行多标签分类。CLR首先对候选标签根据其概率从小到大进行排序,然后选择排在前面的标签作为预测标签集合。

(2)基于标签顺序的幂集法LPLO[27]:该方法将数据集进行转换,把每个样本的标签集合当作一个单标签,使数据集中不同的多标签组合构成一个单标签集合,然后利用各种单标签分类方法对得到的新数据集进行单标签分类,预测时再将预测的单标签映射到多标签上。

(3)CNN:该方法先利用词向量进行文本表示,然后直接利用CNN进行信息抽取并分类,但没有加入标签的特征。

(4)CNN+CLR[30]:该方法首先利用词向量进行文本表示,然后利用CNN进行文本的特征抽取,最后在抽取的特征上利用CLR多标签分类方法进行多标签分类。

(5)LF-CNN:本文基于标签特征的CNN(Label Feature CNN)方法。

利用上述五种方法进行比较实验的结果见表1所示。

表1 五种方法实验结果的比较

由表1可知:我们的方法在各项评价指标上取得了较好的结果,基于CNN的分类方法在准确率和平均精度上优于传统的CLR和LPLO多标签分类方法,其原因是CLR和LPLO方法都是使用tf-idf来表示文本的特征,这种表示方法没有充分利用文本的上下文信息,因而影响了分类精度。而单纯的卷积神经网路(CNN)和CNN+CLR方法都没有融入情绪标签的信息,导致句子表示和情绪标签的关联强度不高。总之,本文应用多标签的思想来解决文本情绪分类问题,所提的LF-CNN方法将多标签情绪标签信息加入到句子表示中,在一定程度上强化句子和标签之间的联系,提高分类的精度,并且在准确率和平均精度上都得到了提升。说明本文的方法在表示层使用Word2Vec词向量以及CNN对情感文本进行深层次的表示,并且融入了情绪文本的多个情绪标签,使文本和情绪标签的关联性更强。在一定程度上强化情绪文本的表示,让它更偏向于情绪信息,在文本多标签情绪分类中达到了较好的结果。

3 结束语

文本情绪多标签分类目前受到越来越多的关注,已成为文本情感分析的主要任务之一,本文提出一种基于标签特征的CNN文本情绪多标签分类方法,利用CNN对情绪文本进行特征表示,使用基于神经网络的多标签分类方法对文本情绪进行多标签分类,同时,我们使用标签特征来强化文本和情绪标签之间的联系,将这种关联性加入到情绪文本的特征之中,从而提高了多标签情绪文本的分类性能。由于标签之间的关联性对于多标签分类的性能提升也是至关重要,在以后的工作中,将致力于情绪标签之间关联性研究,并将其加入到情绪多标签分类之中,同时,如何克服和改善数据不平衡问题,提高情绪多标签的分类精度也是我们关注的问题。

猜你喜欢

向量卷积标签
向量的分解
基于3D-Winograd的快速卷积算法设计及FPGA实现
聚焦“向量与三角”创新题
卷积神经网络的分析与设计
从滤波器理解卷积
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
基于傅里叶域卷积表示的目标跟踪算法
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线