TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索和文本挖掘的统计方法,用于评估一个词(或短语)在文档中的重要性. 它结合了两个指标: 词频 (Term Frequency, TF) 衡量一个词在文档中出现的频率, 逆文档频率 (Inverse Document Frequency, IDF) 衡量一个词在文档集合中的稀有性. TF-IDF 的核心思想是如果一个词在某个文档中出现的频率高, 但在其他文档中很少出现, 那么它对这个文档的区分能力更强.

TF-IDF 核心概念

  • 词频 (TF): 一个词在文档中出现的频率越高, 它对该文档的重要性就越大

  • 逆文档频率 (IDF): 出现一个词的文档在文档集合中占比越少, 这个词对文档的区分能力就越强

  • 结合 TF 和 IDF: 通过将 TF 和 IDF 相乘, 可以得到一个词在文档中的权重, 权重越高表示词越重要

TF 计算

  1. 简单词频

    \[TF(t, d) = 词 t 在文档 d 中出现的次数\]
    • 优点: 简单直接

    • 缺点: 没有考虑文档总词量的影响

  2. 词频比重

    \[TF(t, d) = \frac {词 t 在文档 d 中出现的次数}{文档 d 中所有词的总数}\]
    • 优点: 考虑了文档长度的影响

    • 缺点: 可能会低估高频词的重要性

  3. Log 正则化

    \[TF(t, d) = \log(1 + 词 t 在文档 d 中出现的次数)\]
    • 优点: 对高频词进行压缩, 避免其权重过高

    • 缺点: 计算可能更复杂

  4. 布尔词频

    \[TF(t, d) = \begin{cases} 1, & \text{如果词 } t \text{ 在文档 } d \text{ 中至少出现一次} \\ 0, & \text{否则} \end{cases}\]
    • 优点: 简单, 适合二分类

    • 缺点: 忽略了词频信息

IDF 计算

  1. 标准 IDF

    \[IDF(t, D) = \log\left(\frac {文档总数}{包含词 t 的文档数} \right)\]
    • 优点: 经典方法, 广泛使用
  2. 平滑 IDF

    \[IDF(t, D) = \log\left(\frac {文档总数 + 1}{包含词 t 的文档数 + 1} \right)\]
    • 优点: 避免分母为0的情况
  3. 概率 IDF

    \[IDF(t, D) = \log\left(\frac {文档总数 - 包含词 t 的文档数 + 0.5}{包含词 t 的文档数 + 0.5} \right)\]
    • 优点: 考虑了词的分布

    • 缺点: 计算复杂, 应用较少

TF-IDF 计算

\[TF-IDF(t, d, D) = TF(t, d) \times IDF(t, D)\]
  • 示例

    假设有以下文档集合:

    • 文档 1:"机器学习是人工智能的一个分支"

    • 文档 2:"深度学习是机器学习的一个重要领域"

    • 文档 3:"人工智能和机器学习正在改变世界"

    #### 步骤 1:预处理

    1. 分词:

      • 文档 1:["机器", "学习", "是", "人工智能", "的", "一个", "分支"]

      • 文档 2:["深度", "学习", "是", "机器", "学习", "的", "一个", "重要", "领域"]

      • 文档 3:["人工智能", "和", "机器", "学习", "正在", "改变", "世界"]

    2. 去除停用词:

      • 文档 1:["机器", "学习", "人工智能", "分支"]

      • 文档 2:["深度", "学习", "机器", "学习", "重要", "领域"]

      • 文档 3:["人工智能", "机器", "学习", "正在", "改变", "世界"]

    #### 步骤 2:计算词频(TF), 使用词频比重

    \[TF(机器, 文档1) = 1/4 = 0.25 \\ TF(学习, 文档1):1/4 = 0.25 \\ TF(人工智能, 文档1):1/4 = 0.25 \\ TF(分支, 文档1):1/4 = 0.25 \\\]

    #### 步骤 3:计算逆文档频率(IDF)

    • 词 “机器” 出现在文档 1、文档 2 和文档 3 中,共 3 个文档。 \(\text{IDF}(\text{机器}) = \log\left(\frac{3 + 1}{3 + 1}\right) = \log(1) = 0\)
    • 词 “学习” 出现在所有 3 个文档中。 \(\text{IDF}(\text{学习}) = \log\left(\frac{3 + 1}{3 + 1}\right) = 0\)
    • 词 “人工智能” 出现在文档 1 和文档 3 中。 \(\text{IDF}(\text{人工智能}) = \log\left(\frac{3 + 1}{2 + 1}\right) = \log\left(\frac{4}{3}\right) \approx 0.2877\)

    #### 步骤 4:计算 TF-IDF

    • 文档 1 中 “人工智能” 的 TF-IDF: \(\text{TF-IDF}(\text{人工智能}, \text{文档 1}) = 0.25 \times 0.2877 \approx 0.0719\)