我在Python 2.7中使用sklearn包中的TfidfTransformer。
当我对这些论点感到满意时,我对use_idf
感到有点困惑,如:
TfidfVectorizer(use_idf=False).fit_transform(<corpus goes here>)
use_idf
在虚假或真实时做了什么?
由于我们正在生成稀疏的Tfidf矩阵,因此有一个参数选择稀疏的Tfidif矩阵是没有意义的;这似乎是多余的。
This post很有意思,但似乎无法确定它。
documentation仅表示Enable inverse-document-frequency reweighting
,这并不是很有启发性。
任何评论都表示赞赏。
修改
我想我明白了。这很简单:
文字 - &gt;计数
计数 - &gt; TF,意思是我们只有原始计数
要么
计数 - &gt; TFIDF,意思是我们有加权计数。
令我困惑的是......因为他们称之为TfidfVectorizer
我没有意识到只有当你选择它作为TFIDF时才是真的。你也可以用它来创建一个TF。
答案 0 :(得分:1)
通常,tf-idf权重由两个项组成:第一个计算归一化的术语频率(TF)。一个单词在文档中出现的次数除以该文档中单词的总数;第二项是文档的逆向频率(IDF),用语料库中文档数的对数除以特定术语出现的文档数得出。
TF :术语频率,它测量术语在文档中出现的频率。 TF(t)=(术语t在文档中出现的次数)/(文档中术语的总数)
IDF :反文档频率,它衡量术语的重要性。在计算TF时,所有术语都被视为同等重要。但是,众所周知,某些术语(例如“是”,“属于”和“那个”)可能会出现很多次,但意义不大。因此,我们需要通过计算以下内容来权衡常用条款,同时扩大稀有条款:
IDF(t)= log_e(文档总数/其中带有术语t的文档数)。
如果您提供use_idf = False,您将仅使用TF得分。
答案 1 :(得分:0)
在术语频率(TF)计算中,所有术语都被视为同等重要。甚至某些在确定相关性方面没有重要意义的术语也会在计算中被处理。
缩小具有高收集频率的项的权重有助于计算。逆文档频率将术语的TF权重减少一个因其收集频率而增长的因子。因此该术语的文档频率DF用于衡量其权重。