我是NLP的完全新手,并且希望加载匈牙利维基百科语料库的压缩XLM文件(807 MB)。我下载了转储文件,并开始使用Gensim在Python中对其进行解析,但是4个小时后,我的笔记本电脑崩溃了,并抱怨我的内存不足。我有一台比较旧的笔记本电脑(4GB RAM),想知道是否有什么办法可以通过
解决此问题。这是从here下载Wikipedia转储后尝试的Jupyter Notebook代码:
! pip install gensim
from nltk.stem import SnowballStemmer
from gensim.corpora import WikiCorpus
from gensim.models.word2vec import Word2Vec
hun_stem = SnowballStemmer(language='hungarian')
%%time
hun_wiki = WikiCorpus(r'huwiki-latest-pages-articles.xml.bz2')
hun_articles = list(hun_wiki.get_texts())
len(hun_articles)
任何指导将不胜感激。
答案 0 :(得分:0)
807MB压缩后的未压缩数据可能会扩展到超过4GB,因此您不会很幸运将整个数据加载到计算机的内存中。
但是,许多NLP任务不需要不需要内存中的完整数据集:它们可以根据需要从磁盘重复流式传输数据。
例如,无论您的最终目标是什么,您通常都可以逐条地遍历'Msg'
序列。 不要尝试通过dict4 = {'g1': {'s1': {'PS': 'value1', 'Msg': '11'}, 'Both': {'PS': 'value3', 'Msg': '13'}}, 'g2': {'s2': {'PS': 'value2', 'Msg': '22'}, 'Both': {'PS': 'value3', 'Msg': '23'}}, 'g3': {'s1': {'PS': 'value1', 'Msg': '31'}, 's2': {'PS': 'value2', 'Msg': '32'}, 'Both': {'PS': 'value3', 'Msg': '33'}}}
操作将其加载到单个内存列表中。
((如果您确实只想将一个子集作为列表加载,则可以从该迭代器中获取第一个 n ,或者通过一个想法(例如{ {3}}。)
或者,您可以租用具有更多内存的云机。您选择的具有更多内存的几乎所有内容都适合运行基于Python的文本处理代码,因此只需遵循每个服务的各自教程,以了解如何设置和登录新的租用实例。
(4GB对于现代严肃的工作来说是很小的,但是,如果您只是进行修整/学习,则可以使用较小的数据集,并且可以在不需要时将所有内容都不加载到内存中来。)