自然语言处理库snowNLP之情绪判断

获悉snowNLP可以进行文本的情绪分析,遂找来教程试验一下,结果并不是很好。可能和语料有关。

​​​这里使用的测试语料来源有:班级微信群的聊天记录、某微博热门话题微博正文及评论、微博日常公众账号微博正文及评论。语料中的数据为公共可获得数据,仅作测试使用,无其他用途。

首先简要介绍一下snowNLP。SnowNLP是一个Python写的类库,可以方便地处理中文文本内容,所有的算法都是自己实现的,并且自带了一些训练好的字典。本程序都是处理的unicode编码,所以使用时需要自行decode成unicode。据介绍,在做情绪分析时,返回值为正面情绪的概率,越接近1表示正面情绪,越接近0表示负面情绪。(本段引自 自然语言处理库之snowNLP – 简书 )另外,加载这个库也很慢。from snownlp import snowNLP 需要5秒(win10 i5-4200U 测试机,Python 2.7)。

定义函数qingan(text),输出情绪分析值。函数如下:

def qingan(text):
    s = SnowNLP(text) 
    print s.sentiments 

测试数据在下面,先给结论吧:

经测试,这个系统分析的不是很准。测试结果和介绍不太一致,感觉更像是分析情绪饱满程度的,但仍有结果不好的情况。这个结果可能和使用的语料有关,但这些就是真实的来自互联网用户的数据,如果这些判断不准,那这个系统是不是真out了?

最后的测试数据与结果如下。


