Sklearn TFIDF关于大型文档集

时间:2018-07-19 12:26:23

标签: python scikit-learn tfidfvectorizer

在实习项目的背景下,我必须对大量文件(〜18000个)执行tfidf分析。我正在尝试使用sklearn的TFIDF矢量化器,但是面临以下问题:如何避免一次将所有文件加载到内存中?根据我在其他文章上阅读的内容,使用迭代器似乎是可行的,但是如果我将os.listdir(path)中的文件的[open(file)用作 raw_documents 输入到fit_transform()函数时,出现“打开文件过多”错误。 在此先感谢您的建议! 干杯! 保罗

1 个答案:

答案 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)