Python中如何自动整理用户反馈并生成数据报告
之前将用户反馈通过结巴分词后,然后用 LDA 进行主题分析提炼出前几的主题,也维护了一个大的关键词字典,但是还是不能比较精准的提炼用户反馈的语义问题,想请教大家有什么好的方案,或者现成的方案提供吗?我看到了 https://ai.baidu.com/tech/nlp/comment_tag 等评价观点抽取的产品,由于涉及到隐私问题,不知道还有没有可以自己部署实现的方案?
Python中如何自动整理用户反馈并生成数据报告
2 回复
帖子回复:
要自动整理用户反馈并生成数据报告,核心是结合文本处理和数据分析库。这里提供一个完整的解决方案,使用 pandas 处理数据,jieba 进行中文分词(若反馈为英文可用 nltk),并生成可视化报告。
import pandas as pd
import jieba
from collections import Counter
import matplotlib.pyplot as plt
# 1. 模拟用户反馈数据
data = {
"feedback": [
"产品很好用,但价格有点高",
"客服响应太慢,需要改进",
"界面设计很漂亮,功能齐全",
"价格太高,性价比不高",
"功能强大,但学习曲线陡峭"
],
"rating": [4, 2, 5, 1, 3]
}
df = pd.DataFrame(data)
# 2. 文本预处理与关键词提取
def extract_keywords(texts, top_n=5):
words = []
for text in texts:
seg_list = jieba.cut(text)
words.extend([word for word in seg_list if len(word) > 1]) # 过滤单字
word_counts = Counter(words)
return word_counts.most_common(top_n)
keywords = extract_keywords(df["feedback"])
print("高频关键词:", keywords)
# 3. 生成数据报告
report = f"""
用户反馈分析报告
================
共收集反馈数量: {len(df)}
平均评分: {df['rating'].mean():.2f}
正面反馈占比: {(df['rating'] >= 4).sum() / len(df) * 100:.1f}%
高频关键词分析:
{chr(10).join([f' - {word}: {count}次' for word, count in keywords])}
"""
print(report)
# 4. 可视化图表
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
# 评分分布柱状图
df["rating"].value_counts().sort_index().plot(kind="bar", ax=axes[0], title="评分分布")
axes[0].set_xlabel("评分")
axes[0].set_ylabel("数量")
# 关键词词频条形图
words, counts = zip(*keywords)
axes[1].barh(words, counts, color="skyblue")
axes[1].set_title("高频关键词")
axes[1].invert_yaxis()
plt.tight_layout()
plt.savefig("feedback_report.png") # 保存图表
print("图表已保存为 feedback_report.png")
代码说明:
- 用
pandas加载和管理反馈数据。 - 通过
jieba分词提取中文关键词(英文可用nltk的word_tokenize)。 - 统计评分分布和关键词频率,生成文本报告。
- 使用
matplotlib绘制评分分布和关键词条形图,并保存为图片。
扩展建议:
- 如需更高级的情感分析,可集成
snownlp或TextBlob库。 - 定期报告可搭配
schedule库实现自动化运行。 - 报告输出可改为 HTML 格式(用
Jinja2模板)或 PDF(用ReportLab)。
一句话总结: 用 pandas + jieba + matplotlib 实现反馈的自动整理和可视化报告生成。

