TF-IDF(Term Frequency-Inverse Document Frequency)是自然语言处理中经典的文本特征表示方法,常用于文本分类、信息检索等场景。它通过计算词语在文档中的频率和在整个语料库中的逆文档频率,来衡量词语的重要性。

🧠 核心原理

  1. 词频(TF)
    衡量一个词在文档中出现的频率,公式为:
    $$ TF(t, d) = \frac{\text{词 } t \text{ 在文档 } d \text{ 中出现的次数}}{\text{文档 } d \text{ 的总词数}} $$

    TF-IDF_原理图
  2. 逆文档频率(IDF)
    衡量一个词的普遍重要性,公式为:
    $$ IDF(t, D) = \log \frac{\text{语料库总文档数}}{\text{包含词 } t \text{ 的文档数} + 1} $$
    通过TF-IDF结合,可以过滤常见词(如“的”“是”),保留对分类更有意义的特征。

📚 应用场景

  • 垃圾邮件过滤:通过区分关键词(如“中奖”“免费”)的TF-IDF值识别垃圾邮件
  • 新闻分类:提取标题和正文中的关键术语进行主题划分
  • 文档相似度计算:基于TF-IDF向量的余弦相似度判断文档关联性
  • 关键词提取:高TF-IDF值的词通常为文档核心内容

📌 代码示例(Python)

from sklearn.feature_extraction.text import TfidfVectorizer

# 示例文本
corpus = [
    "机器学习是人工智能的核心",
    "自然语言处理需要文本分类技术",
    "TF-IDF用于衡量词语重要性"
]

# 构建TF-IDF矩阵
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(corpus)

# 查看词汇表及对应TF-IDF值
feature_names = vectorizer.get_feature_names_out()
print("词汇表:", feature_names)
print("TF-IDF矩阵:\n", tfidf_matrix.toarray())

🔍 扩展阅读

想深入了解TF-IDF的优化方法?可参考:
/ai-tutorials/nlp-text-classification/tfidf_optimization

(图片关键词:TF-IDF_流程图, 词频统计_示意图, 文本分类_应用场景)