📚 TF-IDF 算法

🎯 什么是 TF-IDF?

TF-IDF 是评估一个词在文档中重要程度的算法。它由两部分组成:

📊

TF (词频)

这个词在文档中出现的频率

🔍

IDF (逆文档频率)

这个词在所有文档中的稀有程度

🍕 生活例子:选班干部

想象你要选一个班干部,你会考虑两个因素:

  • TF(词频):这个同学在班级里出现的频率高不高?
    → 就像"的"、"是"这些词,在每篇文章都出现很多次
  • IDF(逆文档频率):这个同学是不是很特别?
    → 就像"人工智能"这个词,只在特定文章中出现,很稀有

TF-IDF = TF × IDF:既要出现频率高,又要很特别,这样的词才重要!

📊 第一部分:TF (Term Frequency) - 词频

TF 表示一个词在文档中出现的频率。出现次数越多,TF 值越高。

TF(词, 文档) = 词在文档中出现的次数 / 文档总词数

💡 举个例子

假设有一篇文档:"我喜欢机器学习,机器学习很有趣"

  • 文档总词数:8 个词
  • "机器学习" 出现了 2 次
  • TF("机器学习") = 2 / 8 = 0.25
  • "我" 出现了 1 次
  • TF("我") = 1 / 8 = 0.125
📄 文档示例:

机器学习 有趣 机器学习 未来

统计: 机器学习: 2次 有趣: 1次 未来: 1次

🔍 第二部分:IDF (Inverse Document Frequency) - 逆文档频率

IDF 表示一个词的稀有程度。在所有文档中出现得越少,IDF 值越高(越重要)。

IDF(词) = log(文档总数 / 包含该词的文档数)

💡 举个例子

假设有 3 篇文档:

  • 文档1:"我喜欢机器学习"
  • 文档2:"机器学习很有趣"
  • 文档3:"我喜欢编程"

计算 IDF:

  • "机器学习" 出现在 2 篇文档中
    IDF("机器学习") = log(3 / 2) = log(1.5) ≈ 0.405
  • "我" 出现在 2 篇文档中
    IDF("我") = log(3 / 2) ≈ 0.405
  • "编程" 只出现在 1 篇文档中
    IDF("编程") = log(3 / 1) = log(3) ≈ 1.099 (更稀有,更重要!)

🎭 为什么 IDF 要取对数?

就像用放大镜看东西一样,对数函数可以:

  • 让数值变化更平滑
  • 防止某些词因为太稀有而分数过高
  • 让结果更容易比较

✨ 第三部分:TF-IDF = TF × IDF

把 TF 和 IDF 相乘,就得到了 TF-IDF 分数。分数越高,说明这个词越重要!

TF-IDF(词, 文档) = TF(词, 文档) × IDF(词)

💡 完整计算示例

假设有 3 篇文档,我们要计算文档1中"机器学习"的 TF-IDF:

步骤1:计算 TF

文档1:"我喜欢机器学习"

TF("机器学习", 文档1) = 1 / 4 = 0.25

步骤2:计算 IDF

"机器学习" 出现在 2 篇文档中(文档1和文档2)

IDF("机器学习") = log(3 / 2) ≈ 0.405

步骤3:计算 TF-IDF

TF-IDF("机器学习", 文档1) = 0.25 × 0.405 = 0.101

🎨 示例

让我们看看不同词的 TF-IDF 分数对比:

📚 文档集合(3篇文档)

文档1:

我喜欢机器学习,机器学习很有趣

文档2:

机器学习是未来的趋势

文档3:

我喜欢编程和算法

📊 文档1中各词的 TF-IDF 分数

出现次数 TF 包含该词的文档数 IDF TF-IDF 重要性
机器学习 2 0.25 2 0.405 0.101
1 0.125 2 0.405 0.051 📌
喜欢 1 0.125 2 0.405 0.051 📌
有趣 1 0.125 1 1.099 0.137
0 0 3 0 0

观察:"机器学习"和"有趣"的 TF-IDF 分数最高,说明它们最能代表这篇文档的特点!

🎮 演示

试试输入不同的词和文档,看看 TF-IDF 分数如何变化!

🚀 实际应用

🔍

搜索引擎

找出最能代表网页的关键词

📝

文本分类

识别文档的主题和类别

💬

推荐系统

找到相似的文章和内容

✨ 总结

🎯 TF-IDF 的核心思想

  • TF(词频):词在文档中出现得越多,越重要
  • IDF(逆文档频率):词在所有文档中出现得越少,越特别,越重要
  • TF-IDF:结合两者,找出既常见又特别的词
  • 过滤停用词:像"的"、"是"这些词,虽然出现多,但太常见,TF-IDF 分数很低
💡 记忆口诀:

出现多 + 很稀有 = 重要词!