gpt4 book ai didi

python - 我可以控制 CountVectorizer 在 scikit learn 中矢量化语料库的方式吗?

转载 作者:太空狗 更新时间:2023-10-30 02:31:03 24 4
gpt4 key购买 nike

我正在使用 scikit learn 中的 CountVectorizer,我可能正在尝试做一些该对象不是为之创建的事情...但我不确定。

在获取发生次数方面:

vocabulary = ['hi', 'bye', 'run away!']
corpus = ['run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()

给出:

[[0 0 0 0]]

我意识到 CountVectorizer 会将语料库分解成我认为是一元组的内容:

vocabulary = ['hi', 'bye', 'run']
corpus = ['run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()

给出:

[[0 0 1]]

有什么方法可以准确地告诉 CountVectorizer 您希望如何矢量化语料库?理想情况下,我希望得到与第一个示例类似的结果。

然而,老实说,我想知道是否有可能按照这些思路获得结果:

vocabulary = ['hi', 'bye', 'run away!']
corpus = ['I want to run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()

[[0 0 1]]

我在 fit_transform 方法的文档中没有看到太多信息,它只接受一个参数。如果有人有任何想法,我将不胜感激。谢谢!

最佳答案

你想要的参数叫做ngram_range。您将元组 (1,2) 传递给构造函数以获取一元组和二元组。但是,您传入的词汇表必须是 dict,其中 ngram 作为键,整数作为值。

In [20]: print CountVectorizer(vocabulary={'hi': 0, u'bye': 1, u'run away': 2}, ngram_range=(1,2)).fit_transform(['I want to run away!']).A
[[0 0 1]]

请注意,默认标记器会删除末尾的感叹号,因此最后一个标记是away。如果您想更好地控制字符串如何分解为标记,请关注@BrenBarn 的评论。

关于python - 我可以控制 CountVectorizer 在 scikit learn 中矢量化语料库的方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24007812/

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