文章目录

  • 关于 snownlp
    • 安装
  • 主要功能
  • 基本使用
    • 繁体转简体
    • 关键词提取
    • tf-idf
  • 训练
    • snowNLP的情感判断过程

关于 snownlp

源码:https://github.com/isnowfy/snownlp

https://pypi.org/project/snownlp/


安装

(base) $ sudo  pip install snownlp

主要功能

  • 中文分词(Character-Based Generative Model)
  • 词性标注(TnT 3-gram 隐马)
  • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
  • 文本分类(Naive Bayes)
  • 转换成拼音(Trie树实现的最大匹配)
  • 繁体转简体(Trie树实现的最大匹配)
  • 提取文本关键词(TextRank算法)
  • 提取文本摘要(TextRank算法)
  • tf,idf
  • Tokenization(分割成句子)
  • 文本相似(BM25)
  • 支持python3(感谢erning)

基本使用

from snownlp import SnowNLPs = SnowNLP(u'这个东西真心很赞')s.words       # [u'这个', u'东西', u'真心', u'很', u'赞']s.tags          # [(u'这个', u'r'), (u'东西', u'n'), (u'真心', u'd'), (u'很', u'd'),  (u'赞', u'Vg')]s.sentiments    # 0.9769663402895832 positive 的概率
# 会返回一个[0:1]之间的值,越接近0,代表为负面评价的可能性更大,越接近1,越偏向正面。s.pinyin        # [u'zhe', u'ge', u'dong', u'xi', u'zhen', u'xin', u'hen', u'zan']

繁体转简体

s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')s.han  # u'「繁体字」「繁体中文」的叫法,在台湾亦很常见。'

关键词提取

text = u'''
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,
而在于研制能有效地实现自然语言通信的计算机系统,
特别是其中的软件系统。因而它是计算机科学的一部分。
'''s = SnowNLP(text)s.keywords(3)   # [u'语言', u'自然', u'计算机']s.summary(3)  # [u'因而它是计算机科学的一部分', # u'自然语言处理是一门融语言学、计算机科学、 数学于一体的科学',#  u'自然语言处理是计算机科学领域与人工智能领域中的一个重要方向']
s.sentences

tf-idf

s = SnowNLP([[u'这篇', u'文章'],[u'那篇', u'论文'],[u'这个']])
s.tf
s.idfs.sim([u'文章'])    # [0.3756070762985226, 0, 0]  # 文本相似性

dir(snownlp)['SnowNLP','__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__path__','__spec__','bm25','classification','normal','seg','sentiment','sim','summary','tag','textrank','unicode_literals','utils','words_merge']

训练

情感所在目录:
~/opt/anaconda3/lib/python3.7/site-packages/snownlp/sentiment

分词所在目录:
~/opt/anaconda3/lib/python3.7/site-packages/snownlp/seg


训练

from snownlp import seg
seg.train('data.txt')
seg.save('seg.marshal')# from snownlp import tag
# tag.train('199801.txt')
# tag.save('tag.marshal')# from snownlp import sentiment
# sentiment.train('neg.txt', 'pos.txt')
# sentiment.save('sentiment.marshal')

训练好的文件就存储为seg.marshal了;
之后修改snownlp/seg/__init__.py里的 data_path 指向刚训练好的文件即可。


snowNLP的情感判断过程

1、读取已经分好类的文本neg.txt和pos.txt
2、对所有文本进行分词、去停用词
3、计算每个词出现的频数
4、通过贝叶斯定理计算 正面负面先验概率P(pos) 和 P(neg)
5、对要进行判断的文本分词;
6、计算每个词的后验概率p(词|neg)和p(词|pos);
7、选择计算出的概率较大的类别(正或负);


  • 通过结合jieba分词优化snowNLP文本情感分析效果
    https://blog.csdn.net/weixin_42007766/article/details/89824318


