如何在 CountVectorizer 中考虑 'punctuation '?

how to consider 'punctuation ' in CountVectorizer?

我正在使用 Sklearn 的 CountVectorizer 将我的字符串转换为向量。但是,CountVectorizer 默认 select 标记 2 个或更多字符,并且还会忽略标点符号并将它们视为分隔符。我什至想将一个字符视为标记,还包括标点符号。例如:

aaa 1 2.75 zzz
aaa 2 3.75 www

我想要一个

的矩阵
1 1 1 0 1 1 0 
1 0 1 1 0 0 1

有没有简单的方法可以实现这个目标?

您可以使用自定义分词器,如本例所示:

import re

new_docs=["aaa 1 2.75 zzz","aaa 2 3.75 www"]

def my_tokenizer(text):
    return re.split("\s+",text)


cv = CountVectorizer(new_docs,tokenizer=my_tokenizer)
count_vector=cv.fit_transform(new_docs)
print(cv.vocabulary_)

示例输出:

{'aaa': 4, '1': 0, '2.75': 2, 'zzz': 6, '2': 1, '3.75': 3, 'www': 5}

查看更多CountVectorizer usage examples here.