如何准备使用整个Wikipedia进行自然语言处理?

问题描述

我在这里有点新。我有一个项目,必须下载和使用Wikipedia for NLP。我面临的问题如下: 我的RAM只有12 GB,但是英语Wiki转储的压缩量超过15 GB。这会限制我对Wiki的处理吗?我不需要维基百科的任何图片。处理之前是否需要解压缩转储?有人可以告诉我所需的步骤,还是可以指向我相关的内容? 预先感谢。

解决方法

最容易处理的Wikipedia转储是依靠kiwix.org转储,您可以在以下网址找到https://wiki.kiwix.org/wiki/Content_in_all_languages

然后使用python您可以执行以下操作

% wget http://download.kiwix.org/zim/wiktionary_eo_all_nopic.zim
...
% pip install --user libzim
% ipython
In [2]: from libzim.reader import File

In [3]: total = 0
   ...:
   ...: with File("wiktionary_eo_all_nopic.zim") as reader:
   ...:     for uid in range(0,reader.article_count):
   ...:         page = reader.get_article_by_id(uid)
   ...:         total += len(page.content)
   ...: print(total)

这是一个简单的处理,您应该立即开始。特别是从2020年开始,使用Wikimarkup的原始Wikipedia转储非常难以处理,因为在没有完整的Wikimedia设置的情况下,您无法将Wikimarkup转换为包括信息框的html。还有REST API,但为什么要在工作完成后挣扎:)

关于处理后将数据存储在何处,我认为行业标准是PostgreSQL或ElasticSearch(这也需要大量内存),但我真的很喜欢hoply,并且更喜欢OKVS

,

如果要直接处理XML转储,则可以下载多流版本。

multistream允许根据需要使用索引来解压缩节,而不必解压缩整个事物。

这使您可以从压缩转储中提取文章。

有关文档,请参见https://meta.wikimedia.org/wiki/Data_dumps/Dump_format#Multistream_dumps。使用此信息,您可以从转储中获取任何给定的文章,而无需将其加载到内存中。

如果要解析所有Wikipedia,则可以一次解析一个多流文件(约100篇文章),这应该适合您的资源。有关如何执行此操作的示例,请参见https://jamesthorne.co.uk/blog/processing-wikipedia-in-a-couple-of-hours/

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...