神經網絡實戰案例:用戶情感分析模型

在當今數字化時代,用戶評論和反饋成為企業了解產品滿意度的重要渠道。本項目將通過神經網絡構建一個情感分析模型,自動識別用戶評論中的情感傾向。我們將使用真實的產品評論數據,從數據預處理到模型部署,完整展示神經網絡在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
英文地址,請注明出處:http://en.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