如何在'word'和'char'分析器中使用sklearn CountVectorizer? http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html
我可以单独通过单词或字符提取文本功能,但如何创建charword_vectorizer
?有没有办法结合矢量化器?或使用多个分析仪?
>>> from sklearn.feature_extraction.text import CountVectorizer
>>> word_vectorizer = CountVectorizer(analyzer='word', ngram_range=(1, 2), min_df=1)
>>> char_vectorizer = CountVectorizer(analyzer='char', ngram_range=(1, 2), min_df=1)
>>> x = ['this is a foo bar', 'you are a foo bar black sheep']
>>> word_vectorizer.fit_transform(x)
<2x15 sparse matrix of type '<type 'numpy.int64'>'
with 18 stored elements in Compressed Sparse Column format>
>>> char_vectorizer.fit_transform(x)
<2x47 sparse matrix of type '<type 'numpy.int64'>'
with 64 stored elements in Compressed Sparse Column format>
>>> char_vectorizer.get_feature_names()
[u' ', u' a', u' b', u' f', u' i', u' s', u'a', u'a ', u'ac', u'ar', u'b', u'ba', u'bl', u'c', u'ck', u'e', u'e ', u'ee', u'ep', u'f', u'fo', u'h', u'he', u'hi', u'i', u'is', u'k', u'k ', u'l', u'la', u'o', u'o ', u'oo', u'ou', u'p', u'r', u'r ', u're', u's', u's ', u'sh', u't', u'th', u'u', u'u ', u'y', u'yo']
>>> word_vectorizer.get_feature_names()
[u'are', u'are foo', u'bar', u'bar black', u'black', u'black sheep', u'foo', u'foo bar', u'is', u'is foo', u'sheep', u'this', u'this is', u'you', u'you are']
答案 0 :(得分:13)
您可以传递一个callable作为analyzer
参数,以完全控制标记化,例如
>>> from pprint import pprint
>>> import re
>>> x = ['this is a foo bar', 'you are a foo bar black sheep']
>>> def words_and_char_bigrams(text):
... words = re.findall(r'\w{3,}', text)
... for w in words:
... yield w
... for i in range(len(w) - 2):
... yield w[i:i+2]
...
>>> v = CountVectorizer(analyzer=words_and_char_bigrams)
>>> pprint(v.fit(x).vocabulary_)
{'ac': 0,
'ar': 1,
'are': 2,
'ba': 3,
'bar': 4,
'bl': 5,
'black': 6,
'ee': 7,
'fo': 8,
'foo': 9,
'he': 10,
'hi': 11,
'la': 12,
'sh': 13,
'sheep': 14,
'th': 15,
'this': 16,
'yo': 17,
'you': 18}
答案 1 :(得分:4)
您可以将任意特征提取步骤与FeatureUnion估算器结合使用:http://scikit-learn.org/dev/modules/pipeline.html#featureunion-combining-feature-extractors
在这种情况下,这可能比larsmans解决方案效率低,但可能更容易使用。