得分:高(满分)(居然还有满分的?!!

>>> qingan(u’准备考研的大二党,看到这个消息着实震惊,刷了考研党的微博更是觉得,特别,心疼。虽然没有经历过考研,但也明白 考研党和高三党是一样的辛苦甚至强于后者,可是,一腔热血,一腔孤勇,全都输给了不公!!!那种感觉是所有的努力,仿佛都拿去喂了狗的心痛!!以及,对这个社会的心寒。教育部用两个字便否定了这一切,违法者逍遥自在,而一众考生在这个冬日里怎么都煨不暖那颗冰凉的心。既然都是为了选拔人才,为什么考研不可以和高考一样保证基本的公平?!!!为什么,要拿这种污浊的事情去玷污大家的赤子之心!!!!!这个回答,不足以让大家信服,希望教育部可以真正有所作为,即使不能弥补,也要一个真相!’)

1.0

>>> qingan(u’成长是一个不断选择的过程,面对人生无数个岔路口,每个人都必须作出自己的选择。选择了坚强,就放弃了懦弱;选择 了奋斗,就放弃了安逸;选择了独行,就放弃了跟随。选择比努力更重要,因为选择决定着人生的方向,引导着未来的发展,一旦选择出现错误,更多的努力只会带来更大的偏离。 ‘)

1.0

>>> qingan(u’我操哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈嘎 嘎嘎嘎嘎嘎嘎嘎哈哈哈哈我tm开始还以为放烟花哈哈哈哈请问谁能想到???我问各位姐妹们,你们谁能想到!!!!!谁!!有谁! ‘)

1.0

 

得分: 高(0.9999)(说情绪饱满?不符合;说情绪正负?也不太对……

>>> qingan(u’关注了一天数学题的新闻 心里久久不能平静 我考研的时候 一大半时间都花给了数学上 也深深体会过零基础的复习有多 么的难受 不想妄加评论和猜测这件事情的真实性 只希望看到这条微博的弟弟妹妹们最后的成绩都能有一个满意的结果’)

0.999999989194

>>> qingan(u’作为曾经的一只二战狗,深知考研有多么辛苦,有多少学子是和当年的我是冲着考研的公平公正去的?今年偶然得知泄题 事件,呵呵了,先是数学李林,又有管综王杰通,考研已经成为某些人的捞金石了吗?查证不实?微博发的原题算不算实锤?要不要找个考生对一下?真的气愤!’)

0.999999982059

>>> qingan(u’百度安全专家撰写,零基础学习智能化Web安全技术,AI+安全。 本书从深度学习的基本概念、常用工具入手,展示了在错 综复杂的Web安全中如何智能化地掌控信息安全’)

0.999999931302

>>> qingan(u’李林老师,二重积分你只讲了一个题,考了摆线方程的;变化率只讲了一个题,刚好是数二原题,数据都不改;不定积分 你看似列了那么多换元的情况,可只抽出一个含有(1+e^x)^1/2的讲,也考了,数列极限题递推函数你也预测到了,线代也是原题,考研240万考生眼睛瞎了,都不一样?白马非马?不要把人当傻子!’)

0.999999813081

>>> qingan(u’美国越战惨败,整整一代年轻人与国家背心离德,加上石油危机,陷入严重的社会和经济危机’)

0.999977720733

>>> qingan(u’他指出,不忘初心,牢记使命,首先要从中央政治局的同志做起。职位越高越要忠于人民,全心全意为人民服务。只有敬 畏法律、敬畏纪律,在廉洁自律上作出表率,才能担起肩上的重任。’)

0.999977190328

>>> qingan(u’这老师的数学课我大一上过,真的讲得不错’)

0.999944075569

 

得分: 高(0.9)

>>> qingan(u’18考研数学三,虽然泄题大部分在数二 今年我也考不上了 只是看到事态发展到现在这样我已经不知道要不要二战了 是出国还是继续 一整年的时间不是说着玩的 如果明年认真准备又出现这样情况呢 很怕很迷茫 ​​​​’)

0.999866689851

>>> qingan(u’建议明年考研的同学,一定要上辅导班,一定是李林老师的辅导班。要不然就后悔死了,过后还得抱怨’)

0.999808482289

>>> qingan(u’考试中心是真觉得两百多万考生都是傻子。 看完视频和试卷还觉得没泄题的不是没学过数学就是脑残。’)

0.998847132778

>>> qingan(u’爱与痛如昨夜喝的酒,让往事逐渐变得温柔’)

0.99440633728

>>> qingan(u’山长水阔,来日方长,只要自己变得更好,幸福总会来敲门。’)

0.991019011971

 

得分: 低(0.0)(为什么有的中性的句子也得分这么低?

>>> qingan(u’骂过谁麻烦道个歉吧,任何人都不是你有资格骂的好吗,拍拍屁股走人了就?’)

0.000107345740488

>>> qingan(u’退钱!一块钱也要退!!!!’)

0.00111032214202

>>> qingan(u’对不起 您这种垃圾 我死磕到底’)

0.00506737861685

>>> qingan(u’我们做到了诚信考试 没有作弊 维护公平 那么是否你们也可以做到公平呢’)

0.0234588001327

>>> qingan(u’慢慢走,如果实在上不动,不要勉强,在半路休息  等其他人一起下山    其实我上次去也累的够呛   ‘)

0.0537953257635

>>> qingan(u’考不好确实是我自己的原因没什么可抱怨的,但是泄题就是不对啊就是不公平啊!’)

0.0765752816484

 

得分: 低(0.1)

>>> qingan(u’我不知道泄题的标准是什么。但是如果你看了三个小时视频,你就能作对一系列题目,而我整整三百天,每天五小时。你 觉得公平吗?’)

0.110424843622

>>> qingan(u’太过分了’)

0.140218984501

>>> qingan(u’我还有一个信息检索系统没写’)

0.167981339377

>>> qingan(u’你吱一声,随时帮你开张’)

0.177974411121

>>> qingan(u’机器十万再加上电费场地得卖多少烧饼才能回本?’)

0.178133929668

>>> qingan(u’我要退群’)

0.188627558757

 

得分: 中高(0.7 – 0.8)

>>> qingan(u’哎!我好想让我们老师要求一次呀’)

0.915767762292

>>> qingan(u’你这样开嘲讽会不会被人打’)

0.897529312667

>>> qingan(u’iPad无可厚非,技术是无价的,国货真不感恭维,像小米m1硬件很犀利,秒杀i9100;而价钱是三星的一半,如果小米卖4000,会有人买吗?’)

0.895548569558

>>> qingan(u’中国要完了’)

0.830902556095

>>> qingan(u’我除了满意屏幕以外,其他都表示很无语,有很大的意思去买吗?’)

0.796925807175

>>> qingan(u’别傻了,事情都这样了,你觉得现在还能看到完整的视频么’)

0.789488169711

>>> qingan(u’反正不管如何   重考?不可能!成绩作废?不可能!因为这样对于那些本来就考的很好的人也不公平   反正自己的成绩 是高是低 是好是坏 过线或是不过线 我们自己承受 不怨别人’)

0.747217968178

>>> qingan(u’必须严查,给考生一个交代’)

0.741717076195

>>> qingan(u’上班情绪低,下班涮锅去,天天喝大酒,久之成胖子’)

0.732849460381

 

得分: 中低(0.2 – 0.6)

>>> qingan(u’我们要的不只是一个结果。’)

0.285554602112

>>> qingan(u’没事,你要是忙不过来,给你支援’)

0.340920945865

>>> qingan(u’确实有一段很难爬,这时候我们班的男生可要主动帮女生拿水啊’)

0.440469963303

>>> qingan(u’演技真的甩很多所谓鲜肉几条大街了!’)

0.457400067399

>>> qingan(u’一个扎心的问题,你比高三那年胖了几斤?’)

0.460342089993

>>> qingan(u’如果是,太好了’)

0.47315785963

>>> qingan(u’#iPad3#与4和4S一样,除了像素和运行速度等提升,其实我看来没多大区别,也许苹果不想再愚弄一次果迷或不愿把IPAD3叫做IPAD2B吧。’)

0.526630495479

>>> qingan(u’不好看’)

0.564507088056

>>> qingan(u’今天刚去看了妖猫传,演技没的说,扮相真好看’)

0.6892796887

 

还有这种是怎么回事?两句内容相近,但得分相差很大,而且情绪分析也不准确。

>>> qingan(u’就要元旦了,年终结题要来了,得被迫回所了’)

0.954343074952

>>> qingan(u’就要元旦了,看来北京今年下雪无望了’)

0.497850988231

​​​​​(本文为2017年完成信息检索大作业时进行探索而来,于2017年12月27日首发于新浪微博。)

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据