python - 使用 CountVectorizer 对不带空格的 unicode 句子进行正则表达式

标签 python nlp scikit-learn vectorization tokenize

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

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

我正在使用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 本身应该是词汇中的一个单词,就像应该制作一样。同时,像 the 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_,正确的标记模式是什么?

最佳答案

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

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

关于python - 使用 CountVectorizer 对不带空格的 unicode 句子进行正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39322474/

相关文章:

python - django 1.7 & 删除 postgres 数据库并重新创建它

python - 如何在 Python 的某些条件下根据其他列表中的索引列表从一个列表中查找字符串?

python - 使用 Sklearn 预测的线性回归不起作用。数据不正确

python - 将 CountVectorizer 与每行都是一个文档的文件一起使用

python - python中将数据缩放到特定范围

Python 多处理写时复制在 OSX 和 Ubuntu 之间表现不同

python - 从顺序 Keras 模型中保存特定层

python - 属性错误: type object 'Callable' has no attribute '_abc_registry'

python - spaCy 的词性和依赖标签是什么意思?

java - 使用句子检测器评估工具时,OpenNLP 如何计算漏报?