神经网络实战案例:用户情感分析模型

在当今数字化时代,用户评论和反馈成为企业了解产品满意度的重要渠道。本项目将通过神经网络构建一个情感分析模型,自动识别用户评论中的情感倾向。我们将使用真实的产品评论数据,从数据预处理到模型部署,完整展示神经网络在NLP领域的应用。


1. 数据读取与初步查看

之前我们已经准备好了产品评论数据集,现在让我们加载并查看数据基本情况:

import pandas as pd
df = pd.read_excel('../机器学习/产品评价.xlsx')
df.head()

在这里插入图片描述

原理解释:
首先,我们使用pandas库读取本地的产品评价数据。read_excel函数可以直接读取Excel文件,head()方法可以预览前几行数据,帮助我们了解数据结构。
从输出结果可以看到,数据集包含客户编号、评论内容和评价三个字段,其中评价字段是我们要预测的目标变量(1表示正面评价)。


2. 中文分词处理

import jieba
word = jieba.cut(df.iloc[0]['评论'])
result = ' '.join(word)
print(result)

在这里插入图片描述

原理解释:
因为中文文本没有天然的分隔符,所以需要用jieba库对评论内容进行分词。这样可以将一句话拆分为有意义的词语,便于后续特征提取。


3. 批量分词

words = []
for i, row in df.iterrows():words.append(' '.join(jieba.cut(row['评论'])))

在这里插入图片描述

原理解释:
通过遍历每一条评论,将所有评论都进行分词处理,并用空格连接,最终得到一个分词后的评论列表,为后续向量化做准备。


4. 文本向量化(词袋模型)

from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer()
X = vect.fit_transform(words)
X = X.toarray()

在这里插入图片描述

原理解释:
因为机器学习模型无法直接处理文本,所以我们用CountVectorizer将分词后的文本转化为数字向量(词袋模型)。每一列代表一个词,每一行代表一条评论,数值表示该词出现的次数。


5. 查看词袋内容

words_bag = vect.vocabulary_
print(words_bag)

在这里插入图片描述

原理解释:
通过查看vocabulary_属性,可以了解词袋模型中包含了哪些词及其对应的索引,有助于理解特征空间。


6. 构建特征和标签

y = df['评价']

我们将评论的情感标签(如好评/差评)作为模型的目标变量(y),用于监督学习。


7. 划分训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=1)

原理解释:
通过train_test_split函数,将数据集分为训练集和测试集。这样可以用训练集训练模型,用测试集评估模型效果,防止过拟合。


8. 构建并训练神经网络模型

from sklearn.neural_network import MLPClassifier
mlp = MLPClassifier()
mlp.fit(X_train, y_train)

原理解释:
我们选择MLPClassifier(多层感知机)作为神经网络模型。通过fit方法用训练集数据训练模型,让模型学习评论与情感标签之间的关系。


9. 模型预测

y_pred = mlp.predict(X_test)
y_pred

在这里插入图片描述

原理解释:
通过predict方法,模型对测试集的评论进行情感预测,输出预测结果。


10. 结果对比

a = pd.DataFrame()
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
a.head()

在这里插入图片描述

原理解释:
将预测结果与实际标签进行对比,可以直观地看到模型的预测准确性。


11. 模型准确率评估

from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred, y_test)
score

在这里插入图片描述

原理解释:
通过accuracy_score计算模型在测试集上的准确率,衡量模型的整体表现。


12. 实时评论情感预测

comment = input('请输入您对本商品的评价:')
comment = [' '.join(jieba.cut(comment))]
X_try = vect.transform(comment)
y_pred = mlp.predict(X_try.toarray())
print(y_pred)

在这里插入图片描述

原理解释:
最后,我们可以输入一条新的评论,经过分词和向量化后,利用训练好的神经网络模型进行情感预测,实现用户交互。结果为0,代表差评与我们期望一致


13. 对比朴素贝叶斯模型

from sklearn.naive_bayes import GaussianNB
nb_clf = GaussianNB()
nb_clf.fit(X_train, y_train)
y_pred = nb_clf.predict(X_test)
score = accuracy_score(y_pred, y_test)
print(score)

