gpt4 book ai didi

python - 了解 sklearn 中 CountVectorizer 中的 `ngram_range` 参数

转载 作者:IT老高 更新时间:2023-10-28 20:22:20 25 4
gpt4 key购买 nike

我对如何在 Python 的 scikit-learn 库中使用 ngram 感到有些困惑,特别是 ngram_range 参数如何在 CountVectorizer 中工作。

运行此代码:

from sklearn.feature_extraction.text import CountVectorizer
vocabulary = ['hi ', 'bye', 'run away']
cv = CountVectorizer(vocabulary=vocabulary, ngram_range=(1, 2))
print cv.vocabulary_

给我:

{'hi ': 0, 'bye': 1, 'run away': 2}

我在哪里(显然是错误的)我会得到一元和二元的印象,就像这样:

{'hi ': 0, 'bye': 1, 'run away': 2, 'run': 3, 'away': 4}

我正在处理这里的文档:http://scikit-learn.org/stable/modules/feature_extraction.html

显然,我对如何使用 ngram 的理解存在严重错误。也许这个论点没有效果,或者我对实际的二元组有一些概念上的问题!我难住了。如果有人对我提出建议,我将不胜感激。

更新:
我已经意识到我的做法是愚蠢的。我的印象是 ngram_range 会影响词汇,而不是语料库。

最佳答案

明确设置 vocabulary 意味着没有从数据中学习词汇。如果你不设置它,你会得到:

>>> v = CountVectorizer(ngram_range=(1, 2))
>>> pprint(v.fit(["an apple a day keeps the doctor away"]).vocabulary_)
{u'an': 0,
u'an apple': 1,
u'apple': 2,
u'apple day': 3,
u'away': 4,
u'day': 5,
u'day keeps': 6,
u'doctor': 7,
u'doctor away': 8,
u'keeps': 9,
u'keeps the': 10,
u'the': 11,
u'the doctor': 12}

一个明确的词汇限制将从文本中提取的术语;词汇没有改变:

>>> v = CountVectorizer(ngram_range=(1, 2), vocabulary={"keeps", "keeps the"})
>>> v.fit_transform(["an apple a day keeps the doctor away"]).toarray()
array([[1, 1]]) # unigram and bigram found

(请注意,在提取 n-gram 之前应用了停用词过滤,因此 "apple day"。)

关于python - 了解 sklearn 中 CountVectorizer 中的 `ngram_range` 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24005762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com