Mat*_*ien 5 python nlp corpus text-parsing scikit-learn
我正在与scikit学习的CountVectorizer一起工作,我可能正在尝试做一些不是为对象制作的东西......但我不确定.
在获取发生次数方面:
vocabulary = ['hi', 'bye', 'run away!']
corpus = ['run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()
Run Code Online (Sandbox Code Playgroud)
得到:
[[0 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
我所意识到的是,CountVectorizer会将语料库分解为我认为是unigrams:
vocabulary = ['hi', 'bye', 'run']
corpus = ['run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()
Run Code Online (Sandbox Code Playgroud)
这使:
[[0 0 1]]
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉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]]
Run Code Online (Sandbox Code Playgroud)
我没有在fit_transform方法的文档中看到太多信息,它只接受一个参数.如果有人有任何想法,我将不胜感激.谢谢!
调用所需的参数ngram_range.你将一个元组传递(1,2)给构造函数以获得unigrams和bigrams.但是,您传入的词汇表需要dict使用ngrams作为键,将整数作为值.
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]]
Run Code Online (Sandbox Code Playgroud)
请注意,默认的tokeniser会删除末尾的感叹号,因此最后一个标记是away.如果您想要更好地控制字符串如何分解为标记,请关注@ BrenBarn的评论.
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |