在sklearn中创建TfidfTransformer时,“use_idf”到底做了什么?

问题描述 投票:0回答:3

我正在使用 Python 2.7 中 sklearn 包中的 TfidfTransformer。

当我逐渐适应这些论点时,我对

use_idf
变得有点困惑,如:

TfidfVectorizer(use_idf=False).fit_transform(<corpus goes here>)

当 false 或 true 时,

use_idf
究竟会做什么?

由于我们正在生成稀疏 Tfidf 矩阵,因此为 choose 稀疏 Tfidif 矩阵提供参数是没有意义的;这似乎是多余的。

这篇文章很有趣,但似乎没有抓住它。

文档只说,

Enable inverse-document-frequency reweighting
,这并不是很有启发性。

任何意见表示赞赏。

编辑 我想我明白了。真的很简单:
文字 --> 计数
计数 --> TF,这意味着我们只有原始计数 或者 计数 --> TFIDF,这意味着我们有加权计数。

让我困惑的是......因为他们称之为

TfidfVectorizer
我没有意识到只有当你选择它作为TFIDF时才是正确的。您也可以使用它来创建一个 TF。

python scikit-learn tf-idf
3个回答
7
投票

通常,tf-idf 权重由两项组成:第一项计算归一化项频率 (TF),又名。某个单词在文档中出现的次数除以该文档中的单词总数;第二项是逆文档频率 (IDF),计算方式为语料库中文档数量除以特定术语出现的文档数量的对数。

TF:术语频率,衡量术语在文档中出现的频率。 TF(t) =(术语 t 在文档中出现的次数)/(文档中术语的总数)

IDF:逆文档频率,衡量术语的重要性。在计算 TF 时,所有术语都被认为同等重要。然而,众所周知,某些术语,例如“是”、“属于”和“那个”,可能会出现很多次,但重要性不大。因此,我们需要通过计算以下内容来权衡频繁出现的术语,同时扩大罕见的术语:

IDF(t) = log_e(文档总数 / 包含术语 t 的文档数量)。

如果您指定 use_idf=False,您将仅使用 TF 进行评分。


1
投票

在词频(TF)计算中,所有术语都被认为同等重要。即使某些对于确定相关性并不重要的术语也会在计算中被考虑。

降低收集频率高的术语的权重有助于计算。逆文档频率将术语的 TF 权重降低一个因子,该因子随其收集频率而增长。因此该术语的文档频率DF用于衡量其权重。


0
投票

添加 sklearn 文档的链接,了解其 TF-IDF 与教科书的略有不同: https://scikit-learn.org/stable/modules/feature_extraction.html#tfidf-term-weighting

© www.soinside.com 2019 - 2024. All rights reserved.