【问题标题】:CountVectorizer output that serves as TfidfTransformer input vs. TfidfTransformer()用作 TfidfTransformer 输入的 CountVectorizer 输出与 TfidfTransformer()
【发布时间】:2019-07-12 06:49:03
【问题描述】:

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

pipeline = Pipeline([
     ('vect', CountVectorizer()),
     ('tfidf', TfidfTransformer()),
     ('clf', LogisticRegression())
])

由于没有提供任何解释,我无法理解这背后的思考过程……不就是一个普通的词袋吗?这不能通过仅使用其中一个函数来完成,例如,只使用 Tfidf 吗?

任何澄清将不胜感激。

【问题讨论】:

  • 我相信你是对的,scikit-learn的tfidf vectorizer可以在这里替换CountVectorizer和TfidfTransformer。

标签: python scikit-learn pipeline countvectorizer tfidfvectorizer


【解决方案1】:

词袋是CountVectorizer 所做的——为每个句子构建包含字数的向量。

TfIdf 采用 BoW 并将该矩阵转换为,嗯,tf-idf – 句子中的频率 + 反转文档频率。

这部分管道可以替换为TfidfVectorizer——实际上是BoW + TfIdf。如果没有 BoW,Later 很少使用,因此如果您最终只需要分类器,那么组合版本是有意义的

【讨论】:

  • 感谢您的解释!现在更有意义了。
猜你喜欢
  • 1970-01-01
  • 2021-02-09
  • 2020-07-31
  • 2020-01-21
  • 1970-01-01
  • 2014-10-09
  • 2017-10-12
  • 2020-09-26
  • 2020-07-12
相关资源
最近更新 更多