在实习项目的背景下,我必须对大量文件(〜18000个)执行tfidf分析。我正在尝试使用sklearn的TFIDF矢量化器,但是面临以下问题:如何避免一次将所有文件加载到内存中?根据我在其他文章上阅读的内容,使用迭代器似乎是可行的,但是如果我将os.listdir(path)中的文件的[open(file)用作 raw_documents 输入到fit_transform()函数时,出现“打开文件过多”错误。 在此先感谢您的建议! 干杯! 保罗
答案 0 :(得分:1)
您是否在TfidfVectorizer中尝试过@Effect({dispatch: false}) getStudents = this.action.pipe(
ofType(GET_STUDENT),
delay(0),
tap(() => this.api.getStudents())
)
参数?像这样:
input='filename'
这应该起作用,因为在这种情况下,矢量化程序在处理该文件时会一次打开一个文件。可以通过交叉检查source code here
来确认raw_docs_filepaths = [#List containing the filepaths of all the files]
tfidf_vectorizer = TfidfVectorizer(`input='filename'`)
tfidf_data = tfidf_vectorizer.fit_transform(raw_docs_filepaths)