CountVectorizer()不适用于单字母单词



考虑我必须对以下数据应用CountVectorizer((:

words = [
'A am is',
'This the a',
'the am is',
'this a am',
]

我做了以下事情:

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print(X.toarray())

它返回以下内容:

[[1 1 0 0]
[0 0 1 1]
[1 1 1 0]
[1 0 0 1]]

供参考print(vectorizer.get_feature_names())打印['am', 'is', 'the', 'this']

为什么"a"没有被读取
是不是单个字母的单词不算作CountVector((中的单词

检查文档

token_pattern

正则表达式,表示构成"token",仅当analyzer=="word"时使用。默认regexp选择2个或更多字母数字字符的标记(标点符号完全忽略并始终被视为令牌分隔符(。

所有单字符标记都会被默认标记生成器忽略。这就是a缺失的原因。

如果你想在词汇表中使用单个角色的标记,那么你必须使用服装标记器。

示例代码

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(tokenizer=lambda txt: txt.split())
X = vectorizer.fit_transform(words)
print (vectorizer.get_feature_names())

输出:

['a', 'am', 'is', 'the', 'this']

最新更新