Hatena::ブログ(Diary)

naoyaのはてなダイアリー

June 02, 2006

eijiro.pl 改

市販のソフトなども色々あるようですが、英辞郎そのものの辞書データが、1980円というリーズナブルなお値段でダウンロード可能なのですね。英辞郎のホームページから入手可能。

ただ、あくまでもデータだけなので、辞書として検索するためのビューワーが必要になります。

英辞郎の英和:和英辞書をローカル環境で高速検索:Goodpic

英辞郎のデータが 1,980円で手に入るとはなんということでしょう。Goodpic さんおいしい情報ありがとう。

そういえば英辞郎と言えば宮川さんが昔 Hack した eijiro.pl なんてのがあったなあと思い出しました。(http://bulknews.net/lib/columns/02_eijiro/column.html) これは alc のウェブページをスクレイピングしてコマンドライン用に整形するスクリプトです。短いスクリプトですが、英和/和英を自動判定したり、対話型でヒストリがあったり、less や lv などのページャとうまく連携してたり何気に便利、ですが alc 側の構成が変わったり何なりで今は使えないようです。

ということで、この1,980円の英辞郎データで eijiro.pl するスクリプトをでっちあげてみました。

使う人はいないとは思いますが、いちおう svn co http://svn.bloghackers.net/public/eijiro/trunk からチェックアウトできると思います。

$ bin/eijiro.pl --init EIJIRO95.TXT
$ bin/eijiro.pl --init WAEIJI95.TXT

と最初に初期化コマンドを走らせます。引数には英辞郎データのテキストを与えます。これでテキストを内部用のデータに変換します。(相当時間がかかると思います。)

あとは旧 eijiro.pl と同じように端末からコマンドラインで使えます

$ bin/eijiro.pl
eijiro> intercurrent
intercurrent
        中間の、介入性の

intercurrent disease
        介入疾患{かいにゅう しっかん}

intercurrent illness
        併発{へいはつ}する病気{びょうき}、併発疾患{へいはつ しっかん}

eijiro> 彼は
彼は他人の気持ちを気に掛けない
        He is reckless of other people's feelings.

彼は他人の見本となる人物だ。
        He is a role model for other people.

こんな感じで。なんか和英は like 前方一致じゃなくて部分一致の方が良さそうです。

中の実装はと言いますと、英辞郎のテキストをパーズして DBIx::Class で SQLite に保存しつつ、単語側にインデックスを張っておいて検索という感じです。最初はテキストの Suffix Array でも作ってやろうかなと思ったけど、データが比較的単純で RDBMS の方が何かと楽そうだったので結局 SQLite にしました。

自分用のツールとして作ったものなので、これからメンテとかはあんまり考えてないですが、Perl が使える人なら適当に Hack して自分好みに変えられると思います。例えばスペルチェッカーの機能を Net::Google の spelling を使って「もしかして」機能として実装してみるとかいろいろ。

なんかそれPlaggerでとか言われそうな気がしないでもない。

Jun KanekoJun Kaneko 2006/06/03 11:48 お〜っやっぱりこういう方向にきましたねw。なかなか美味しいデータ Outsideでした。

FomalhautFomalhaut 2006/06/04 14:42 eijiro.pl を使わせていただきした。
とても便利です。ありがとうございます。

inopieinopie 2007/06/02 13:48 使わせていただいています。どうやら~/.eijirohistoryがないと単語を一つ引くたびにHistory->addでこけるような気がします。一度touchしてやれば大丈夫です。