基于SVM和LSTM两种模型的商品评论情感分析研究

2019-10-08 07:45彭丹蕾谷利泽孙斌
软件 2019年1期
关键词:情感分析

彭丹蕾 谷利泽 孙斌

摘  要: 随着网购的盛行,商品评论数量急剧增长,内容也越来越五花八门。如何高效挖掘处理这些评论是一件非常有价值的事情。对商品评论做情感分析是关于这些评论研究的一个重要方向。现阶段在情感分析研究中最常用的有基于机器学习的方法和基于情感知识分析的方法。本文主要采用机器学习中的SVM 方法和深度学习中的LSTM 方法分别对从京东网站爬取的商品评论进行模型搭建,然后对比分析。由于LSTM 能够保持长期的记忆性,它很好地克服在SVM 分类中每个句子的词向量求平均丢失了句子词语之间的顺序信息的缺点,保留了词与词之间的语义信息(如词序信息、上下文信息等),并且通过复杂的非线性计算更好地提取词向量中隐藏的情感信息。因此使用LSTM 方法准确率比SVM 方法提高不少,在情感分析上表现出非常好的效果。

关键词: 商品评论;情感分析;SVM;LSTM

中图分类号: TP181    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.01.009

【Abstract】: With the popularity of online shopping, the number of product reviews has increased dramatically, and its contents are becoming more and more diverse. How to efficiently mine these reviews is a very valuable thing. Emotional analysis of product reviews is an important aspect of these reviews. The most commonly used methods in sentiment analysis are machine-based learning and sentiment knowledge analysis at present. In this paper, SVM method in machine learning and LSTM method in depth learning are used to model the product reviews crawled from Jingdong website. Because LSTM method can maintain long-term memory, it can overcome the shortcoming of losing the order information between words in each sentence by SVM method, so the accuracy of LSTM method in test set is much higher than that of SVM method.

【Key words】: Product reviews; Sentiment analysis; SVM; LSTM

0  引言

随着电子商务的快速发展,网购已经被越来越多的人接受。它在给人们带来方便体验、低价产品的同时,也受到了由于无地域限制导致的购物质量匮乏,远距离鉴别困难,商品在网站的描述信息与现实实物不符等多种问题。所以,人们在网购某商品时越来越依赖已购客户对此商品的评价。但由于商品评论数量急剧增长以及内容五花八门,使得人们很难迅速准确地获取有价值的信息。所以如何有效挖掘处理这些评论显得非常重要。关于这方面的研究有很多,其中一个重要方向就是对这些商品评论做情感分析[1]。

情感分析又称评论挖掘或意见挖掘,是指通过自动分析某种商品评论的文本内容,发现人们对这种商品的好评差评。现阶段在情感分析领域常用的有基于情感知识的方法和基于机器学习的方法[2-4]。基于情感知识的方法主要是利用一些已有的情感词典和语言知识对评论的情感倾向进行分类,包括SentiWordNet、General Inquire、POS tragger等等。它主要是以自然语言处理为基础,但因为现在NLP领域还存在着很多尚未攻克的难关。本文将研究基于机器学习的情感分析方法,具体选择的是机器学习中的支持向量机(Support Vector Machine, SVM)[5]。随着深度学习目前已经在图像处理和语音识别等领域得到了广泛地应用,它开始运用到情感分析研究中。因此本文也将研究基于深度学习的情感分析方法,具体选择的是深度学习中的长短时记忆网络(Long Short-Term Memory,LSTM)[6]。通过SVM和LSTM结果对比,得出结论。

1  相關知识介绍

1.4  TensorFlow

TensorFlow[11]分成两部分张量(tensor)和流(flow),张量是计算图的基本数据结构,它代表的是节点之间传递的数据,通常是一个多维度矩阵或者一维向量,流表达了张量之间通过计算互相转化的过程,形象理解为数据按照流的形式进入数据运算图的各个节点。目前,tensorflow是最热门的深度学习工具,本文将借助tensorflow实现深度学习LSTM模型。

2  具体实现

2.1  实验数据集

本文所用的主要实验数据集为京东网站爬取的商品评论文本以及一些公开数据集。其中爬虫主要是借助Scrapy框架。Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理,监测和自动化测试等领域。本文使用Scrapy获取商品评论文本过程如下:

