基于词向量和CNN的书籍评论情感分析方法

2019-03-19 06:44李昊璇张华洁
测试技术学报 2019年2期
关键词:语料库书籍卷积

李昊璇,张华洁

(山西大学 物理电子工程学院,山西 太原 030006)

0 引 言

随着互联网和电子商务的发展,各种网站、 APP提供的商品种类及样式越来越繁多,选择在网上购物的人也越来越多[1].人们选择网购不仅因为它方便快捷,而且也因为它更容易表达自己的喜好,并参考别人的意见做出自己的购买选择.购买图书是一种典型的网购行为.图书购物网站例如“当当网”、 “亚马逊”等拥有大量图书、 大量用户集及用户评论,通常每本书的购买用户评论在几百条到百万条量级之间,每条评论文本或长或短,都表达了用户的喜好.所以本文选择在图书购物网站上获取大量书籍评论文本,并对此加以处理和分析,继而对评论文本的情感进行分类.

文本情感分析是对带有情感色彩的主观性文本进行分析、 处理、 归纳和推理的过程,利用机器提取人们对某人或某事物的态度,从而发现潜在的问题用于改进或预测[2].书籍评论是用户的主观性评价,包括正面态度、 中立态度和负面态度.如何判断用户的态度,对文本中包含的情感进行分析,是当前自然语言处理(Natural Language Processing,NLP)中的一个重要的研究方向.传统的文本情感分析方法模型中的词的表示是原始的、 面向字符串的[3].两个语意相近的词的字符串可能完全不同,这给自然语言处理和文本情感分析都带来了挑战——字符串本身无法储存语意信息.而神经概率语言模型中词的表示是向量形式、 面向语义的.两个语义相似的词对应的向量也是相似的,具体反映在夹角或距离上.甚至一些语义相似的二元词组中的词语对应的向量做线性减法之后得到的向量依然是相似的.词的向量表示可以显著提高传统NLP任务的性能.词向量编码方式为One-hot编码和Word2Vec模型编码,One-hot使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效的词汇表大小为N.One-hot编码方法得到的特征是离散稀疏的,这样对于中文语句的词向量计算来说会造成维度灾难.而Word2Vec得到的词的向量形式则可以自由控制维度,一般是100维[4].本文选择Word2Vec模型训练得到词向量.

本文提出一种基于词向量[5]和卷积神经网络(Convolutional Neural Network,CNN)[6]的自然语言处理方法,解决了对文本情感的分类问题.本文通过生成语料库及构建的卷积神经网络模型对词向量进行训练,较好地提高了文本分类的准确率.

本文的文本情感分类方法如图 1 所示.

该图分为3个模块,分别是:

1) 生成语料库: 这个模块由获取文本、 文本分词和词向量训练组成.通过在图书购物网站使用Python爬虫技术得到书籍评论文本数据.评论文本直接表达了用户对书籍的喜好.通过jieba分词技术实现分词[7],本文使用jieba分词模式中的精确模式,将句子最精确地切开,该模式适合文本分析.词向量训练通过Word2Vec模型实现,本文使用Word2Vec模型中的Skip-Gram模型对分词后的文本进行训练,该模型用中心词预测周围词,考虑文本的上下文关系和词频,对于出现频率低的词学习效果也较好,很好地提高了书籍评论情感分析系统的准确率.生成语料库模块输出一个评论高频词的词向量词典,词典中一个词语对应着一个词向量.

2)文本预处理: 这个模块实现了构建评论向量.评论文本数据同样由爬虫技术[8]得到,评论文本包括评论内容和评论分数两部分.在本文中以评论分数来生成用户喜好标签: 分数10分记为1,为好评; 小于等于2分记为-1,为差评; 其余的评分记为0,为中评.本文构成语料库的好评、 差评、 中评的比例类似于网站上的数据比,为6∶1∶3.文本由jieba分词,再将每条评论中的每个词在词典中找到对应的词向量,再把词向量按文本顺序拼装起来,生成评论的词向量矩阵.本部分输出评论文本向量,即带着用户喜好标签的词向量矩阵.

3) 情感分类器: 本模块实现对评论向量的分类,根据用户喜好标签将评论向量分为3类,分别对应着好评、 差评和中评.情感分类器由卷积神经网络实现,使用80%的评论向量作为训练集对卷积神经网络进行训练,20%的评论向量作为测试集对模型的分类能力进行测试.

1 基于词向量的预处理

对自然语言进行情感分析,是当前自然语言处理的一个热点方向[9].传统处理办法存在两点问题: 其一,国内中文语料库多为日常生活词语集、 古汉语集、 诗词书籍内容词语集,词语集内容宽泛,词语数量多,对某一领域没有针对性,尤其是对于本文研究的书籍评论没有很好的针对性,造成训练时间长而准确性不高的问题.其二,传统方法一般会使用到两种特征: 词袋模型(Bag of Words,BoW)和N元模型(n-gram).BoW忽略了词序,只是单纯对词计数,忽略了文本的上下文关系; n-gram则是考虑到了词序,但是需要相当规模的训练文本来确定模型的参数,并且n-gram模型是根据相互之间没有任何遗传属性的离散单元词构建的,从而不具备连续空间中的词向量所满足的语义上的优势,只有在已知关键词权重非常大的情况下,n-gram才会展现出自己的优势[9,10].

