ValueError:修剪后,没有剩余项.尝试较低的min_df或较高的max_df


from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(max_df=0.95, max_features=200000,
min_df=.5, stop_words='english',
use_idf=True,sublinear_tf=True,tokenizer = tokenize_and_stem_body,ngram_range=(1,3))
tfidf_matrix_body = tfidf_vectorizer.fit_transform(totalvocab_stemmed_body)

上面的代码给了我错误

ValueError: After pruning, no terms remain. Try a lower min_df or a higher max_df.

有人能帮我解决同样的问题吗?我把所有的值都改为80到100,但问题仍然不变?

从文档中,scikit learn、TF-IDF矢量器、

max_df:浮动在[0.0,1.0]或int范围内,默认值=1.0

在构建词汇表时,忽略文档频率严格高于给定阈值的术语(语料库特定的停止词)。如果是float,则该参数表示文档的比例,即整数绝对计数。如果词汇表不是None,则忽略此参数。

min_df:浮动范围为[0.0,1.0]或int,默认值=1

在构建词汇表时,忽略文档频率严格低于给定阈值的术语。这个值在文献中也被称为截断值。如果是float,则该参数表示文档的比例,即整数绝对计数。如果词汇表不是None,则忽略此参数。

请检查变量totalvocab_stemmed_body的数据类型。如果它是一个列表,则列表中的每个元素都被视为一个文档。

案例1:文件数量=2000000,min_df=0.5

如果你有大量的文件(比如200万),每个文件只有几个单词,并且来自非常不同的域,那么出现在最低10,000000(20,000000*0.5)个文档中的术语的可能性非常小。

案例2:文件数量=200,max_df=0.95

如果你有一组重复的文件(比如200),你会发现这些术语出现在大多数文档中。有了max_df=0.95,你就知道那些存在于190多个文件中的术语,不要考虑它们。在这种情况下,所有项或多或少都是重复的,矢量器将无法找到矩阵的任何项。

这是我对这个话题的看法。

相关内容

  • 没有找到相关文章

最新更新