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

1 前言

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

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

测试环境:Python3.10.9

2 分词

中文分词(Character-Based Generative Model)

2.1 常规分词

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

snownlp分词

2.2 自定义分词 词典

尚未测出该功能

4 提取 关键词(TextRank算法)

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

snownlp 关键词提取

5 提取 摘要(TextRank算法)

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

snownlp 摘要提取

6 拼音转换

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

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

image.png

7 文本分类(情感分析)

7.1 定义

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

7.2 情感分析(常规)

from snownlp import SnowNLPtext = "有勇气的牛排写的文章通俗易懂,爱了爱了"
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 SnowNLPsentence_fan = "知識改變世界"
jian_ti = SnowNLP(sentence_fan)
print(jian_ti.han)

snownlp 繁体转简体

9 计算词的相似度(BM25)

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

snownlp 计算词的相似度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 镜像 pull 失败(Docker 镜像停止服务解决方法)

解决办法——切换镜像: 1、https://mirror.baidubce.com2、https://docker.nju.edu.cn 配置好之后,通过 docker info命令查看是否配置成功。 在 Registry Mirrors 下找到这两个地址,如果存在了,表示配置成功。 Registry Mirrors…

目标检测进阶:1.COCO数据集与VOC数据集

目录 一、COCO数据集 1.COCO数据集下载 2.COCO数据集相关介绍 Captions.json文件 instances.json文件 Person_keypoints.json文件 3.提取instances中的边界框信息 二、VOC数据集 1.VOC数据集下载 VOC2007训练集验证集百度云资源(提取码6zg6)htt…

【docker】Ubuntu20安装docker并拉取mongodb

文章目录 docker安装拉取mongodb其他操作配置mongodb远程连接 docker安装 // 安装 apt install docker.io // 换源 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors": ["https://ox288s4f.mirror.aliyuncs.com&q…

获取STM32 MCU的唯一ID

获取STM32 MCU的唯一ID 这里以STM32F103为例&#xff0c;简单运用了一下 #include "stm32f10x.h"/*开辟一个数组来装96bit的ID号*/ u32 id[3] {0xFFFFFFFF};/*获取STM32 MCU的唯一ID*/ void GetSTM32MCUID(uint32_t *id) {if(id!NULL){id[0]*(uint32_t*)(0x1FFFF7E8…

mac下010editor的配置文件路径

1.打开访达&#xff0c;点击前往&#xff0c;输入~/.config 2.打开这个文件夹 把里面的 010 Editor.ini 文件删除即可&#xff0c;重新安装010 Editor即可

Android Lifecycles简析

在Android开发中&#xff0c;Lifecycle&#xff08;生命周期&#xff09;是指组件&#xff08;如Activity和Fragment&#xff09;在其运行期间经历的状态变化过程。Lifecycle是Android Jetpack库中的一部分&#xff0c;用于帮助开发者管理组件的生命周期&#xff0c;并在生命周…

微前端--single-spa

微前端 使用微前端的挑战&#xff1a; 子应用切换&#xff0c;应用相互隔离&#xff0c;互补干扰&#xff0c;子应用之前的通信&#xff0c;多个子应用并存&#xff0c;用户状态的存储&#xff0c;免登。 常用技术方案 路由分发式微前端 通过http服务的反向代理 http {serv…

C++ OpenCV 使用 resize() 调整图像大小

Mat Visible imread("../pic/rgb_1.jpg"); //右图 Mat Infrared imread("../pic/infrared_1.jpg"); //左图 if (Visible.empty() || Infrared.empty()) {cout << "could not load the image..." << endl;return -1; } Mat vi…

无人机搭载无人机反制设备可行性分析

一、引言 随着无人机技术的飞速发展&#xff0c;无人机在各个领域的应用越来越广泛。然而&#xff0c;无人机的不当使用也可能带来安全隐患和隐私问题。因此&#xff0c;无人机反制设备应运而生&#xff0c;用于对非法或危险无人机进行干扰和控制。本文将对无人机搭载无人机反…

GitHub vs. Gitee:全面对比与选择指南

