我在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
,这不是很有启发性。
任何评论表示赞赏。
编辑我想我想通了。其实很简单:
文本 -->计数
计数 --> TF,这意味着我们只有原始计数或计数 --> TFIDF,这意味着我们有加权计数。
让我感到困惑的是...既然他们称之为TfidfVectorizer
我就没有意识到只有当你选择它作为TFIDF时,它才是真的。您也可以使用它来创建 TF。
通常,tf-idf 权重由两个项组成:第一个项计算归一化项频率 (TF),即。 单词在文档中出现的次数除以该文档中的单词总数; 第二个术语是反向文档频率 (IDF),计算方法是语料库中文档数量的对数除以出现特定术语的文档数量。
TF:术语频率,用于衡量术语在文档中出现的频率。TF(t) = (术语 t 在文档中出现的次数)/(文档中的术语总数)
IDF:反向文档频率,用于衡量术语的重要性。在计算 TF 时,所有项都被认为同等重要。但是,众所周知,某些术语,例如"is","of"和"that",可能会出现很多次,但并不重要。因此,我们需要通过计算以下内容来权衡频繁的术语,同时扩大稀有术语:
IDF(t) = log_e(文档总数/包含术语 t 的文档数量)。
如果你给出 use_idf=False,你将只使用 TF 得分。
在术语频率 (TF) 计算中,所有术语都被认为同等重要。甚至某些在确定相关性方面不重要的术语也会在计算中被提及。
缩小具有高收集频率的术语的权重有助于计算。反向文档频率将术语的 TF 权重降低一个因子,该因子随其收集频率而增长。因此,该术语的文档频率DF用于缩放其权重。