TF-IDF(Term Frequency-Inverse Document Frequency)词频-逆文档频率

1. 什么是 TF-IDF?

TF-IDF(词频-逆文档频率) 是一种用于 文本信息检索(IR, Information Retrieval)文本挖掘(Text Mining) 的统计方法。它衡量 一个单词(词项,Term)在一个文档集合(Corpus)中的重要性,常用于 关键词提取、文档排序、文本搜索和推荐系统

核心思想

  • TF(Term Frequency, 词频):衡量一个词在某个文档中出现的次数,表示该词对该文档的重要性。
  • IDF(Inverse Document Frequency, 逆文档频率):衡量一个词在整个文档集合中的重要性,越少出现的词越重要,避免常见词(如 “the”、“is”)的影响。

2. TF-IDF 计算公式

TF-IDF 是由 词频(TF)逆文档频率(IDF) 组成:

2.1 词频(TF, Term Frequency)

TF 衡量某个词 t t t 在某篇文档 d d d 中出现的频率,计算公式:
T F ( t , d ) = n t N TF(t, d) = \frac{n_t}{N} TF(t,d)=Nnt

  • n t n_t nt:单词 t t t 在文档 d d d 中出现的次数
  • N N N:文档 d d d 中的总单词数

示例

文档1: "机器学习是人工智能的一个重要分支"
  • “机器学习” 在该文档中出现 1 次,总词数 7 个
  • TF(“机器学习”, 文档1) = 1 / 7 ≈ 0.14

2.2 逆文档频率(IDF, Inverse Document Frequency)

IDF 衡量某个词在整个语料库中出现的普遍程度,公式:
I D F ( t ) = log ⁡ D D t + 1 IDF(t) = \log \frac{D}{D_t + 1} IDF(t)=logDt+1D

  • D D D:文档总数
  • D t D_t Dt:包含该单词 t t t 的文档数
  • 这里 + 1 +1 +1 用于避免分母为 0。

示例
假设:

  • 总文档数 D = 1000 D = 1000 D=1000
  • 词 “机器学习” 出现在 50 篇文档中,则:
    I D F ( " 机器学习 " ) = log ⁡ 1000 50 + 1 = log ⁡ 19.6 ≈ 1.29 IDF("机器学习") = \log \frac{1000}{50 + 1} = \log 19.6 ≈ 1.29 IDF("机器学习")=log50+11000=log19.61.29
  • “的” 出现在 950 篇文档中:
    I D F ( " 的 " ) = log ⁡ 1000 950 + 1 ≈ 0.02 IDF("的") = \log \frac{1000}{950 + 1} ≈ 0.02 IDF("")=log950+110000.02
  • 罕见词(如 “深度学习”)可能仅出现在 10 篇文档中:
    I D F ( " 深度学习 " ) = log ⁡ 1000 10 + 1 = log ⁡ 91 ≈ 1.96 IDF("深度学习") = \log \frac{1000}{10 + 1} = \log 91 ≈ 1.96 IDF("深度学习")=log10+11000=log911.96
    => 越少见的词,IDF 值越大,代表更重要!

2.3 计算 TF-IDF

T F - I D F ( t , d ) = T F ( t , d ) × I D F ( t ) TF\text{-}IDF(t, d) = TF(t, d) \times IDF(t) TF-IDF(t,d)=TF(t,d)×IDF(t)
示例:

  • TF(“机器学习”) = 0.14
  • IDF(“机器学习”) = 1.29
    T F - I D F ( " 机器学习 " , 文档 1 ) = 0.14 × 1.29 ≈ 0.18 TF\text{-}IDF("机器学习", 文档1) = 0.14 \times 1.29 ≈ 0.18 TF-IDF("机器学习",文档1)=0.14×1.290.18

最终,“机器学习” 的重要性比 “的” 高得多,因为 “的” 是一个无关紧要的高频词。


3. TF-IDF 的应用

3.1 搜索引擎(Search Engines)
  • 计算 用户查询关键词文档 的相似性,进行 搜索结果排序
  • 例如,用户搜索 “机器学习基础”,搜索引擎会:
    1. 计算 “机器学习” 和 “基础” 在各个文档中的 TF-IDF 值。
    2. 选取 TF-IDF 总和最高的文档,排在前面。
3.2 关键词提取(Keyword Extraction)
  • 自动提取文章中最重要的关键词,如:
    • 新闻标题生成
    • 文档摘要
    • 主题建模
3.3 文本分类(Text Classification)
  • 邮件垃圾过滤:垃圾邮件 vs. 非垃圾邮件
  • 情感分析:正面情感 vs. 负面情感
  • 新闻分类:体育 vs. 娱乐 vs. 科技
3.4 推荐系统(Recommendation System)
  • 计算 用户感兴趣的词,匹配 相似文章 进行个性化推荐。

4. Python 代码实现 TF-IDF

使用 TfidfVectorizer 计算 多个文档的 TF-IDF

from sklearn.feature_extraction.text import TfidfVectorizer

# 示例文档
documents = [
    "机器学习是人工智能的一个分支",
    "深度学习是机器学习的一个分支",
    "人工智能包含机器学习和深度学习"
]

# 初始化 TF-IDF 向量化器
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(documents)

# 输出 TF-IDF 词汇
print("词汇索引:", vectorizer.vocabulary_)

# 输出 TF-IDF 值
print("TF-IDF 矩阵:\n", tfidf_matrix.toarray())

输出示例

词汇索引:
{'机器学习': 0, '人工智能': 1, '深度学习': 2, '分支': 3, '包含': 4}
TF-IDF 矩阵:
[[0.707  0.707  0.      0.707  0.    ]
 [0.707  0.      0.707  0.707  0.    ]
 [0.577  0.577  0.577  0.      0.577]]
  • “机器学习”、“深度学习”、“人工智能” 的 TF-IDF 值较高,表明它们是这些文档的核心概念。

5. TF-IDF 的优缺点

5.1 优点

简单高效:TF-IDF 计算简单,适用于大规模文本处理。
不需要大量标注数据:无需深度学习训练,直接基于文本计算。
适用于信息检索和文本分类

5.2 缺点

无法捕捉词序和语义信息

  • “苹果公司” 与 “苹果 水果” 意义不同,但 TF-IDF 认为它们相似。
    对长文本效果一般
  • TF-IDF 主要基于词频,对 长文本中词语关系 无法建模。
    无法处理 OOV(Out-of-Vocabulary, 未登录词)
  • 训练时没见过的新词无法计算 TF-IDF。

6. TF-IDF vs. 其他 NLP 技术

方法特点应用场景
TF-IDF基于词频统计,无需训练关键词提取、搜索引擎
Word2Vec(词向量)词与词的相似性,捕捉语义词嵌入、推荐系统
BERT(预训练语言模型)双向 Transformer,语境感知机器阅读、问答、NER

7. 总结

  • TF-IDF 是 NLP 领域最经典的文本表示方法之一,用于衡量 单词在文档中的重要性
  • 核心公式
    • TF(词频):衡量某个单词在文档中的频率。
    • IDF(逆文档频率):衡量某个单词在整个语料库中的重要性。
    • TF-IDF = TF × IDF
  • 主要应用:搜索引擎、文本分类、关键词提取、推荐系统等。
  • 局限性:无法捕捉语义信息,无法处理长文本关系。

尽管 深度学习(如 BERT) 已成为主流,TF-IDF 仍然是 搜索和信息检索的基石,在现实应用中依然广泛使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值