我最近初始化了一个计数器,如下所示:
vectorizer = CountVectorizer( input=u'content',
encoding=u'utf-8',
charset=None,
decode_error=u'strict',
charset_error=None,
strip_accents=None,
lowercase=True,
preprocessor=None,
tokenizer=None,
stop_words=None,
ngram_range=(1, 1),
analyzer=u'word',
max_df=1.0,
min_df=0,
token_pattern=u'(?u)\b\w\w+\b',
max_features=None,
vocabulary=None,
binary=False,
dtype=np.int64)之后,我打了个电话:
documents = ['1fbe01fe', '1fbe01ff']
x = vectorizer.fit_transform(documents)这产生了一个错误:
ValueError: empty vocabulary; perhaps the documents only contain stop words但是,当我从初始化中删除行"token_pattern=u'(?u)\b\w\w+\b'“时,相同的行不会产生错误。这让我感到困惑,因为据我所知,countvectorizer中的参数的默认初始化确实提供了相同的“token_pattern”。因此,如果我不显式地提供这个模式,它不是会自动填充,所以应该会生成相同的错误吗?
任何帮助都将不胜感激!
发布于 2015-02-19 18:17:53
文档中记录的token_pattern正则表达式没有转义。如果使用缺省值初始化count vectorizer,然后调用get_params,则可以看到token pattern的缺省值实际上是u'(?u)\\b\\w\\w+\\b'
这就是它使用default参数的原因。要检查这一点,请运行以下代码:
vectorizer = CountVectorizer()
vectorizer.get_params返回:
<bound method CountVectorizer.get_params of CountVectorizer(analyzer=u'word', binary=False, charset=None,
charset_error=None, decode_error=u'strict',
dtype=<type 'numpy.int64'>, encoding=u'utf-8', input=u'content',
lowercase=True, max_df=1.0, max_features=None, min_df=1,
ngram_range=(1, 1), preprocessor=None, stop_words=None,
strip_accents=None, token_pattern=u'(?u)\\b\\w\\w+\\b',
tokenizer=None, vocabulary=None)>https://stackoverflow.com/questions/28602443
复制相似问题