1. 引言 GitHub 和 Gitee 是两大主流代码托管平台&#xff0c;各自拥有丰富的功能和独特的优势。本文将深入对比这两个平台的功能、性能、社区和使用体验&#xff0c;帮助开发者做出明智的选择。 2. 基本介绍 2.1 GitHub 成立时间&#xff1a;2008 年拥有者&#xff1a;微软…

简单的git分支mergepush权限设定

简单的git分支merge&push权限设定 1. 需求 公司的分支很多&#xff0c;主要的有master分支&#xff0c;很多的业务需求分支&#xff0c;开发测试分支(uat,uat2,sit,sit2)&#xff0c;这些分支当前是谁都可以进行提交&#xff0c;但是如果在分支上直接修改&#xff0c;或者…

Sentinel隔离、降级、授权规则详解

文章目录 Feign整合Sentinel线程隔离熔断降级授权规则自定义异常结果 上一期教程讲解了 Sentinel 的限流规则&#xff1a; Sentinel限流规则&#xff0c;这一期主要讲述 Sentinel 的 隔离、降级和授权规则 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还…

R语言统计分析——数据管理4

参考资料&#xff1a;R语言实战【第2版】 1、数学函数 abs(x)&#xff1a;绝对值 sqrt(x)&#xff1a;平方根 ceiling(x)&#xff1a;不小于x的最小整数 floor(x)&#xff1a;不大于x的最大整数 trunc(x)&#xff1a;向0的方向截取x中的整数部分 round(x,digitsn)&#…

参加可观测性Observability Foundation认证培训,您有哪些收益?

一、可观测性认证培训的内容 作为SRE&#xff08;站点可靠性工程&#xff09;课程体系的最新发展&#xff0c;可观测性&#xff08;Observability&#xff09;认证课程介绍了一系列结合应用程序生命周期和复杂体系架构中推进可观测性的核心概念和实践。为关注全栈可观测性&…

java连接redis和基础操作命令

引入依赖 <!--引入java连接redis的驱动--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.1</version></dependency> 单机模式连接redis main(){ //连接redis的信息 默认连接…

WebKit的图像魔法:深入CSS Image Values支持

WebKit的图像魔法&#xff1a;深入CSS Image Values支持 CSS图像值&#xff08;Image Values&#xff09;是CSS3中引入的一系列新特性&#xff0c;它们为Web开发者提供了更多的灵活性和创造力来处理网页上的图像。WebKit作为许多流行浏览器的底层引擎&#xff0c;其对CSS图像值…

涉及VPN、金融、健康服务等类型应用上架政策突变

大家好&#xff0c;我是牢鹅&#xff01;今天为大家分享Google Play 2024年7月17日下发的政策更新&#xff0c;此次政策更新距上次&#xff08;4月5日&#xff09;政策大更新仅过去三个月。前段时间牢鹅跟谷歌的人有聊过&#xff0c;今年他们的目标很明确&#xff0c;提高开发者…

Django执行ORM时打印SQL语句

settings中添加LOGGING相关日志配置 LOGGING {version: 1,disable_existing_loggers: False,handlers: {console:{level:DEBUG,class:logging.StreamHandler,},},loggers: {django.db.backends: {handlers: [console],propagate: True,level:DEBUG,},}}批量查询DEMO&#xf…

Docker————数据卷容器,容器互联,镜像创建

1、Docker的数据管理 管理Docker容器中的数据&#xff0c;主要有两种方式&#xff1a;数据卷&#xff08;Data Volumes&#xff09;和数据卷容器&#xff08;DataVolumes Containers&#xff09;. docker run [-i -t] [--name 容器名] 镜像名&#xff1a;标签 [容器启动命令]…

力扣算法的方法(1.二分法,2.双指针思路,3.滑动窗口)

20240724 1.二分法1.1 给定的数组区间为左闭右闭1.2 给定的数组区间为左闭右开 2. 27题移除元素&#xff08;双指针思路&#xff09;3. 977. 有序数组的平方(双指针)4 长度最小的子数组&#xff08;滑动窗口&#xff09; 一、算法刷题开始跟老师了&#xff01;&#xff01;来源…