一、SnowNLP是什么
官方源码文档是这样写的:

SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。

简而言之就是:SnowNLP是一个Python写的类库,而且是针对中文的自然语言处理库。

主要功能有:

中文分词(Character-Based Generative Model)
词性标注(TnT 3-gram 隐马)
情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
文本分类(Naive Bayes)
转换成拼音(Trie树实现的最大匹配)
繁体转简体(Trie树实现的最大匹配)
提取文本关键词(TextRank算法)
提取文本摘要(TextRank算法)
tf,idf
Tokenization(分割成句子)
文本相似(BM25)
支持python3
二、如何下载
SnowNLP已经加到了开源源码库中,所以可以直接用install的方式下载。

pip install snownlp
(用pip3的可以用:pip3 install snownlp)
下载好的源码包视图:

三、如何使用
这里仅针对SnowNLP的主要功能例举几个简单的实例,仅供参考。

1、中文分词
from snownlp import SnowNLP

中文分词

text = ‘希望本无所谓有,也无所谓无,这就像地上的路,其实地上本没有路,走的人多了,也便成了路。’
s = SnowNLP(text)
print(s.words)
结果:

[‘希望’, ‘本’, ‘无所谓’, ‘有’, ‘,’, ‘也’, ‘无所谓’, ‘无’, ‘,’, ‘这’, ‘就’, ‘像地’, ‘上’, ‘的’, ‘路’, ‘,’, ‘其实地’, ‘上本’, ‘没有’, ‘路’, ‘,’, ‘走’, ‘的’, ‘人’, ‘多’, ‘了’, ‘,’, ‘也’, ‘便’, ‘成’, ‘了’, ‘路’, ‘。’]
这个例子也暴露了SnowNLP分词方面的局限性,SnowNLP的分词是基于共19484行句子作为语料库来训练分词的,这些句子可能来自不同的几个方向,但不太全面,所以在某些词语的分解上有缺陷。个人感觉SnowNLP的分词没有jieba分词和HanLP分词好用,jieba分词功能更多,个人倾向于jieba的分词。

2、词性标注
from snownlp import SnowNLP

词性标注

text = ‘哪里有天才,我是把别人喝咖啡的工夫都用在了工作上了。’
s = SnowNLP(text)
print(list(s.tags))
结果:

[(‘哪里’, ‘r’), (‘有’, ‘v’), (‘天才’, ‘n’), (‘,’, ‘w’), (‘我’, ‘r’), (‘是’, ‘v’), (‘把’, ‘p’), (‘别人’, ‘r’), (‘喝’, ‘v’), (‘咖啡’, ‘n’), (‘的’, ‘u’), (‘工夫’, ‘n’), (‘都’, ‘d’), (‘用’, ‘v’), (‘在’, ‘p’), (‘了’, ‘u’), (‘工作’, ‘vn’), (‘上’, ‘f’), (‘了’, ‘u’), (‘。’, ‘w’)]
3、情感分析
from snownlp import SnowNLP

情感分析

text1 = ‘这是我遇见的最棒的一家店,种类多,价格低,更喜欢的是服务质量很好’
text2 = ‘这是我遇到的最差的一家店,种类少,价格贵,更气人的是服务质量很差’
s1 = SnowNLP(text1)
s2 = SnowNLP(text2)
print(s1.sentiments)
print(s2.sentiments)
结果:

0.99509716108733
0.0033869983750457466
情感分析的结果是一个小数,越接近1,说明越偏向积极;越接近0,说明越偏向消极。

SnowNLP的情感分析是基于自带的两个积极跟消极的语料文件来进行分析的(neg.txt、pos.txt)。这两个语料文件是某平台的评论留言,主要有关于书本的、酒店的、电脑及配件的几个方向的评价留言。由于语料文件比较片面,而且其中有些语句意向不准确,导致情感分析在某些场合中效果并不明显,推荐训练自己的语料文件。具体方法请看后面详细讲解的SnowNLP情感分析模块。

4、转换成拼音
from snownlp import SnowNLP

转换成拼音

text = ‘哪里有天才,我是把别人喝咖啡的工夫都用在了工作上了。’
s = SnowNLP(text)
print(s.pinyin)
结果:

[‘na’, ‘li’, ‘you’, ‘tian’, ‘cai’, ‘,’, ‘wo’, ‘shi’, ‘ba’, ‘bie’, ‘ren’, ‘he’, ‘ka’, ‘fei’, ‘de’, ‘gong’, ‘fu’, ‘dou’, ‘yong’, ‘zai’, ‘liao’, ‘gong’, ‘zuo’, ‘shang’, ‘liao’, ‘。’]
5、繁体转简体
from snownlp import SnowNLP

