我一直在使用scikit-learn中的CountVectorizer
类。
我明白,如果按照下面的方式使用它,最终的输出将包括一个数组,其中包含特征或标记的计数。
这些标记是从一组关键词中提取的,即:
tags = [
"python, tools",
"linux, tools, ubuntu",
"distributed systems, linux, networking, tools",
]
下一步是:
from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer(tokenizer=tokenize)
data = vec.fit_transform(tags).toarray()
print data
我们从哪里得到
[[0 0 0 1 1 0]
[0 1 0 0 1 1]
[1 1 1 0 1 0]]
这很好,但我的情况略有不同。
我想以与上述相同的方式提取特征,但我不希望data
中的行是从中提取特征的相同文档。
换句话说,我该如何获得另一组文档的计数,比如:
list_of_new_documents = [
["python, chicken"],
["linux, cow, ubuntu"],
["machine learning, bird, fish, pig"]
]
并获得:
[[0 0 0 1 0 0]
[0 1 0 0 0 1]
[0 0 0 0 0 0]]
我已阅读了 CountVectorizer
类的文档,并遇到了 vocabulary
参数,它是一个将术语映射为特征索引的映射。然而,我似乎无法利用此参数。
非常感谢任何建议。
PS:以上示例中使用的内容全部归功于Matthias Friedrich的博客。
vocabulary_
方法就是这样的。 - BrenBarnCountVectorizer
,不如直接在原始的向量化器上调用.transform()
方法来处理新的文档集合。 - Fredvocabulary
参数问题的人,CountVectorizer()
默认设置为lowercase=True
,因此如果您的自定义词汇表是大写的,则必须将其设置为lowercase=False
。 - NatalieL