本文针对以上两点问题进行改进: 使用书籍评论文本训练词向量构建语料库,很好地解决了现有语料库对书籍评论针对性不强的问题,减少了训练时长,提高了书籍评论情感分析的准确率; 本文使用Word2Vec中的Skip-Gram模型作为生成词向量的算法,通过中心词预测周围词,考虑文本的上下文关系和词频,能够很好地提高书籍评论情感分析系统的准确率.

本文中的词向量分为两个部分,分别是构成语料库词典的词向量集和评论向量(即情感分类神经网络的输入词向量).两部分词向量的生成方法不同,前者是由书籍评论文本通过Skip-Gram模型训练生成,后者是通过前者的词典生成.

1.1 语料库

由于现有的相关中文语料库非常有限[11],语料库中的词语范围宽泛,对书籍评论情感分析的针对性不强,存在训练时间长但结果不够准确等问题.为了更好地开展文本情感分析的研究,本文选择训练生成语料库.本文生成语料库的文本,通过爬虫技术获取对图书购物网站的书籍评论,jieba分词得到评论的词语集.词语集经过Word2vec中的Skip-Gram模型训练,选择其中高频词的词向量,构建成一个书籍评论的语料库.该语料库对书籍评论情感分析问题的针对性强,很好地解决了现有中文语料库存在的问题.

现有中文语料库和本文语料库得到的文本评论分析训练情况在本文的第3小节有所对比.

1.2 词向量

Word2Vec模型主要有Skip-Gram和CBOW两种语言模型.本文通过Word2Vec模型中的Skip-Gram生成词向量.

Skip-Gram模型是一种根据一个词语来预测上下文词语出现概率的语言模型,其网络结构图如图 2 所示.

图 2 Skip-Gram模型网络结构图Fig.2 Network structure diagram of Skip-Gram model

图 2 中:w(t)代表当前词语位于句子的位置t,同理定义其他记号.在窗口内(本文的窗口大小为5),除了当前词语之外的其他词语共同构成上下文.从图 2 中可以看出,对于这个模型,输入层是语料库中任意一个词w,投影层将输入层的词向量传递给输出层,输出层输出最可能的上下文词向量[12].

Skip-Gram模型的优化目标是

(u|ϖ),

(1)

其中,

p(u|ϖ)=

