查看: 150|回复: 4

转帖,python snownlp情感分析简易demo

[复制链接]
新浪微博达人勋 gym0816  实名认证
论坛徽章:
47
cognos徽章
日期:2015-10-14 17:39:01Puppet徽章
日期:2015-09-11 14:42:22测试徽章
日期:2016-04-28 10:48:48数据展示徽章
日期:2016-06-23 11:26:00bash徽章
日期:2016-05-26 12:34:27Excel徽章
日期:2015-05-14 10:37:05投资理财徽章
日期:2015-04-02 14:37:21python徽章
日期:2016-07-15 12:04:23Java徽章
日期:2015-01-14 15:22:02linux徽章
日期:2016-05-12 12:18:10Oracle研习者高级
日期:2014-09-19 13:54:05推荐系统徽章
日期:2015-12-30 11:45:31
发表于 2019-9-18 20:15 | 显示全部楼层 |阅读模式

算法 计算机 数学 人工智能 自然语言处理 自然语言

SnowNLP是国人开发的python类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。MIT许可下发行。
github 主页
我自己修改了上文链接中的python代码并加入些许注释,以方便你的理解:
[url=][/url]
from snownlp import SnowNLP# SnowNLP库:# words:分词# tags:关键词# sentiments:情感度# pinyin:拼音# keywords(limit):关键词# summary:关键句子# sentences:语序# tf:tf值# idf:idf值s = SnowNLP(u'这个东西真心很赞')# s.words         # [u'这个', u'东西', u'真心', u'很', u'赞']print(s.words)s.tags  # [(u'这个', u'r'), (u'东西', u'n'), (u'真心', u'd')#print(s.sentiments)# s.sentiments    # 0.9769663402895832 positive的概率# s.pinyin        # [u'zhe', u'ge', u'dong', u'xi', # u'zhen', u'xin', u'hen',# u'zan']4s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')# s.han           # u'「繁体字」「繁体中文」的叫法在台湾亦很常见。'print(s.han)[url=][/url]

[url=][/url]
from snownlp import SnowNLPtext = 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.0s = SnowNLP([[u'这篇', u'文章'],             [u'那篇', u'论文'],             [u'这个']])# print(s.tf)# print(s.idf)# print(s.sim([u'文章']))  # [0.3756070762985226, 0, 0]


回复

使用道具 举报

新浪微博达人勋 gym0816  实名认证
论坛徽章:
47
cognos徽章
日期:2015-10-14 17:39:01Puppet徽章
日期:2015-09-11 14:42:22测试徽章
日期:2016-04-28 10:48:48数据展示徽章
日期:2016-06-23 11:26:00bash徽章
日期:2016-05-26 12:34:27Excel徽章
日期:2015-05-14 10:37:05投资理财徽章
日期:2015-04-02 14:37:21python徽章
日期:2016-07-15 12:04:23Java徽章
日期:2015-01-14 15:22:02linux徽章
日期:2016-05-12 12:18:10Oracle研习者高级
日期:2014-09-19 13:54:05推荐系统徽章
日期:2015-12-30 11:45:31
 楼主| 发表于 2019-9-18 20:15 | 显示全部楼层
在编译运行之前,先得安装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!
我是在电视上偶尔才看到这个电影的,当时看的时候真的很感人。 为什么会有这么天才的人,却有着这样子曲折的人生。
是认为剧本很好却没有被完全拍出来:) 对演员的表演还是心存质疑一点点~ 呵呵
好评
前几日刚刚看过,一部触动心灵的电影,寻找真正的人生
这篇影评写的很棒,我的眼睛湿润了
很好的片子

回复 支持 反对

使用道具 举报

新浪微博达人勋 gym0816  实名认证
论坛徽章:
47
cognos徽章
日期:2015-10-14 17:39:01Puppet徽章
日期:2015-09-11 14:42:22测试徽章
日期:2016-04-28 10:48:48数据展示徽章
日期:2016-06-23 11:26:00bash徽章
日期:2016-05-26 12:34:27Excel徽章
日期:2015-05-14 10:37:05投资理财徽章
日期:2015-04-02 14:37:21python徽章
日期:2016-07-15 12:04:23Java徽章
日期:2015-01-14 15:22:02linux徽章
日期:2016-05-12 12:18:10Oracle研习者高级
日期:2014-09-19 13:54:05推荐系统徽章
日期:2015-12-30 11:45:31
 楼主| 发表于 2019-9-18 20:16 | 显示全部楼层
最后就是处理的程序了:
[url=][/url]
from snownlp import SnowNLPimport pandas as pdimport pylab as pltxt = 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()[url=][/url]

最后的效果:
可能有些不准确,我也是随便提取的数据,不过snownlp还是号称情感分析准确很高的!


回复 支持 反对

使用道具 举报

新浪微博达人勋 zyl2018  实名认证
论坛徽章:
21
知识图谱徽章
日期:2018-11-22 15:35:26算法导论徽章
日期:2019-04-19 10:49:59计算徽章
日期:2019-05-09 14:32:23python徽章
日期:2019-05-16 15:58:40spark徽章
日期:2019-05-23 14:16:12Hive徽章
日期:2019-07-25 14:09:57mysql徽章
日期:2019-08-08 14:50:28python徽章
日期:2019-09-05 14:18:12搜索引擎徽章
日期:2019-10-24 14:32:05python徽章
日期:2019-04-11 15:16:08mysql徽章
日期:2019-04-04 17:13:42pyspark徽章
日期:2019-04-04 17:10:37
发表于 2019-9-19 20:38 | 显示全部楼层
SnowNLP是国人开发的python类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。
回复 支持 反对

使用道具 举报

论坛徽章:
3
Hadoop研习者初级
日期:2016-09-29 15:17:14Excel徽章
日期:2016-12-08 15:33:15python徽章
日期:2019-11-14 15:08:37
发表于 2019-9-22 23:23 | 显示全部楼层
中文分词的话jieba也是好的选择,不过NLP的话,我会去试试snownlp
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-11-16 03:53 , Processed in 0.140136 second(s), 41 queries .

关闭

扫一扫加入
本版微信群