python - 处理大型数据集进行分析
问题描述
我希望有人可以帮助我。我是处理大型数据集的新手,需要帮助优化运行时间和内存使用。
我正在处理 2000-2018 年间来自 30 家报纸的文章的新闻文章。整个数据集中大约有 1200 万篇文章。我正在计算文章之间的 TFIDF 和余弦相似度,并且鉴于数据约为 40GB,我不确定它的扩展性如何。
目前我只处理 1 个月的数据,虽然它有效,但速度非常慢。
对于 TFIDF 词汇构建,语料库持续时间永远不会超过我们希望执行的分析持续时间的 1 年数据(这是上限)。建立词汇的最佳方法是什么?我在互联网上搜索了一下,发现使用 gensim 我们可以以增量方式构建词汇表。这是我能做的最好的事情,还是有更好/更快的方法来处理这个问题?
鉴于我成功构建了语料库的词汇表,我需要计算与其他文章(同一日期)的余弦相似度小于给定阈值的所有文章(从特定日期开始)。由于词汇量很大,重复调用 transform 和 cosine_similarity 可能会非常昂贵。知道如何改进吗?我想到了使用 Kruskal 算法来查找断开的组件,以最大限度地减少对变换和 cosine_similarity 的调用。
虽然使用 iterator 和 gensim 以迭代方式构建字典可能有助于节省内存使用,但我仍然不确定如何减少计算没有类似文章的文章数量的时间?
3)如果有人有在熊猫中处理类似数据的经验,我应该转移到数据库还是熊猫足以完成这项任务?
谢谢 :)
解决方案
推荐阅读
- python-3.x - 带有特殊字符的scapy嗅探
- r - 为什么在 R 中使用 dataEllipse 函数时会出现两个椭圆?
- java - 切换到横向模式时出现 android.view.InflateException
- vue.js - b表中的页脚不显示 - Bootstrap-vue
- c++ - 这些是 C++ 中允许的优化吗?
- javascript - 当我按下回车键时隐藏一个 DIV 并显示另一个
- python-3.x - Pandas 和 Matplotlib:添加工具提示以进行交互
- asp.net - ASP.NET MVC 视图计算列
- python - 我的 vscode python 扩展有问题,它没有显示快速信息
- ng-bootstrap - ng-bootstrap / 如果同一页面中有多个 ngbNav,则从不显示内容,但首先实例化 ngbNav 的内容