首页 > 解决方案 > gensim 库中的 WikiCorpus 是否适用于阿拉伯语维基百科转储?

问题描述

我在阿拉伯语 Wikipedia 转储中看到了使用 Wikicorpus 的代码,并且我知道该过程需要很长时间才能执行,我还搜索了执行它时收到的警告,上面写着:

(UserWarning:检测到 Windows;将 chunkize 别名为 chunkize_serial
warnings.warn(“检测到 Windows;将 chunkize 别名为 chunkize_serial”))

并且回答说没关系,没什么大不了的,这只是一个警告。但是等了大约3天没有任何反应!我开始想知道它是否真的适用于阿拉伯语转储文件,或者我必须在将阿拉伯语转储文件传递给 Wikicorpus 对象之前进行某种预处理?数据大小约为 989.6 MB。我用两个打印命令围绕 WikiCorpus 代码行,以了解它何时开始以及何时完成执行,如下所示:

print('start WikiCorpus')
wiki = WikiCorpus(self.in_f)
print('finish WikiCorpus')

其中 self.in_f 是这样的阿拉伯语维基百科转储:(/文件所在的路径/arwiki-20200201-pages-articles.xml.bz2),但在运行时从未到达第二个打印命令。

标签: pythongensim

解决方案


它应该可以工作,特别是如果阿拉伯语有明确的单词分隔符(如单词之间的空格)。

但是,鉴于gensim大多数相关的 Python 数据科学库在其他地方得到了更多的开发/测试/使用,并且在多处理方面存在一些特定于 Windows 的怪异,很多事情在 Windows 上都更难。如果您可以选择在另一个操作系统上工作,那可以让事情变得更容易。

最近有另一个问题描述了与en转储类似的问题WikiCorpus- 有一些想法可以在我的答案中检查,但不清楚提问者是否解决了这个问题。

此外,当在 Windows 中使用依赖于 Python 的代码时multiprocessing,可能特别需要在“主”块中设置代码,如果您的文件被其他进程重新导入,则该块不会重新运行,并调用特定于 Windows 的freeze_support()功能。请参阅gensim 项目列表上最近对相关问题的一些讨论


推荐阅读