使用CountVectorizer

时间:2016-09-04 23:54:21

标签: python nlp scikit-learn vectorization tokenize

我希望我不必提供示例集。

我有一个2D数组,其中每个数组都包含一组句子中的单词。

我使用CountVectorizer在整个2D数组上有效地调用fit_transform,这样我就可以构建单词词汇。

但是,我有句话:

u'Besides EU nations , Switzerland also made a high contribution at Rs 171 million LOCATION_SLOT~-nn+nations~-prep_besides nations~-prep_besides+made~prep_at made~prep_at+rs~num rs~num+NUMBER_SLOT'

我当前的矢量化器过于严格地将~+之类的内容删除为令牌。虽然我希望它能够在split()中用词汇中的一个标记来查看每个单词,即rs~num+NUMBER_SLOT本身应该是词汇中的一个单词,made也是如此。与此同时,应删除the a(正常的停用词组)等停用词。

当前矢量化器:

vectorizer = CountVectorizer(analyzer="word",stop_words=None,tokenizer=None,preprocessor=None,max_features=5000)

你可以指定一个token_pattern,但我不确定哪一个我可以用来实现我的目标。尝试:

token_pattern="[^\s]*"

导致词汇:

{u'': 0, u'p~prep_to': 3764, u'de~dobj': 1107, u'wednesday': 4880, ...}

在我的词汇中,u''并不是我想要的东西。

我希望构建此类vocabulary_的正确令牌模式是什么?

1 个答案:

答案 0 :(得分:1)

我已经弄明白了。矢量化器允许0个或更多非空白项 - 它应该允许1个或更多。正确的CountVectorizer是:

CountVectorizer(analyzer="word",token_pattern="[\S]+",tokenizer=None,preprocessor=None,stop_words=None,max_features=5000)