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

我对CountVectorizer和CharNGramAnalyzer有些困惑。根据我的理解,

  1. CountVectorizer构建一个计数矩阵,其中行是不同单词的出现次数,考虑到了高维稀疏性。
  2. 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的条目

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注