如何在 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}
我正在使用 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}