0

我的目标是从维基百科 xml 转储 ( https://dumps.wikimedia.org/backup-index.html )中获取纯文本(没有链接、标签、参数和其他垃圾,只有文章文本)。我在 GitHub ( https://github.com/attardi/wikiextractor )上找到了 WikiExtractor python 脚本。下载并安装后(我使用 PyCharm IDE,Windows 10),我尝试开始使用

wikiextractor -cb 250K -o extracted D:\Wiki_dumps\ruwiktionary-20211120-pages-articles-multistream.xml.bz2

但后来(预处理后)我得到了以下错误

raise ValueError('cannot find context for %r' % method) from None ValueError: cannot find context for 'fork'

我试图将以下函数中的参数从“fork”更改为“spawn”(来自互联网的建议)

Process = get_context("fork").Process

但这只会导致

TypeError:无法腌制“_io.BufferedWriter”对象

我不知道如何修复它或它可能与什么有关

这是完整的堆栈跟踪:

信息:预处理 'D:\Wiki_dumps\ruwiktionary-20211120-pages-articles-multistream.xml.bz2' 以收集模板定义:这可能需要一些时间。

信息:预处理 100000 页

...

INFO:预处理 2300000 页

INFO:在 209.9s 内加载了 36839 个模板

信息:从 D:\Wiki_dumps\ruwiktionary-20211120-pages-articles-multistream.xml.bz2 开始提取页面。

回溯(最近一次通话最后):

_run_module_as_main 中的文件“C:\Users\Shurup\AppData\Local\Programs\Python\Python310\lib\runpy.py”,第 196 行,返回 _run_code(code, main_globals, None,

_run_code exec(code, run_globals) 中的文件“C:\Users\Shurup\AppData\Local\Programs\Python\Python310\lib\runpy.py”,第 86 行

文件“C:\Users\Shurup\PycharmProjects\pythonProject\venv\Scripts\ wikiextractor.exe_main_.py ”,第 7 行,在

文件“c:\users\shurup\pycharmprojects\pythonproject\venv\lib\site-packages\wikiextractor\WikiExtractor.py”,第 640 行,在主 process_dump(input_file, args.templates, output_path, file_size,

文件“c:\users\shurup\pycharmprojects\pythonproject\venv\lib\site-packages\wikiextractor\WikiExtractor.py”,第 359 行,在 process_dump Process = get_context("fork").Process

文件“C:\Users\Shurup\AppData\Local\Programs\Python\Python310\lib\multiprocessing\context.py”,第 239 行,在 get_context 返回 super().get_context(method)

文件“C:\Users\Shurup\AppData\Local\Programs\Python\Python310\lib\multiprocessing\context.py”,第 193 行,在 get_context 中引发 ValueError('cannot find context for %r' % method) from None

ValueError:找不到“fork”的上下文

这是带有“spawn”而不是“fork”参数的堆栈跟踪

“spawn”参数堆栈跟踪

4

1 回答 1

1

你可以在 Docker 中运行它。它就像一个魅力。

码头文件:

FROM python:slim

WORKDIR /app
RUN pip install wikiextractor

COPY Wikipedia-20211212095544.xml /app/

CMD python -m wikiextractor.WikiExtractor --output /app/output /app/Wikipedia-20211212095544.xml

构建:docker build --pull --rm -f "Dockerfile" -t wikiextractor:latest
运行:docker run --rm -it --mount type=bind,source="$(PWD)\output",target=/app/output wikiextractor:latest

确保output在当前工作目录中有一个文件夹。

于 2021-12-12T10:31:41.720 回答