为什么我会在 Bag-of-Words (CountVectorizer) 之后使用 TF-IDF?

数据挖掘 nlp tfidf 词袋
2022-03-04 03:41:57

在我最近对机器学习 NLP 任务的研究中,我发现了这个非常好的教程,教你如何构建你的第一个文本分类器:

https://towardsdatascience.com/machine-learning-nlp-text-classification-using-scikit-learn-python-and-nltk-c52b92a7c73a

关键是我一直认为你必须在使用 Bag-of-Words 或 WordEmbeddings 或 TF-IDF 之间进行选择,但在本教程中,作者使用 Bag-of-Words (CountVectorizer),然后使用 TF-IDF 覆盖特征由词袋生成。

text_clf = Pipeline([('vect', CountVectorizer()),
...                      ('tfidf', TfidfTransformer()),
...                      ('clf', MultinomialNB()),
... ])

这是一种有效的技术吗?我为什么要这样做?

1个回答

标准的 TF-IDF 特征提取:您转换文档计数。像这样分开这两个步骤看起来很奇怪。 sklearn提供TfidfTransformerTfidfVectorizer; 注意后者的文档:

相当于CountVectorizer后面跟着TfidfTransformer