繁体转简体

text = ‘希望本無所謂有,也無所謂無,這就像地上的路,其實地上本沒有路,走的人多了,也便成了路。’
s = SnowNLP(text)
print(s.han)
结果:

希望本无所谓有,也无所谓无,这就像地上的路,其实地上本没有路,走的人多了,也便成了路。
6、提取文本关键词
原理请查看博客:SnowNLP——获取关键词(keywords(1))

from snownlp import SnowNLP

提取文本关键词,总结3个关键词

text = ‘随着顶层设计完成,全国政协按下信息化建设快进键:建设开通全国政协委员移动履职平台,开设主题议政群、全国政协书院等栏目,建设委员履职数据库,拓展网上委员履职综合服务功能;建成网络议政远程协商视频会议系统,开展视频调研、远程讨论活动,增强网络议政远程协商实效;建立修订多项信息化规章制度,优化电子政务网络。’
s = SnowNLP(text)
print(s.keywords(3))
结果:

[‘全国’, ‘政协’, ‘远程’]
7、提取文本摘要
from snownlp import SnowNLP

提取文本摘要

text = ‘随着顶层设计完成,全国政协按下信息化建设快进键:建设开通全国政协委员移动履职平台,开设主题议政群、全国政协书院等栏目,建设委员履职数据库,拓展网上委员履职综合服务功能;建成网络议政远程协商视频会议系统,开展视频调研、远程讨论活动,增强网络议政远程协商实效;建立修订多项信息化规章制度,优化电子政务网络。’
s = SnowNLP(text)
print(s.summary(2))# 总结两条摘要
结果:

[‘全国政协按下信息化建设快进键:建设开通全国政协委员移动履职平台’, ‘建成网络议政远程协商视频会议系统’]
8、tf,idf
来百度一下是什么意思:TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF是词频(Term Frequency),IDF是逆文本频率指数(Inverse Document Frequency)。

from snownlp import SnowNLP

tf,idf

“”"
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
TF词频越大越重要,但是文中会的“的”,“你”等无意义词频很大,却信息量几乎为0,这种情况导致单纯看词频评价词语重要性是不准确的。因此加入了idf
IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t越重要
TF-IDF综合起来,才能准确的综合的评价一词对文本的重要性。
“”"

text = [
[‘性格’, ‘善良’],
[‘温柔’, ‘善良’, ‘善良’],
[‘温柔’, ‘善良’],
[‘好人’],
[‘性格’, ‘善良’],
]
s = SnowNLP(text)
print(s.tf)
print(s.idf)
结果:

[{‘性格’: 1, ‘善良’: 1}, {‘温柔’: 1, ‘善良’: 2}, {‘温柔’: 1, ‘善良’: 1}, {‘好人’: 1}, {‘性格’: 1, ‘善良’: 1}]
{‘性格’: 0.33647223662121295, ‘善良’: -1.0986122886681098, ‘温柔’: 0.33647223662121295, ‘好人’: 1.0986122886681098}
9、Tokenization
from snownlp import SnowNLP

Tokenization(分割句子)

text = ‘希望本无所谓有,也无所谓无,这就像地上的路;其实地上本没有路;走的人多了!也便成了路。’
s = SnowNLP(text)
print(s.sentences)
结果:

[‘希望本无所谓有’, ‘也无所谓无,这就像地上的路’, ‘其实地上本没有路;走的人多了’, ‘也便成了路’]
注意:返回的结果是一个list,sentences是利用非英文语句分割符号来将语句分割开。就是只以中文逗号、中文分号、中文句号、中文感叹号、中文问号为分割符将语句分割开。

10、文本相似
from snownlp import SnowNLP

文本相似度(BM25)

s = SnowNLP([[‘机器学习’, ‘人工智能’],
[‘深度学习’, ‘自然语言处理’],
[‘数据挖掘’]])
artilc1 = [‘自然语言处理’]
print(s.sim(artilc1))
结果:

[0, 0.4686473612532025, 0]

