4、关键词提取:TF-IDF算法、TextRank算法、关键词权重计算、高频词分析
聊到情绪预警,很多人第一反应是看正负面词汇。但说实话,这远远不够。真正让我在项目中拍大腿的,是关键词提取这个环节。它就像一把手术刀,能精准切开海量文本,把那些真正引爆情绪的「火药桶」给揪出来。
我个人习惯把关键词提取比作「文本里的探针」。你想想看,一条微博里可能有一百个字,但真正让用户情绪炸裂的,往往就那一两个词。比如「退钱」「翻车」「割韭菜」——这些词一出现,基本就是预警信号拉满。
这一章,我会把四种最实用的方法掰开揉碎讲清楚。嗯,都是我在真实舆情项目里反复验证过的。
4.1 TF-IDF算法:老牌劲旅,但别小看它
TF-IDF,全称 Term Frequency-Inverse Document Frequency。说白了就是:一个词在单篇文档里出现得越多,同时在所有文档里出现得越少,那它就越重要。
公式其实不复杂:
TF-IDF = TF × IDF
TF = 某个词在文档中出现的次数 / 文档总词数
IDF = log(文档总数 / 包含该词的文档数 + 1)
我在项目中遇到过一件事:某品牌突然被大量负面评论刷屏。用TF-IDF一跑,排名第一的关键词不是「垃圾」也不是「差评」,而是「客服」。为什么?因为平时「客服」这个词出现频率很低,但那天突然暴增——这说明问题出在服务环节,而不是产品本身。你看,这就是TF-IDF的妙处。
4.2 TextRank算法:图模型的力量
TextRank的思路跟PageRank很像。它把每个词看作一个节点,词与词之间的共现关系看作边。然后通过迭代计算,给每个词打分。
我刚开始用TextRank时犯过一个错:直接用默认参数跑中文文本。结果出来的关键词全是「的」「了」「在」这种停用词。后来才意识到,中文文本必须先做分词和去停用词,否则TextRank会被高频虚词带偏。
TextRank的优势在于:它不需要标注数据,完全无监督。而且它考虑的是词与词之间的「社交关系」——一个词如果跟很多重要词同时出现,那它自己也变得重要。这在情绪分析里特别有用,因为情绪往往是通过一组词共同表达的。
4.3 关键词权重计算:不只是算个分数
很多人以为权重计算就是套公式出数字。其实没那么简单。我在实际项目中,通常会把权重拆成三个维度:
| 维度 | 含义 | 计算方式 |
|---|---|---|
| 统计权重 | 词本身的出现频率和分布 | TF-IDF、词频等 |
| 情感权重 | 词携带的情感强度 | 情感词典匹配 + 程度副词加权 |
| 突发权重 | 词在当前时段相比历史时段的异常程度 | 时间序列异常检测 |
举个例子。假设「质量」这个词,平时权重是0.3,今天突然涨到0.8。但光看这个还不够。如果「质量」同时搭配了「差」「问题」「投诉」这些负面词,那它的情感权重就会飙升。这时候,综合权重 = 统计权重 × 情感权重 × 突发权重,才能真正反映预警信号。
4.4 高频词分析:最朴素但最直观
高频词分析,说白了就是数数。哪个词出现次数最多,哪个就是高频词。但这里有个坑:高频不等于重要。
我见过很多新手,一上来就画词云,结果满屏都是「的」「了」「是」。这能看出什么?什么都看不出来。
真正的高频词分析,要分三步走:
- 去噪:去掉停用词、标点、数字、无意义符号
- 分组:按时间窗口(比如每小时、每天)统计高频词变化
- 对比:对比当前高频词与历史高频词,找出「新面孔」
我在做某次电商大促的情绪监控时,发现「发货」这个词在24小时内从第50名飙升到第3名。点进去一看,全是「发货慢」「不发货」「虚假发货」。这就是典型的高频词预警信号——不需要复杂算法,光靠数数就能发现问题。
知识体系总览
下面这张图,是我自己梳理的关键词提取知识框架。你可以把它当作本章的「地图」:
这四种方法,各有各的脾气。TF-IDF适合做「横向对比」,看某个词在整体语料中的稀缺性;TextRank适合做「纵向挖掘」,看词与词之间的关联;权重计算是「综合打分」,把多个维度揉在一起;高频词分析则是「快速扫描」,第一时间发现异常。
我个人建议,在实际项目中不要只用一种方法。我通常的做法是:先用高频词分析做快速扫描,发现异常后再用TF-IDF和TextRank做深度分析,最后用权重计算给出综合评分。这样既快又准。
好了,关键词提取这块就聊到这儿。记住一句话:工具是死的,场景是活的。别死磕算法,多想想你的数据长什么样、你的预警目标是什么。这才是关键。