在这里插入图片描述

原理解释:
为了对比神经网络与其他模型的效果,我们还用朴素贝叶斯(GaussianNB)进行训练和预测,并计算准确率。这样可以评估不同模型在情感分析任务上的表现。从结果可见朴素贝叶斯的效果略逊于MLP神经网络模型


通过以上步骤,我们完成了一个基于神经网络的用户评论情感分析模型的实战案例。你可以根据自己的数据和需求,进一步优化和扩展模型。

参考文献

[1] Python大数据分析与机器学习商业案例实战/王宇韬,钱妍竹著[M]. 机械工业出版社, 2020.5

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

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

相关文章

now能减少mysql的压力吗

是否用数据库的 NOW() 能减少 MySQL 的压力?​答案是否定的——使用 NOW() 不仅不会降低压力,反而可能略微增加 MySQL 的负载。以下是详细分析:🔍 性能对比:NOW() vs. Java 传参​指标​​Java 传参 (e.g., new Date()…

数据结构01:链表

数据结构 链表 链表和数组的区别 1. 存储方式 数组: 元素在内存中连续存储,占用一块连续的内存空间元素的地址可以通过索引计算(基地址 索引 元素大小)大小固定,在创建时需要指定容量 链表: 元素&#xf…

【Java学习|黑马笔记|Day21】IO流|缓冲流,转换流,序列化流,反序列化流,打印流,解压缩流,常用工具包相关用法及练习

标题【Java学习|黑马笔记|Day20】 今天看的是黑马程序员的《Java从入门到起飞》下部的95-118节,笔记包含IO流中的字节、字符缓冲流,转换流,序列化流反序列化流,打印流,解压缩流,常用工具包相关用法及练习 …

API网关原理与使用场景详解

一、API网关核心原理 1. 架构定位 #mermaid-svg-hpDCWfqoiLcVvTzq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hpDCWfqoiLcVvTzq .error-icon{fill:#552222;}#mermaid-svg-hpDCWfqoiLcVvTzq .error-text{fill:#5…

OSPF路由协议——上

OSPF路由协议 RIP的不足 以跳数评估的路由并非最优路径如果RTA选择s0/0传输,传输需时会大大缩短为3s 最大跳数为16跳,导致网络尺度小RIP协议限制网络直径不能超过16跳,并且16跳为不可达。 收敛速度慢 RIP 定期路由更新 更新计时器&#xff1a…

(LeetCode 面试经典 150 题) 219. 存在重复元素 II (哈希表)

题目&#xff1a;219. 存在重复元素 II 思路&#xff1a;哈希表&#xff0c;时间复杂度0(n)。 哈希表记录每个数最新的下标&#xff0c;遇到符合要求的返回true即可。 C版本&#xff1a; class Solution { public:bool containsNearbyDuplicate(vector<int>& nums,…

Cookies 详解及其与 Session 的协同工作

Cookies 详解及其与 Session 的协同工作 一、Cookies 的本质与作用 1. 什么是 Cookies&#xff1f; Cookies 是由服务器发送到用户浏览器并存储在本地的小型文本文件。核心特性&#xff1a; 存储位置&#xff1a;客户端浏览器数据形式&#xff1a;键值对字符串&#xff08;最大…

DeepSeek Janus Pro本地部署与调用

step1、Janus模型下载与项目部署 创建文件夹autodl-tmp https://github.com/deepseek-ai/Janus?tabreadme-ov-file# janusflow 查看是否安装了git&#xff0c;没有安装的话安装一下&#xff0c;或者是直接github上下载&#xff0c;上传到服务器&#xff0c;然后解压 git --v…

【Elasticsearch】BM25的discount_overlaps参数

discount_overlaps 是 Elasticsearch/Lucene 相似度模型&#xff08;Similarity&#xff09;里的一个布尔参数&#xff0c;用来决定&#xff1a;> 在计算文档长度归一化因子&#xff08;norm&#xff09;时&#xff0c;是否忽略“重叠 token”&#xff08;即位置增量 positi…

Linux | LVS--Linux虚拟服务器知识点(上)

一. 集群与分布式1.1 系统性能扩展方式当系统面临性能瓶颈时&#xff0c;通常有以下两种主流扩展思路&#xff1a;Scale Up&#xff08;向上扩展&#xff09;&#xff1a;通过增强单台服务器的硬件配置来提升性能&#xff0c;这种方式简单直接&#xff0c;但受限于硬件物理极限…

【Linux-云原生-笔记】keepalived相关

一、概念Keepalived 是一个用 C 语言编写的、轻量级的高可用性和负载均衡解决方案软件。 它的主要目标是在基于 Linux 的系统上提供简单而强大的故障转移功能&#xff0c;并可以结合 Linux Virtual Server 提供负载均衡。1、Keepalived 主要提供两大功能&#xff1a;高可用性&a…

计算机网络:概述层---计算机网络的组成和功能

&#x1f310; 计算机网络基础全景梳理&#xff1a;组成、功能与核心机制 &#x1f4c5; 更新时间&#xff1a;2025年7月21日 &#x1f3f7;️ 标签&#xff1a;计算机网络 | 网络组成 | 分布式 | 负载均衡 | 资源共享 | 网络可靠性 | 计网基础 文章目录前言一、组成1.从组成部…

Linux中scp命令传输文件到服务器报错

上传本地文件到Linux服务器使用scp命令报错解决办法使用scp命令报错 Could not resolve hostname e: Name or service not known 解决办法 不使用登录服务器的工具传输&#xff0c;打开本地cmd&#xff0c;使用scp命令传输即可。 scp E:\dcm-admin.jar root127.0.0.1:/

历史数据分析——国药现代

医药板块走势分析: 从月线级别来看 2008年11月到2021年2月,月线上走出了两个震荡中枢的月线级别2085-20349的上涨段; 2021年2月到2024年9月,月线上走出了20349-6702的下跌段; 目前月线级别放巨量,总体还在震荡区间内,后续还有震荡和上涨的概率。 从周线级别来看 从…

#Linux内存管理# 在一个播放系统中同时打开几十个不同的高清视频文件,发现播放有些卡顿,打开视频文件是用mmap函数,请简单分析原因。

在播放系统中同时使用mmap打开几十个高清视频文件出现卡顿&#xff0c;主要原因如下&#xff1a;1. 内存映射&#xff08;mmap&#xff09;的缺页中断开销按需加载机制&#xff1a;mmap将文件映射到虚拟地址空间&#xff0c;但实际数据加载由“缺页中断&#xff08;Page Fault&…

AI黑科技:GAN如何生成逼真人脸

GAN的概念 GAN(Generative Adversarial Network,生成对抗网络)是一种深度学习模型,由生成器(Generator)和判别器(Discriminator)两部分组成。生成器负责生成 synthetic data(如假图像、文本等),判别器则试图区分生成数据和真实数据。两者通过对抗训练不断优化,最终…

FireFox一些设置

firefox后台打开新的链接&#xff0c;例如中键打开一个链接 地址栏输入about:config 找到下面三项&#xff0c;全部设为true browser.tabs.loadInBackground browser.tabs.loadDivertedInBackground browser.tabs.loadBookmarksInBackground 参考&#xff1a;FireFox/chrome…

【黑马SpringCloud微服务开发与实战】(六)分布式事务

1. 什么是分布式事务下单失败&#xff0c;购物车还被清理了。不符合一致性。2. seata的架构和原理3. 部署TC服务docker network ls docker inspect mysql mysql 在hm-net下&#xff0c;这里我的ncaos不是跟着视频配的&#xff0c;因此需要。 docker network connect hm-net nac…

【力扣】第15题:三数之和

原文链接&#xff1a;15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 思路解析 双指针&#xff1a; &#xff08;1&#xff09;头尾指针对应值相加如果大于目标值(target)&#xff0c;那么只能尾指针-1&#xff1b;如果小于target&#xff0c;那么只能头指针1。 &#x…

Linux PCI总线子系统

The Linux Kernel Archives Linux PCI总线子系统 — The Linux Kernel documentation