CountVectorizer + TfidfTransformer和TfidfVectorizer有什么区别

问题描述

要将ML算法应用于文本,必须以数字表示。使用sklearn进行此操作的一些方法是:

  1. CountVectorizer

  2. CountVectorizer + TfidfTransformer

  3. TfidfVectorizer

CountVectorizer + TfidfTransformer和TfidfVectorizer有什么区别?

解决方法

没有,请参见documentation page的顶部:

sklearn.feature_extraction.text.TfidfVectorizer
...
Equivalent to CountVectorizer followed by TfidfTransformer. 
,

使用 Tfidftransformer,您将使用 CountVectorizer 系统地计算字数,然后计算逆文档频率 (IDF) 值,然后才计算 Tf-idf 分数。

相反,使用 Tfidfvectorizer,您将同时完成所有三个步骤。实际上,它使用相同的数据集计算字数、IDF 值和 Tf-idf 分数。

所以现在您可能想知道,如果您可以通过两个步骤完成所有工作,为什么要使用不必要的步骤。好吧,在某些情况下,您想在 Tfidfvectorizer 上使用 Tfidftransformer,但有时并不那么明显。以下是一般准则:

  • 如果您需要不同任务的词频(词数)向量,请使用 Tfidftransformer。
  • 如果您需要计算“训练”数据集中文档的 tf-idf 分数,请使用 Tfidfvectorizer
  • 如果您需要计算“训练”数据集之外的文档的 tf-idf 分数,请使用其中之一,两者都可以。

参考:https://kavita-ganesan.com/tfidftransformer-tfidfvectorizer-usage-differences/#.YHybLOhKhPY