【实战】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工具去除文字中的特殊符号。
安装依赖
pip install pandas snownlp matplotlib openpyxl jinja2
代码实战
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支持)
from transformers import pipeline
classifier = pipeline("text-classification", model="uer/roberta-base-finetuned-jd-binary-chinese")
实时监控集成
# 示例:Flask API端点
from flask import Flask, request
app = Flask(__name__)
@app.route("/predict", methods=["POST"])
def predict():
text = request.json["text"]
return {"sentiment": classify_sentiment(text)}
动态阈值调整
# 基于历史数据自动校准阈值
def auto_threshold(df):
q_low = df["情绪强度"].quantile(0.3)
q_high = df["情绪强度"].quantile(0.7)
return q_low, q_high