home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

日記/2010/03/08/FreePWING, wikipedia-fpwでWikipedia-jaのデータを変換

日記/2010/03/08/FreePWING, wikipedia-fpwでWikipedia-jaのデータを変換

日記 / 2010 / 03 / 08 / FreePWING, wikipedia-fpwでWikipedia-jaのデータを変換
id: 609 所有者: msakamoto-sf    作成日: 2010-03-08 13:11:38
カテゴリ:

知り合いからWikipedia-jaのデータを、辞書ソフトで使われる JIS X 4081 形式に変換出来ないかと頼まれた。
変換ツールは存在するのだが、プログラマではないその知り合いでは、自分で試すには難易度が高すぎるらしい。

基本手順と参考URL

順序:

  1. PerlをINT64bit、large-fileサポート付でコンパイル。
  2. FreePWINGを入れる。これ"./configure && make && make install"が必要。
  3. wikipedia-fpwを持ってきて、テケトーなディレクトリに展開する。
  4. wikipedia-jaのデータ持ってきて、wikipedia-fpwのディレクトリで伸長する。
  5. wikipedia-fpw.confを調整する。相互参照(enable-reference)をOFF、数式を使わなければenable_mathをOFF。
  6. 変換実行。

FreePWINGとwikipedia-fpw:

CPANで必要?かもなモジュール:

  • mimeTex, Image::Magick(数式ON時)
  • DB_File, BDB(?) : こちらはOut of memoryとかが出た時用。

他参考:FreePWINGのバージョンがビミョーに古い記事もあるので注意。FreePWING 1.6以降推奨らしい。

Perlのコンパイル&インストール(適当)

今回使ったサーバでは64bitintが無効のPerlがインストールされていた。OSインストール時に一緒に入ってきたパッケージなので、弄りたくない。
そこで、適当なディレクトリに手動でPerlを64bitint, largefiles対応でコンパイル&インストールしてそっちを使うようにする。

かなりざっくりと、tarボールのDLからコンパイル+インストールの流れ:

$ wget http://www.cpan.org/src/perl-5.10.1.tar.bz2

$ tar jxvf perl-5.10.1.tar.bz2

$ ./Configure \
-ds -e \
-Duse64bitint -Duselargefiles \
-Doptimize=-O2 -Dcccdlflags=-fPIC -Darchname=i386-linux \
-Dd_dosuid -Dusethreads -Ud_setresuid -Ud_setresgid -Dd_semctl_semun \
-Di_db -Di_ndbm -Di_gdbm \
-Dprefix=/foo/bar/perl-5.10.1 \
-Dinstallprefix=/foo/bar/perl-5.10.1

(細かいコンパイルオプションは、パッケージでインストールされたPerlのものを流用)

$ make && make test

$ su

# make install

今回コンパイル+インストールしたPerlを使いたい場合は、PATHを調整する。
bash例:

$ PATH=/foo/bar/perl-5.10.1/bin:$PATH
$ export PATH
$ cpan
(適当にセッティング)

FreePWINGのインストール

かなりざっくりと:

$ wget ftp://ftp.sra.co.jp/pub/misc/freepwing/freepwing-1.6.1.tar.bz2

$ tar jxvf freepwing-1.6.1.tar.bz2

$ cd freepwing-1.6.1

$ ./configure \
--prefix=/foo/bar/freepwing-1.6.1 \
--with-perllibdir=/foo/bar/perl-5.10.1/lib/site_perl/5.10.1
(手動インストールしたPerlを使うように、"--with-perllibdir"を調整する)

なおautoconfig中で"perl5"ディレクトリを見ている。上で手動コンパイル&インストールしたPerlは

perl5.10.1

というディレクトリにインストールされた為、とりあえずシンボリックリンクを作ってごまかした:

$ ln perl5.10.1 perl5

あとはmake & make install:

$ make
$ su
# make install

wikipedia-fpwとwikipediaデータのDL, 変換実行

ざっくりと:詳細は前掲の参考URL参照。

$ wget http://ikazuhiro.s206.xrea.com/filemgmt/visit.php/134
$ tar zxvf wikipedia-fpw-20091202-src.tar.gz
$ cd wikipedia-fpw-20091202
$ wget http://download.wikimedia.org/jawiki/20100217/jawiki-20100217-pages-articles.xml.bz2

時間掛かるので、nohupコマンドでターミナル(puttyやTeraTerm)からログアウトしても実行し続けるようにする。そのための、PATH調整を含めた簡単なスクリプトを作る。

do_conv.sh:

#!/bin/sh

PATH=/foo/bar/freepwing-1.6.1/bin:/foo/bar/perl-5.10.1/bin:$PATH
export PATH

fpwmake > foo.log 2>&1
echo $0 >> foo.log

実行。

$ nohup sh do_conv.sh &

これで、ターミナルからログアウトしてもOK。

→仕掛けたのが2/22, 23:00位。
終わったのが・・・

$ stat foo.log
  File: `foo.log'
  Size: 66141838        Blocks: 129320     IO Block: 4096   通常ファイル
Device: 303h/771d       Inode: 15418803    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  600/    lain)   Gid: (  600/    king)
Access: 2010-02-23 08:29:29.000000000 +0900
Modify: 2010-02-23 05:33:47.000000000 +0900
Change: 2010-02-23 05:33:47.000000000 +0900

→5時過ぎ。6時間半かかった。

変換データの圧縮、パッケージングでの注意点(2GB越のデータをzip圧縮→要注意)

"fpwmake"コマンドの引数に"package"を指定すると、辞書ソフトで読めるディレクトリ構造にパッケージング+圧縮してくれる。

$ fpwmake package

自分の環境ではすぐ終わってしまった。
圧縮しているようには思えないほどすぐに終了してしまったので、パッケージファイルを解凍してみる。
・・・HONMONファイルとか実際にコピーされてないっぽい。
ディレクトリ構造、README.PKGやCATALOGS, ライセンスファイルの入ったzipファイルは作成されていた。

ログに実行されたシェルスクリプトが出てきたし、
http://www.sra.co.jp/people/m-kasahr/freepwing/doc/freepwing-04.html#package
とかも見て、足りてないデータファイルを手動でコピーしてzipする。
・・・が、それでもHONMONファイルがzipアーカイブされていない。

ログに出てきたzipコマンドは下記の通り。

zip -9rkq wikipedia-fpw-20091202.zip WIKIP

"-q"を外して詳細を表示させると、見事にHONMONがスルーされている。
手動でアーカイブに追加してみると・・・

$ zip -9k wikipedia-fpw-20091202.zip WIKIP/WIKIP/DATA/HONMON
       zip warning: name not matched: WIKIP/WIKIP/DATA/HONMON

zip error: Nothing to do! (wikipedia-fpw-20091202.zip)

HONMONファイルは2GBを超えている。・・・いや~な予感がして、"zip warning: name not matched 2GB"でぐぐってみたら・・・

2GBを超えるファイルを扱うには

-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE

が必要とのこと。

さすがにzipコマンドまで手動コンパイル&インストールする気力は無かった。
ディレクトリ構造だけ整えて、試しにtar.gzで圧縮してみたら上手く行った。

"fpwmake"でパッケージ&圧縮する時は、使われるzipコマンドが2GB超えに対応しているか確認してからの方がよい。
そうでない場合は、手動でディレクトリ構造を整え、別途2GB超えに対応している圧縮ツールを使う。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-03-08 18:29:47
md5:be4180b870f339beec313d4a71ddfe66
sha1:3d773e14bf38585025b736f4c7df49c37ff388e7
コメント
コメントを投稿するにはログインして下さい。