大数据集的TFIDF
nlp
python
scikit-learn
5
0

我有一个大约有800万条新闻文章的语料库,我需要以稀疏矩阵的形式获取它们的TFIDF表示形式。我已经能够使用scikit-learn来实现相对较少的样本数量,但是我相信它不能用于如此庞大的数据集,因为它首先将输入矩阵加载到内存中,这是一个昂贵的过程。

谁知道,对于大型数据集,提取TFIDF向量的最佳方法是什么?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

我相信你可以使用一个HashingVectorizer得到一个短小csr_matrix你的文字数据,然后使用TfidfTransformer上。存储8M行和几万列的稀疏矩阵并不是什么大问题。另一种选择是完全不使用TF-IDF,这可能是您的系统在没有它的情况下可以正常运行的情况。

在实践中,您可能需要对数据集进行子采样-有时,仅从所有可用数据的10%中学习,系统就可以做到。这是一个经验性的问题,无法预先告知哪种策略最适合您的任务。在确信我需要它们之前(即直到我看到学习曲线显示出明显的上升趋势),我才担心会缩放到8M文档。

下面是我今天上午正在做的事。您可以看到,随着我添加更多文档,系统的性能趋于提高,但是它已经处在一个几乎没有什么改变的阶段。考虑到培训需要多长时间,我认为在500个文件上进行培训不值得我花时间。

收藏
评论

Gensim具有高效的tf-idf模型 ,不需要一次将所有内容存储在内存中。

您的语料库只需要是可迭代的,因此不需要一次将整个语料库存储在内存中。

根据评论,make_wiki脚本可在笔记本电脑上约5,000万英里的维基百科上运行。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号