kp-031
案例:评论与舆情文本采集分析
前置知识
本文基于模型知识整理。评论常含用户昵称与头像等个人信息,采集与存储时必须只保留文本与公开统计字段(kp-004 红线)。
一句话定义
本案例完成「公开评论采集 → 文本清洗 → TF-IDF 关键词 → 词典法情感打分 → 差评主题报告」的文本挖掘闭环。
为什么重要
评论是产品改进与竞品分析的富矿,但手工翻阅不可规模化。本案例演示如何把 kp-026 的文本方法用于真实问题:「用户在抱怨什么?抱怨在变多还是变少?」
前置知识
kp-030(采集骨架)、kp-026(分词与 TF-IDF)。
核心概念
- 采集范围收缩:只取评论文本、评分、时间、SKU——不存用户 ID/昵称/头像。
- 词典法情感:用正负情感词表对分词结果打分(+1/−1 加权),句分为词分之和。
- 主题聚焦:差评单独抽 TF-IDF,与全量评论对比找「差评特有关键词」。
- 趋势切片:按周聚合负面率,观察舆情走向。
原理与机制
词典法情感打分(可复现、无需训练数据):
import jieba
POS = {"好用", "满意", "划算", "喜欢", "推荐", "快", "质量好"}
NEG = {"差", "失望", "破损", "色差", "起球", "推诿", "异味", "退货"}
def sentiment(text: str) -> int:
score = 0
for w in jieba.lcut(text):
if w in POS: score += 1
elif w in NEG: score -= 1
return score # >0 正面 / <0 负面 / =0 中性
df["senti"] = df["comment"].map(sentiment)
df["week"] = df["ts"].dt.to_period("W")
weekly = df.groupby("week")["senti"].agg(neg_rate=lambda s: (s < 0).mean())
差评特有关键词的对比法(比全局 Top 更有行动价值):
差评 TF-IDF Top: 色差, 起球, 客服, 推诿
全量 TF-IDF Top: 快递, 包装, 便宜, 好看
→ 差评特有 = 差评Top − 全量Top → 「色差/起球(产品) + 推诿(服务)」两大痛点
实例或案例
某品类 3000 条公开评论分析产出三条结论:负面率四周内从 8% 升至 14%(趋势异常);差评特有关键词锁定「色差」与「客服推诿」;「色差」负面集中在三个 SKU(按 SKU 切片定位)。三条结论直接构成给产品与客服团队的行动清单——文本挖掘的价值以「可执行的清单」兑现。
常见误区
- 误区一:把用户个人信息一并入库。 违反个人信息保护要求;入库前做字段白名单过滤。
- 误区二:全量评论找关键词。 全量 Top 反映「大家都说什么」,痛点藏在「差评相对全量的增量词」里。
- 误区三:词典法当万能。 反讽、语境依赖句会误判;词典法适合趋势与初筛,重点样本仍需人工复核。
自测题
- 评论采集的字段白名单应包含什么、排除什么?
答:包含文本/评分/时间/SKU;排除昵称、头像、用户 ID 等可识别个人的字段。
- 为什么要做「差评 Top − 全量 Top」的对比?
答:消除品类通用词,凸显差评特有痛点;比单看差评词频更能指向可行动问题。
- 词典法情感的适用边界?
答:适合趋势监测与初筛定位;细粒度语义(反讽/长难句)需人工复核或更强模型。
与其他知识点的关系
kp-026 是方法基座;kp-029 的堆叠柱/折线表达负面率趋势;kp-004 决定本案例的采集边界。
延伸阅读
本库 kp-026、kp-029;中文情感词典相关公开研究资源的综述部分。