将Wikipedia XML文件加载到Gensim中

时间:2019-12-15 21:27:14

标签: python nlp gensim

我是NLP的完全新手,并且希望加载匈牙利维基百科语料库的压缩XLM文件(807 MB)。我下载了转储文件,并开始使用Gensim在Python中对其进行解析,但是4个小时后,我的笔记本电脑崩溃了,并抱怨我的内存不足。我有一台比较旧的笔记本电脑(4GB RAM),想知道是否有什么办法可以通过

解决此问题。
  • (1)要么修改我的代码,例如通过抽取语料库的1/10随机样本来减少语料库;
  • (2)或使用某些云平台来增强我的CPU能力。我在this SO post中读到,AWS可以用于此类用途,但是我不确定应该选择哪种服务(Amazon EC2?)。我还检查了Google Colab,但感到困惑,因为它在Tensorflow的上下文中列出了硬件加速选项(GPU和CPU),我不确定这是否适合NLP。我没有找到任何关于此的帖子。

这是从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)

任何指导将不胜感激。

1 个答案:

答案 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对于现代严肃的工作来说是很小的,但是,如果您只是进行修整/学习,则可以使用较小的数据集,并且可以在不需要时将所有内容都不加载到内存中来。)