NLP在网络书评情感分析中的应用
2018-09-18李春虎赵海博秦豪
李春虎,赵海博,秦豪
(华北理工大学理学院,河北唐山,063210)
引言
情感分析问题本质上是文本分类问题,通常是将文本分为消极情感和积极情感两类,有监督的文本情感分析主要是运用朴素贝叶斯、支持向量机等有监督学习算法进行情感分类,实验证明,使用一元词作为特征的朴素贝叶斯(NB,naïve Bayes)和支持向量机(SVM,Support Vector Machine)等机器学习算法在文本情感分析中表现出色.Pang、Lee和Vaithyanathan等[1]被认为是最早将原本应用于基于主题分类的机器学习算法应用到文本情感分析研巧中的研巧者,他们使用朴素贝叶斯、最大熵(ME,Maximum Entropy)、支持向量机等机器学习算法将电影评论文本分为褒义和贬义两类。Mlen和Collier等[2]在此基础上提出了一种将基于一元词特征与基于实际特征词相结合的SVM算法Ye等[3]比较了朴素贝叶斯、支持向量机和基于特征的N-gram模型在旅行博客评论文本上的分类效果,实验结果表明,支持向量机和N-gram模型准确率高于朴素贝叶斯算法,当训练集足够大时,这H种方法均能得到80%的准确率。Martineau和Finin等[4]提出了一种名为DeltaTFIDF的新的加权模式,提高了SVM算法的准确率。
伴随着联网的发展、电子商务的兴起以及信息的实时与交互化趋势,网络书评作为一种重要的书评资源,这些评论为本表达了评论者的观点和情感,用户也习惯于从网络书评中获取图书相关信息,为自己的决策寻找相关意见。分析用户发表在互联网上的书评,能够发现用户对图书的情感,挖掘其中的潜在信息,具有巨大的应用价值.而现有的文本情感分析中,以网络书评对象进行的研究很少。基于此,本文通过从互联网上爬取书评信息,并对其进行基于自然语言理解的统计分析,对图书做出合理性评价,并通过实例证明了模型的可行性与实用性。
1 相关理论
1.1 文本情感分析
文本情感分析是一个综合性的Web数据挖掘领域,与之相关的学科有计算机科学、教育学、音理学、语旨学、经济学等。情感分析(SentimentAnalysis),也被称为评论挖掘或者意见挖掘(OpinionMining),指的是通过对文本内容的分析,挖掘评论者所表达的情感倾向[5、6]。此技术可在现实生活中的很多方面得到应用,例如,商务智能、民意调查、舆论分析、企业管理等。作为一种综合性的Web数据挖掘领域,互联网评论文本情感分析所涉及的研巧内容非常广泛,比如网络中评论信息的自动识别、被评论商品的属性识别、购买者评论的褒贬态度识别、挖掘网上评论和商品销售情况之间的关系等等。利用互联网评论文本情感分析的结果,潜在的购买者可以了解其他购买者对该产品的态度以及使用体验,为自己是否购买提供决策依据; 制造商和经销商可了解到消费者关于产品和服务的反馈信息,参照消费者对自己以及竞争对手的评价意见,对产品及服务进行改进,从而获得竞争优势。目前互联网评论文本情感分析技术已经得到开发应用,例如,Google Product Search、Bing訊opping等能识别用户对产品各种属性的评价,并选择具有代表性的评论显示给用户,国内的亚马逊、淘宝等购物网站也有类似功能。因此,互联网评论文本情感分析的研究具有十分重要的现实意义。
目前主流的文本情感分析研究方法分为两种类型:无监督的文本情感分析和有监督的文本情感分析。无监督的文本情感分析主要是运用情感词的相关信息进行文本情感倾向判别,有监督的文本情感分析主要是运用朴素贝叶斯、支持向量机等有监督学习算法进行情感分类,一般是将文本集合划分为训练集和测试集,再对文本分词处理、删除停用词、选取特征,将文本表示成为文本向量的形式,最后训练分类器并进行分析。
1.2 爬虫技术简介
网络爬虫是一个自动提取网页的程序,它为搜索引擎从网页上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的 URL 开始,获得初始网页上的 URL, 在抓取网页的过程中,不断从当前页面上抽取新的URL 放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的 URL 队列。然后,它将根据一定的 搜索策略从队列中选择下一步要抓取的网页 URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索; 对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
网络爬虫分为以下几种类型通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep Web Crawler)。本文所设计的算法即是通用网络爬虫,可以在各大书评网站爬取大量用户的书评数据。
2 书评文本数据获取
2.1 网络爬虫总体设计
本文基于python的Requests与Beautiful库对网页信息进行爬取。针对网络书评的网络爬虫主要分为确定初始爬取链接的 URL 模块,模拟浏览器行为,提取网页内容的用户评论模块,对提取的网页进行解析,提取出有用信息的网页解析模块以及负责存储已爬取内容的数据库模块。网络爬虫的具体结构如图1所示。
图1 网络爬虫结构图
2.2 初始URL 模块设计与实现
普通的网络爬虫需要选定一组初始链接,再从初始链接的网页中提取超链接,并顺着这些超链接爬取下一个网页内容,如此重复直到达到某种条件为止。而网络书评的内容页面中,存在有许多与主题不相关的超链接,特别是一些广告链接。如果按照普通网络爬虫的 URL 爬取策略,会爬取到很多无用的信息,对于爬虫的爬取效率以及准确率都有较大的影响。因此,分析目标主题网站 URL 特点,选取适当的初始 URL 集,确定适合的爬行策略是很有必要的。
通过分析豆瓣书评的 URL 可以得知,各贴吧首页的 URL 都是以特定的域名https://book。douban。com/subject/xxxxx/reviews?start=为头,加上一个书评的关键字构成。例如,《解忧杂货店》书评的第10页 URL 关键字形式为:
因此,本文选择以特定的域名 https://book。douban。com/subject/25862578/reviews?start=作为开头,加上用户给定的关键字,以此得到的贴吧首页链接作为初始 URL。然后通过网页解析获取目标贴吧总页数,来确定最终网络爬虫爬行的 URL 集,其形式如下:
2.3 网页下载模块设计与实现
Requests是Python 里一个非常方便的客户端请求代理模块,是一个轻量的,渐进式 API,是个可以方便处理 Get,Post,Put,Delete,Head 等请求的HTTP 方面的库。在不同的应用场景发送请求的时候,会选择一个正确的请求方式,然后返回得到请求后的返回结果。文本利用 Request。get访问相应的 URL 链接,下载对应的 Web 页面,其核心代码如下:
2.4 网页解析模块设计与实现
网页解析的主要工作就是从网页源码中抽取出有效的文本节点,这个过程分为两步,第一步是分析网页的结构,找出 HTML 网页的结构特性; 第二步是按照结构特性所生成的解析规则,来获取网页上指定的文本节点数据。常用来解析HTML 网页的方法有正则表达式法和调用第三方库法。正则表达式的方法相较于第三方库法存在诸多缺陷,最重要的是由于不同的网页其结构和文本节点的解析规则均不相同,需要撰写不同的正则表达式来才能得到正确的文本数据,兼容性较差,因此本文使用的是第三方库来进行网页的解析。基于 Python对网页进行解析的第三方库有很多,其中比较流行的是Beautifulsoup。本文选择用Beautifulsoup库来解析网页获得文本。本文爬取的豆瓣书评网页,从书评网页底部DOM书来开始解析。
图2 豆瓣书评底部DOM结构
从中可以看出,用户的书评包含在
3 书评文本数据处理
3.1 停用词去除
停用词(stop words)是指评论文本数量较多,但对文本的倩感倾向分析没有帮助的词语,例如代词"这"、"那"、"他",语气助词"啊"、"唉",副词"也"、"刚即"等,根据停用词集合构建的停用词表删除停用词,能够减少数据噪音,提高文本情感分类的准确率。目前已有的研巧显示,通过删除停用词来提高文本情感分类的准确率的方法对于英文领域和中文领域同样适用。夏火松等的实验中分析了不同停用词表的使用和特征选择对客户评论文本情感分类的影响,提出了基于情感文本分类的有效的停用词表,其实现代码如下:
3.2 情感分析
文本情感分析的过程主要包括文本预处理、情感极性判别、情感强度评价,普遍认为真正的文本情感分析过程是指文本情感极性判别和文本情感强度的评价。文本情感极性判别是对主观性文本表这的情感是积极的、正面的、褒义的还是消极的、负面的、贬义的自动识别,本文利用 Character-Based Generative Model对其进行中文分词,通过隐马尔科夫模型对其进行情感分析,Python中Snownlp模块将这两种方法封装,该模块可以对输入的文本进行情感分析,而后返回一个0-1的值,越接近1则该句子越表现积极,越接近0则消极,本文既用Snownlp库对文本进行情感分析。
3.3 词频统计
TF-IDF(term frequency–inverse document frequency)词频--反转文件频率,是一种用于情报检索与文本挖掘的常用加权技术,用以评估一个词对于一个文件或者一个语料库中的一个领域文件集的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。通过对用户书评的词频统计,可以获取大部分用户对图书的态度,从而对该图书做出合理性描述。常用的词频统计方法有聚类法、次频法、突发词监测法等多种方法,本文利用聚类分析对书评进行词频统计。
3.4 实例分析
《解忧杂货店》是日本作家东野圭吾写作的奇幻温情小说。2011年于《小说野性时代》连载,于2012年3月由角川书店发行单行本。
该书讲述了在僻静街道旁的一家杂货店,只要写下烦恼投进店前门卷帘门的投信口,第二天就会在店后的牛奶箱里得到回答:因男友身患绝症,年轻女孩月兔在爱情与梦想间徘徊; 松冈克郎为了音乐梦想离家漂泊,却在现实中寸步难行; 少年浩介面临家庭巨变,挣扎在亲情与未来的迷茫中……他们将困惑写成信投进杂货店,奇妙的事情随即不断发生。该书获得第七届中央公论文艺奖、苹果日报翻译小说销售排行榜连续两季第二名,荣登纪伊国屋、诚品、博客来、金石堂各大排行榜第1名,亚马逊中国2015年度畅销图书榜第二。本文以《解忧杂货店》网络书评为例,进行了实例分析,具体步骤如下:
(1)利用Python中的Requests库对1000个豆瓣网中《解忧杂货店》书评网页进行爬取,共获取17843条书评,部分结果如下图2所示:
图2 网络书评部分数据
(2)对书评进行数据去噪、停用词去除,部分结果如下图3所示:
图3 网络书评停用词去除后部分数据
(3)对书评进行情感分析,部分结果如下图4所示:
图4 网络书评情感分析部分得分
(4)对所有书评的情感分析得分进行统计,结果如下图 5所示(图中 x轴代表评论得分,y轴代表评论条数):
图5 情感分析统计图
(5)对书评进行词频统计,本文选取频率出现在前八名的词汇进行统计,结果如下图6所示:
图6 高频词汇统计图
从上面若干图中可以看出,大部分读者对《解忧杂货店》持积极态度,评分较高,该书是关于人生、温情、治愈等主题的一本图书。
4 结束语
利用网络爬虫技术从豆瓣等网站爬取书评,通过 Character-Based Generative Model对其进行中文分词,通过隐马尔科夫模型对其进行情感分析,通过3-gram算法对其进行词性标注;最后通过书评分析对该书作出合理评价,并以《解忧杂货店》书评为实例验证证明了模型的可行性与实用性。本方法可用于图书分类、图书推荐、购买图书等多个方面,为读者及商家提供了建设性的指导意义.
进一步研究可以进更为复杂和具体的文本情感强度的分析,以及对评价对象的自动识别,或者除了褒贬之外的更复杂的情感自动识别,也可以分年龄段、分人群对其做出的网络书评进行分类后更深的数据挖掘,同时可以从网络书评中提取其它图书书名,从而用于图书推荐.
[1]王晓东, 刘倩, 陶县俊.情感Ontology构建与文本倾向性分析.计算机工程与应用, 2010, 46: 117-120.
[2]Mullen, T.and N.Collier, Sentiment analysis using support vector machines with diverse information sources.In Proceedings of Conference on Empirical Methodsin Natural Language Processing, 2004.
[3]Ye, Q., Z.Zhang and R.Law, Sentiment classification of online reviews to traveldstinations by supervised machine learning approaches.Expert Systems withpplications, 2009, 36(3): 6527-535.
[4]Martineau, J.and T.Finin.Delta TFIDF: An Improved Feature Space for SentimentAnalysis.in ICWSM.2009.
[5]Pang, B., L.Lee and S.Vaithyanathan.Thumbs up?: sentiment classification usingmachinelearning techniques。in Proceedings of the ACL-02 conference on Empirical methods inlanguage processing-Volume 10.2002:Association forLinguistics.
[6]Turney, P., Thumbs Up or Thumbs Down? Semantic Orientation Applied toUnsupervised Classification of Reviews.Proc.40th Annual Meeting of theAssociation for Computational Linguistics (ACL'02), 2002.