SnowNLP 中文自然语言处理(情感分析)

介绍

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

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

官网:https://github.com/isnowfy/snownlp

更多用法:
https://www.cnblogs.com/pengpengdeyuan/p/14479205.html

主要功能有:

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

下载安装

pip install snownlp

引入库

from snownlp import SnowNLP

词性标注

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')]

情感分析

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情感分析模块。

提取文本关键词

from snownlp import SnowNLP

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

结果:

['全国', '政协', '远程']

提取文本摘要

from snownlp import SnowNLP

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

结果:

['全国政协按下信息化建设快进键:建设开通全国政协委员移动履职平台', '建成网络议政远程协商视频会议系统']

原文出处:https://malaoshi.top/show_1IX3HJFVFOfo.html