问题描述
要将ML算法应用于文本,必须以数字表示。使用sklearn进行此操作的一些方法是:
-
CountVectorizer
-
CountVectorizer + TfidfTransformer
-
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