NLP - snownlp相关推荐

  1. 用Python爬取微信好友,原来他们是这样的人......

    随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色. 今天这 ...

  2. python利用itchat接口和pyecharts包进行数据可视化

    引言 本篇博文承接着上一篇web微信的内容进行叙述,在上一篇的结尾我提出了可以用微信接口,也就是itchat来获取我们的用户信息,这样相对而言比较安全,降低了频率过高导致的封号的风险,而且更有利于开发 ...

  3. 金融科技之情感分析:股民情绪指数与股市价格的相关性分析

    金融科技之情感分析(一):股民情绪指数与股市价格的相关性分析 源代码获取 前言 文本数据源介绍 评论数据爬取 数据存储和查询 计算情绪指数 股票历史价格数据的获取 相关性分析和可视化 源代码获取 20 ...

  4. 基于上证金融数据的情感分析和走势预测 代码+数据

     目录 情感分析结果: ​编辑 首先是获取 股票评论数据的网站: 程序: 数据展示: 情感分析结果: 首先是获取 股票评论数据的网站: 上证指数股吧_上证指数分析讨论社区-东方财富网 程序: impo ...

  5. 揭秘zm朋友圈-用数据分析获得真相

    用python爬取自己朋友圈,用数据分析审视自己 还记得前几年大家还是使用QQ,不知道从何时起,大家都开始使用微信,关注着从幼儿园到研究生各种同学的动态,感受着不同朋友的有趣 学习太累人了,尤其是学到 ...

  6. 用 Python分析朋友圈好友的签名

    需要用到的第三方库: numpy:本例结合wordcloud使用 jieba:对中文惊进行分词 PIL: 对图像进行处理(本例与wordcloud结合使用) snowlp:对文本信息进行情感判断 wo ...

  7. python分析微信好友签名分析

    上一篇中我们已经得到了所有微信好友,并且分析了微信好友的地域分布. 我们同时也能得到微信好友的所有签名,对于签名我们能够通过分词,分析出使用频率比较高的词,为了直观的展现,也能够生成对应的词云: 甚至 ...

  8. python数据挖掘分析微信朋友圈(调用itchat库)

    参考https://blog.csdn.net/qinyuanpei/article/details/79360703,基于python3.6实现微信朋友圈性别.地区.个性签名.头像四个维度的分析. ...

  9. 用 Python 爬了微信好友,原来他们是这样的人...

    随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色. 今天这 ...

  10. Python数据分析朋友圈信息

    此文章基于Pyhon3.0以上版本对微信好友进行数据分析,这里选择的维度主要有以下几个:性别(Sex).头像(HeadImg).个人签名(Signature)和位置(Location),主要采用图表和 ...

最新文章

  1. DIV+CSS一行两列布局
  2. python dataframe列数值相加,python合并dataframe中的行并将值相加
  3. java:基本数据类型
  4. 删除弹出提示框_MVC
  5. Java中Map集合类的用法(HashMap)
  6. 做移动应用使用地图API时需要注意的问题
  7. REVERSE-PRACTICE-CTFSHOW-8
  8. 这7本O’Reilly推出的免费Python电子书,够你看了
  9. Yii2框架之旅(六)
  10. 计算指数函数的和的对数
  11. 简易呼吸灯c语言程序,呼吸灯 - 单片机教程 - C语言网
  12. Linux的顶级十六进制编辑器
  13. Java常用设计模式总结及应用场景分析
  14. 深圳大学电信学院《C程序设计》期末大作业:《在二维封闭房间中的弹球模拟程序》
  15. 关于计算机应用梦想作文,我为梦想而努力700字作文,为梦想而奋斗作文800字
  16. 【电商】电商后台设计—库存模块
  17. linux的pacemaker集群
  18. linux 那些事儿系列
  19. 安徽科技学院 信网学院网络文化节 朱翔
  20. 【JS逆向系列】某乎x96参数与jsvmp初体验

热门文章

  1. java fop_java – Apache FOP使用SimSun显示###
  2. 迅雷精简版 for Mac!附精简教程!
  3. 关于web3营销的一切知识
  4. VS2019创建COM组件
  5. 白帽子讲web安全笔记-xss总结
  6. office文档转换为html,OFFICE 文档转换为html在线预览
  7. 面试必问:TCP和UDP的区别(附面试题)
  8. urlrewrite配置
  9. 个人微信api接口调用,微信加好友、新增好友通知
  10. 【统计学习】细节笔记 [ 3 ] :贝叶斯角和两类错误角度理解混淆矩阵(为什么不能每个人都做核酸检测)