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)
2.2 自定义分词 词典
尚未测出该功能
4 提取 关键词(TextRank算法)
from snownlp import SnowNLP
text = "有勇气的牛排写的文章通俗易懂,爱了爱了"
s = SnowNLP(text)
print(s.keywords(3))
5 提取 摘要(TextRank算法)
from snownlp import SnowNLP
text = "有勇气的牛排写的文章通俗易懂,爱了爱了"
s = SnowNLP(text)
print(s.summary(3))
6 拼音转换
原创:有勇气的牛排
https://www.couragesteak.com/article/456
from snownlp import SnowNLP
text = "有勇气的牛排"
s = SnowNLP(text)
print(s.pinyin)
7 文本分类(情感分析)
7.1 定义
文本分类使用的是 SnowNLP 的情感分析模型
7.2 情感分析(常规)
from snownlp import SnowNLP
text = "有勇气的牛排写的文章通俗易懂,爱了爱了"
s = SnowNLP(text)
print(s.sentiments)
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')
7.3.3 使用模型进行情感分析
from snownlp import sentiment
from snownlp import SnowNLP
# 加载训练好的模型
sentiment.load('sentiment.marshal')
# 使用训练好的模型
text = "这个产品很糟糕,我很不满意。"
s = SnowNLP(text)
print(s.sentiments) # 输出情感分析结果
如果不加载前面我们训练的模型,分析结果为 0.669,十分不精确。
8 繁体转简体
from snownlp import SnowNLP
sentence_fan = "知識改變世界"
jian_ti = SnowNLP(sentence_fan)
print(jian_ti.han)
9 计算词的相似度(BM25)
from snownlp import SnowNLP
text = "有勇气的牛排是编程领域的博主"
s = SnowNLP(text)
print(len(s.words), s.words)
print(len(s.sim("的牛排")), s.sim("的牛排"))