考虑以下可运行的示例:
#coding: utf-8from sklearn.feature_extraction.text import CountVectorizervectorizer = 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
输出将是
abahejhonater
为什么åäö被移除了?请注意,vectorizer的默认设置是strip_accents=None。如果您能帮助我解决这个问题,我将不胜感激。
回答:
这是为了在处理作者对重音字符使用不一致的输入时,降低维度的一种有意设计,使得vectorizer更加容忍这种情况。
如果您想禁用这一功能,只需在CountVectorizer
中传递strip_accents=None
,如该类的文档中所解释的那样。
>>> 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']