全面解析 SnowNLP:中文文本处理、情感分析

1 前言

SnowNLP 是一个专门用于处理中文文本的 Python库。功能包括:

  • 分词
  • 情感分析
  • 关键词提取
  • 文本分类
  • 拼音转换
  • 繁体转简体
  • 词相似度计算等
snownlp==0.12.3

测试环境:Python3.10.9

2 分词

中文分词(Character-Based Generative Model)

2.1 常规分词

from snownlp import SnowNLP

text = "有勇气的牛排是编程领域的博主"
s = SnowNLP(text)
print(s.words)

snownlp分词

2.2 自定义分词 词典

尚未测出该功能

4 提取 关键词(TextRank算法)

from snownlp import SnowNLP

text = "有勇气的牛排写的文章通俗易懂,爱了爱了"
s = SnowNLP(text)
print(s.keywords(3))

snownlp 关键词提取

5 提取 摘要(TextRank算法)

from snownlp import SnowNLP

text = "有勇气的牛排写的文章通俗易懂,爱了爱了"
s = SnowNLP(text)
print(s.summary(3))

snownlp 摘要提取

6 拼音转换

原创:有勇气的牛排
https://www.couragesteak.com/article/456

from snownlp import SnowNLP

text = "有勇气的牛排"
s = SnowNLP(text)
print(s.pinyin)

image.png

7 文本分类(情感分析)

7.1 定义

文本分类使用的是 SnowNLP 的情感分析模型

7.2 情感分析(常规)

from snownlp import SnowNLP

text = "有勇气的牛排写的文章通俗易懂,爱了爱了"
s = SnowNLP(text)
print(s.sentiments)

snownlp 情感分析

7.3 情感分析(训练模型)

7.3.1 数据文件

pos.txt (正面情绪的文本)

这家餐厅的菜很好吃
我非常喜欢这本书
这个产品质量非常好

neg.txt (负面情绪的句子)

这家餐厅的服务很差
我不喜欢这部电影
这个产品质量很差
7.3.2 训练模型

main.py

from snownlp import sentiment

# 训练模型
sentiment.train('neg.txt', 'pos.txt')

# 保存模型
sentiment.save('sentiment.marshal')

snownlp 训练模型

7.3.3 使用模型进行情感分析
from snownlp import sentiment
from snownlp import SnowNLP

# 加载训练好的模型
sentiment.load('sentiment.marshal')

# 使用训练好的模型
text = "这个产品很糟糕,我很不满意。"
s = SnowNLP(text)
print(s.sentiments)  # 输出情感分析结果

如果不加载前面我们训练的模型,分析结果为 0.669,十分不精确。

snownlp 使用模型进行情感分析

8 繁体转简体

from snownlp import SnowNLP

sentence_fan = "知識改變世界"
jian_ti = SnowNLP(sentence_fan)
print(jian_ti.han)

snownlp 繁体转简体

9 计算词的相似度(BM25)

from snownlp import SnowNLP

text = "有勇气的牛排是编程领域的博主"
s = SnowNLP(text)
print(len(s.words), s.words)
print(len(s.sim("的牛排")), s.sim("的牛排"))

snownlp 计算词的相似度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

有勇气的牛排

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

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

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

打赏作者

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

抵扣说明:

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

余额充值