在Scikit-Learn特征提取中合并CountVectorizer

时间:2016-05-06 21:19:54

标签: python scikit-learn feature-extraction

我是scrakit-learn的新手,需要一些我一直在努力的帮助。

我试图使用Multinomial Naive Bayes分类对两种类型的文档(比如A类和B类)进行分类。为了获得这些文档的术语计数,我在sklearn.feature_extraction.text中使用了CountVectorizer类。

问题是两种类型的文档需要不同的正则表达式来提取标记(token_pattern参数为CountVectorization)。我似乎无法找到一种方法来首先加载类型A的训练文档,然后是类型B.是否可以执行以下操作:

vecA = CountVectorizer(token_pattern="[a-zA-Z]+", ...)
vecA.fit(list_of_type_A_document_content)
...
vecB = CountVectorizer(token_pattern="[a-zA-Z0-9]+", ...)
vecB.fit(list_of_type_B_document_content)
...
# Somehow merge the two vectorizers results and get the final sparse matrix

2 个答案:

答案 0 :(得分:1)

您可以尝试:

{{1}}

您可以从中了解有关FeatureUnion的更多信息 http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html

,可从版本0.13.1

获得

答案 1 :(得分:0)

你可以试试:

vecA = CountVectorizer(token_pattern="[a-zA-Z]+", ...)
vecA.fit_transform(list_of_type_A_document_content)
vecB = CountVectorizer(token_pattern="[a-zA-Z0-9]+", ...)
vecB.fit_transform(list_of_type_B_document_content)

你可以合并稀疏矩阵:

from scipy.sparse import csr_matrix, hstack

combined_features= hstack([vecA, vecB], 'csr')