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

Mon*_*eck 7 python tf-idf scikit-learn

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

当我对参数感到满意时,我对变得有些困惑use_idf,例如:

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

究竟是什么use_idf做的时候或真或假?

由于我们正在生成一个稀疏的Tfidf矩阵,因此没有理由选择一个稀疏的Tfidif矩阵。这似乎是多余的。

这篇文章很有趣,但似乎没有提到。

文档仅说Enable inverse-document-frequency reweighting,这不是很有启发性。

任何意见表示赞赏。

编辑 我想我想通了。这非常简单:
文本-​​>计数
Counts-> TF,这意味着我们只有原始计数或Counts-> TFIDF,这意味着我们拥有加权计数。

令我感到困惑的是……因为他们叫它,TfidfVectorizer只有当您选择它作为TFIDF时,我才意识到这是真的。您也可以使用它来创建TF。

Har*_*ddy 7

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

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

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

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

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


Pra*_*ila 1

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

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