当前位置:   article > 正文

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

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

1 前言

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

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

测试环境:Python3.10.9

2 分词

中文分词(Character-Based Generative Model)

2.1 常规分词

from snownlp import SnowNLP

text = "有勇气的牛排是编程领域的博主"
s = SnowNLP(text)
print(s.words)
  • 1
  • 2
  • 3
  • 4
  • 5

snownlp分词

2.2 自定义分词 词典

尚未测出该功能

4 提取 关键词(TextRank算法)

from snownlp import SnowNLP

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

snownlp 关键词提取

5 提取 摘要(TextRank算法)

from snownlp import SnowNLP

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

snownlp 摘要提取

6 拼音转换

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

from snownlp import SnowNLP

text = "有勇气的牛排"
s = SnowNLP(text)
print(s.pinyin)
  • 1
  • 2
  • 3
  • 4
  • 5

image.png

7 文本分类(情感分析)

7.1 定义

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

7.2 情感分析(常规)

from snownlp import SnowNLP

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

snownlp 情感分析

7.3 情感分析(训练模型)

7.3.1 数据文件

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

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

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

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

main.py

from snownlp import sentiment

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

# 保存模型
sentiment.save('sentiment.marshal')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

snownlp 训练模型

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

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

# 使用训练好的模型
text = "这个产品很糟糕,我很不满意。"
s = SnowNLP(text)
print(s.sentiments)  # 输出情感分析结果
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

snownlp 使用模型进行情感分析

8 繁体转简体

from snownlp import SnowNLP

sentence_fan = "知識改變世界"
jian_ti = SnowNLP(sentence_fan)
print(jian_ti.han)
  • 1
  • 2
  • 3
  • 4
  • 5

snownlp 繁体转简体

9 计算词的相似度(BM25)

from snownlp import SnowNLP

text = "有勇气的牛排是编程领域的博主"
s = SnowNLP(text)
print(len(s.words), s.words)
print(len(s.sim("的牛排")), s.sim("的牛排"))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

snownlp 计算词的相似度

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号