刷到一个挺有意思的话题,结合自己之前的经验,整理了一下核心要点。
工程关键词:BERTopic、NMF、电商评论分析、低分评论归因、主题聚类、真实数据集、Python 可视化、HTML 报告、CSDN 源码资源包
适用场景:NLP 课程设计、电商运营分析、客户反馈挖掘、文本聚类工程、数据分析工程展示、二次开发
摘要
电商评论分析不能只停留在“好评率、差评率、平均评分”这些表层指标上。真正有业务价值的麻烦是:低分评论集中在什么原因上,哪些主题最影响用户体验,典型原始评论怎么快速定位,结果能不能直接导出为图表和报告。
本文基于 bertopic_ecommerce_review_analyzer 项目,用公开真实数据集 Women’s E-Commerce Clothing Reviews 的电商服装评论子集重新跑通完整流程。项目会读取真实评论 CSV,完成字段标准化、领域词预处理、主题聚类、差评原因归因、CSV 导出、可视化图表和 HTML 报告生成。本文中的运行截图来自项目代码实际执行后的报告页面。
本次实测数据包含 1470 条评论,其中 570 条为 1-2 星低分评论。模型在最小依赖环境下用 TF-IDF + NMF 兜底后端稳定运行,输出 8 个主题,低分评论主导麻烦为“尺码版型麻烦”。如果安装 BERTopic 可选依赖,项目也保留 BERTopic 后端入口。
真实数据与素材来源
为了避免只用合成样例,本次重新整理了公开真实评论数据。原始数据集来自 Kaggle 的 Women’s E-Commerce Clothing Reviews,镜像 CSV 下载自 GitHub 公开仓库;项目中保留清洗后的子集 demo_data/real_womens_clothing_reviews.csv,字段已经统一为 review_text、rating、category、product_name、helpful_count 等项目可直接读取的列。
电商评论中的低评分反馈往往来自真实体验落差:尺码不合适、物流等待过长、颜色与图片不符、做工质量不达预期。下面这张来自 Wikimedia Commons 的低评分反馈场景图,用来作为业务背景素材,和本文后续的真实评论建模结果对应。
清洗后的数据分布如下:1 星评论 193 条,2 星评论 377 条,3 星评论 125 条,4 星评论 231 条,5 星评论 544 条。项目默认聚焦 1-2 星评论做差评原因分析,这样一来参与建模的低分评论为 570 条。
项目流程与代码改造
项目入口是 main.py。为了让真实外部数据不得手工改列名,我增强了 prepare_review_dataframe() 的字段识别逻辑,使它能自动识别 Review Text、Rating、Clothing ID、Department Name、Class Name、Recommended IND、Positive Feedback Count 等公开数据集字段,并转换成项目统一字段。
下面的流程示意图对应项目的实际运行链路,图内只保留处理节点和必要说明。
流程可以搞懂为六步:先读取真实评论数据,再把外部字段标准化为项目字段;随后进行领域词预处理,抽取尺码、物流、质量等业务词;模型层完成主题聚类;分析层将主题关键词映射为业务差评原因;最后导出表格、图表和网页报告。
在文本预处理部分,项目原本更偏中文电商评论。我补充了英文服装评论常见表达,例如 fit、size、fabric、material、return、shipping、color、price 等,并映射到统一业务维度。这样即使真实数据是英文评论,输出仍然可以归并成中文业务标签,方便写中文项目报告。
真实运行截图
本次用最小依赖链路执行,命令如下:
python main.py --data demo_data/real_womens_clothing_reviews.csv --backend nmf --n-topics 8
python app.py
运行完成后,浏览器打开 outputs/negative_review_report.html。下面这张截图来自本地服务真实打开后的报告首屏,可以看到总评论数、参与分析评论数、差评率、主题数、主导差评原因和建模后端。
首屏结果说明这不是空报告:系统实际读入 1470 条评论,筛选 570 条低分评论参与建模,低分率为 38.78%,主题数为 8,主导差评原因识别为“尺码版型问题”。
继续向下滚动,报告会展示评分分布、差评原因排行、主题数量分布和主题关键词表。下面这张长截图覆盖了核心图表区域。
从图表可以看到,真实服装评论里 1-2 星低分并不少,且“尺码版型问题”明显高于其他差评原因。这和服饰电商的业务直觉一致:低分评论往往不是单纯情绪差,而是围绕尺码偏差、穿着舒适度、版型不合身、图片与实物差异等具体体验问题展开。
主题建模与差评归因
项目采用“双后端”设计。安装 BERTopic 及其依赖时,可以尝试 BERTopic 后端;在没有 BERTopic、不能联网下载模型、或者 Windows 环境不方便编译依赖时,会自动使用 TF-IDF + NMF 兜底后端。两种后端输出统一,后续业务归因和报告生成不得改代码。
差评归因不是直接把主题编号展示给用户,而是把主题关键词和典型评论映射成业务标签。下面的示意图展示了从低分评论到业务原因汇总的逻辑。
具体达成上,src/topic_model.py 负责训练主题模型并输出 topic_id、关键词和文档主题得分;src/analyzer.py 根据关键词和代表评论匹配业务规则,生成“尺码版型问题、物流配送问题、色差外观问题、商品质量问题”等标签;src/report.py 再把结果组织成 HTML 报告。
本次真实运行的核心指标如下:
{
"total_reviews": 1470,
"analyzed_reviews": 570,
"negative_rate": 0.3878,
"topic_count": 8,
"dominant_negative_reason": "尺码版型问题",
"backend": "fallback_nmf",
"topic_diversity": 0.225,
"silhouette_cosine": 0.2965
}
这里的 fallback_nmf 是正式可运行的兜底后端,目的是保证源码包在最小依赖环境中也能复现结果。对于课程设计和 CSDN 资源包来说,能稳定一键运行,比强制依赖重型模型更实用。
结果解读与输出文件
评分分布图展示了真实数据子集中不同星级评论的数量。它可以帮助我们确认数据不是刻意构造的单一差评集合,而是包含低分、中评和高分的真实评论样本。
低分评论筛选后,系统将主题结果汇总为差评原因。下图中“尺码版型问题”占比最高,其次是“物流配送问题”“色差外观问题”和“商品质量问题”。
这张图适合直接放在运营分析报告里:它把模型主题转换成了业务人员能读懂的原因排行。比如服装电商看到“尺码版型问题”占比过高,就可以进一步检查尺码表、买家秀、模特参数、试穿建议和退换货说明。
主题分布图保留了 topic_id,适合开发者和分析人员追踪每个主题簇的规模。
主题关键词表把主题编号、业务标签、评论数量、平均评分和关键词放在一张图里。它适合在博客里解释“模型为什么把这一组评论归为某类问题”。
运行后生成的核心文件包括:
outputs/topic_summary.csv
outputs/negative_reason_summary.csv
outputs/review_topic_assignments.csv
outputs/evaluation_metrics.json
outputs/negative_review_report.html
images/results/review_analysis_dashboard.png
images/results/screenshot_report_top.png
images/results/screenshot_report_long.png
models/topic_model.joblib
logs/run_log.txt
这些文件覆盖了“明细结果、汇总结果、指标记录、可视化图、网页报告、模型产物和运行日志”,适合作为课程设计、项目验收或资源包交付材料。
复现方法与资源包说明
最小依赖安装:
pip install -r requirements.txt
使用真实评论子集运行:
python main.py --data demo_data/real_womens_clothing_reviews.csv --backend nmf --n-topics 8
启动报告服务:
python app.py
如果想尝试 BERTopic 后端,可以额外安装:
pip install -r requirements-bertopic.txt
python main.py --data demo_data/real_womens_clothing_reviews.csv --backend auto
资源包中包含源码、配置文件、清洗后的真实评论子集、演示数据、运行脚本、验证说明、输出图表和 README。拿到源码后,即使当前环境没有 BERTopic,也可以先用 NMF 兜底后端复现本文截图中的核心结果。
扩展方向与参考资料
这个项目可以继续扩展成更完整的评论分析系统。第一,可以把差评原因按商品、类目、品牌拆分,输出每个商品的 Top 问题;第二,可以加入时间字段做趋势分析,观察某类问题是否近期集中爆发;第三,可以接入中文电商评论数据,继续扩展中文领域词典;第四,可以在 BERTopic 后端中加入多语言句向量模型,提升语义聚类能力。
参考资料:
- BERTopic 官方文档:https://maartengr.github.io/BERTopic/
- BERTopic c-TF-IDF 说明:https://maartengr.github.io/BERTopic/getting_started/ctfidf/ctfidf.html
- scikit-learn NMF/LDA topic extraction:https://scikit-learn.org/stable/auto_examples/applications/plot_topics_extraction_with_nmf_lda.html
- Women’s E-Commerce Clothing Reviews:https://www.kaggle.com/datasets/nicapotato/womens-ecommerce-clothing-reviews
- 数据集镜像仓库:https://github.com/chandimap/Sentiment-Analysis-of-Women-s-E-Commerce-Clothing-Reviews
- Wikimedia Commons 低评分反馈图:https://commons.wikimedia.org/wiki/File:Reviews_of_a_Negative_Customer_Experience.jpg
这篇笔记就先到这里,后面用到新的思路或者发现有问题再补充。
评论 (0)
暂无评论