WikiExtractor: Wikipediaダンプを下流処理向けの本文へ変換する
Wikipedia ダンプからプレーン テキストを抽出するツール。警告**: Windows 上の Python 実装における StringIO のサポートが不十分なため、Windows 上で問題が報告されています。
ひと目でわかる
- これは何?
- WikiExtractorは圧縮XMLまたはCirrusダンプを読み、テンプレートを展開して、分割されたテキストやJSON Linesを出力するPython 3のコマンドラインツールです。
- 誰に向いている?
- Wikipediaのダンプを研究用コーパスや前処理パイプラインへ渡す人に適しています。完成済みの知識グラフや意味検索を提供する製品ではありません。
- 商用利用できる?
- 厳しい条件付きでできます。AGPL-3.0 はネットワーク型コピーレフトのライセンスで、改変版をホスティングサービスなどとしてネットワーク越しに利用させる場合、その利用者にソースコードを同じライセンスで提供する必要があります。
- 今もメンテナンスされている?
- されています。最後のコミットは 10 日前です。
- 何の言語で書かれている?
- 主に Python です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
wikiextractor: Wikipediaダンプからのテキスト抽出
WikiExtractorはリポジトリ内のwikiextractor/WikiExtractor.pyにあるPythonスクリプトで、Wikipediaデータベースバックアップダンプからテキストを抽出しクリーニングします。READMEは例として英語版WikipediaのダンプURL https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2 を挙げています。このツールはPython 3で書かれており、追加ライブラリは不要です。READMEは、Windows版PythonのStringIOサポートが不十分なため、Windowsでの問題が報告されていると警告しています。
wikiextractor: Cirrus Extractor
リポジトリにはcirrus-extractor.pyも含まれています。これはWikipedia Cirrusダンプから抽出するバージョンです。Cirrusダンプのテキストにはテンプレートが展開済みで含まれており、dumps.wikimedia.org/other/cirrussearch/ で入手できます。READMEはCirrusダンプの形式を詳しく説明しておらず、コマンドラインの使い方と、出力ドキュメント形式に通常のid、url、titleに加えてlanguageとrevision属性が含まれることだけを示しています。
wikiextractor: インストールと直接呼び出し
WikiExtractorは python -m wikiextractor.WikiExtractor <ダンプファイル> で直接実行できます。PyPiから pip install wikiextractor でインストールするか、ローカルで python setup.py install とすることもできます。インストール後は、python -m 形式と等価な wikiextractor と、ダンプから単一ページを抽出する extractPage の2つのスクリプトが直接呼び出せるようになります。READMEはインストールパスやPython 3以外のバージョン制約については言及していません。
wikiextractor: 処理の仕組み
このスクリプトはダンプ全体を前処理してテンプレート定義を収集することで、テンプレート展開を行います。処理を速めるため、記事を並列に扱うマルチプロセッシングと、解析済みテンプレートのキャッシュを使用します。READMEはキャッシュが繰り返し抽出の場合にのみ有用だと注記しています。--templatesオプションはテンプレートをローカルファイルに書き出し、後で再読み込みできます。--no-templatesは展開を完全にスキップし、MediaWikiテンプレートを展開しない代わりに抽出を大幅に高速化します。READMEにはパフォーマンスのベンチマークや推奨プロセス数はなく、デフォルトの79のみが示されています。
wikiextractor: 出力形式とコマンドラインオプション
出力は指定ディレクトリ内の似たサイズの複数ファイルに保存され、各ファイルは複数ドキュメントを含みます。デフォルト形式は <doc id="" url="" title="">...</doc> です。--jsonを指定すると、各ファイルにid、revid、url、title、textフィールドを持つJSONオブジェクトが1行ずつ出力されます。他のオプションには、出力ディレクトリまたはstdoutを示す'-'を指定する-o、出力ファイルごとの最大バイト数-b、bzip圧縮-c、HTML出力--html、リンク保持-l、名前空間選択-ns、進行情報抑制-q、デバッグ用の--debugと-aがあります。
wikiextractor: extractPageとライセンス
extractPageスクリプトはXML wikiダンプから単一ページを抽出します。--idで記事番号、--templateでテンプレート番号を指定します。プロジェクトはGNU Affero General Public License v3.0で配布されています。このライセンスはソフトウェアの複製、頒布、変更を許可し、ネットワークサーバーで修正版を運用する場合は、ユーザーに対応するソースコードを提供することを求めます。ライセンス本文にはセキュリティ保証、サポート、保証については記載がなく、READMEにもありません。
wikiextractor: 引用
READMEは出版物でWikiExtractorを引用するためのBibTeXエントリを提供しており、著者はGiuseppe Attardi、年は2015年です。それ以外のプロジェクトの歴史やメンテナンス状況に関する詳細はREADMEにありません。
入力の種類を最初に固定することが、このツールでは出力品質を左右します。通常のWikipedia XML dumpではテンプレート定義を展開するための準備が必要ですが、Cirrus dumpは展開済み情報を含むため、同じオプションを機械的に適用しません。小さな入力でページ名、カテゴリ、リダイレクト、テンプレートの出力を比較し、`--json`を選ぶなら1行ごとのJSONを壊さず読める下流処理を用意します。`-b`の分割サイズ、`-l`の名前空間、`-s`の最小文字数を変えた結果は、件数とファイルサイズで検査します。READMEは処理速度の保証を示していないため、79プロセスという既定値をそのまま採用せず、ストレージ速度とメモリを測って決めます。AGPL-3.0のコードを組み込む場合は配布形態も確認します。ページ本文にXML由来の断片が残っていないか、テンプレート展開による空白やリンクの変化が許容できるかも、サンプルの目視と簡単な件数集計で確認します。`extractPage`を使う処理ではページ番号とテンプレート番号を取り違えないよう、入力に含まれるIDを先に一覧化します。出版物で引用する際は、READMEのBibTeX記載と実際に使ったバージョンを対応させます。 出力した分割ファイルを再結合せず下流へ渡す設計かどうかも、処理単位と一緒に決めます。
編集部の結論
Wikipediaのダンプを研究用コーパスや前処理パイプラインへ渡す人に適しています。完成済みの知識グラフや意味検索を提供する製品ではありません。最初に小さなダンプで`--templates`と`--no-templates`の差、名前空間、`--json`のid・revid・title・text、出力分割を確認し、WindowsではREADMEが記すStringIOの制限を再現してから全量処理へ進んでください。
コミュニティノート