Jee*_*ich 6 python feature-extraction tf-idf scikit-learn
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)
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我错误
ValueError: After pruning, no terms remain. Try a lower min_df or a higher max_df.
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我解决相同的问题,并且我已将所有值 80 更改为 100 但问题仍然相同吗?
从文档中, scikit-learn, TF-IDF vectorizer,
最大df : 在 [0.0, 1.0] 或 int 范围内浮动,默认值=1.0
在构建词汇表时,忽略文档频率严格高于给定阈值的术语(特定于语料库的停用词)。如果是float,该参数代表文档的比例,整数绝对计数。如果词汇表不是 None,则忽略此参数。
min_df : 在 [0.0, 1.0] 或 int 范围内浮动,默认值=1
在构建词汇表时,忽略文档频率严格低于给定阈值的术语。该值在文献中也称为截止值。如果是float,该参数代表文档的比例,整数绝对计数。如果词汇表不是 None,则忽略此参数。
请检查变量的数据类型,totalvocab_stemmed_body。如果是列表,则列表中的每个元素都被视为一个文档。
案例 1:文档数 = 20,00,000, min_df=0.5.
如果您有大量文件(比如 200 万个),并且每个文件只有几个字,并且来自非常不同的域,那么出现至少 10,000,000(20,00,000 * 0.5 ) 文件。
情况 2:文件数 = 200, max_df=0.95
如果您有一组重复的文件(比如 200 个),您会看到这些术语出现在大多数文档中。和max_df=0.95,您是在告诉那些存在于 190 多个文件中的术语,不要考虑它们。在这种情况下,所有项或多或少会重复,您的向量化器将无法找出矩阵的任何项。
这是我对这个话题的想法。
| 归档时间: |
|
| 查看次数: |
8901 次 |
| 最近记录: |