用作 TfidfTransformer 输入的 CountVectorizer 输出与 TfidfTransformer()
CountVectorizer output that serves as TfidfTransformer input vs. TfidfTransformer()
最近,我开始阅读更多有关 NLP 的内容并遵循 Python 中的教程,以了解有关该主题的更多信息。在学习其中一个教程时,我观察到他们在每条推文中使用字数统计的稀疏矩阵(使用 CountVectorizer 创建)作为 TfidfTransformer 的输入,TfidfTransformer 处理数据并将其提供给分类器进行训练和预测。
pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', LogisticRegression())
])
由于没有给出解释,我无法理解这背后的思考过程……这不就是一个普通的词袋吗?难道不能只使用其中一个函数来完成吗,例如,只使用 Tfidf?
任何澄清将不胜感激。
词袋是 CountVectorizer
所做的——用每个句子的词数构建向量。
TfIdf
采用 BoW 并将该矩阵转换为 tf-idf – 句子中的频率 + 反向文档频率。
这部分流水线可以用TfidfVectorizer
代替——实际上是BoW + TfIdf。 Later 在没有 BoW 的情况下很少使用,所以如果分类器是你一天结束时所需要的全部,那么组合版本是有意义的
最近,我开始阅读更多有关 NLP 的内容并遵循 Python 中的教程,以了解有关该主题的更多信息。在学习其中一个教程时,我观察到他们在每条推文中使用字数统计的稀疏矩阵(使用 CountVectorizer 创建)作为 TfidfTransformer 的输入,TfidfTransformer 处理数据并将其提供给分类器进行训练和预测。
pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', LogisticRegression())
])
由于没有给出解释,我无法理解这背后的思考过程……这不就是一个普通的词袋吗?难道不能只使用其中一个函数来完成吗,例如,只使用 Tfidf?
任何澄清将不胜感激。
词袋是 CountVectorizer
所做的——用每个句子的词数构建向量。
TfIdf
采用 BoW 并将该矩阵转换为 tf-idf – 句子中的频率 + 反向文档频率。
这部分流水线可以用TfidfVectorizer
代替——实际上是BoW + TfIdf。 Later 在没有 BoW 的情况下很少使用,所以如果分类器是你一天结束时所需要的全部,那么组合版本是有意义的