1. TF-IDF算法核心原理剖析
TF-IDF(Term Frequency-Inverse Document Frequency)是自然语言处理领域最基础且实用的关键词提取算法之一。这个看似简单的数学模型背后蕴含着深刻的文本分析思想,我在实际项目中多次验证了它的有效性。
1.1 词频(TF)的深层理解
词频计算看似简单,但在实际应用中存在多个工程细节需要考虑。标准TF公式为:
code复制TF(t,d) = (词t在文档d中出现的次数) / (文档d的总词数)
但实际应用中我们常使用对数词频或增强型词频:
- 对数词频:log(1 + raw_count)
- 增强词频:0.5 + (0.5 * raw_count) / max_count
提示:长文档中直接使用原始词频会导致数值过大,建议总是进行归一化处理。我在处理新闻稿件时发现,对数变换能更好平衡不同长度文档间的比较。
1.2 逆文档频率(IDF)的工程实践
IDF的经典计算公式为:
code复制IDF(t) = log(语料库中文档总数 / (包含词t的文档数 + 1))
这里有几个关键细节:
- "+1"是为了避免除零错误(拉普拉斯平滑)
- 对数底数通常取自然对数e,但有些系统使用10
- 对于超大语料库,建议对文档总数进行缩放处理
我在处理中文维基百科数据时发现,直接计算IDF会导致数值过大,最终采用了对数缩放:
python复制def scaled_idf(doc_count, term_docs):
return 1 + log((1 + doc_count) / (1 + term_docs))
1.3 TF-IDF的数学本质
TF-IDF = TF × IDF 这个简单的乘法运算实际上建立了局部重要性与全局重要性的乘积关系。从信息论角度看:
- TF代表词语在文档内的信息密度
- IDF代表词语在语料库中的信息价值
这种设计使得:
- 高频词在单个文档中有高TF值
- 常见词在整个语料库中有低IDF值
- 两者相乘后,只有那些在特定文档中频繁出现且在整个语料库中少见的词才会获得高权重
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 红楼梦关键词提取实战
2.1 文本预处理的关键步骤
处理古典文学作品时,预处理阶段尤为
