更多课程 选择中心

Python培训
美国上市教育机构

400-111-8989

Python培训

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

  • 发布:小六六
  • 来源: 果果数据
  • 时间:2018-01-25 14:14

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

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

这里搬出笔者曾经做过的一个例子:分析知乎论坛2017年,“清华大学”话题下的集体情绪变化。

--向下滑动--

1.如何看待清华大学研究生补助& 复旦大学学生在清华落水?  

2.如何看待清华北大毕业游戏主播女流遭骂?

3.如何看待《十年寒窗不如一纸国籍?清华新政,让中国考生欲哭无泪!》文中反映赴中国留学现象? &清华的哪些院系在培养方案和学生出路方面存在问题?  

4,5.如何看待杨振宁、姚期智放弃外国国籍,转为中国科学院院士?

6.如何看待清华大学13级博士生补助涨了250? 

7.为什么 2017 年清华大学交叉信息研究院的学生全部选择毕业出国?  

8.如何看待清华给甘肃魏祥的回信? &如何看待清华大学为甘肃残疾考生申请带母上学提供免费住宿? &如何看待清华大学降低国际学生录取门槛引争议?  

9.如何看待清华给甘肃魏祥的回信?

10.清华/北大到底带给你什么其他学校可能无法给你的?  

11.二三线城市普通家庭的孩子如何在高考之后弥补和一线中产&权贵家庭子女在眼界、见识、资源等方面的差距?   

12.如何看待清华大学副校长施一公的言论「当国内所有精英都想往金融上转时,我认为国家出了大问题」? 

13.如何看待桂林一家米粉店的老板的儿子考上清华大学土木工程系?  

14.如何看待桂林一家米粉店的老板的儿子考上清华大学土木工程系?

15.如何看待清华大学生命科学学院削减研究生补助的行为?&如何看待 11 名清华大学研究生因婚外情、殴打恋爱对象、偷窥异性入厕等原因遭处分,最重为开除学籍?  

16.如何评价网传“清华大学能源72班手游网游公约(草拟版)”内容?  

17.清华北大在北京招的学生放到外面的考试大省参加高考是什么水平的?   

18.清华/北大到底带给你什么其他学校可能无法给你的?  

19.如果目前的北大和清华爆发学校间的战斗,谁会赢?

20.有一个上清华的父亲是一种什么样的体验? 

21.如果我想让我的儿子考上清华,我应该做些什么?

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

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

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

特别喜欢这种可爱的小狗

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

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

1.1 词性词典和分词

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

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

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

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

1.2 机器学习

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

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

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

pip install snownlp

1.3 神经网络

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


图片来自Yann LeCun论文

这种方法由纽约大学Yann LeCun团队提出,具体实现可以阅读他们的论文:https://arxiv.org/pdf/1509.01626.pdf。

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生成HTMLTestRunner测试报告
下一篇:[python]微信个性消息群发

Python编程练习三

Python正则表达式练习

Python 2的结束意味着什么

用python做一个划词翻译软件

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省