4. 情绪分析入门
在社交媒体舆情实战中,情绪分析不是“判断一句话开心还是难过”这么简单。它需要一套可复用的标注体系,把非结构化的文本映射为可统计、可对比、可建模的情绪因子。本节围绕四个基础构件展开:情绪分类体系决定“分几类”,情感极性决定“正负方向”,强度标注决定“有多强烈”,情绪词典决定“用什么词触发判断”。四者组合,才构成情绪因子的最小可用闭环。
一、核心原理:从连续情感到离散标签
心理学中常用维度模型描述情绪,例如效价(Valence,愉快—不愉快)与唤醒度(Arousal,激动—平静)构成二维平面。工程落地时,我们通常把它离散化为可计算的标签体系。常见有三类:
- 二分类极性:正向 / 负向,适合快速舆情预警。
- 三分类极性:正向 / 中性 / 负向,增加“中性”以容纳事实陈述。
- 多类别情绪:如 Ekman 六情绪(喜、怒、哀、惧、惊、厌),或中文场景常用的“喜、怒、哀、惧、惊、厌、期待、信任”八类。
极性回答方向,多类别回答性质,强度回答烈度。三者不是替代关系,而是叠加关系。例如“气死我了”与“有点烦”极性同为负向,但强度差异显著,对舆情因子的贡献完全不同。
二、方法流程:从文本到情绪因子
一个可落地的情绪分析流程通常包含五步:
- 定义标签体系:确定极性类别、情绪类别、强度等级(如1—5级)。
- 构建或选用词典:包括情感词、否定词、程度副词、转折词、表情符号。
- 文本预处理:分词、去噪、表情归一化、网络用语映射。
- 规则或模型打分:词典匹配加权求和,或使用预训练模型输出概率。
- 强度归一与校准:将得分映射到统一强度区间,便于跨话题比较。
其中,词典规则法在冷启动和可解释性上优势明显,尤其适合舆情因子工程。下面是一个简化的词典打分伪代码:
# 情绪得分 = 情感词权重 × 程度副词系数 × 否定翻转
score = 0
for word in tokens:
if word in sentiment_dict:
w = sentiment_dict[word] # 基础权重,如 +2 / -3
if prev_word in degree_dict: # 程度副词
w *= degree_dict[prev_word] # 如“非常”=1.8
if prev_word in negations: # 否定词
w *= -1
score += w
# 强度归一化到 0~1
intensity = 1 / (1 + math.exp(-score))
该流程输出的不仅是极性,还包括连续强度值,可直接作为舆情因子输入后续模型。
三、常见情绪词典与资源
中文情绪词典生态已相对成熟,选型时需关注覆盖领域、标注粒度与授权协议。下表列出常见资源及其适用场景:
| 词典/资源 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| 知网 HowNet 情感词典 | 通用情感词 | 中文覆盖广,含正负极性 | 通用舆情基线 |
| 大连理工情感本体库 | 多类别情绪 | 含七大类情绪及强度 | 细粒度情绪分类 |
| BosonNLP 情感词典 | 社交媒体极性 | 微博语料训练,网络用语多 | 社交平台短文本 |
| NRC 情感词典 | 多语言多情绪 | 含八类情绪与正负极性 | 跨语言对比研究 |
| 自定义领域词典 | 业务专用 | 针对品牌、事件、黑话扩展 | 垂直舆情监控 |
四、案例与场景:一条微博的情绪拆解
以微博文本“这服务真是绝了,等了两个小时还没人理,服气!”为例:
- 极性:表面含“绝了”“服气”等正向词,但结合语境实为负向。
- 情绪类别:愤怒 + 讽刺。
- 强度:高,因含“两个小时”具体负面事实与感叹号。
- 词典触发:“没人理”负向,“服气”在反讽语境下需翻转。
这说明单纯依赖词典会误判反讽。实战中常引入转折词规则与上下文窗口:当“绝了”“服气”出现在负面事实之后,触发反讽标记,强制翻转极性。这类规则可显著提升社交媒体场景准确率。
五、误区与复盘
复盘时建议检查三项指标:极性准确率、强度区分度(高强度和低强度是否被有效分开)、类别混淆矩阵(哪些情绪最容易被混淆)。只有这三项稳定,情绪因子才具备进入舆情模型的价值。
掌握分类体系、极性、强度与词典这四个构件后,你就拥有了情绪分析的最小工程闭环。后续无论是规则调优还是模型微调,都可以在这套体系上叠加,而不是推倒重来。