[σ(v(ϖ)Tθu)]Lω(u)[1-σ(ν(ϖ)Tθu]1-Lω(u).

(2)

最终目标函数为

(ω,ϖ,u),

(3)

其中,

Γ(ω,ϖ,u)=Γω(u)log[σ(ν(ϖ)TθU]+

[1-Γω(u)]log[1-σ(ν(ϖ)TθU)].

(4)

分别求出梯度后,得到更新方法为

θu+=η[Γω(u)-1-σ(ν(ϖ)Tθu)ν(ϖ)],

(5)

ν(ϖ)∶=ν(ϖ)+

(6)

通过这种训练方法得到的词向量形如: “好评: [ 1.411 379 1-0.287 171 93 -4.223 255-1.833 177 4 3.616 365 7-0.504 491 15 0.042 088 93 0.034 972 72 0.872 664 87…]”.词向量的形式为键值对,一个词语文本对应着一个词向量矩阵.语料库中的每个词都对应一个N维的词向量.选择高频词对应的词向量作为语料库的词典.

1.3 评论向量

评论向量作为情感分析神经网络的输入词向量,由词向量词典生成.词向量词典包括了高频、 常见的书籍评论词语,所以书籍评论中的大部分文本向量都可以在其中找到,某些低频词在词典中找不到则将对应的词向量记为0,最后生成的评论向量形式为键值对,一个带用户喜好标签的文本句子对应着一个词向量矩阵.例如: “( 这本书很好, 1 ): ( [ 1.411 379 1-0.287 171 93 -4.223 255-1.833 177 4 3.616 365 7-0.504 491 15 0.042 088 93 0.034 972 72 0.872 664 87…] , [1.231 379 1-0.213 311 93 -3.223 255-0.823 177 4 1.616 323 7-0.504 491 15 0.042 088 93 0.034 972 72 0.872 664 87…] , … )”.

2 情感分类器

本文通过TensorFlow深度学习框架[13]用1D卷积神经网络实现情感分类器.TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习,很适合用来进行大规模的数值计算,其中也包括实现和训练深度神经网络模型.卷积神经网络在语音处理、 图像识别等领域上有着突出贡献.近年来,人们把越来越多的目光投入到卷积神经网络在自然语言上的处理.

2.1 TensorFlow深度学习框架及Keras

本文以TensorFlow深度学习框架作为生成卷积神经网络的后端库,以Keras作为前端具体实现搭建和训练模型[14].TensorFlow是一个开放源代码软件库,用于进行高性能数值计算,可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域.在本文使用该框架可以实现快速灵活地构建训练模型.

2.2 卷积神经网络

卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元.卷积神经网络由一个或者多个卷积层和顶层的全连通层组成,同时也包括关联权值和比重.这一结构使得卷积神经网络能够利用输入数据的二维结构.与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果.近年来也在自然语言处理上有着很好发展[15].

2.3 情感分类器的构建

如图 3 所示,本文将词向量矩阵层作为情感分类器的输入层,经过卷积、 池化层后进入全连接层,Softmax层,最后输出分类结果.该模型训练迭代10轮后,得到情感分类器的卷积神经网络模型.其中,卷积、 池化层由3个1D卷积层和最大池化层线性组合构成.卷积、 池化层的结构如图 4 所示.

图 3 情感分类器的结构图Fig.3 Structure diagram of sentiment classifier

输入层为词向量矩阵层.词向量为n*N形式,n为矩阵的长度,N维为每个向量的长度,本文将N设定为100,200,300和400进行对比实验,维度的设定对情感分类器结果精确度的影响在第3小节里有所对比.第二层是卷积、 池化层,卷积层为1D卷积层,卷积核的数目即输出维度为128,卷积核的窗口长度为5,输出(5,128)的二维张量.池化层为最大池化层,池化窗口为5,卷积、 池化层交替组合3次后,再线性融合输入全连接层,全连接层的输出维度为128,激活函数为tanh,输出的张量进入Softmax层,输出维度为labels_index,在本文中按照用户喜好分为3类,分别是好评1,中评0和差评-1.模型进行编译和训练,训练模型10轮后输出模型的结果和精确度.本模型的评估指标使用经典算法accuracy.

图 4 卷积+池化层结构图Fig.4 Diagram of convolution + pool layer

3 实验与结果分析

3.1 语料库的选择和对比

如表 1 所示,通过对比现有语料库和本文生成的语料库的训练情况,可知本文生成的语料库的训练结果明显高于现有语料库.这是由于本文生成的语料库对书籍评论情感分析问题的针对性强,提高了训练结果的准确率.

表 1 语料库的准确率对比

3.2 词向量的维度

Word2Vec的词向量维度一般在100维左右,所以本文从100维开始实验,分别对比了100、 200、 300和400维词向量训练结果的准确率.实验结果表明,300维的词向量训练结果较好于其他结果.如表 2 所示,对比了不同词向量维度和评论数据集大小的训练情况.100维的词向量存在训练结果欠拟合的情况,而维度较大(400维)的词向量会出现过拟合的情况.

表 2 词向量维度和训练文本个数的准确率对比

评论数据集大小分别对比了8万、 10万和13万的情况,数据集数量为10万时训练结果较好于其他情况.数据集数量为8万时因数据集较少而出现欠拟合的情况,数据集数量为13万时因数据量过大而出现过拟合,准确率降低.

300维10万数据集的训练结果如图 5 和图 6 所示,横坐标表示迭代次数,纵坐标分别表示训练的准确率和丢弃率.迭代10次时,准确率可以达到92.99%,丢弃率收敛为16.83%.

图 5 准确率Fig.5 Accuracy rate

图 6 丢弃率Fig.6 Loss rate

4 结 论

本文提出了一种基于词向量预处理和1D卷积神经网络的文本情感分类方法.通过实验,确定了构建针对性强的语料库对训练结果有明显的提升.词向量维度为300维时训练准确率到达最高值.并且该方法同时适用于长文本、 短文本和混合文本.综合以上几个方面,本文训练的准确率到达了 92.99%,较好于现有的语料库和方法.

在互联网飞速发展的时代,未来的文本数据量将爆炸性的增长.本文研究的只是自然语言处理中众多类问题其中的一类小问题.在下一步的研究工作中,拟解决以下问题:

1) 由于分词技术不是本文研究的重点,因此本文中用到的分词技术为jieba分词,没有对其进行优化.如果可以依据不同领域的专业词进行划分,将得到更好的分词效果.这也是本文之后需要进一步研究的方向.

2) 语料库中的词向量可以进一步优化,可以针对语料库中词向量的维度、 情感评论的占比等因素进行实验.

3) 相比于传统的机器学习算法,深度学习有着更有效的训练结果,如何将这一优势应用到更多的领域,在更多的场景中发挥其优势也是本文之后的研究方向.

猜你喜欢
语料库书籍卷积
鲁迅与“书籍代购”
中国书籍享誉海外
Chinese books find an audience overseas中国书籍享誉海外
基于3D-Winograd的快速卷积算法设计及FPGA实现
《语料库翻译文体学》评介
卷积神经网络的分析与设计
从滤波器理解卷积
曹文轩主编的书籍
基于傅里叶域卷积表示的目标跟踪算法
基于JAVAEE的维吾尔中介语语料库开发与实现