TF-IDF(词频-逆文档频率)

TF-IDF 完整讲解

一、全称

TF:Term Frequency 词频

IDF:Inverse Document Frequency 逆文档频率

合起来 TF-IDF = 词频-逆文档频率,是文本挖掘、检索最经典的词语权重计算算法,用来衡量一个词在某篇文档里的重要程度。

二、TF(词频)

含义:某个词在当前文档 中出现的次数,出现越多,TF越高。

公式:

TF(t,d)=词t在文档d中出现次数文档d总词数 TF(t,d) = \frac{词t在文档d中出现次数}{文档d总词数} TF(t,d)=文档d总词数词t在文档d中出现次数

举例:文档共100个词,"人工智能"出现5次 → TF=5/100=0.05

三、IDF(逆文档频率)

作用:惩罚到处都出现的通用词(的、是、我、今天),突出独有关键词。

逻辑:一个词如果在绝大多数文档都出现,说明它区分度极低,IDF就小;只在少数文档出现,IDF大。

公式:

IDF(t)=log⁡(总文档数N包含词t的文档数nt+1) IDF(t) = \log\left( \frac{总文档数N}{包含词t的文档数n_t + 1} \right) IDF(t)=log(包含词t的文档数nt+1总文档数N)

+1 是平滑处理,避免分母为0(新词没在任何文档出现)。

四、TF-IDF 最终权重

TF−IDF(t,d)=TF(t,d)×IDF(t) TF-IDF(t,d) = TF(t,d) \times IDF(t) TF−IDF(t,d)=TF(t,d)×IDF(t)

权重含义

  1. TF大、IDF大:词在本文高频、全局很少见 → 核心关键词
  2. TF大、IDF小:词到处都有(停用词)→ 不重要
  3. TF小、IDF大:稀有词,单次出现也有一定区分度

五、直观例子

语料库共1000篇文章:

  1. "的":几乎1000篇都有 → IDF极小,TF-IDF几乎为0,过滤掉
  2. "手机":800篇有 → IDF偏小
  3. "大模型微调":仅30篇有 → IDF很大
    如果某篇论文里"大模型微调"反复出现,它的TF-IDF值会远高于普通词汇,就是这篇文章的主题词。

六、常见用途

  1. 搜索引擎:计算关键词和搜索文本匹配度,排序检索结果
  2. 文本关键词提取:提取文章核心词
  3. 文本向量化:把句子/文档转为数字向量,用于分类、聚类、相似度计算
  4. 舆情分析、NLP预处理

七、优缺点

优点

  • 简单高效,计算速度快
  • 天然过滤无意义停用词
  • 可直接转向量用于机器学习模型

缺点

  1. 只统计词频,不理解语义,无法区分多义词、近义词
  2. 不考虑词语顺序、上下文(Bag-of-Words 词袋假设)
  3. 长文档天然TF偏低,需要额外归一化

八、工具实现

Python 常用库一键计算:

  1. sklearn.feature_extraction.text.TfidfVectorizer(最常用)
  2. jieba分词 + TF-IDF 提取中文关键词
  3. Gensim TfidfModel 处理大规模语料

极简示例伪代码

python 复制代码
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ["AI大模型应用", "AI图像识别", "汽车自动驾驶"]
tfidf = TfidfVectorizer()
res = tfidf.fit_transform(corpus)
# 输出每个词的TF-IDF权重
print(dict(zip(tfidf.get_feature_names_out(), res.toarray()[0])))
相关推荐
Rosanci6 分钟前
Codex 下载与本地部署实战:从安装到运行全流程指南
开发语言·前端·算法·chatgpt·codex
我爱工作&工作love我15 分钟前
P14358 [CSP-J 2025] 座位
算法
旖旎夜光16 分钟前
LeetCode 1576: 替换所有的问号(模拟) —— 题解
c++·学习·算法·leetcode·力控
朝朝辞暮i18 分钟前
C++ 第 38 课:线程、SingleThreadedExecutor、MultiThreadedExecutor、Callback Group
开发语言·c++·算法·ros2
(Charon)23 分钟前
【C++面试】互斥锁与读写锁:使用场景、实现原理与写饥饿问题
c++·算法
longlongzihan26 分钟前
回溯法详解:LeetCode 46. 全排列
算法·leetcode·回溯
秋名RG28 分钟前
时间复杂度、空间复杂度与算法稳定性详解
数据结构·算法·排序算法
白色的北极熊33 分钟前
c语言 求余运算符
c语言·数据结构·算法
波尔德1 小时前
Origin 2024 绘制钟形正态分布曲线:填充颜色并导出透明 PNG
人工智能·算法
Omics Pro1 小时前
微软:多模态生物世界模型
数据库·人工智能·算法·microsoft·机器学习·自然语言处理