【发布时间】:2018-12-27 14:15:17
【问题描述】:
在实习项目的上下文中,我必须对大量文件 (~18000) 执行 tfidf 分析。我正在尝试使用 sklearn 中的 TFIDF 矢量化器,但我面临以下问题:如何避免一次将所有文件加载到内存中?根据我在其他帖子上阅读的内容,使用可迭代对象似乎是可行的,但是如果我使用例如 [open(file) for file in os.listdir(path)] 作为 raw_documents 输入对于 fit_transform() 函数,我收到“打开的文件太多”错误。 提前感谢您的建议! 干杯! 保罗
【问题讨论】:
-
你试过genism tfidf模型吗?
-
试试“[open(fn).read() for fn in os.listdir(path)]”?这一次将所有文件加载到内存中。但是内存很少是文本数据的问题。
-
@SreeramTP 我现在正在尝试坚持使用 sklearn,但如果我找不到解决方案,我会尝试一下,谢谢 ;)
-
好的。 Genism 模型内存效率高且速度快。您可以从这里了解更多信息:radimrehurek.com/gensim/intro.html
-
@phi 这个问题是它会从内存中一次加载文件中的所有 txt 以创建该列表,但我认为使用括号而不是括号的完全相同的语法可能会起作用,因为它创建了一个我认为的生成器:''(open(fn).read() for fn in os.listdir(path))''。我目前正在尝试!谢谢:)
标签: python scikit-learn tfidfvectorizer