TF-IDF(Term Frequency-Inverse Document Frequency)是自然语言处理中经典的文本特征表示方法,常用于文本分类、信息检索等场景。它通过计算词语在文档中的频率和在整个语料库中的逆文档频率,来衡量词语的重要性。
🧠 核心原理
词频(TF)
衡量一个词在文档中出现的频率,公式为:
$$ TF(t, d) = \frac{\text{词 } t \text{ 在文档 } d \text{ 中出现的次数}}{\text{文档 } d \text{ 的总词数}} $$逆文档频率(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_流程图, 词频统计_示意图, 文本分类_应用场景)