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 计算
-
简单词频
\[TF(t, d) = 词 t 在文档 d 中出现的次数\]-
优点: 简单直接
-
缺点: 没有考虑文档总词量的影响
-
-
词频比重
\[TF(t, d) = \frac {词 t 在文档 d 中出现的次数}{文档 d 中所有词的总数}\]-
优点: 考虑了文档长度的影响
-
缺点: 可能会低估高频词的重要性
-
-
Log 正则化
\[TF(t, d) = \log(1 + 词 t 在文档 d 中出现的次数)\]-
优点: 对高频词进行压缩, 避免其权重过高
-
缺点: 计算可能更复杂
-
-
布尔词频
\[TF(t, d) = \begin{cases} 1, & \text{如果词 } t \text{ 在文档 } d \text{ 中至少出现一次} \\ 0, & \text{否则} \end{cases}\]-
优点: 简单, 适合二分类
-
缺点: 忽略了词频信息
-
IDF 计算
-
标准 IDF
\[IDF(t, D) = \log\left(\frac {文档总数}{包含词 t 的文档数} \right)\]- 优点: 经典方法, 广泛使用
-
平滑 IDF
\[IDF(t, D) = \log\left(\frac {文档总数 + 1}{包含词 t 的文档数 + 1} \right)\]- 优点: 避免分母为0的情况
-
概率 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:
["机器", "学习", "是", "人工智能", "的", "一个", "分支"]
-
文档 2:
["深度", "学习", "是", "机器", "学习", "的", "一个", "重要", "领域"]
-
文档 3:
["人工智能", "和", "机器", "学习", "正在", "改变", "世界"]
-
-
去除停用词:
-
文档 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\)
-