背景
当我们处理文本任务时,经常会遇到一个核心问题:计算机如何理解一段文字?机器并不懂语言,它只能理解数字。所以无论是做文本分类、搜索引擎、文本相似度、关键词抽取还是推荐系统,都绕不开一个关键步骤:把文本转成可用于计算的数字特征(向量)。
而在传统 NLP 中,最经典、最稳定、最常用的特征工程方法之一,就是 TF-IDF。它不用深度学习,也不需要训练模型,却能用统计方式给每个词赋予一个重要性评分,从而帮助我们提取关键词、计算相似度、构建检索系统,是理解 NLP 的一个经典起点。
核心定义
TF-IDF 是一种衡量某个词对某篇文章有多重要的方法。
- 如果一个词在某篇文章里出现很多次(说明这篇文章在强调它)→ TF 高
- 如果这个词在所有文章里到处都有(比如的、是、我们)→ 说明它不稀有、不具区分度 → IDF 低
- 反之,一个词在很多文章里都不出现,却在某篇里出现 → 说明它很能代表这篇文章 → IDF 高
所以:
TF-IDF = 词在文档中出现得多(TF) × 词在全体文档中越稀有越重要(IDF)
1. 为什么要 TF-IDF?
我们在做关键词抽取、文本分类、相似度计算、搜索引擎(最经典应用)、文本向量化(传统 NLP 的基本操作)时,都需要把文字变成数值特征,而 TF-IDF 就是一种经典的词重要性数值化方法。
2. TF(Term Frequency)是什么?
定义
词频:某个词在一篇文档里出现的频率。
最常见形式:
TF(t,d) = count(t,d) / sum(count(w, d))
意思就是:词 t 在文档 d 的出现次数 / 文档总词数。
举例
文档 d:我 爱 北京 北京 天安门
- 北京出现 2 次
- 总词数 5
TF(北京,d)=2/5=0.4
3. IDF(Inverse Document Frequency)是什么?
定义
词的逆文档频率:某个词在整个语料库中出现得越少,它越能区分文档 → 越重要。
最常见形式:
IDF(t) = log(N / df(t))
- N:语料库中文档数量
- df(t):包含词 t 的文档数量(Document Frequency)
直觉
- 如果所有文章都有我们,那它无法区分文章 → IDF 低
- 如果只有少数文章有量子计算,它能强烈区分文章 → IDF 高
平滑版(更常用)
为了避免某个词从不出现导致除零:
IDF(t) = log((N + 1) / (df(t) + 1)) + 1
4. TF-IDF 合起来是什么?
TFIDF(t,d)=TF(t,d)×IDF(t)
一个词在文档里出现多(TF)且在全库里稀有(IDF) → TFIDF 高 → 关键词
5. 手算一个完整例子(你会彻底懂)
我们有 3 篇文档:

