有勇气的牛排博客

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

有勇气的牛排 2308 Python 2024-07-24 22:19:35

1 前言

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

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

测试环境:Python3.10.9

from snownlp import SnowNLP # 使用 from snownlp import seg # 分词库 from snownlp import sentiment # 情感分词 from snownlp import normal # 停用词处理

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 计算词的相似度


留言

专栏
文章
加入群聊