python - CountVectorizer max_features 如何处理具有相同频率的 ngram?

标签 python machine-learning scikit-learn nlp

我有一个关于 CountVectorizer 和 TfidfVectorizer 的问题。

我不清楚如何在 max_features 中选择具有相同频率的 ngram。如果我们在一个语料库中说 max_features = 10000 和 100 个 ngrams 并且频率相同,那么 CountVectorizer 如何区分特征中的 ngram 和不特征中的 ngram?玩具示例,我们有一个包含八个独特单词的语料库。单词“jeans”和“cat”具有相同的频率 1。我们取 max_features=7。为什么特征中出现“cat”而“jeans”没有,反之则不然?

data = ['gpu processor cpu performance',
        'gpu performance ram computer computer',
        'cpu computer ram processor jeans processor cat']

cv = CountVectorizer(ngram_range=(1, 1), max_features=7)
cv_fit = cv.fit_transform(data).toarray()
cv.vocabulary_

out:
{'cat': 0,
 'computer': 1,
 'cpu': 2,
 'gpu': 3,
 'performance': 4,
 'processor': 5,
 'ram': 6}

最佳答案

CountVectorizer 会切断词频,并且可能会使用正常排序来切断 max_features 处的项目。

max_features : int or None, default=None If not None, build a vocabulary that only consider the top max_features ordered by term frequency across the corpus.

我将数据从 cat 更改为 zat,现在 jeans 已进入列表。

>>> data = ['gpu processor cpu performance',
'gpu performance ram computer computer',
'cpu computer ram processor zat processor jeans']
>>> cv = CountVectorizer(ngram_range=(1, 1), max_features=7)
>>> cv_fit = cv.fit_transform(data).toarray()
>>> cv.vocabulary_
{u'ram': 6, u'jeans': 3, u'processor': 5, u'computer': 0, u'performance': 4, u'gpu': 2, u'cpu': 1}

本质上它取决于排序顺序。

关于python - CountVectorizer max_features 如何处理具有相同频率的 ngram?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49491063/

相关文章:

python-3.x - Tensorflow seq2seq回归模型

python - scikit-learns LDA 函数中的错误 - 绘图显示非零相关

python - 通过 Python 使用 ADO 将数据插入 MS Access 数据库时出现问题

python - 这样的正则表达式哪里错了?

python - 在 Keras 中实现注意力机制

python - learning_rate 不是合法参数

python - 如何计算决策树sklearn中的精确召回率?

python - 如何在 css 中为 flask 应用程序链接英雄形象

python - Errno 13 权限被拒绝。已经在虚拟环境中

tensorflow - Tensorflow 和 Theano 中图像数据集表示之间的差异