当前位置: 51女人网 > 情感生活 >

手把手教你如何用 Python 做情感分析

时间:2018-01-12 20:00来源:www.woman51.com 作者:51女人网 点击:
原标题:手把手教你如何用 Python 做情感分析 商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地。本文帮助你一步步用Python做出自己的情感分析结果,难道你不想试试看

原标题:手把手教你如何用 Python情感分析

商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地。本文帮助你一步步用Python做出自己的情感分析结果,难道你不想试试看?

需求

如果你关注数据科学研究或是商业实践,“情感分析”(sentiment analysis)这个词你应该不陌生吧?

维基百科上,情感分析的定义是:

文本情感分析(也称为意见挖掘)是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息。

听着很高大上,是吧?如果说得具体一点呢?

给你一段文本,你就可以用情感分析的自动化方法获得这一段内容里包含的情感色彩是什么。

神奇吧?

情感分析不是炫技工具。它是闷声发大财的方法。早在2010年,就有学者指出,可以依靠Twitter公开信息的情感分析来预测股市的涨落,准确率高达87.6%!

在这些学者看来,一旦你能够获得大量实时社交媒体文本数据,且利用情感分析的黑魔法,你就获得了一颗预测近期投资市场趋势的水晶球。

这种用数据科学碾压竞争者的感受,是不是妙不可言啊?

大数据时代,我们可以获得的文本数据实在太多了。仅仅是大众点评、豆瓣和亚马逊上海量的评论信息就足够我们挥锹抡镐,深挖一通了。

你是不是疑惑,这么高深的技术,自己这个非计算机专业的文科生,如何才能应用呢?

不必担心。从前情感分析还只是实验室或者大公司的独门秘籍。现在早已飞入寻常百姓家。门槛的降低使得我们普通人也可以用Python的几行代码,完成大量文本的情感分析处理。

是不是摩拳擦掌,打算动手尝试了?

那我们就开始吧。

安装

为了更好地使用Python和相关软件包,你需要先安装Anaconda套装。详细的流程步骤请参考《 如何用Python做词云 》一文。

到你的系统“终端”(macOS, Linux)或者“命令提示符”(Windows)下,进入我们的工作目录demo,皇冠比分网手机APPhttp://tiyu.ythaite.com/tixing/,执行以下命令。

pip install snownlp

pip install -U textblob

python -m textblob.download_corpora

好了,至此你的情感分析运行环境已经配置完毕。

在终端或者命令提示符下键入:

jupyter notebook

你会看到目录里之前的那些文件,忽略他们就好。

好了,下面我们就可以愉快地利用Python来编写程序,做文本情感分析了。

英文

我们先来看英文文本的情感分析。

其实,从上图可以看出,这个包可以做许许多多跟文本处理相关的事情。本文我们只专注于情感分析这一项。其他功能以后有时间我们再介绍。

我们新建一个Python 2笔记本,并且将其命名为“sentiment-analysis”。

先准备一下英文文本数据。

text = "I am happy today. I feel sad today."

这里我们输入了两句话,把它存入了text这个变量里面。学了十几年英语的你,应该立即分辨出这两句话的情感属性。第一句是“我今天很高兴”,正面;第二句是“我今天很沮丧”,负面。

下面我们看看情感分析工具TextBlob能否正确识别这两句话的情感属性。

首先我们呼唤TextBlob出来。

from textblob import TextBlob

blob = TextBlob(text)

blob

按Shift+Enter执行,结果好像只是把这两句话原封不动打印了出来而已嘛。

别着急,TextBlob已经帮我们把一段文本分成了不同的句子。我们不妨看看它的划分对不对。

blob.sentences

执行后输出结果如下:

划分无误。可是你能断句有啥了不起?!我要情感分析结果!

你怎么这么着急啊?一步步来嘛。好,我们输出第一句的情感分析结果:

blob.sentences[0].sentiment

执行后,你会看到有意思的结果出现了:

情感极性0.8,主观性1.0。说明一下,情感极性的变化范围是[-1, 1],-1代表完全负面,1代表完全正面。

既然我说自己“高兴”,那情感分析结果是正面的就对了啊。

趁热打铁,我们看第二句。

blob.sentences[1].sentiment

执行后结果如下:

“沮丧”对应的情感极性是负的0.5,没毛病!

更有趣的是,我们还可以让TextBlob综合分析出整段文本的情感。

blob.sentiment

执行结果是什么?

给你10秒钟,猜猜看。

不卖关子了,是这样的:

你可能会觉得没有道理。怎么一句“高兴”,一句“沮丧”,合并起来最后会得到正向结果呢?

(责任编辑:)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容