, ,,
在线评论通常用来表达人们对产品、服务、事件等方面的观点和感受,具有更新速度快、处理难度高、复杂和真实等特点。如何从海量的在线评论中获取有价值的信息,已经成为企业、机构、政府等社会团体的一个重要研究方向。如基于推特(Twitter)的在线评论情感分类和知识挖掘已经在总统选举[1]、股票预测[2]、公众对某重大事件的反应[3]等方面取得了较为成功的应用。目前,研究人员将用户的在线评论自动标注为积极或者消极情感,其中大部分方法都是基于特征提取及情感学习和分类两方面实现的[4]。在线评论内容长度有限,通常只有1~2句,甚至只是一些简单的情感词汇,文本中存在的大量价值含量低甚至没有价值的条目数据会对分析造成很大的影响。另外,在线评论中还存在一些模糊的表达方式,需根据上下文的语义环境进行判断,如中文表述中的反语等[5]。单纯使用文本的信息对在线评论进行情感分析是一项具有挑战性的任务,因此对于情感分类,研究人员需在语法结构、语义关系、内容处理等方面付诸努力,并提出一些行之有效的方法用以改进情感分类模型的性能。目前基于深度学习的方法已经成功应用在语音识别、图形处理、信号处理等方面。深度学习能够在零基础的前提下,为情感分类进行建模,将深度学习的方法用在情感分类上已经成为自然语言处理的研究热点。
本文采用基于长短型记忆网络(long-short term memory,LSTM)的深度学习方法,解决在线消费评论情感分类依靠星级打分而无法利用句子本身语义的问题。该方法不需要对单词、短语、句子进行手工嵌入,也不需要考虑它们之间的语义或语法联系,利用之前呈现的词语加深对当前文字的理解,自动对语句进行特征提取,更加注重语言的整合处理,从而提高深度神经网络在情感分类方面的准确率。
基于传统情感字典的分类方法可总结为以下几个步骤:文本的预处理、添加情感词典、分词、训练模型、分类等。情感词典是情感分类的核心部分,包括积极情感词典、消极情感词典、否定词典以及程度副词词典,这些词典的应用使基于情感字典的分类取得了很好的分类结果。但传统的分类方法存在两方面的缺陷:精度问题和背景知识问题。精度问题在于很难提出行之有效的方法并进一步提高情感分类的准确度;背景知识问题,需要提前准备好各类情感字典,而这一举措,需要手工操作才能保证情感分类的准确率,易扩展性较差[6]。但传统的机器学习方法仍可以有效地用于情感分类问题[7],如贝叶斯分类(NB)、支持向量机(SVM)、最大熵(ME)等。Pang等人利用基于特征袋的方法训练出一个模型,对影评数据集进行积极和消极的情感分类,达到了82%的准确率[8]。G Vinodhinic采用了支持向量机并集成了过采样和欠采样的方法,提高了情感分类文本的精确度[9]。Lin ChengHua等在2009年CIKM会议上提出一个基于LDA的联合情感/主题模型(joint sentiment/topic model,JST)的新型概率模型框架,在LDA模型基础上引用情感标签[10]。Wiebe统计了每篇文章出现的主观词汇,利用K最邻近值对基于篇章层面的情感进行研究,取得了满意的效果[11]。Chen等人发现词嵌入技术能提高信息检索以及情感分类在自然语言处理的精确度,并成功应用到情感分类中[12]。在文本情感识别领域,使用传统的机器学习方法多属于浅层学习,如词频统计、字典匹配等。上述方法虽然取得一定的效果,但无法应对短文本语义的复杂环境。
深度学习在情感分类领域成效显著。Santos and Gatti等人利用基于字符集和句子集的卷积神经网络对短文本进行情感分类,使用斯坦福的影评数据集和斯坦福的推特情感语料库进行训练,分别达到85.7%和86.4%的准确率[13]。Glorot et alx选取了4个亚马逊产品的评论数据集,该数据集包含22种类型共34万多条评论,并使用深度学习的方法把每条评论标注为“积极”或“消极”[14]。深度学习不仅可以进行大规模的数据计算,还可以模拟大脑的工作方式,已经成为情感分类的重要手段。在中文情感分类方面,由于中英文表达在构词、语法以及文化方面的不同,中文情感分析的研究工作相对不足,使中文主观分类更具有挑战性。孙松涛等人通过对大规模的微博数据集进行词向量化,使用卷积神经网络(CNN)模型对得到的词向量进行情感学习,并建立基于CNN特征空间的微博多标签情感分类器,得到了较好的情感语义区分度[15]。杜慧对现有的COBW神经网络进行调整,在训练文本词向量的同时考虑到语义和句子的情感词向量,进而避免了文本的原始向量相似而语句的情感色彩相差较大的问题[16]。尽管以上方法在情感分类领域已经取得不错的成绩,但仍需要依赖构建大量的特征工程(如情感字典、语法特征和句法特征等)来提高情感分类的准确率。
本文采用LSTM神经网络方法,不需对单词、短语、句子进行手工嵌入,也不需考虑它们之间的语义或语法联系,从而避免了特征工程的构建。为了对比深度学习与传统机器学习的差异,本文同时也提出了一个基于SVM的情感分类模型。对两个模型的结果进行对比显示,LSTM模型优于SVM分类模型。
英文的表达是以词为单位的,词与词之间通常以空格隔开;而中文通常是以字为单位的,句子中的所有字需要连起来才能描述出一个完整的意思。分词不仅是文本预处理的重要前提工作,而且还是智能计算的基础性工作。在基于情感分类的研究中,选取那些具有情感倾向的词尤为重要。本文使用Python(3.6.3)的Jieba(0.39)中文分词包对在线消费评论语料库进行分词处理。
计算机无法理解人类的自然语言,其学习自然语言的过程可以看作是将语言文字符号数字化的过程。本文将在线消费评论转换成LSTM模型所需的向量格式,采用谷歌的word2vec模型,基于Python的gensim(3.0.1)包实现词的向量化。Word2Vec算法可以在捕捉上下文语义语境的同时压缩数据,包括2种语言模型CBOW和Skip_gram;其中,CBOW通过上下文预测当前词的模型,Skip_gram则通过当前词预测上下文窗口内的单词[17]。
本文将一种经典的深度学习模型LSTM用于文本情感分类。LSTM是循环神经网络(RNN)的一个重要分支结构,在情感分类中能够有效利用上下文关系从而避免梯度下降或消失,目前已广泛应用于自然语言处理有关分类的问题上,并且准确度较高。LSTM模型包括输入层、LSTM层和输出层3个层(图1)。
图1 LSTM三层结构模型
LSTM单元作为整个模型的核心部分,包括输入门、遗忘门和输出门3个门,用于控制是否忽略当前信息或者将其传递到下一个单元。LSTM 单元状态更新的数学表达式如下。
it=σ(Wxit+Whiht-1+Wcict-1+b1)
(1)
ft=σ(Wxft+Whfht-1+Wcfct-1+bf)
(2)
ct=ft▯ct-1+it▯ tanh(Wxct+Whcht-1+bc)
(3)
ot=σ(Wxot+Whoht-1+Wcoct+bo)
(4)
ht=ot▯ tanh(ct)
(5)
其中,σ是点对的sigmoid函数,▯代表是点对乘积,it,ft和ot分别是输入、遗忘和输出门,ht是t时刻以及之前时刻存储的全部有用信息的隐含状态向量,ct表示的是细胞向量,wi、wf、wc、wo是隐含状态的权重矩阵,bi、bf、bc、bo表示对应权重的偏置。
在情感分类过程中,首先将原始输入的在线消费评论进行向量化,得到LSTM模型需要的格式。LSTM通过门的结构选择性保留对神经网络有影响的信息,并对每个时刻状态进行更新。如预测“商家的环境不错,服务态度很好,比较满意”和预测“商家的地理位置偏僻,环境嘈杂,客服服务态度较差,不推荐这个商家”这2个评论时,LSTM网络会忘记之前态度“很好”而更新为“较差”,这种状态是通过LSTM单元的遗忘门实现的。遗忘门根据当前输入的ht、上一时刻状态的ct-1和上一时刻的输出ht-1共同决定哪一部分需要遗忘,与此同时输入门会根据xt、ct-1和ht-1决定哪些信息进入当前时刻状态的ct。本文将在线消费评论分为积极和消极两方面,因此使用sigmoid函数作为激活函数将评论映射为积极或者消极的评论。LSTM的在线情感分类模型框架(见图2)。
图2 基于LSTM的在线情感分类模型框架
利用苏剑林(http://spaces.ac.cn/archives/3414/)收集并标注好的中文语料库,具体包括酒店、笔记本、牛奶、手机、书籍和热水器共6方面的在线评论数据集。根据数据属性将其分为好评数据集和差评数据集两个大类,经过筛选去重后,共得到8 712个好评和8 053个差评数据。随机抽取其中80%的数据用作训练集,20%用作测试集,最终得到训练集为13 412例,测试集为3 353例。
SVM和LSTM模型均基于Python语言实验。其中LSTM模型是基于Tensorflow的Keras(2.0.3)框架训练得到的,Keras作为一个高层神经网络库,具有高度模块化、简易性和可扩展性等特点。在LSTM神经网络模型训练过程中,需要对dropout、训练周期以及在线评论数据集转化为向量的维度等参数进行调节以实现全局最优。实验环境:Intel(R) Core(TM) i5-6500 CPU@3.20 GHz,内存(RAM)16GB,操作系统64位Windows7。
神经网络的训练周期(Epoch)指的是前向传播和后向传播所有批次的单一训练迭代。过多的训练周期一方面会花费更多的时间,另一方面容易导致过度拟合。在图3和图4中,Train_acc、Test_acc分别代表训练集和测试集的准确度,Train_loss和Test_loss分别代表训练集和测试集的损失度。如图4所示,随着训练周期的加长训练集的准确度稳步提高,但是当训练周期为8时,Test_loss的曲线不再呈现下降趋势,说明模型已经进入过度拟合状态,即测试集的准确率训练周期在5-8之间,准确率在87.89%-89.08%;当训练周期为8时,测试集的情感分类达到89.08%的准确度。
Dropout函数在神经网络训练的过程中,一方面可以按照一定的概率随机丢弃部分神经网络单元,防止模型过度拟合;另一方面可以加快模型的训练速度,节省训练时间。本次训练中,Dropout的取值范围为0.1-0.9,间隔为0.1,共9个取值,得到的dropout参数与神经网络情感分类的准确度如图5所示,在dropout为0.4时,在线评论达到87.18%的最高分类准确率。
图3 LSTM模型训练周期对情感分类精确度的影响
图4 LSTM模型训练周期对情感分类损失度的影响
图5 Dropout对情感分类准确度的影响
训练批次(Batch_size):在神经网络的训练过程中,当数据集较大的时候,并不是将所有数据一次性输入进去,而是将数据集分为16、32、64、128、256共5个批次分别进行处理(图6)。从图6发现,当Batch_size=16时,模型对情感分类的准确率最高。
图6 训练批次(Batch_size)对情感分类准确度的影响
采用准确率、精确率(阳性预测率、precision)、召回率(recall)、F1以及受试者工作特征(Receiver Operating Characters,ROC)、曲线下面积(Area Under the ROC,AUC)5种常见的指标对模型进行评价。精确率和召回率在信息检索和统计学分类领域中得到了广泛应用。作为评价结果质量的重要指标,精确率指的是正确分类为积极情感的评论占所有预测为评论的比率;召回率指的是正确分类为积极情感的评论占实际为积极情感评论的比率;ROC用来检查找出真阳性和避免假阳性的权衡,其中纵坐标代表正确分类为积极情感的比例,横坐标代表错误分类为积极情感的比例;ROC曲线下面积用作评价情感分类模型的重要指标,即AUC值越高,能够识别正确分类为积极情感的能力越强。
(6)
(7)
(8)
(9)
为了验证基于深度学习的神经网络在情感分类的有效性,选取了支持向量机在情感分类的结果作为对比。作为一种二分类模型,它在处理小样本、非线性和高维模式识别中表现出独特的优势,如利用核技巧解决原空间数据线性不可分的问题;作为一种机器学习方法,在情感分类中得到广泛应用。本文构造的SVM分类器是基于Python的scikit-learn(0.19.1)库实现的。
基于深度神经网络的情感分类方法及SVM方法的实验结果如表1所示。
表1 LSTM与SVM在情感分类中的对比结果
图7 LSTM神经网络与SVM模型情感分类的ROC曲线
实验结果表明,基于深度学习的LSTM的精确率达到89.08%,高于SVM模型的86.1%。基于LSTM模型可以更好地学习和利用长文本的语义特征,在模型的训练过程中,LSTM通过遗忘门既能够控制梯度下降的收敛性,也可以保持长期的记忆性;SVM模型虽然也获得了很高的精确率,但在特征选择和特征提取的过程中,无法解决长期依赖的问题,因此在模型预测的准确率上低于LSTM模型。
由图6计算出SVM的AUC值为0.93,神经网络模型LSTM的AUC值为0.95。根据评判标准,当AUC值大于0.9时,说明该分类模型具有较高的阳性识别率,因此本文中的2种方法在情感分类中均取得了较好的成绩。LSTM的ROC曲线整体在SVM的ROC曲线的上方,部分重合,LSTM模型在本文的情感分类中优于SVM模型。一方面由于神经网络能够实现端到端的输入输出,不需要进行手工提取特征,具有易扩展性和可移植性高的特点;另一方面,LSTM神经网络模型具有处理大规模、高维数据的能力。从表1可看出,无论从准确性、精确性、召回率以及F1方面,LSTM网络模型均优于SVM模型。本例中,SVM的输入变量是采用word2vecx训练出的维度为300维的词向量。虽然SVM利用内积核函数代替向高维空间的非线性映射,但在处理大量的文本转化的向量可能存在局限性。
本文中,基于LSTM神经网络模型优于传统的机器学习SVM模型,这证实了特征学习的重要性。深度学习能够实现特征的自动提取,而在传统机器学习领域,这些特征需要人工分析提取出来。在学习能力上,LSTM模型能够解决长期依赖的问题,更好地利用上下文语义关系。如人们在阅读文章时,不是根据当前的某一句话或者某一个词推断作者的感情倾向,而是基于上下文的理解进行推断的。LSTM的核心就是将之前有用的信息运用到当前状态下。SVM模型将单一在线评论的词向量映射到特定的空间结构中,存在特征学习的能力不足,依赖更多的先验知识,可扩展性较差等问题。随着网络用语的出现和语言本身的发展,各种新的表达方式不断出现,这给情感词典的维护带来了诸多不便。基于人工手动提取的情感特征无法详尽列出每条规则,尤其是面对海量数据的互联网时代。在情感分析和文本分类的任务中,Kim在Collobert等构建CNN模型的基础上,利用词向量工具Word2vec完成了1 000亿个单词的新闻语料库训练,将其运用到情感分类的任务中,取得了88.1%的最佳性能[18]。在大数据时代,只要有足够的训练数据集,深度学习模型总能够训练出逼近真实的结果[19]。
另外,本研究也存在一些局限性。第一,先前基于SVM情感分类的研究大多强调构建情感字典并取得了较好的实验效果。本文主要采用谷歌的Word2Vec构建词向量进而进行情感评论,并未构建和使用情感词典。Mohammad AL-Smadi等人应用情感字典在对阿拉伯酒店评论进行情感分类的结果显示,基于人工提取多维特征的SVM模型在情感分类的准确率优于RNN(Recurrent Neural Network)模型,RNN在模型的训练速度上优于SVM模型[20]。第二,由于本研究只包含16 000多条数据集,深度学习需要更大量的训练数据集,实验数据的规模对实验结果可能产生一定的影响。第三,本研究将在线评论情感分为积极或消极两方面,剔除了模棱两可、中立或者反语的情感倾向,如针对“这款空调的质量不错,但是售后服务不尽如人意”这种语法现象还需要进一步的研究。
在对情感分类的方法研究中,基于英文情感分类的研究方法较为成熟。由于中英文在构词、语法、表达等方面的差异性,中文情感分类的研究面临的挑战更大。使用深度网络模型LSTM建立对在线评论进行情感分类的研究模型,避免了传统分类模型对手工提取特征的过度依赖。对在线评论进行情感分类的精确率达到了89.08%,印证了深度学习在情感分类特征提取的优势。然而在中文领域存在一词多义的现象,深度学习是以词向量作为原始变量的输入,并不能像图像将所有的原始信息输入到深度学习的模型中,原始信息损失所带来的误差可能会导致在模型训练的过程中出现不可预见的错误。另外,研究显示,LSTM神经网络模型要优于SVM模型,然而2种方法对在线评论的情感分类的准确度均达到80%以上。下一步将继续探索深度学习方法在情感分类的应用。