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

hello,大家好,我是wangzirui32,今天来教大家如何使用snownlp的中文文本情感分析功能,开始学习吧!

1. pip 安装

命令:

pip install snownlp -i https://pypi.douban.com/simple

   
   
  • 1

因为下载速度很慢,所以使用国内镜像源下载。

2. SnowNLP情感分析

注意,SnowNLP的情感分析文本只处理unicode编码。在下面的代码中,我们在字符串前加了一个u,代表unicode字符串。
这里的测试文本为我博文下的某一条评论,代码:

from snownlp import SnowNLP
# 文本
text = u'好文,已收藏,学习的道路上一起进步,也期待你的关注与支持!'
# 分析
s = SnowNLP(text)
# 输出情绪为积极的概率
print(s.sentiments)

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出:

0.9993218654423944

   
   
  • 1

输出数值越接近1,文本为积极向上的可能性就越大,在这里,输出值与1的差大约是0.0006,说明文本更接近积极情绪。
但你也可以换个测试文本:

text = u"还不给博主点个赞!"

   
   
  • 1

输出:

0.8531838835572092

   
   
  • 1

我们可以写一个函数,用于判断文本是否积极:

from snownlp import SnowNLP

def is_positive(text):
# 将文本编码为unicode
s = SnowNLP(text)

<span class="token keyword">if</span> s<span class="token punctuation">.</span>sentiments <span class="token operator">&lt;</span> <span class="token number">0.5</span><span class="token punctuation">:</span>
    <span class="token keyword">return</span> <span class="token boolean">False</span>
<span class="token keyword">else</span><span class="token punctuation">:</span>
    <span class="token keyword">return</span> <span class="token boolean">True</span>

# 测试函数
if is_positive(u“还不点个收藏,关注!”):
print(“文本很积极!”)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行代码,输出:

文本很积极!

 
 
  • 1

3. SnowNLP其他属性方法

在SnowNLP对象中,还存在其他属性,这里介绍几个常用的。

3.1 words属性

输出文本的分词结果,代码:

from snownlp import SnowNLP
s = SnowNLP(u"学习的道路上一起进步,加油!")
print(s.words)

 
 
  • 1
  • 2
  • 3

运行结果:

['学习', '的', '道路', '上', '一起', '进步', ',', '加油', '!']

 
 
  • 1

3.2 pinyi属性

返回每个字的拼音,代码:

from snownlp import SnowNLP
s = SnowNLP(u"学习的道路上一起进步,加油!")
print(s.pinyin)

 
 
  • 1
  • 2
  • 3

输出:

['xue', 'xi', 'de', 'dao', 'lu', 'shang', 'yi', 'qi', 'jin', 'bu', ',', 'jia', 'you', '!']

 
 
  • 1

3.3 han属性

返回文本(此文本为繁体字)的简体中文,代码:

from snownlp import SnowNLP
s = SnowNLP(u"繁體字")
print(s.han)

 
 
  • 1
  • 2
  • 3

输出:

繁体字

 
 
  • 1

3.4 sentences属性

将文字用标点符号分割,返回列表。

from snownlp import SnowNLP
s = SnowNLP(u"学习的道路上一起进步,加油!")
print(s.sentences)

 
 
  • 1
  • 2
  • 3

输出:

['学习的道路上一起进步', '加油']

 
 
  • 1

3.5 keywords方法

返回文本的关键词,可以指定返回数量。这里引用了一部分某度百科对“自然语言处理”的解释:

from snownlp import SnowNLP
text = u"""自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
           它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
           自然语言处理是一门融语言学、计算机科学、数学于一体的科学。"""
s = SnowNLP(text)
print(s.keywords(5))  # 输出5个关键词

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果:

['计算机', '语言', '自然', '科学', '领域']

 
 
  • 1

3.6 summary方法

返回对文本的摘要,可以指定摘要句子数量:

from snownlp import SnowNLP
text = u"""自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
		   ..."""  # 省略号内容自行复制
s = SnowNLP(text)
print(s.summary(2))  # 返回2个句子

 
 
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

['自然语言处理是一门融语言学、计算机科学、数学于一体的科学', '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向']

 
 
  • 1

想了解更多关于snownlp的信息,请访问snownlp的Github仓库:
https://github.com/isnowfy/snownlp


好了,今天的课程就到这里,我是wangzirui32,我们下次再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员奇奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值