【发布时间】:2014-07-23 08:30:49
【问题描述】:
我正在使用来自 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 会将语料库分解成我认为是 unigrams 的内容:
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 方法的文档中没有看到太多信息,它只接受一个参数。如果有人有任何想法,我将不胜感激。谢谢!
【问题讨论】:
-
你想要的是
CountVectorizer的tokenizer参数,它应该是一个可调用的,它接受一个字符串并返回一个令牌列表。但是,从您的帖子中不清楚您想使用什么规则来标记输入。
标签: python nlp scikit-learn text-parsing corpus