在scikit-learn中,CountVectorizer和CharNGramAnalyzer有什么区别?

时间:2017-10-06 08:29:08

标签: python machine-learning scikit-learn text-classification

我在CountVectorizer和CharNGramAnalyzer之间感到困惑。根据我的理解,

  1. CountVectorizer构建一个计数矩阵,其中行是考虑到高维稀疏度的不同单词的出现次数。
  2. CharNGramAnalyzer构建一个计数矩阵,其中行是不同字符的出现次数。由于它没有考虑到单词,因此不需要知道单词之间的分离,也适用于除英语之外的其他语言。
  3. 我对我的理解是否正确?如果没有,我想详细解释或解释它的任何来源。

1 个答案:

答案 0 :(得分:2)

首先,检查您的sklearn版本。我觉得你使用的是旧版sklearn。您为CountVectorizer提供的解释不正确。它不计算语料库中不同单词的数量,至少不计算当前版本。

根据docs of CountVectorizer,您需要传递analyzer='word'才能使字数统计。在最新版本的sklearn中,CharNGramAnalyzer已弃用,现已与CountVectorizer合并。只需analyzer='char'复制CharNGramAnalyzer即可。要验证此检查,http://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_extraction.text没有CharNGramAnalyzer

的条目