用作 TfidfTransformer 输入的 CountVectorizer 输出与 TfidfTransformer()

pat*_*tri 2 python pipeline scikit-learn countvectorizer tfidfvectorizer

最近,我开始阅读更多有关 NLP 的内容并遵循 Python 教程,以便更多地了解该主题。在学习其中一个教程时,我观察到他们使用每条推文中字数的稀疏矩阵(使用 CountVectorizer 创建)作为 TfidfTransformer 的输入,TfidfTransformer 处理数据并将其提供给分类器进行训练和预测。

pipeline = Pipeline([
     ('vect', CountVectorizer()),
     ('tfidf', TfidfTransformer()),
     ('clf', LogisticRegression())
])
Run Code Online (Sandbox Code Playgroud)

由于没有提供任何解释,我无法理解这背后的思维过程......这不是一个普通的词袋吗?难道不能仅使用其中一个函数(例如 Tfidf)来完成此操作吗?

任何澄清将不胜感激。

Sla*_*lam 5

词袋是CountVectorizer\xe2\x80\x93 为每个句子构建带有单词计数的向量。

\n\n

TfIdf采用 BoW 并将该矩阵转换为句子中的tf-idf \xe2\x80\x93 频率 + 倒排文档频率。

\n\n

这部分管道可以用 \xe2\x80\x93 代替,TfidfVectorizer它实际上是 BoW + TfIdf。Later 很少在没有 BoW 的情况下使用,因此如果最终您需要分类器,则组合版本是有意义的

\n