TF-IDF

17 Mar 2025 | 6 分钟阅读

如今,信息每秒都在海量生成和共享,因此,在海量信息中进行筛选以发现相关见解至关重要。信息检索、自然语言处理和文本挖掘在此过程中都至关重要,而 TF-IDF 是该领域中的关键概念之一。

术语频率-逆文档频率,简称 TF-IDF,用于评估一个术语在一篇文档相对于文档语料库的重要性。根本上,TF-IDF 在确定一个术语与特定文档的相关性时,会考虑两个重要方面:

  • 词频 (TF):这部分计算一个词在文档中出现的次数。它假定一个词在文本中出现的次数越多,它就越与文本相关。然而,由于像“the”和“and”这样的常用词出现频率很高,但语义意义不大,因此仅凭 TF 可能不足以充分区分概念。
  • 逆文档频率 (IDF):这项技术解决了在整个语料库中区分常用词和不常用词的问题。通过取总文档数与包含该词的文档数的比率的对数,可以确定一个词的不常用程度。不常用且出现在较少文档中的词会被授予更高的 IDF 分数,这表明它们在区分这些文本方面的价值。

文档中一个词的 TF-IDF 分数是通过其词频和逆文档频率的乘积计算得出的。

TF-IDF=TF*IDF

面向文本数据的传统(基于计数)的特征工程技术属于词袋模型家族。这包括 N-grams、主题模型、词频、TF-IDF(词频-逆文档频率)等。尽管这些技术在从文本中获取特征方面很有用,但我们也会丢失其他信息,例如单词之间的上下文、结构、顺序和语义,因为模型实际上只是一个无序单词的集合。

对于非结构化文本,这可能是最简单的向量空间表示范式。简而言之,向量空间模型是将非结构化文本或任何其他类型的数据表示为数值向量的数学表示,其中每个向量的维度代表一个不同的特征或属性。在词袋模型中,每个文本文档都由一个数值向量表示,其中每个维度是语料库中的一个特定词,而该值可能是其加权值、出现次数(由 1 或 0 表示)或在文档中的频率。该模型之所以得名,是因为它将每个文档视为其自身单词的集合,而忽略语法、单词顺序和序列。

输出

TF-IDF

TF-IDF 模型

将词袋模型应用于大型语料库时,可能会出现一些问题。某些词可能在所有文档中频繁出现,并且由于特征向量基于绝对词频率,因此可能会使特征集中的其他词显得过时。特别是,不太常用的词可能提供更有趣、更有用的特征来帮助区分不同的组。这时 TF-IDF 就派上用场了。术语频率-逆文档频率称为 TF-IDF。词频 (tf) 和逆文档频率 (idf) 是构成此组合的两个指标。该方法最初是作为根据用户请求对搜索引擎结果进行排名的度量而创建的,现在则用于文本特征提取和信息检索。

词频

任何文档向量中的词频都由该词在特定文档中的原始频率值表示。

有时,您也可以使用对数或平均频率来规范化绝对原始频率。对于我们的计算,我们使用原始频率。换句话说,这是单词的总出现次数乘以它在文档中出现的次数的乘积。每个文档都有独特的词频。

TF-IDF

现在我们将计算词频。

输出

TF-IDF

逆文档频率

通过将我们语料库中的文档总数除以每个词的文档频率,然后对结果应用对数缩放,我们可以获得逆文档频率,即 idf,它是每个词的文档频率的倒数。

在某些实现中,将在每个词的文档频率中加 1,以表明我们的语料库中多了一个文档,其中包含实质上是词汇表中所有单词的单词。这可以平滑逆文档频率,避免任何除以零的问题。这可以防止具有潜在 0 idf 的词被忽略。

逆文档频率量化了给定词的重要性。在计算 TF 时,每个词都获得相等的权重。另一方面,众所周知,某些词,如“is”、“of”和“that”,可能被频繁使用但并不非常重要。因此,我们必须放大不常用的词,同时减小常用词的权重。

在数学上,我们对 idf 的实现可以表示如下:

TF-IDF

文档数量的对数除以包含单词 w 的文档数量。逆数据频率决定了语料库中稀有词的权重。

假设一个包含 100 个单词的文档,其中单词“cat”出现 3 次。那么“cat”的词频(即 tf)为 (3 / 100) = 0.03。现在,假设我们有 1000 万个文档,其中单词“cat”出现一千次。然后,逆文档频率(即 idf)的计算方法是 log(10,000,000 / 1,000) = 4。因此,Tf-idf 权重是这些数量的乘积:0.03 * 4 = 0.12。

现在我们将计算逆文档频率。

输出

TF-IDF

TF-IDF 只是 TF 乘以 IDF。

TF-IDF

因此,TF-IDF 是分配给我们数据集中的每个文档中的每个单词的分数。此外,一个单词的 TF-IDF 值随着该单词在文档中的每次出现而稳步降低,但随着它在单词中的每次出现而增加。

输出

TF-IDF
TF-IDF