如何强制sklearn CountVectorizer不删除特殊字符(即#,@ 、、 $或%)

时间:2019-08-09 05:58:41

标签: python machine-learning scikit-learn

这是我的代码:

count = CountVectorizer(lowercase = False)

vocabulary = count.fit_transform([words])
print(count.get_feature_names())

例如,如果:

 words = "Hello @friend, this is a good day. #good."

我希望将其分为以下部分:

['Hello', '@friend', 'this', 'is', 'a', 'good', 'day', '#good']

目前,这是它的分离内容:

['Hello', 'friend', 'this', 'is', 'a', 'good', 'day']

1 个答案:

答案 0 :(得分:1)

documentation所述,您可以在token_pattern中使用CountVectorizer参数:

传递一个正则表达式告诉CountVectorizer应该把什么当作单词。假设在这种情况下,我们告诉CountVectorizer,即使带有#@的单词也应该是单词。然后做:

count = CountVectorizer(lowercase = False, token_pattern = '[a-zA-Z0-9$&+,:;=?@#|<>.^*()%!-]+')

输出:

['#good', '@friend', 'Hello', 'a', 'day', 'good', 'is', 'this']