SnowNLP——SnowNLP是什么及SnowNLP的使用示例相关推荐

  1. 情感分析——深入snownlp原理和实践

    一.snownlp简介 snownlp是什么? SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英 ...

  2. 中文文本情感分析-python包SnowNLP入门

    目录 1.情感分析是什么? 2.情感分析有什么用? 3.情感分析实战-SnowNLP SnowNLP官方参考资料: SnowNLP两个坑: 自己用snownlp训练模型: 1.情感分析是什么? 极性: ...

  3. Py之SnowNLP:SnowNLP中文处理包的简介、安装、使用方法、代码实现之详细攻略

    Py之SnowNLP:SnowNLP中文处理包的简介.安装.使用方法.代码实现之详细攻略 目录 SnowNLP的简介 SnowNLP的安装 SnowNLP的使用方法 关于训练 SnowNLP的简介 s ...

  4. python中文文本分析_python使用snownlp进行中文文本处理以及分词和情感分析 - pytorch中文网...

    SnowNLP: 一个简单的中文文本处理库 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的 ...

  5. Python:snownlp中文文本情感分析

    hello,大家好,我是wangzirui32,今天来教大家如何使用snownlp的中文文本情感分析功能,开始学习吧! 1. pip 安装 命令: pip install snownlp -i htt ...

  6. 『开发技术』Python中文分词工具SnowNLP教程

    介绍一个好用多功能的Python中文分词工具SnowNLP,全称Simplified Chinese Text Processing.在实现分词的同时,提供转换成拼音(Trie树实现的最大匹配)及繁体 ...

  7. 网易云音乐“王牌冤家”用户评论:评论爬虫及情感分析(SnowNLP)

    李荣浩上周发的<耳朵>专辑,你萌听了吗?小编真的超级喜欢"王牌冤家"这首歌,在新说唱听了李老师的那几句就一直念念不忘,这一周可是一直单曲循环中.恰好前两天看了SnowN ...

  8. snownlp中文文本情感分析详细教程

    hello,大家好,我是wangzirui32,今天来教大家如何使用snownlp的中文文本情感分析功能,开始学习吧! 1. pip 安装 命令: pip install snownlp -i htt ...

  9. snownlp 中文文本情感分析、相似度计算、分词等

    snownlp 官网:https://pypi.org/project/snownlp/ SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了[TextBlob](https ...

  10. 情感分析-SnowNLP

    SnowNLP库介绍 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理 ...

最新文章

  1. Codeforces Round #506 (Div. 3)
  2. 《LeetCode力扣练习》第2题 C语言版 (做出来就行,别问我效率。。。。)
  3. 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程
  4. 2021浙江英语高考成绩查询,2021浙江高考英语试卷难度如何
  5. 记录android点滴(一)--通过build.prop实现产品定制的方法
  6. html保存table并刷新,js操作 添加删除table行,并进行刷新
  7. 五年前,跳槽涨薪,你笑了,五年后,跳槽降薪,请接受
  8. 你的“数学潜意识”原来可以被唤醒
  9. SQL解析处理和扩展开发工具 Java
  10. 基于置信加权池的全卷积保证颜色恒常性
  11. java retainall源码,Java CopyOnWriteArraySet retainAll()用法及代码示例
  12. 修改环境变量删除了path
  13. 暴风播酷云J3455局域网smb传输不稳定的另一种解决方案
  14. 大数据治理——《华为数据之道》
  15. 从钉钉后台API获取企业通讯录以后,获取每个人的钉钉运动步数
  16. 数据库面试——锁的12连问,赶紧收藏!
  17. Mutual Supervision for Dense Object Detection(ICCV2021)阅读笔记
  18. 等效结点荷载计算机语言,等效节点荷载,equivalent node load,音标,读音,翻译,英文例句,英语词典...
  19. gvdp哪个工厂用_和汽车主机厂打交道,你不可不知这些英文缩写!实用!大伙速览速记!...
  20. [Luogu 1516] 青蛙的约会

热门文章

  1. 16、static关键字、接口
  2. 迅雷精简版 for Mac 去除多余无用功能
  3. 基于C51的步进电机控制器设计
  4. 鸿蒙系统的软件怎么下载,鸿蒙系统官网下载软件电脑版
  5. Pangolin-最好的SQL注入工具
  6. rs232接口_USB转RS232接口9针串口线,工控数据转接线驱动安装方法
  7. 泰勒展开与黑塞矩阵(Hessian Matrix)
  8. 手机型号修改 java_Android 中的设置关于手机中的型号的更改
  9. html代码实现全国地图分布,html5 svg浙江地图map省市地区代码
  10. 周日历插件weeklyCalendar,可添加日历提醒