我正在使用 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。
通常,tf-idf 权重由两项组成:第一项计算归一化项频率 (TF),又名。某个单词在文档中出现的次数除以该文档中的单词总数;第二项是逆文档频率 (IDF),计算方式为语料库中文档数量除以特定术语出现的文档数量的对数。
TF:术语频率,衡量术语在文档中出现的频率。 TF(t) =(术语 t 在文档中出现的次数)/(文档中术语的总数)
IDF:逆文档频率,衡量术语的重要性。在计算 TF 时,所有术语都被认为同等重要。然而,众所周知,某些术语,例如“是”、“属于”和“那个”,可能会出现很多次,但重要性不大。因此,我们需要通过计算以下内容来权衡频繁出现的术语,同时扩大罕见的术语:
IDF(t) = log_e(文档总数 / 包含术语 t 的文档数量)。
如果您指定 use_idf=False,您将仅使用 TF 进行评分。
在词频(TF)计算中,所有术语都被认为同等重要。即使某些对于确定相关性并不重要的术语也会在计算中被考虑。
降低收集频率高的术语的权重有助于计算。逆文档频率将术语的 TF 权重降低一个因子,该因子随其收集频率而增长。因此该术语的文档频率DF用于衡量其权重。
添加 sklearn 文档的链接,了解其 TF-IDF 与教科书的略有不同: https://scikit-learn.org/stable/modules/feature_extraction.html#tfidf-term-weighting