Wik-IEはWikipediaで公開されているデータファイルを解析するJavaで書かれたツールです。 記事やカテゴリ・リダイレクト間の関係や他言語版へのリンクなどの情報を抽出します。
バージョン2.0から実行できる機能や、実行方法が変わりました。
また分散処理版とスタンドアロン版の区別をなくしました。1つのjarファイルでどちらの用途にも利用できます。
Wikipediaではその全データが誰でもダウンロード可能な形で公開されています。 そのデータファイルを解析し、記事やカテゴリ・リダイレクト間の関係や他言語版へのリンクなど、様々な情報を抽出するツールがWik-IEです。 Wik-IEはApache Hadoopプラットフォーム上での動作し、分散処理により高速で処理ができます。スタンドアロンでの動作も可能です。
Wik-IEはHadoop上で動作するので、Hadoopが動作する環境が必要です。 Hadoopの動作要件とインストールについてはApacheのHadoopプロジェクトのページを参照してください。
Wik-IE現バージョン(2.0)はHadoop0.20.2の環境下で開発しました。
Hadoop Quickstart: http://hadoop.apache.org/common/docs/r0.20.2/quickstart.html
ただしWik-IEはHadoopのライブラリが組み込まれているので、分散環境が不要な場合はJavaの実行環境のみで動作します。
Wik-IEでは次のようなデータファイルが生成できます。 生成されるファイルはTSV(タブ区切り)形式のテキストファイルで、文字コードはUTF8です。
| 機能 | データ | 実行時の引数 |
|---|---|---|
| node | ページのタイトルとIDとページ種別 | jp.ac.dendai.cdl.mori.wikie.mapred.NodeDriver |
| edge | ページのカテゴリとリダイレクト関係 | jp.ac.dendai.cdl.mori.wikie.mapred.EdgeDriver |
| lang | 言語間リンク | jp.ac.dendai.cdl.mori.wikie.mapred.LangDriver |
id title kind
id(current) id(target) relation
id title1 title2 title3...
まず解析するデータファイルをWikipediaからダウンロードします。
日本語版Wikipediaデータ: http://download.wikimedia.org/jawiki/latest/
必要なのはjawiki-latest-pages-meta-current.xml.bz2という名前のファイルです。 サイズが大きなファイルなので時間とHDD容量に注意してください。 なお他言語版Wikipediaにも対応するページがあります。 他言語版の場合はURLの言語部分がその言語の略になります。(日本語の場合はjawiki~ですが英語版はenwiki~ドイツ語版はdewiki~など)
次にWiki間リンクの設定が保存されているSQLダンプjawiki-latest-interwiki.sql.gzもダウンロードします。 このファイルはWik-IE2.0から必要になりました。 なおこのSQLダンプファイルはWik-IEに組み込まれている組み込みデータベースで使用するので、 実行環境にデータベースを別途インストールする必要はありません。
分散処理版Wik-IEは次のように実行します。
Hadoopインストールディレクトリ/bin/hadoop jar Wik-IE.jar -d 機能 -i データファイルのパス -interwiki jawiki-latest-interwiki.sqlのパス -o 出力ディレクトリのパス -r Reduceタスク数
機能とはこちらの表に書かれている「実行時の引数」の文字列です。 実例としては以下のようなコマンドになります(実際には改行を含みません)。
/opt/hadoop-0.20.2/bin/hadoop jar Wik-IE.jar -d jp.ac.dendai.cdl.mori.wikie.mapred.NodeDriver -i /user/hadoop/jawiki-latest-pages-meta-current.xml -interwiki /user/hadoop/jawiki-latest-interwiki.sql -o result -r 3
入力・出力ファイルともにHadoopのファイルシステム上に配置されることに注意してください。
Reduceタスク数は省略できます。省略した場合はタスク数は1です。 タスク数を指定した場合には、出力ファイルがpart-r-*****という連番のファイル名でタスク個数に分割されて生成されます。 それらの分割ファイルは次のコマンドでマージしてファイルシステムからコピーできます。
Hadoopインストールディレクトリ/bin/hadoop fs -getmerge partファイルのあるディレクトリのパス コピー先のパス
分散環境を利用しない場合は次のように実行します。
java -jar Wik-IE.jar -d 機能 -i データファイルのパス -interwiki jawiki-latest-interwiki.sqlのパス -o 出力ディレクトリのパス
実行時にメモリ不足のエラーが発生した場合、次のようにオプションを付けてメモリ使用量を増やして実行してください。
java -Xms256m -Xmx256m -jar Wik-IE.jar -d 機能 -i データファイルのパス -interwiki jawiki-latest-interwiki.sqlのパス -o 出力ディレクトリのパス
Wik-IEはApache License 2.0で配布されています。