(1)在终端命令行cmd输入scrapy startproject JDview,就创建了一个scrapy的爬虫工程。

(2)在items.py定义抽取的字段,本次只有content这一项内容。

(3)编写spider,定义一个用于下载的初始url,即start_urls,对页面的内容进行解析,提取在items.py规定需要的字段,同时将结果保存到csv文件中。

(4)由于在第3步实现了文件存取,故没有修改pipelines.py。

数据集的选取

由于京东商城是国内最大的数码通讯、电脑和家用电器的网上购物商城,同时,该网站也是中国电子商务领域中最具有影响力的电子商务网站之一。故本文爬取部分五星级好评和一星级差评,再加上网上的一些公开商品评论中文标注语料共同构成数据集。这些数据集共有两万多条,涵盖多个领域,手机,电脑,书籍,食品等。其中正负比例大约1∶1。通过整合整理将所有正的保存在pos.txt,将所有负的保存在neg.txt。

2.2  使用SVM进行情感分类

主体思路:从数据集中抽取样本,构建比例为8:2的训练集和数据集。随后,对训练集数据构建Word2Vec模型。其中分类器的输入值是一条条评论所有词向量的加权平均值。Word2Vec工具和svm分类器分别使用python中的gensim库和sklearn库[12]。

(1)将正负两组数据利用python的numpy进行整合,同时按照它们的顺序生成相应的标签,正(积极情绪)用1表示,负(消极情绪)用0表示。同时对正负每条评论分别利用jieba分词工具分词,进行下简单的词性筛选,利用sklearn包下的train_test_ split函数,构建比例为8:2的训练集和测试集。

(2)利用gensim库一些关于word2vec函数来实现计算词向量,例如用gensim.Word2Vec来训练词向量模型,也需要定义一些参数,size就是一个很重要的参数,指的是输出词向量的维数。定义好的模型通过build_vocab以及train与之前的训练集关联,来实现对训练集数据构建Word2Vec模型。之后我们对每个句子的所有词向量取均值来作为分类器的输入值。

(3)实现训练SVM模型。具体用的是sklearn包下的SVC函数,它是基于libsvm来实现的。其中kernel参数指定用的是rbf。之后调用其下的fit函数来具体训练SVM模型。最终调用score函数用测试数据集来对已建好的SVM模型进行检验来判定模型的准确率。

2.3  使用LSTM进行情感分类

主题思路:分为两部分,一是输入数据处理,由于神经网络无法处理字符串,因此需要将字符串转换为数字,并进行一定处理将其输入后续模型。二是LSTM模型構建,使用python语言借助tensorflow框架来实现模型搭建,比如tensorflow(tf)的tf.contrib.rnn下的BasicLSTMCell,MultiRNNCell,dynamic_rnn等函数[13]。

(1)将文本转换为数字,具体方法就是给每个单词贴上一个数字下标,同时将数据集中的每一条评论从字符串转为数字。同时按照数据集的评论根据正负生成相应的标签,正(积极情绪)用1表示,负(消极情绪)用0表示。

(2)建立LSTM模型,首先设置诸如LSTM个数,层数等基本参数,通过tensorflow的placeholder来定义输入输出。通过tf.nn.embedding_lookup添加Embeding层,来实现之前类似word2vec模型的功能。接着就是具体的建立LSTM层,借助的是tf.contrib.rnn下的BasicLSTMCell,MultiRNNCell,dynamic_rnn等函数。然后定义输出,验证准确率,这些就是模型的基本模块。

(3)具体训练,主要是将数据集和模型进行连接,以batch为单位输入神经网络,来进行训练。同时在基本参数将训练次数设置为10,在最终输出是每5个batch输出一次损失率,每25个batch输出一次准确率。

3  实验结果展示

3.1  SVM模型结果

从图中可以直观的看出,针对那些商品评论训练出的SVM模型的准确率为大约0.814,效果整体还是不错。通过多次运行程序,程序输出的准确率基本都稳定在这个值左右。

3.2  LSTM模型结果

从上图可以看出在LSTM模型训练第一轮(Epoch:0/10)的时候损失率由大约0.248到后来不断优化,变成约为0.206。到第十轮(Epoch /10)后损失率已经变得很小,基本是在0.01至0.03之间。准确率也是由第一轮最开始的0.54,一直优化到接近最后的0.900。准确率也不断提高。经过多次运次程序,每次程序经过10轮迭代后准确率输出也基本都在0.900左右。

