📚

wikiextractorでWikipedia記事から本文抽出する際のエラーと回避方法

2022/03/20に公開

https://dumps.wikimedia.org/jawiki/latest/

こちらで配布されているWikipedia記事のdumpデータはxml形式なので、ここから本文を抽出します。

wikiextractorというパッケージを使うことで簡単にできるはずなのですが、2022/03/20に試したところいくつか不具合を踏んでしまって困ったので、うまくいった方法を紹介します。

https://github.com/attardi/wikiextractor

wikiextractorのREADMEでは以下の方法が紹介されています。

git clone https://github.com/attardi/wikiextractor
cd wikiextractor
python -m wikiextractor.WikiExtractor <Wikipedia dump file>

しかしこの方法ではbdb.BdbQuitなる実行時エラーが出てしまいうまくいきません。

解決方法

pipでのinstallに切り替え、v3.0.4をinstallします。3.0.5と3.0.6では上記の問題が起こっているようです。

また、Pythonのバージョンが3.7以前であることを確認し、3.8以降であれば切り替えます。3.8以降ではv3.0.4をインストールしてもTypeError: cannot pickle '_io.TextIOWrapper' objectと出てしまいます。

pyenvでPythonを管理していれば、次のようにします。

pyenv local 3.7
pip install wikiextractor==3.0.4
wikiextractor <Wikipedia dump file>

これでプレーンテキストとして本文を抽出することができます。

Discussion