【实战】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
相关推荐
回归2726 小时前
LM Studio切换国内HF-Mirror镜像进行模型下载
人工智能
m4Rk_6 小时前
【论文阅读】Agent 记忆机制(38):AMA——用多智能体协作动态选择记忆粒度
论文阅读·人工智能·学习
青春不败 177-3266-05206 小时前
基于R、Python的Copula变量相关性分析及AI大模型应用
人工智能·python·r语言·贝叶斯·统计学·copula
wx_xkq12886 小时前
2026企业级AI Agent落地观察:从工具集到组织级智能体
大数据·人工智能·saas·ai营销
AI_AGENT_DEV_AI6 小时前
AI 英语口语 APP的开发
人工智能
熊猫_豆豆6 小时前
WOKWI 仿真 ESP32S3 SSD1306 播放GIF图
人工智能·esp32s3·硬件开发·ssd1306
玫瑰互动GEO6 小时前
2026豆包AI搜索GEO优化:从豆包大模型到字节生态信源引用
大数据·人工智能·豆包·geo优化
dozenyaoyida6 小时前
AI与大模型新闻日报 | 2026-08-13
人工智能·ai·大模型·新闻
梦想的旅途26 小时前
企微 API 二次开发:结合 AI 提取聊天记录并智能生成会议纪要
人工智能
陆枫Larry7 小时前
从游戏显卡到 AI 心脏:英伟达三十年简史
人工智能