3.3  SVM与LSTM模型对比

通过截图就可以直观地看出LSTM模型的准确率比SVM模型的准确率高一些,同时多次运行结果稳定。根据在相关知识介绍可知SVM虽然在二分类问题上有一定的优势,但由于评论语句每个词之间并不是一点关系也没有,而本文在构建情感模型的时候,把每个句子的词向量求平均作为输入丢失了句子词语之间的顺序信息。LSTM在构建文本分析这类需要长期依赖学习模型时,优于其他模型,而且由于LSTM模型遗忘、记忆和更新信息的能力使得它领先RNN一步(LSTM模型是特殊的一种RNN模型)。

4  总结与展望

随着互联网进入千家万户,人们在网上的活跃度也越来越高,对新闻进行讨论,对产品进行评价成为了人们互联网生活的一部分。互联网上的语言越来越多样、随意,迫切需要新的技术来弥补传统情感分析方法的局限。本文提出了基于SVM和LSTM两种模型来对中文商品评论进行情感分析。主要贡献有三点:

(1)使用机器学习中常用的SVM方法来实现情感分析二分类问题。主要抽取样本构建一定比例的训练集和测试集。随后,对训练集数据构建Word2Vec模型,其中分类器的输入值为每一条评论中所有词向量的加权平均值。Word2vec工具和svm分类器分别使用python中的gensim库和sklearn库。

(2)使用深度学习中常用的LSTM方法来实现情感分析。主要是借助tensorflow来搭建LSTM模型,同时词语向量化主要是借助tensorflow下的embed ding_lookup。

(3)对比针对同样的数据集,同样的数据预处理方法,两个模型准确率的差异,得出LSTM模型在学习长距离依赖,以及捕捉文本的序列特征与上下文依赖关系有很大的优势。

情感分析涉及到的学科多,而且学科交叉的跨度大,本文只是从一小点进行探索。在进一步研究中,一方面,需要在更广泛的数据集上验证本研究的结论,例如引入英文评论,另一方面,也需要对LSTM做更深入的研究,包括现在已经出现了很多LSTM的优化模型。

参考文献

钟将, 杨思源, 孙启干. 基于文本分类的商品评价情感分析[J]. 计算机应用, 2014, 34(8): 2317-2321.

张紫琼, 叶强, 李一军. 互联网商品评论情感分析研究综述[J]. 管理科学学报, 2010, 13(6): 84-96.

Scholz T, Conrad S. Linguistic Sentiment Features for Newspaper Opinion Mining[M]//Natural Language Processing and Information Systems. Springer Berlin Heidelberg, 2013: 272-277.

赵妍妍, 秦兵, 刘挺. 文本情感分析[J]. 软件学报, 2010, 21(8): 1834-1848.

樊康新. 基于SVM的網络文本情感分类系统的研究与设计[J]. 计算机时代, 2015(12): 34-37.

Jun, Liang, et al. "Polarity Shifting and LSTM Based Recursive Networks for Sentiment Analysis." Journal of Chinese Information Processing(2015).

Harrington P. Machine Learning in Action[M]. Manning Publications Co, 2012.

樊康新. 基于SVM 的网络文本情感分类系统的研究与设计[J]. 计算机时代, 2015(12): 34-37.

Mikolov T, Chen K, Corrado G, et al. Efficient Estimation of Word Representations in Vector Space[J]. Computer Science, 2013.

陈葛恒. 基于极性转移和双向LSTM 的文本情感分析[J]. 信息技术, 2018(2):149-152.

Abadi M. TensorFlow: learning functions at scale[J]. Acm Sigplan Notices, 2016, 51(9): 1-1.

Zhang D, Xu H, Su Z, et al. Chinese comments sentiment classification based on word2vec and SVM perf[J]. Expert Systems with Applications, 2015, 42(4): 1857-1863.

Tang D, Qin B, Feng X, et al. Effective LSTMs for Target- Dependent Sentiment Classification[J]. Computer Science, 2015.

猜你喜欢
情感分析
基于双向循环神经网络的评价对象抽取研究
在线评论情感属性的动态变化