kp-031

案例:评论与舆情文本采集分析

进阶 ≈ 30 分钟 评论舆情情感分析词典法案例

前置知识

本文基于模型知识整理。评论常含用户昵称与头像等个人信息,采集与存储时必须只保留文本与公开统计字段(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 反映「大家都说什么」,痛点藏在「差评相对全量的增量词」里。
  • 误区三:词典法当万能。 反讽、语境依赖句会误判;词典法适合趋势与初筛,重点样本仍需人工复核。

自测题

  1. 评论采集的字段白名单应包含什么、排除什么?

答:包含文本/评分/时间/SKU;排除昵称、头像、用户 ID 等可识别个人的字段。

  1. 为什么要做「差评 Top − 全量 Top」的对比?

答:消除品类通用词,凸显差评特有痛点;比单看差评词频更能指向可行动问题。

  1. 词典法情感的适用边界?

答:适合趋势监测与初筛定位;细粒度语义(反讽/长难句)需人工复核或更强模型。

与其他知识点的关系

kp-026 是方法基座;kp-029 的堆叠柱/折线表达负面率趋势;kp-004 决定本案例的采集边界。

延伸阅读

本库 kp-026、kp-029;中文情感词典相关公开研究资源的综述部分。

相关知识点

学习进度