python 2.7 -为什么scikit-learn中的TfidfVectorizer会显示这种行为



在创建TfidfVectorizer对象时,如果我显式地传递token_pattern参数的默认值,它会在我执行fit_transform时抛出错误。下面是错误:

ValueError:空词汇表;也许文档只包含停止词

我这样做是因为最终我想为token_pattern参数传递一个不同的值,这样我就可以将单字母标记也作为我的tfidf矩阵的一部分。

示例如下:

from sklearn.feature_extraction.text import TfidfVectorizer
train_set = ("The sky is blue.", "The sun is bright.")
vectorizer1 = TfidfVectorizer(ngram_range=(1, 2), max_df=1.0, min_df=1)
train_set_tfidf = vectorizer1.fit_transform(train_set)     #works fine
vectorizer2 = TfidfVectorizer(token_pattern=u'(?u)bww+b', ngram_range=(1, 2), max_df=1.0, min_df=1)
train_set_tfidf = vectorizer2.fit_transform(train_set)     #throws error

建议在正则表达式前加上r,这应该可以工作:

vectorizer2 = TfidfVectorizer(token_pattern=r'(?u)bww+b', ngram_range=(1, 2), max_df=1.0, min_df=1)
train_set_tfidf = vectorizer2.fit_transform(train_set)

这是文档中已知的错误,但是如果您查看源代码,它们确实使用原始文字

相关内容

  • 没有找到相关文章

最新更新