python – NLTK文档聚类:修剪后没有任何条款?

python – NLTK文档聚类:修剪后没有任何条款?,第1张

概述我有900个不同的文本文件加载到我的控制台,总共约350万字.我正在运行看到 here的文档聚类算法,并且遇到了TfidfVectorizer函数的问题.这就是我在看的内容: from sklearn.feature_extraction.text import TfidfVectorizer#define vectorizer parameterstfidf_vectorizer = Tf 我有900个不同的文本文件加载到我的控制台,总共约350万字.我正在运行看到 here的文档聚类算法,并且遇到了TfIDfVectorizer函数的问题.这就是我在看的内容:

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文档聚类:修剪后没有任何条款?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存