from sklearn.feature_extraction.text import TfIDfVectorizer#define vectorizer parameterstfIDf_vectorizer = TfIDfVectorizer(max_df=0.8,max_features=200000,min_df=0.4,stop_words='english',use_IDf=True,tokenizer=tokenize_and_stem,ngram_range=(1,3))store_matrix = {}for key,value in speech_dict.items(): tfIDf_matrix = tfIDf_vectorizer.fit_transform(value) #fit the vectorizer to synopses store_matrix[key] = tfIDf_matrix
此代码一直运行到ValueError:修剪后,没有任何术语.尝试使用较低的min_df或更高的max_df.d出.但是,除非我将max_df设置为0.99并将min_df降低到0.01,否则代码不会在出错时退出.然后,它似乎永远运行,因为它基本上包括所有350万个术语.
我怎么能绕过这个?
我的文本文件存储在speech_dict中,其中的键是文件名,其值是文本.
解决方法 从文档中,scikit-learn,TF-IDF vectorizer,
max_df:float在范围[0.0,1.0]或int中,默认值= 1.0
在构建词汇表时,忽略文档频率严格高于给定阈值的术语(语料库特定的停用词).如果是float,则参数表示文档的比例,整数绝对计数.如果词汇表不是None,则忽略此参数.
min_df:float在范围[0.0,默认值= 1
构建词汇表时,忽略文档频率严格低于给定阈值的术语.该值在文献中也称为截止值.如果是float,则忽略此参数.
请检查变量totalvocab_stemmed_body的数据类型.如果是列表,则列表中的每个元素都被视为文档.
案例1:文件编号= 20,00,000,min_df = 0.5.
如果您有大量文件(比如2百万),并且每个文件只有几个单词,并且来自非常不同的域,则存在最小值10,000(20,000)的条件的可能性非常小* 0.5)文件.
案例2:文件编号= 200,max_df = 0.95
如果您有一组重复的文件(例如200),您将看到大多数文档中都存在这些术语.使用max_df = 0.95,您告诉那些存在于190多个文件中的术语不会考虑它们.在这种情况下,所有术语都或多或少地重复,并且您的矢量化器将无法找到矩阵的任何术语.
这是我对这个主题的看法.
总结以上是内存溢出为你收集整理的python – NLTK文档聚类:修剪后没有任何条款?全部内容,希望文章能够帮你解决python – NLTK文档聚类:修剪后没有任何条款?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)