CountVectorizer() 和 Tokenizer() 有什么区别或者它们是一样的?

数据挖掘 喀拉斯 scikit-学习 nlp
2022-02-15 13:15:50
from sklearn.feature_extraction.text import CountVectorizer

from keras.preprocessing.text import Tokenizer

我正在阅读一些 NLP 教程,并意识到有些教程使用 CountVectrizer,有些使用 Tokenizer。据我了解,我认为他们都使用单热编码,但有人请澄清这一点。

我不明白的是为什么 CountVectorizer 不用于 RNN 等深度学习模型,而 Tokenizer() 不用于 SVM、朴素贝叶斯等 ML 分类器。

谢谢

1个回答

我以为他们都使用 one-hot 编码

这些是预处理文本的实用程序。像任何其他实用程序一样,它有多个选项来调整您的文本。您应该使用官方文档探索所有参数。
我将解释其中之一,即 OHE vs Count

from sklearn.feature_extraction.text import CountVectorizer
corpus = [ 'This movie is bad.Too Bad', 'Awesome Movie. Too Awesome']
vectorizer = CountVectorizer(binary=True) #binary=False will make it Count
x = vectorizer.fit_transform(corpus)

import pandas as pd
df = pd.DataFrame(x.toarray(), columns=vectorizer.get_feature_names())
df

在此处输入图像描述

我们的最终目标是创建特征,并且每个特征都有其上下文含义的指示符。

我不明白的是为什么 CountVectorizer 不用于 RNN 等深度学习模型,而 Tokenizer() 不用于 SVM 等 ML 分类器,

当我们对一个简单的 ML 算法进行建模时,我们通常使用scikit-learn.
所以添加Keras那里没有意义。

深度学习也是如此。
不过,在这种情况下,我们还有另一个原因,即深度学习通常适用于大型数据集因此,我们主要使用嵌入特征的想法。所以最好使用提供端到端解决方案的框架