使用 CountVectorizer 的没有空格的 unicode 句子的正则表达式

Regex for unicode sentences without spaces using CountVectorizer

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

我有一个二维数组,其中每个数组包含一组句子中的单词。

我正在使用 CountVectorizer 在整个二维数组上有效地调用 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 也应该如此。同时,像 thea 这样的停用词(正常的停用词集)应该被删除。

当前矢量化器:

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_ 类型的正确令牌模式是什么?

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

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