scikit-learn - TfidfVectorizer用于无法容纳在内存中的语料库

标签 scikit-learn

我想基于无法容纳在内存中的语料库构建tf-idf模型。我阅读了本教程,但语料库似乎是立即加载的:

from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ["doc1", "doc2", "doc3"]
vectorizer = TfidfVectorizer(min_df=1)
vectorizer.fit(corpus)

我想知道是否可以将文档一次一个地加载到内存中,而不是全部加载。

最佳答案

是的,您可以,只需使您的语料库成为迭代器即可。例如,如果您的文档位于光盘上,则可以定义一个迭代器,该迭代器将文件名列表作为参数,然后逐个返回文档,而无需立即将所有内容加载到内存中。

from sklearn.feature_extraction.text import TfidfVectorizer

def make_corpus(doc_files):
    for doc in doc_files:
        yield load_doc_from_file(doc) #load_doc_from_file is a custom function for loading a doc from file

file_list = ... # list of files you want to load
corpus = make_corpus(file_list)
vectorizer = TfidfVectorizer(min_df=1)
vectorizer.fit(corpus)

关于scikit-learn - TfidfVectorizer用于无法容纳在内存中的语料库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16453855/

相关文章:

python - 可在 Python 中使用的最快 SVM 实现

python - '导入错误: DLL load failed' when fetching MNIST original via sklearn

python - 重新调整 3d numpy 数组中的值

apache-spark - 在 Spark 中分发 scikit learn 分类器的推荐方法是什么?

python - sklearn : Custom scorer on pre-defined split

scikit-learn - 特征选择和预测

python - 分类模型 : How to check the score of each classification

python - K 表示绘图未正确显示

r - R中二维核密度估计的混淆

python - KNeighborsClassifier 分数中出现奇怪的 ValueError