相关标签

基于卷积神经网络的中文情感分析

发布时间:2019-12-04 13:15

  摘 要

  近年来,随着互联网的发展,自然语言处理(NLP, Natural Language Processing)已经成为一个越来越重要的研究领域。其中,对于网络文本的研究,例如社交网络中文本的研究(如微博、朋友圈中用户所发布的文字内容等)又是一个十分重要的方向。在文本的分析任务中,很重要的一项工作就是对文本中所包含情感的分析。随着深度学习领域技术的不断成熟,关于如何将深度学习技术有效地运用到文本情感分析任务中的这一课题受到了越来越多的关注。

  卷积神经网络是深度学习领域中一种非常重要的神经网络结构,目前已经广泛应用于文本分析、图像识别等领域。本文提出了一种可以用于文本分析任务的卷积神经网络模型,通过卷积和池化的操作来对经过预处理的训练数据进行特征提取和学习,并且在学习过程中通过Adam算法来优化模型自身的可学习参数来提高模型识别的准确率。此外,本文还通过将卷积神经网络模型与文本词性标注信息相结合的方式对原始的卷积神经网络模型进行了一定程度的优化,从而使最终得到的模型能有更高的识别准确率。

  关键词:深度学习;卷积神经网络;情感分析;词性标注

  前 言

  网络的发展催生了海量的网络文本数据,这些散布在网页、网络新闻、博客、网络评论和其他各种社交媒体中的文本数据中蕴含着大量的隐藏信息,例如观点、情感等等。文本情感分析任务一直是自然语言处理研究领域的热点和重点,因此如何从用户留下的网络文本中提取到准确的、有价值的情感信息成为了众多科研人员的研究目标。例如:在线服务的供应商可以通过自动化的文本情感分析工具来获得服务用户的用户反馈,从而及时有效地掌握产品的认可程度和适用情况,进而快速做出调整;舆情控制相关部门可以通过对相关话题分类下的网络文本情感分析来快速地了解网络用户对某一特定事件的态度等等。

  用于解决文本情感分析任务的方法有很多,主要可以分为三类,分别是基于情感词典(先验知识)的分析、基于传统机器学习算法的分析和基于深度学习算法(人工神经网络)的分析。目前这几种方式都已经在情感分析领域有了一定的应用,但是由于人类情感的复杂性,现有的各种方法仍然很难做到完全准确无误的来预测文本的情感极性。已有研究表明,运用深度学习的方法往往能在文本情感分类任务中获得更好的表现。而且,不同于英文天生具有分词的文法特性,高度发展的中文抽象程度更高并且文法中并不天然带有分词属性,因此中文文本情感分析任务的难度也更高,要想获得准确的分析结果不仅要依靠合适恰当的统计分析和学习优化方法,也要依靠准确、通用性强的文本数据预处理机制。

  本文主要尝试以上文提到的基于深度学习算法的方法来进行文本情感分析任务。本文选取了在人工神经网络领域中具有重要地位的卷积神经网络结构来进行文本情感模型的构建,使用jieba和NLPIR分词工具来对中文文本数据进行分词、词性标注等预处理工作,以多分类对数损失函数(categorical_crossentropy)作为目标函数,以Adam算法作为模型中可训练参数的优化算法。在建立好初始的卷积神经网络模型之后,又通过集合词性标注信息的手段,进一步提高了最终模型的识别准确率。

  第一章 绪 论

  本章首先阐述了文本情感分析任务的研究背景和研究意义,其次简单介绍了卷积神经网络的概念和工作原理。并且对本文所做的主要工作做了相应的概述,在本章的最后一部分介绍了本文的组织结构。

  1.1 研究背景及意义

  伴随信息技术和互联网的跨越式发展,网络上的各种信息数据的整体规模在以极高的速度增长,而文本信息作为网络信息的主体,同样在近年来呈现出“爆炸式”的增长状态。在当前Web 2.0的大趋势下,网络用户不再是仅仅被动的接受网络所提供的信息,同时也在源源不断地向网络输送自己的信息。各种个人博客、社交网络软件、网络购物平台都随处可见用户留下的大量表达自己的观点和看法的文本数据。这些数据中包含着丰富的情感信息,如用户自身的喜怒哀乐的情感、用户对产品或者服务的评价与看法、对于某种社会现象的支持或者反对等等。面对如此海量的数据,想要通过人工的方法去总结和归纳其中的情感信息显然是不可行的,因此,如何有效的分析和提取文本中所包含的情感信息就成为了一项意义深远而且地位非凡的任务。

  1.2 卷积神经网络概述

  卷积神经网络(Convolutional Neural Network, CNN)是一种前馈的神经网络,因此在其内部,参数是从输入层向输出层单向传播。卷积神经网络之中包含的人工神经元通常可以针对一个输入数据中的某个覆盖范围内的数据进行响应,因此在之前的应用中对大型图像的数据的处理有着相当不错的表现。

  一般来讲,卷积神经网络由一个或者多个卷积层(Convolutional-Layer)和顶端的全连接层(Fully-Connected-Layer)组成,其中还会包含池化层(Pooling-Layer)。这种结构使得卷积神经网络在处理具有二维结构的数据时变得更为有效,也因此,与其他深度学习结构相比,卷积神经网络在图像和语音识别方面的研究往往能够得到更加优秀的结果。同时,与其他前馈的深度学习结构一样,卷积神经网络模型也可以通过反向传播算法来进行训练。而由于卷积神经网络采用了卷积和池化等处理步骤,使得在模型训练过程中所需要关注的参数的数量大大降低,因此卷积神经网络的训练代价相较于其他前馈神经网络模型也大大降低,继而使得卷积神经网络成为了研究领域中相当热门的一种神经网络结构。

  1.3 本文的主要工作

  本文的主要任务是在相关数据集上以可靠的正确率完成文本情感分类任务。为了完成这一目标,本文采取了卷积神经网络模型来作为本情感的预测模型,并且在搭建好初始模型的基础上,通过将输入文本与其词性标注信息相结合的手段来进一步提高模型的识别准确率。本文的主要工作如下:

  (1) 文本情感分析数据集的收集并且使用两种不同的分词工具来对数据集进行预处理。

  (2) 利用Keras完成对卷积神经网络模型的构建。

  (3) 使用处理好的文本数据集对构建出的卷积神经网络模型进行训练,并且根据文本情感分析的任务特性对模型进行改进,提出了一种结合文本分词词性标注信息的卷积神经网络模型并加以实现。

  (4) 将上述得到的各种模型在收集到的数据集上进行训练、验证和测试,同时根据实验结果对分词工具适用性以及模型准确性做出了一定的分析。

  1.4 本文的组织结构

  本文共分为五章,每一章的大致内容如下:

  第一章:绪论。本章主要介绍了文本情感分析这个课题研究的背景和研究意义、卷积神经网络结构的基本概念以及大致构成、本文的主要工作,最后对本文的组织结构做了相关介绍。

  第二章:文本情感分析背景知识。本章首先主要对当前文本情感分析领域的研究现状做了一定的概括和总结,从基于先验知识的分析、基于传统机器学习方法的分析、基于深度学习方法的分析三个方面进行了阐述。其次,根据目前领域内研究现状总结了目前的文本情感分析研究的不足和难点,最后对本章的内容加以总结。

  第三章:基于卷积神经网络的中文情感分析模型。本章主要是对本文中所使用的卷积神经网络文本感分析模型以及本文研究过程中所使用的相关技术的介绍。首先介绍了文本数据的预处理技术,包括分词、词性标注等;接着介绍了文本数据的向量化技术;然后介绍了深度学习领域的相关概念;接着详细解释了本文中所使用的卷积神经网络模型的结构和工作原理并且介绍了对该模型进行改进的方法,最后做了一个简单的总结。

  第四章:主要介绍了应用第三章中所提到的模型在不同的中文情感分析数据集上进行训练和验证的实验过程。首先介绍了实验环境的部署,其次简要介绍了本文研究所采用的数据集,然后简要介绍了实验的对比组别设置情况,接着对实验结果数据根据分组进行相应的对比和分析,最后是对本章内容的总结。

  第五章:总结与展望。对本文中所做研究工作做出了一定的总结,找出尚不完备和值得改进的地方,为未来的工作提供方向,并对下一步的研究计划提出规划与展望。

  第二章 文本情感分析背景知识

  本章详细介绍了目前文本情感分析领域的相关研究的现状,并且针对所运用技术进行分类,选取每一分类中具有代表性的研究案例加以阐述,同时总结出当前的文本情感分析的不足之处以及接下来文本情感分析任务的走向。

  2.1 文本情感分析的研究现状

  当今时代互联网技术的飞速发展给人们的日常生活带来了日新月异的变化,而随着发展,网络用户开始在社交网络中表达自己的观点、情绪,在网购平台对产品进行评论。这些行为留下了大量带有观点倾向和情感色彩的文本数据,自然而然的,如何使用各种先进技术对此类文本进行分析获得其中的情感极性便成为了计算机技术领域一个十分热门的研究课题。

  传统的关于情感分析的方法主要有基于规则分析和基于统计分析两类。基于规则分析的方法主要通过词典和模板匹配来提取出倾向或者情感极性,而基于统计分析的方法则是通过机器学习的方式通过相应数据集训练出模型来进行自动化地情感分析。随着深度学习、神经网络技术的发展,越来越多的情感分析任务开始借助这些新技术来提高情感分析结果的正确性。目前英文的情感分析方法得到了较大发展,由于中文与英文在词法、句法等方面存在较大差异,英文情感分析的方法应用于中文情感分析取得的效果并不理想。本文分析了近几年来中文或其他主流语言情感分析工作的一些最新进展, 总结中文情感分析的发展趋势。

  值得注意的是所有的情感分析任务中,特定目标情感分析任务是指那些通过学习文本上下文的信息来判别文本中特定目标的情感极性的任务。特定目标情感分析任务是更深层次的情感分析,也是细粒度的文本分类任务,一直以来都得到很多学者的关注和研究[1,2]。

  目前在文本情感分析领域的分析方法可以分为两个范畴:基于情感词典即基于先验知识的分析和基于机器学习算法的分析,而基于机器学习算法的分析又可以分为基于传统机器学习算法和基于深度学习算法(人工神经网络)两种。

  2.1.1 基于先验知识的分析

  基于先验知识的情感分析方式采用情感词典进行分析,利用情感词典中标注的单词或短语的清晰来标注文本中出现的情感词的极性。对于预处理分词后得到的单词序列,这种分析方法有两种不同的处理方式:

  第一种方式是最简单直接的代数运算分析方式,即将文档分词处理后的结果,逐个词在情感词典查找对应的情感极性值,然后将所有的值进行求和。如果最终结果大于零,则文档情感极性为积极的,否则,为消极情感。第二种处理方式,会考虑语言的语法规则等,采用更复杂的分析模型和计算方法,往往也能获得更好的分类效果。例如采用位置索引敏感的算法计算每个分词的情感倾向,然后计算各位置情感倾向值的平均值作为最终的情感倾向。

  目前基于情感词典的情感分析方法主要是利用情感知识词典来获得句子中相关词语的情感极性并配合相应的代数和语法运算规则最终计算得出文本的情感属性。相关研究中:

  (1) Zagibalov T等人[3]提出一种不依赖任何标注训练样本的仅仅需要输入少量常用情感词和副词的方法。该方法在识别语句级别情感的效果能达到监督分类器的效果。该研究中将情感的情感分析和主客观判断作为连续的问题讨论而非一个分类问题。

  (2) Joshi A等人[4]的研究提出了一种被称为 C-Feel-It 的基于规则和情感推文分类系统。C-Feel-It利用4个大型情感知识词库来将推文分类为中性、积极、消极三种类型。该系统利用权值多数投票规则来预测推文的情感,能对十种以上结构的推文进行正确分类。

  (3) Chesley P等人[5]提出了通过重点分析文本中的动词和形容词的方法来进行自动化地对句子情感分类的工作。虽然在动词部分他们采用了SVM来将句子定性为询问、回答、解释、建议等种类,但是在形容词部分他们使用了在线的维基百科词典来判断文本中形容词的情感极性。

  (4) Qiu G等人[6]提出了一种用在特定目标情感分析任务中的双向传播算法,通过情感词和目标词之间的特定关系来判别特定目标的情感极性。该方法使用一个基础的情感词典,通过对情感词典的扩充,利用扩充后的情感词典和提取到的目标词之间的相互联系来建议特定目标和情感词之间的依赖关系,从而获取目标情感极性。

  2.1.2 基于传统机器学习算法的分析

  目前还有相当一部分情感分析任务的主要研究方法是基于核函数与统计学分类器的算法,例如支持向量机、最大信息熵、朴素贝叶斯、条件随机场算法等。这些方法也分为有监督、无监督和半监督三种。其中有监督的学习虽然在目前取得了较好的分析结果,但是其严重依赖于大量人工标注的数据,所以这些系统需要付出很高的标注代价。无监督学习不需要人工标注数据来进行模型的训练,使得这类系统的标注代价降低,但是由于其完全依赖算法学习结果,往往效果不佳,难以实用。半监督学习将少量有标注的样本和大量未标注的样本结合使用,兼顾了人工标注成本和学习结果,被视为一种折中的方案[7]。

  目前基于传统的机器学习方法的中文情感分析研究主要还是采用支持向量机、朴素贝叶斯、K-近邻等分类方法来进行文本情感的分类。相关研究中:

  (1) Tan S等人[8]提出了一种关于中文文档情感分析的方法。在他们的研究中,采用了四种特征选择方法(互信息法、信息增益法、文档频率法、卡方检测法)和五种传统学习方法(中值分类器、K-近邻、筛分类器、朴素贝叶斯和SVM)对1021份中文文档进行情感分析,实验结果表明信息增益在特征选择方法中表现最好,而在传统机器学习方法中SVM的表现最好。

  (2) Zhang C等人[9]提出了一种基于规则的文档情感分析方法。该方法分为两个阶段:首先根据词间依赖关系来确定句子的情感,然后再将句子的情感聚合起来得到整篇文章的情感,将中文情感分析任务从句子层次提高到文章层次。他们的研究结果在最终测试中的表现要优于三种传统的学习方法,从而证明了他们所提出方法的可行性。

  (3) Kiritchenko S等人[10]使用一种结合多种特征的支持向量机分类模型在基于方面的情感分析任务中取得了有竞争力的实验结果。该方法在libSVM模型上加入了unigram、bigram、词典等特征,使模型可以挖掘输入文本中的多种情感信息,有效识别句子中不同方面的情感极性。

  2.1.3 基于深度学习方法的分析

  深度学习是机器学习研究中的一个新领域,其研究目的是为了模仿人类大脑来建立可以进行分析和学习的神经网络。目前,深度学习的相关技术已经被成功应用于图像识别、语音识别等方向,也有越来越多的研究开始将深度学习方法应用于自然语言处理方向。

  目前主流的神经网络结构有循环神经网络(Recurrent Neural Network, RNN)、卷积神经网络(Convolutional Neural Network, CNN)、长短时记忆网络(Long Short-Term Memory, LSTM)等。其中RNN是一种节点定向连接成环的人工神经网络。这种网络的内部状态可以展示动态时序行为。RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等,其在文本情感分析领域也有较多应用。CNN是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,已经被成功地运用于图像处理领域,其在情感分析领域的应用也有相应的研究。LSTM网络是一种带门控的RNN网路,可以有效解决RNN网络在训练过程中的梯度消失问题。在自然语言处理任务中,LSTM网络可以学习词语在句子中的长期依赖关系。

  目前基于深度学习和神经网络的情感分析研究普遍都取得了比传统的机器学习方法更优秀的分析结果,这些研究中所使用的神经网络模型有CNN、RNN、AdaRNN以及结合受限玻尔兹曼机层的神经网络等等。相关研究中:

  (1) Sun X等人[11]提出了一种内容扩展框架用来将微博与其相关评论组合形成“微博对话”从而进行特征提取。他们在深度神经网络的基础上扩展出卷积的特性,应用了一种新式的自动卷积编码器来从“微博对话”中提取信息并从帖子中提取特征。他们所使用的深度神经网络模型拥有数层受限玻尔兹曼机层(Restricted Boltzmann Machine, RBM),和一层分类玻尔兹曼机层(Classification RBM, ClassRBM),实验结果表明他们设计的深度神经网络模型比SVM和NB方法都有更强的性能.

  (2) Huang H H等人[12]关于隐晦观点的提取和情感分析的研究中,对于那些缺少明显观点词或者观点的提出十分不明显的句子的情感分析任务进行了研究。在他们的研究中,使用了最前沿的机器学习方法,也使用了词向量和深度神经网络来对中文酒店点评数据集进行实验。他们的实验表明,卷积神经网络的表现不仅要远远优于支持向量机方法,而且还能捕获到原文本中的隐藏知识。

  (3) Chen T等人[13]提出了一种“分而治之”的情感分析方法,该方法首先将句子分成不同的几种种类,然后再针对每种不同的种类采取相应的办法来进行情感分析。首先该方法会根据分析目标的个数利用神经网络来将有观点的句子分成三类,对于每一类,再用一维的卷积神经网络进行更细化的情感分类。

  (4) Nguyen T H等人[14]基于递归神经网络(Recursive Neural Network, RNN)和依存树提出一种特定目标情感分析模型。该方法利用一个结合句子成分结构和句子依存关系树的二叉短语依赖树来获取特定方面的表示,能有效获取不同方面在句子中和其他词语的依赖关系,有效提升了特定目标情感分析的正确率,同时也大大降低了情感分析任务中的特征工程的工作量。

  (5) Dong L等人[15]使用一种带适应能力的递归神经网络模型(AdaRNN)来解决特定目标情感分析问题。该模型利用一个自适应的神经网络模型来学习特定目标和词语之间的相互联系以及句子的句法结构,并通过词语和目标词之间的联系来扩展句子中的情感信息,从而有效识别句子中特定目标的情感极性。

  2.2 文本情感分析的难点和不足

  对于文本情感分析任务来说目前还有以下不够完善的地方,同时也是文本情感分析任务的几大难点:

  (1) 基于先验知识的分析对人工情感词典的依赖太重导致手工工作量庞大。

  (2) 在互联网环境下,有一些字面上积极的语句往往带有完全相反的情感极性。例如“一天蓝屏三次,这电脑太稳定了!”。目前的研究对于这一类含有反讽和幽默的数据的情感极性的预测正确率还不够理想。

  (3) 对于相似程度很高但是态度情感极性相反的句子往往难以正确区分。例如“这种护肤品痘痘多的人用很有效”和“用了这种护肤品用了之后痘痘变多了”。

  (4) 目前大多数研究工作还集中于对商品的评论和反馈进行分析,涉及到网络舆情等其他领域文本的分析工作还相对较少[16]。

  2.3 本章小结

  关于情感分析任务,目前还有很多研究在使用基于传统机器学习的方法,根据手工标注好的情感词典,对文本信息使用朴素贝叶斯、支持向量机、最大熵方法等传统机器学习算法进行情感分析。为了避免对手工方式建立的情感词典的依赖,减少机器学习过程中的人工干预,新型的基于深度学习和神经网络(CNN、RNN、LSTM[17]等等)的方法逐渐被运用到情感分析任务中去,并且普遍取得了比传统方法更好的效果。

  从长远看来,文本情感分析任务将是今后深度学习和神经网络发展的一个十分重要的方向。而由于中国互联网用户庞大的基础,基于中文的情感分析必定会引起行业内的高度重视[18][19]。

  根据目前的研究现状来分析,当今和未来一段时间内,文本情感分析尤其是中文情感分析的追求目标应该是找到更好的特征提取技术和工具,同时应该将情感分析任务与社交网络的数据挖掘相结合以实现需求的分析和监控。本人的毕设任务决定采用基于深度学习和神经网络的分析方法,采用卷积神经网络(CNN)构建中文情感分析模型来进行中文情感分析任务,并且争取能在相应的中文数据集上获得正确率较高的情感分析结果。

  第三章 基于卷积神经网络的中文情感分析模型

  本章将会介绍本文研究的主体—基于卷积神经网络的中文情感分析模型以及与之相关的文本预处理技术。文章将会详细的介绍卷积神经网络模型的组成结构和工作原理,以及对文本数据进行分词等预处理的相关步骤和工具,以及文本数据向量化的相关工作。

  3.1 文本数据的预处理

  在自然语言处理任务中,要想使用深度学习方法获得准确优秀的预测结果有一个前提:那就是要对演示文本数据进行准备合理的预处理,这其中包括分词、词性标注、去停用词、文本向量化等等一系列工作。

  关于文本分词的工作,以英文为代表的西方语言由于其语言的文法规则导致其文本天然具有分词属性,这也就是说,英文的文本原始数据是一般天然做好分词的,不再需要额外的分词步骤。而这一情况到了中文就有了很大的变化:因为中文是一种高度完善和发展的语言,因此在中文文本中不存在天然的分隔符来将句子中的各个词语分开。而且由于中文词语构成的复杂性,存在众多单字成词或者成语之类的词语,这进一步增加了中文文本分词的难度。关于这一问题的解决,不是本文的主要研究方向,因此在本文研究中,主要采用了目前比较常用的中文分词工具来进行文本的分词工作:分别是jieba分词工具和NLPIR分词工具。

  3.1.1 基于jieba分词工具的中文文本分词

  jieba分词工具是由Sun Jun yi开发的中文分词工具包,jieba支持三种分词模式:

  (1) 精确模式,试图将句子最精确地切开,适合文本分析;

  (2) 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

  (3) 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

  jieba分词算法的主要实现如下:

  (1) 基于前缀词典实现对输入文本的词图扫描,从而生成输入文本中的汉字所可能组成的所有词所构成的有向无环图 (DAG);

  (2) 采用动态规划查找最大概率路径, 然后根据单词出现频率得出最大切分组合;

  (3) 采用具有汉字组词特性的隐马尔可夫模型(HMM)配合Viterbi算法来对未登录词语进行处理。

  本文的研究中主要采用了jieba分词中的精确模式来进行文本的分词工作和词性标注工作。

  3.1.2 基于NLPIR的分词系统的中文文本分词

  NLPIR,又名ICTCLAS,是一款广受好评的中文分词工具。其由中科院张华平博士主持研发,目前最新版本是2016。主要功能包括中文分词、词性标注、命名实体识别、新词发现与关键词提取,还有针对于微博文本分析的微博分词功能。

  NLPIR分词系统的主要思路如下:先对输入语句进行原子切分,然后在此基础上进行N-最短路径粗切分,即找出前N个最符合的切分结果,利用切分结果生成二元分词表,接着生成分词结果,然后进行词性标注,最后通过动态的词典匹配来完成分词。

  本文的研究中主要采用了NLPIR分词中的中文分词和词性标注两个核心功能。

  3.1.3 基于word2vec的文本向量化

  在运用深度学习方法的研究任务中,建模过程中至关重要的一步是如何有效的提取研究对象的特征,在文本情感分析任务中自然也不例外。这里的核心问题就是:如何将一个文本形式的句子表达成计算机容易“理解”的形式。这一步是在运用深度学习方法时的基础。

  一个思路是所谓的One-Hot模型,即为每一个词语赋予一个唯一的编号,这样一来输入文本中的句子就可以看作是词语编号的集合,从而完成了从文本到数字的转换。然而,这种看似简单的方法却隐藏了一些问题:由于词语之间的编号是完全独立的,因此编号相邻的两个词语有可能具有完全相反的语义,然而一般来说模型经过学习之后会认为位置相近的词语之间存在着相似关系,这对于文本情感分析任务来说显然是不利的。虽然可以通过将意思相近的词语放在一起编号来缓解这一问题,但是这种做法又会导致词语语义的一维性,而事实上一个词语的语义应该是多维的。

  根据前文的叙述,不难想到我们的目标应该是将词语“翻译”成高维的向量来进行准确的文本向数字的转换。本文的文本数据向量化就是采用这种思路来进行的,转换过程是通过word2vec来进行的。本文实验中的word2vec模型是在本人收集到涵盖六个领域的中文训练语料上训练而来的。

  在对训练语料进行分词操作之后,就可以利用gensim包中包含的word2vec工具来进行word2vec的训练,训练过程使用默认的skip-gram模型,窗口大小采用默认的5,构建出的词向量的大小为256维。

  在训练结束后,对得到的模型做如下简单的测试:加载模型之后使用模型预测与“作者”意思最相近的词语,结果如表3.1所示:

  可以看到相似度较高的词语在语义上与“作者”这一词语都是有较强关联的,这一现象也说明了训练所得到的word2vec模型的有效性。至此,文本的预处理工作告一段落。

  3.2 卷积神经网络模型

  人工神经网络本质上就是按照一定规则链接起来的多个神经元,这些神经元按照一定的规则排列成不同的层结构,最上层输入层用来接受输入的数据,中间的若干隐藏层用来拟合预测函数,最后的输出层用来输出预测结果。

  3.2.1 训练数据的生成

  训练数据的生成过程如下:

  (1) 将训练数据中的正负样本连同分类结果标记(Label,正面样例用1表示,负面样例用0表示)全部读取之后,利用分词工具进行分词操作。

  (2) 对分好词之后的样本数据进行遍历,生成文本词典,用这一词典来筛选出样本中出现次数低于5次的词语,以此来进行降噪,增强训练数据的准确性。

  (3) 加载之前训练好的word2vec模型,利用该模型将每一个训练样本(即一个句子)中的每个词语都转换成一个256维的向量。这样以来,就可以把每一个样本转换成一个N*256的矩阵,其中N的值人为规定为100,即如果文本词语数量超过100,则只截取前100个词语,若文本词语数量小于100,再补充若干个256维的零向量直到词语数量达到100。

  (4) 由于目前的样本是正样例在前,负样例在后的,因此下一步要进行乱序操作,同时将结果标签按照相同顺序打乱,至此,训练数据生成完毕。

  3.2.2 卷积神经网络的优势

  与全连接神经网络相比,卷积神经网络有以下优势:

  (1) 可以利用输入的矩阵中的空间位置信息:由于卷积运算的数学特性使得卷积层中的每个卷积核在进行特征提取的时候一般都是将自身与输入数据上的一块区域进行卷积运算得到结果填入特征图,这样就利用到了输入的矩阵中的空间位置信息。

  (2) 能够有效减少所需要训练的参数的数量:卷积神经网络通过权值共享,下采样等方式有效地降低了模型训练过程中所需要训练的参数数量

  3.2.3 卷积神经网络模型的构建

  卷积神经网络模型中输入层之后会含有一层或多层卷积层和池化层以及全连接层,之后是输出层,文本所使用的卷积神经网络模型的层次结构如下图所示:

  (1) 输入层:每一条输入数据都是一个100*256的矩阵。

  (2) 一维卷积层:一维卷积就是单一的时域卷积或者空域卷积,用以在一维输入信号上进行邻域滤波。该层的输出就是将输入信号与每个卷积核按照单一的空域(或时域)方向进行卷积所得到的结果。在本文的研究中采用一维卷积是因为输入序列中的每个信号是一个256维的词向量,词向量一个相对独立的部分,在进行卷积运算时不宜将其进行分割,因此就相当于是二维卷积窗口的尺寸的第二维固定成256。换言之,可以将一维卷积看作二位卷积的简便版,对输入信号中(100,256)的信号进行1D卷积相当于对其进行卷积核为(filter_length,256)的2D卷积。

  卷积层的参数为:卷积核个数为250,卷积核尺寸为3(实际上是3*256),卷积窗口滑动步长为1,填充策略为“valid”,即只进行有效的卷积操作,对边界数据不做处理,激活函数使用relu函数。由于每条输入数据的形状为(100,256),因此在250个大小为3*256滑动步长为1的一维卷积核的作用下将会形成250个一维特征图(Feature Map,存储着学习到的特征信息)每个的特征图的尺寸为(98)。

  (3) 一维全局最大池化层:一维全局最大池化的操作相当于池化窗口与一个Feature Map中的尺寸大小相同。在本例中就是Feature Map的尺寸(98),在这98个数据中选取最大数据来代表这98个数据。因此250个尺寸为(98)的数据在经过本层神经元作用之后变为(250),也因此,经过这一层之后,信号形式变成一维,省去了Flatten(即将高维数据抹平成一维)的操作。

  (4) 全连接层:神经元个数为250个,与之前一维全局最大池化层得到的250个输出全连接,激活函数为relu。

  (5) 为了防止训练过程中可能出现的过拟合(Overfitting)现象而加入的Dropout层:该层用于在模型训练过程中随机丢弃一部分神经元的参与,相当于每一批(batch)训练数据都训练的是有轻微区别的神经网络。

  (6) 全连接层:神经元个数为1,与上一层的全连接层的250个神经元的输出全连接,最后再用sigmoid激活函数来将值域限制在(0, 1)范围内形成最终的输出,与样本标签的0和1相对应。

  3.2.4 优化算法与损失函数

  展出动量项而得到的。Adam算法与传统的随机梯度下降算法(SGD)有所不同:SGD是利用同样的学习速率(learning rate)来更新所有的权重,而Adam算法则是利用目标函数中相应权值的梯度的一阶和二阶矩估计来对每个参数的学习率继续做动态的调整。以下是Adam算法的伪代码:

  如算法3.1所示,按照上文所叙述的卷积神经网络结构,所形成的神经网络模型中的可训练参数的总个数为255251个,本文所使用的目标函数为对数损失函数(binary_crossentropy)。至此,模型介绍完毕。

  3.3 结合词性标注信息的卷积神经网络结构

  章节3.2中所构建的文本情感分析模型中,神经网络的输入矩阵是通过直接对文本进行分词后得到的结果进行word2vec向量化而得到的,在向量化步骤中所使用的word2vec模型同样也是在仅经过分词操作的中文语料上进行训练得来的。这样的输入结构使得神经网络无法学习到关于文本中词语的词性特征,这会对模型的输出结果的准确性有一定的影响。例如:“赞美”这个词既可以认为是动词,也可以认为是名词,而章节3.2中所构建的文本情感分析模型就无法根据一个词的词性的不同来学习到不同的特征。

  为此,本文继续在上述模型的情况下加以改进,得到了可以学习词性标注信息的卷积神经网络中文情感模型。具体工作如下:

  (1) 在使用分词工具处理文本的时候,不仅仅只保留文本分词后的结果,同时保留分词工具对每个词语的词性标注信息。

  (2) 训练词向量时的语料数据也使用包含词性标注信息的语料。

  (3) 在构建输入给模型输入层的输入矩阵时,每一条数据改为由对应文本分词之后向量化的结果与该段文本对应的词性标注信息向量化结果二者拼接而成,为了保证能最大程度利用原有模型,在训练词向量时每个词语或者词性标注的向量维数降低为128维。而每段文本的最大词语数量保持原有的100词不变,这样一来,便能使每段文本的结合词性标注信息的,仍然可以与原有模型输入层的接收数据形式相匹配。

  图3.2展示了结合词性信息前后模型输入向量的变化情况:当输入语句为“很好很满意”时,不结合词性标注的模型得到的分词结果为“很”、“好”、“很”、“满意”,因此输入矩阵就由这四个词的w2v向量结果纵向拼接而成;而结合词性标注的模型得到的分词结果为“很”、“d”、“好”、“a”、“很”、“d”、“满意”、“v”,其中“d”、“a”、“v”分别表示副词、形容词、动词。此时输入矩阵的生成过程如下:先将每个词语的w2v向量结果与相应的词性标注的w2v向量结果进行横向拼接,再将这一步得到的四个结果进行纵向拼接,最终得到输入向量。

  经过以上步骤,一个经过改进的能够提取到输入文本中词性标注信息的基于卷积神经网络的中文情感分析模型就被成功构建出来了,从理论上来说,结合词标注信息之后的模型能够提取到更加丰富的特征。但是,从另一个角度来看,添加词性标注信息到输入矩阵也有可能带来一些不必要的噪声,经过改进的模型具体表现如何,还要经过具体的实验来做出分析。

  3.4 本章小结

  本章主要介绍了本文所研究的情感分析任务所使用的卷积神经网络模型以及在文本预处理步骤,训练集生成方法和神经网络模型构建的详细构建流程, 最后还提出了一种结合词性特征的在基础卷积神经网络模型上有所改进的卷积神经网路文本情感分析模型。

  第四章 实验与结果分析

  本章主要介绍了如何利用第三章中所介绍的卷积神经网络模型以及改进过的结合词性标注信息的神经网络的模型,同时利用jieba和NLPIR两种不同的分词系统在标注数据集上进行模型训练,验证和测试的过程,并且对实验结果进行了详细的分析。

  4.1 实验环境配置

  本文中卷积神经网络模型的构建基于keras深度学习库,keras后端框架为tensorflow-gpu。实验中所用到的第三方模块的版本详情如下表:

  4.2 数据集介绍

  本次实验所采用的数据集包含COAE 2014 Task4&Task5数据集,以及从网络收集的网购平台用户的评论数据集,还包括酒店住客网上评论数据集等等共计21,105条有情感标注的中文文本。其涉及的详细领域可以分为:书籍、酒店、计算机、牛奶、手机、热水器等六个领域。关于本数据集的详细情况请参考图4.1:

  文本中的所有实验都是将如图4.1所示的数据集按照8:1:1的比例划分为训练集、验证集与测试集。在未经过预处理之前,所有的正样例保存在pos.xls文件中,所有的负样例保存在neg.xls文件中,正负样例合并起来保存在data.txt中。

  4.3 实验过程简介

  本文实验中设置的四种分词与模型组合方式如表4.3所示:

  接下来以CNN_jieba为例,对实验过程进行简介:

  (1) 运行preprocess_jieba.py来对data.txt文件进行分词处理,分词处理的结果保存到seg_by_jieba.txt文件中。

  (2) 运行train_w2v_jieba.py来在seg_by_jieba.txt的基础上训练word2vec词向量,保存到my_w2v_jieba.model中。

  (3) 运行generate_train_data_jieba.py来读取pos.xls和neg.xls之中的数据并做好标记,同时利用分词结果对照my_w2v_jieba.model来生成输入数据,由于数据量过大,将相应的训练数据保存到train_x_jieba.npy以及train_y_jieba.npy中。

  (4) 运行train_jieba.py来加载train_x_jieba.npy以及train_y_jieba.npy训练数据,同时搭建好模型,接下来将训练数据划分成训练集、验证集和测试集,开始对模型进行32轮迭代规模的训练,将这32轮中在验证集上的验证损失最小的模型保存到best_model_jieba.hdf5文件中,并且利用此模型在测试集上进行模型性能评估。

  (5) 运行predict_jieba.py来加载best_model_jieba.hdf5模型并且用该模型对典型句子进行情感分类预测。

  4.4 实验结果与对比

  按照上文实验过程所得到的各项实验结果与对比如下:

  4.4.1 测试集准确率

  从图4.2中可以分析得到以下结论:

  (1) 从总体上来说卷积神经网络模型在本文中所采用的数据集上能够以比较高的准确率完成文本分类任务,四种组合的模型在相同的测试集上都能够达到超过85%的正确率。

  (2) 结合词性标注的模型并不一定像理论上一样能够获得更好的分类性能,比如CNN_jieba_Tag模型的分类准确率就比CNN_jieba更低,出现这种情况是因为对新的输入向量矩阵的降噪不够有效。

  (3) 在本文所使用的数据集上NLPIR分词系统相较于jieba分词系统而言更为优秀,因为无论是否添加词性标注信息,使用NLPIR分词系统的模型准确率都要高于使用jieba分词系统的模型。

  4.4.2 训练集与验证集准确率

  从图4.3中可以分析出CNN_jieba对训练集的拟合程度最好,这说明CNN_jieba模型更容易训练,同时从CNN_jieab_Tag模型的验证集准确率最低可以看出训练该模型的所需的人工超参数调整工作较多,在不引入强化学习的前提下训练起来与其他模型相比较为需要更高的成本。

  4.4.3 典型语句判断结果

  从测试集中选取如表4.4所示的几条典型语句,四种模型给出的预测结果如下表所示:

  表4.4 四种模型对典型语句的预测结果

  ID文本CNN_jiebaCNN_jieba_TagCNN_NLPIRCNN_NLPIR_TagLabel

  1质量很差。图像不清晰。光盘有摩擦的痕迹negativenegativenegativenegativenegative

  2屏幕较差,拍照也很粗糙。positivepositivepositivenegativenegative

  3待机时间短,有时还会死机,手机键盘也不灵。positivenegativenegativenegativenegative

  4很好,给爸妈买的,他们很满意positivepositivepositivepositivepositive

  5好书要与大家分享,即使不是美术爱好者,读后也有收获的,热烈推荐给大家!positivenegativepositivepositivepositive

  6房间装修不错,早餐也挺好。出入方便。推荐。positivepositivepositivepositivepositive

  从表4.4中的各个模型对典型语句的判断结果可以推断:

  (1) 编号1、4、6的句子属于结构简单,情感色彩十分明确的句子。四种都能够对这类句子进行正确分类。

  (2) 编号2号句子仅有CNN_NLPIR_Tag预测正确,推测是因为该类语句的预测值十分接近于0.5,而情感极性的分类0或1过于绝对而导致的不稳定预测,可以考虑在训练时舍弃部分预测值过于接近0.5的样本来提高模型预测稳定性。

  (3) 编号3、5的句子结构相对较为复杂,感情也相对隐晦。基于jieba分词的模型在预测这种数据时出现了错误,而基于NLPIR分词的模型都能做到正确分类。

  (4) 综合来看CNN_NLPIR_Tag对所有典型语句的结果都正确,这也与其最高的测集准确率相对应。

  4.5 本章小结

  本章对于第三章中提出的CNN中文情感分析模型和改进的结合词性标注信息的模型率分别结合jieba分析系统与NLPIR分词系统进行了实现,并在相应的数据集上进行了训练、验证与测试。根据测试集、训练集、验证集准确率以及几种模型对典型语句进行情感分类测试的结果来看,CNN_NLPIR_Tag是四种模型中最优秀的模型。

  第五章 总结与展望

  5.1 本文总结

  在Web2.0的大环境下,蕴含丰富情感信息的网络本文的数量正在以极高的速度不断增长,伴随着深度学习技术的不断发展,如何选取合适的深度学习方法来提取这些文本中的情感极性是一项极其具有实用性的课题。

  本文工作主要围绕着如何构建基于卷积神经网络的中文情感分析模型这一课题来展开,此外介绍了相关的本文预处理和向量化的技术细节,同时也展示了卷积神经网络的层级构造和优势等等相关信息。

  本文主要工作如下:

  (1) 完成文本研究所需要的语料数据集的搜集和预处理,向量化。这些工作使得神经网络能够高效、准确地从输入数据中理解文本并且提取文本的特征。

  (2) 构建了训练出基于卷积神经网络的具有一维卷积层、一维全局最大池化层、全连接层等结构中文情感分析模型,并且这一模型在涵盖六个领域的数据集上取得了接近于90%的正确率。

  (3) 对(2)中构建好的模型进行了一定的改进。通过将输入文本结合其词性标注来构建新的包含词性信息的输入矩阵这一步骤所得到的经过改进的中文情感分析模型在同样的测试数据集上取得了更高的正确率。

  (4) 本文中的实验完成了在上述数据集上的jieba分词系统和NLPIR分词系统、普通CNN模型以及结合了词性标注信息的CNN模型,这两组属性两两组合所形成的四种方案的各项性能指标的对比,并对对比结果做出了相应的分析。

  5.2 后续工作展望

  当然,文本的工作还存在以下值得改进的地方:

  (1) 训练语料数据的情感极性过于绝对,仅仅分为消极、积极两类,后续工作可以尝试进行更细粒度的情感分类。

  (2) 对于模型训练过程中可能会出现的过拟合现象,目前仅仅是采用了添加Dropout层的方法来缓解,后续工作可以尝试采用更加多样化的方法解决过拟合问题,例如数据集扩增,正则化等等方法。

  (3) 由于能力有限,文本的语料数据集较为单一,虽然数据集中包含了较多数量的涵盖了六个不同领域的情感文本数据,但是后续工作应该尽可能在更多数据集上对模型进行训练和评估,从而获得更有说服力的研究成果。

  (4) 对训练数据进行的降噪操作不够到位。这一点在使用jieba分词的结合词性标注信息的CNN模型的实验中表现尤为明显。改进之后的模型因为没有对新的训练数据进行有效的降噪,其最终在测试集上的分类性能表现反而不如没有改进过的原始CNN模型。

毕业论文:http://www.3lunwen.com/jsj/dzjs/5414.html

上一篇:基于分层结构的兴趣点推荐算法的设计与实现

下一篇:没有了

     移动版:基于卷积神经网络的中文情感分析

本文标签:
最新论文