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

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

有勇气的牛排

3485

AI大模型

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)

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("的牛排"))

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

评论区

提交评论