2013-04-18 82 views
3

考慮這個運行的例子:特殊字符countVectorizer Scikit學習

#coding: utf-8 
from sklearn.feature_extraction.text import CountVectorizer 

vectorizer = CountVectorizer() 
corpus = ['öåa hej ho' 'åter aba na', 'äs äp äl'] 
x = vectorizer.fit_transform(corpus) 
l = vectorizer.get_feature_names() 

for u in l: 
     print u 

輸出將是

aba 
hej 
ho 
na 
ter 

爲什麼AAO去除?請注意,矢量化器strip_accents = None是默認值。如果你能幫助我,我會很感激。

+0

無法重現。你正在使用哪種版本的scikit-learn? –

+0

我用sudo apt-get來下載sklearn。你的錯誤信息是什麼? – user1506145

+0

沒有錯誤信息,它工作得很好。再次,版本是什麼? 'sklearn .__ version__'。 –

回答

7

這是一種有意識的方式來降低維度,同時使向量化器容忍輸入,其中作者並不總是與使用加重字符一致。

如果您要禁用該功能,只需將strip_accents=None轉換爲CountVectorizer,如documentation of this class中所述。

>>> from sklearn.feature_extraction.text import CountVectorizer 
>>> CountVectorizer(strip_accents='ascii').build_analyzer()(u'\xe9t\xe9') 
[u'ete'] 
>>> CountVectorizer(strip_accents=False).build_analyzer()(u'\xe9t\xe9') 
[u'\xe9t\xe9'] 
>>> CountVectorizer(strip_accents=None).build_analyzer()(u'\xe9t\xe9') 
[u'\xe9t\xe9'] 
+0

我明白了!我只是認爲口音就像é和á,但不包括åäö。謝謝 – user1506145

+2

我本來可以命名這個參數'strip_diacritics',它本來更精確,但是大多數用戶會理解的更少:) – ogrisel

+0

它仍然不起作用,strip_accents =默認爲無 – user1506145