Python SnowNLP中文情感分析实战:环境配置与影评数据处理
本文介绍如何使用Python库SnowNLP进行中文文本情感分析。详细讲解pip安装SnowNLP、pandas及pylab依赖模块,并通过提取《心灵捕手》豆瓣影评数据,演示从文本读取、情感评分计算到使用pylab绘制情感趋势图的全过程。旨在为初学者提供一套完整的情感分析简易Demo及参考代码。
SnowNLP是一款由国内开发者编写的Python库,旨在简化中文文本的处理流程。该库的设计灵感来源于TextBlob,鉴于目前主流的自然语言处理工具多针对英文环境,SnowNLP填补了中文处理的空白。与TextBlob不同,SnowNLP未依赖NLTK,其核心算法均为自主实现,并预置了部分训练好的词典。需注意,该程序处理的是Unicode编码,因此在使用前需确保输入文本已正确解码为Unicode格式。SnowNLP基于MIT许可证发布。
其 github 主页
我对上述链接中的Python代码进行了修改并补充了注释,以辅助理解:
from snownlp import SnowNLP
text = u'''
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
所以它与语言学的研究有着密切的联系,但又有重要的区别。
自然语言处理并不是一般地研究自然语言,
而在于研制能有效地实现自然语言通信的计算机系统,
特别是其中的软件系统。因而它是计算机科学的一部分。
'''
s = SnowNLP(text)
print(s.keywords(6)) # [u'语言', u'自然', u'计算机'] 不能用tags输出关键字.
s.summary(3) # [u'因而它是计算机科学的一部分', u'自然语言处理是一门融语言学、计算机科学、
# 数学于一体的科学', u'自然语言处理是计算机科学领域与人工智能领域中的一个重要方向']s.sentences
# print(s.sentences)
print(s.sentiments) # 1.0
s = SnowNLP([[u'这篇', u'文章'],
[u'那篇', u'论文'],
[u'这个']])
# print(s.tf)
# print(s.idf)
# print(s.sim([u'文章'])) # [0.3756070762985226, 0, 0]在编译运行之前,先得安装snownlp包,后续还有pylab,pandas模块: 在VS Code终端(查看->集成终端)里面输入: pip install snownlp
pip install pylab
pip install pandas
前提是你安装了pip,若是pip没有安装可以查看我之前的 文章
在VS Code中我们可以右键模块名查看定义,便能看到模块的实现了.不得不说VS Code很强大,希望微软能这么一直走下去,走向开源走向跨平台!!
然后我随便提取了《心灵捕手》豆瓣网评,放在了txt中:
It is not ur fault!
我是在电视上偶尔才看到这个电影的,当时看的时候真的很感人。 为什么会有这么天才的人,却有着这样子曲折的人生。 是认为剧本很好却没有被完全拍出来:) 对演员的表演还是心存质疑一点点~ 呵呵
好评
前几日刚刚看过,一部触动心灵的电影,寻找真正的人生
这篇影评写的很棒,我的眼睛湿润了
很好的片子
最后就是处理的程序了:
from snownlp import SnowNLP
import pandas as pd
import pylab as pl
txt = open('F:/_analyse_Emotion.txt')
text = txt.readlines()
txt.close()
print('读入成功')
sentences = []
senti_score = []
for i in text:
a1 = SnowNLP(i)
a2 = a1.sentiments
sentences.append(i) # 语序...
senti_score.append(a2)
print('doing')
table = pd.DataFrame(sentences, senti_score)
# table.to_excel('F:/_analyse_Emotion.xlsx', sheet_name='Sheet1')
# ts = pd.Series(sentences, senti_score)
# ts = ts.cumsum()
# print(table)
x = [1, 2, 3, 4, 5, 6, 7, 8]
pl.mpl.rcParams['font.sans-serif'] = ['SimHei']
pl.plot(x, senti_score)
pl.title(u'心 灵 捕 手 网 评')
pl.xlabel(u'评 论 用 户')
pl.ylabel(u'情 感 程 度')
pl.show()最后的效果:

可能有些不准确,我也是随便提取的数据,不过snownlp还是号称情感分析准确很高的!
以上这篇python snownlp情感分析简易demo(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









