【实战】deepseek数据分类用户评论数据

在平时的工作中,我们会遇到数据分类的情况,比如将一些文本划分为各个标签。如果人工分类这块的工作量将是非常大,而且分类数据的准确性也不高。我们需要用到一些工具来实现。提高效率的同时也提高准确率。

1.示例数据

|------|-----------------|------|--------------------------|
| 用户ID | 时间戳 | 评论场景 | 评论内容 |
| U001 | 2023/10/1 9:05 | 电商购物 | "刚收到快递,包装完好,实物比图片还漂亮!" |
| U001 | 2023/10/3 14:30 | 电商购物 | "用了两天发现电池续航很差,和宣传不符,失望。" |
| U001 | 2023/10/5 11:15 | 客服沟通 | "客服很快解决了问题,补偿了优惠券,态度点赞!" |
| U002 | 2023/10/2 18:20 | 社交媒体 | "今天和朋友聚餐,餐厅氛围超棒,但菜品有点咸。" |
| U003 | 2023/10/4 10:00 | 旅行预订 | "航班延误了3小时,机场服务混乱,体验极差!" |
| U003 | 2023/10/4 15:45 | 旅行预订 | "酒店免费升级了海景房,意外惊喜!" |

2.数据分析

数据清洗

通过python工具去除文字中的特殊符号。

安装依赖

python 复制代码
pip install pandas snownlp matplotlib openpyxl jinja2

代码实战

python 复制代码
import pandas as pd

from snownlp import SnowNLP

import matplotlib.pyplot as plt

from datetime import datetime



# 1. 数据加载

df = pd.read_excel("数据分析.xlsx", sheet_name="Sheet1")



# 2. 情绪分析函数(使用SnowNLP中文情感分析)

def classify_sentiment(text):

    score = SnowNLP(text).sentiments

    if score > 0.6:

        return ("积极", score)

    elif score < 0.4:

        return ("消极", score)

    else:

        return ("中性", score)



# 应用情绪分类

df[["情绪标签", "情绪强度"]] = df["评论内容"].apply(

    lambda x: pd.Series(classify_sentiment(x))

)



# 3. 生成统计报告

report = df.groupby("情绪标签").agg(

    评论数量=("用户ID", "count"),

    用户数=("用户ID", pd.Series.nunique),

    平均情绪强度=("情绪强度", "mean")

).reset_index()



# 4. 用户情绪轨迹分析

user_timelines = []

for uid, group in df.groupby("用户ID"):

    timeline = group.sort_values("时间戳").reset_index(drop=True)

    user_timelines.append({

        "用户ID": uid,

        "情绪变化序列": " → ".join(timeline["情绪标签"]),

        "关键转折点": timeline.iloc[[0, -1]][["时间戳", "情绪标签"]].to_dict("records")

    })

    

# 5. 可视化生成

# 设置matplotlib的字体配置

plt.rcParams['axes.unicode_minus'] = False  # 解决负号 '-' 显示为方块的问题

plt.rcParams['font.family'] = 'Kaiti SC'  # 可以替换为其他字体

plt.figure(figsize=(12, 6))

# 情绪分布饼图



ax1 = plt.subplot(121)

df["情绪标签"].value_counts().plot.pie(autopct="%1.1f%%", ax=ax1)

ax1.set_title("情绪分布比例")



# 时间线示例(U001)

ax2 = plt.subplot(122)

u001 = df[df["用户ID"] == "U001"].sort_values("时间戳")

ax2.plot(u001["时间戳"], u001["情绪强度"], marker="o", linestyle="--")

ax2.set_title("U001情绪波动趋势")

plt.xticks(rotation=45)

plt.tight_layout()

plt.savefig("sentiment_analysis.png", dpi=300)



# 6. 导出报告

with pd.ExcelWriter("情绪分析报告.xlsx") as writer:

    df.to_excel(writer, sheet_name="原始数据+情绪标注", index=False)

    pd.DataFrame(report).to_excel(writer, sheet_name="统计摘要", index=False)

    pd.DataFrame(user_timelines).to_excel(writer, sheet_name="用户轨迹", index=False)



print("分析完成!生成文件:情绪分析报告.xlsx 和 sentiment_analysis.png")

生成文件

原始数据+情绪标注

统计摘要

用户分析

分析饼图

效率提升

目前模型如果在大数据下会比较慢,需要更换模型

使用HuggingFace中文模型(需GPU支持)

python 复制代码
from transformers import pipeline

classifier = pipeline("text-classification", model="uer/roberta-base-finetuned-jd-binary-chinese")

实时监控集成

示例:Flask API端点

python 复制代码
from flask import Flask, request

app = Flask(__name__)



@app.route("/predict", methods=["POST"])

def predict():

    text = request.json["text"]

    return {"sentiment": classify_sentiment(text)}

动态阈值调整

基于历史数据自动校准阈值

python 复制代码
def auto_threshold(df):

    q_low = df["情绪强度"].quantile(0.3)

    q_high = df["情绪强度"].quantile(0.7)

    return q_low, q_high
相关推荐
初恋叫萱萱4 分钟前
CANN 系列深度篇:基于 ge 图引擎构建高效 AI 执行图
人工智能
雪兽软件19 分钟前
了解大数据分析实施问题和解决方案
数据挖掘·大数据分析
qq_124987075322 分钟前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
Coder_Boy_24 分钟前
TensorFlow小白科普
人工智能·深度学习·tensorflow·neo4j
L、21826 分钟前
CANN 中的图优化技术详解:如何让 AI 模型跑得更快、更省
人工智能
大模型玩家七七27 分钟前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
新缸中之脑29 分钟前
像画家一样编程
人工智能
tq108630 分钟前
心主神明:传统智慧如何启示AI的可靠之道
人工智能
珠海西格电力科技34 分钟前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
新缸中之脑36 分钟前
“AI 裁员“神话
人工智能