LoginSignup
16
17

More than 3 years have passed since last update.

WikiExtractor.py の使い方

Last updated at Posted at 2020-06-05

自然言語処理で学習用のサンプルが必要になった等の理由で Wikipedia の生文が必要になる場面があるかもしれません.
Wikipediaが提供しているダンプデータから記事本文を抽出する wikiextractor というOSSがあるので使い方をメモします.

How to Use

まず https://github.com/attardi/wikiextractor をクローンして WikiExtractor.py を作業するディレクトリにコピーなりする.

基本

python WikiExtractor.py <path_to_the_wikipedia_dump_file>

ダンプファイルは解凍せずに直接jawiki-latest-pages-articles.xml.bz2などを指定して良い模様.

Wikipedia の xml ダンプファイルは

curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2

などで取ってくる. 年次を詳しく指定したりしたい場合はここから取ってくる : https://ja.wikipedia.org/wiki/Wikipedia:%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89

約400万タイトルの処理状況が標準log に吐き出されます. 処理には数十分〜数時間かかります.

出力形式

text というディレクトリが作成され, 次のような構造でファイルが作成される.

/text
├─/AA
│ ├─wiki_00
│ ├─wiki_01
│ :
│ └─wiki_99
├─/AB
│ ├─wiki_00
| :
│ └─wiki_99
:
├─/AZ
| ├─wiki_00
| :
├─/BA
| ├─wiki_00
: :

AA から順にWkipediaの記事がABC順(日本語Wikiなら五十音順) で入っている.

wiki_XXはプレーンテキストで書式は以下のようになっている.Json 形式でも出力可能(後述).

    <doc id="" revid="" url="" title="">
        ... (記事本文)
        </doc>

おすすめオプション

python WikiExtractor.py <input_path> --processes <process_num> -o <output_path> --json -b <n[KMG]>
  • --processes: --processes 8 のように指定し, CPUのコア数を指定してマルチプロセスで処理.

  • --json: 出力を 毎行 json で出してくれる.

{"id": "", "revid": "", "url":"", "title": "", "text": "..."}
  • -b: デフォルトでは各wiki_XXファイルは1MBごとに区切られるようになっています. -b 1Gのように指定して制限を緩和できます. 出力を1ファイルにしたい場合は -b 5G のようにすると1ファイルに出力される.

出力を1ファイルにしたい

自然言語処理で用いたりする場合は1ファイルのテキストファイルがあった方が都合が良いかもしれない.

cat text/*/* > jawiki.txt

参考

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17