【实战】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
相关推荐
大数据在线1 小时前
布局Agentic AI,亚马逊云科技组合拳再升级
人工智能·openai·亚马逊云科技·智能体·agentic ai
皮皮学姐分享-ppx5 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
GIS数据转换器5 小时前
基于3D GIS的监控视频精准标定平台
人工智能·物联网·3d·音视频·无人机·知识图谱
专注VB编程开发20年5 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
深小乐5 小时前
Claude Fable5 尝鲜,效果挺不错
人工智能
Nayxxu6 小时前
Gemini + RAG 企业知识库教程:从文档切片到答案生成
运维·人工智能
冬奇Lab6 小时前
真正的 AI-Native Workflow 是什么?——四个判断测试
人工智能·agent
冬奇Lab6 小时前
每日一个开源项目(第128篇):Agent Skills - 给 AI 编程 Agent 装上工程纪律
人工智能·开源·资讯
Deepoch6 小时前
Deepoc VLA开发板:采摘机器人的环境鲁棒作业与不确定性应对
人工智能·机器人·采摘机器人·deepoc