python情感分析好做吗_如何使用python做中文情感分析

作为一门编程语言,Python的编写简单,支持库强大,应用场景多,越来越多的人开始将它作为自己的编程入门语言。

Python一个比较重要的场景是做舆情分析,比如分析社交网络上群众对某一话题的态度,分析股民的情绪作为投资参考等。其中最基础的环节就是--分析一段话的情感倾向。

下面就分理论和实践两个部分,讲一讲怎么快速实现上面一幅图。

1.中文情感分析方法和难点

在上文所讲的例子中,我们希望得到的是人们对一件事情评价的情感倾向。比如支持还是反对一件事情,喜欢一件产品与否--结果可能是积极的,消极的或者中立的。比如

特别喜欢这种可爱的小狗

这句话的情感倾向显而易见是正面的。

情感标注的工作交给机器去做,可以有以下几种实现方式:

1.1 词性词典和分词

简单的说,就是给每个词语标注情感极性,比如好看是积极的,丑陋是消极的。拥有这样一个词典,机器就能对词语情感做分类。 对于一句话,可以按先分词,再统计每个词语的情感极性的方法。中文分词的方法可以参照笔者之前的文章: 如何绘制好看的中文云词图。

这种方法看起来是很简便,但是问题在于,汉语言博大精深,同一个词在不同语境里有不同的意思,可能表达不同的情感态度。

比如“这个电影拍得太牛逼了”,“你牛逼你上啊”,前一句表示电影拍的好,情感积极,而后一句则属于反讽,情感负面。仅靠词语标注是没法准确反映一句话的情感倾向的。

另一个比较客观的情况是目前也没有比较好的开源中文情感词典。

1.2 机器学习

传统的机器学习方法如SVM,Naive Bayes等也可以用来做情感分类。这里的关键是将文本转换文本矩阵(比如常用的Bag of Words),交给训练好的分类器进行情感识别和分类。

Python里有一个常用的中文文本处理库SnowNLP,里面就使用了Bayes的方法,通过已经标注好极性的语句进行训练得到分类器。需要注意的是官方用于情感分析的训练集来自买卖东西的评价,因此这个情感分析用于商品评价最为准确,其它领域最好自建训练集。

下载SnowNLP使用以下命令即可:

pip install snownlp

1.3 神经网络

神经网络在图像识别上发挥了巨大的威力,同样的方法也被用在了文本处理上。笔者认为现有比较简单的方法是以字符为单位,训练神经网络。这种方法不需要提前知道语法和语义的知识,但需要比较大的训练集做训练。在情感分析方面这种方法已经达到了比较好的效果。图片来自Yann LeCun团队

2.简单实现文本的情感分析

上面提到了诸多实现中文文本情感分析的方法,读者可以根据自己的兴趣去实现。尽管有这么多方法,但都是要花一些功夫去研究和实现的。针对某一领域相关的文本的情感分析可能需要不断的去优化,才能达到比较好的效果。

这里我给大家推荐一个现成的轮子,百度提供的情感倾向分析API(搜索“百度AI开放平台”即可)。文章开始的集体情感变化曲线就是用这个实现的。

使用的方法也很简单,在官网注册之后,可以得到每月免费使用的10W次权限。python可以直接下载百度情感分析的调用模块。 安装方法:

pip install baidu-aip

使用方法:

from aip import AipNlp

""" 你的 APPID AK SK """

APP_ID = '你的 App ID'

API_KEY = '你的 Api Key'

SECRET_KEY = '你的 Secret Key'

client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

输入待分析的文本(一段知乎的回答):

text="以前约过一个电子系妹子,之前和妹子关系都挺好的

约出去一切也很正常,直到不知怎么问起GPA。 我说我GPA不行,只有多少

多少。(大概略高于平均吧) 她哦了一声,说她有多少多少(反正比我高很多,

她貌似是他们系前几名) 从此以后她再也没理过我。 "

result=client.sentimentClassify(text)

返回结果:

{

'items': [ {

'confidence': 0.528202, //表示分类的置信度

'negative_prob': 0.787691, //表示属于消极类别的概率

'positive_prob': 0.212309, //表示属于积极类别的概率

'sentiment': 0 //表示情感极性分类结果

}

],

'text': '以前约过一个电子系妹子...... '

}

解读一下结果,这句话情绪比较负面,负面的概率是0.787691,置信度是0.528202。

不用自建训练集,也不用自己调优,完全依赖百度的黑盒子,就可以实现简单的情感分析。是不是很赞O(∩_∩)O~

关于我更多的实践,请关注 "果果数据" 微信公众号,未来也会推出更多数据相关的应用和技术分享!

往期文章:小六六:使用Python做中文分词和绘制词云​zhuanlan.zhihu.comv2-6356ef4d05de61ee4215f2d94dc4958f_ipico.jpg小六六:使用Python爬取12306数据:如何抢到从北京回家的票​zhuanlan.zhihu.comv2-ec8eff25edc0bba47c3489b8507dc509_180x120.jpg小六六:东北在衰退吗?以辽宁经济为例的数据分析​zhuanlan.zhihu.comv2-fe642d32a08050575e657fecb8175f92_180x120.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值