我在CountVectorizer和CharNGramAnalyzer之间有一个混淆。据我了解,
- CountVectorizer 构建了一个计数矩阵,其中行是不同单词的出现次数,同时考虑到高维稀疏性。
- CharNGramAnalyzer 构建了一个计数矩阵,其中行是不同字符的出现次数。由于它不考虑单词,因此它不需要知道单词之间的分隔,并且适用于英语以外的语言。
我的理解正确吗?如果没有,我想要详细的解释或任何解释它的来源。
首先,检查你的 sklearn 版本。我觉得你使用的是旧版本的sklearn。你给CountVectorizer
的解释是不对的。它不计算语料库中不同单词的数量,至少不计算当前版本。
根据CountVectorizer的文档,您需要传递analyzer='word'
才能使字数计数。在最新版本的 sklearn 中,CharNGramAnalyzer
已被弃用,现在与 CountVectorizer
合并。只需analyzer='char'
复制CharNGramAnalyzer
即可。要验证此检查,http://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_extraction.text 没有CharNGramAnalyzer
条目