辞書アプリにはいろいろあるが、Linux で使用可能な ”StarDict - The best dictionary program in linux and windows” で、英辞郎の辞書を使用できるようにする。
以下は Firefox と StarDict の GUI アプリで英辞郎の辞書ファイルを利用している例。
また、今回、英辞郎の辞書ファイルをどの辞書アプリで使用するか調べていて知ったのだが、この StarDict の辞書ファイルのフォーマットである stardict 形式は、iPhone/iPad などの電子書籍リーダなどでもよく利用されているようだ。
作業の大枠の流れは、以下の通りとなる。
- StarDict をインストールする
- 英辞郎辞書ファイルの取得
- 英辞郎辞書ファイルを stardict 形式の辞書ファイルに変換
- 変換した辞書ファイルを配置する
- 辞書アプリの設定を行う
Table of Contents
Open Table of Contents
1. StarDict をインストールする
Debian 系であれば、以下でインストール。
$ sudo apt-get install sdcv stardict-tools stardict
2. 英辞郎辞書ファイルの取得
まずは、辞書ファイルを用意する必要がある。本屋さんで売られている英辞郎本を購入するか、
Web でダウンロード販売もされているようで、以下から購入できる。
今回は、上記サイトから取得した。
ダウンロードしたファイルは、Window でないと解凍できない模様なので、一旦 Widnwos で解凍し、EIJIRO
ファルダにあるテキストの辞書ファイルだけを取り出す。
$ ll
合計 429034
-rwx------ 1 taka taka 153415785 2010-12-16 15:01 EIJI-127.TXT*
-rwx------ 1 taka taka 86119288 2010-12-16 15:11 REIJI127.TXT*
-rwx------ 1 taka taka 3717710 2010-12-16 15:01 RYAKU127.TXT*
-rwx------ 1 taka taka 196076088 2010-12-16 15:16 WAEI-127.TXT*
さて、上記のファイルは何者なのか?
- Linux で使う英辞郎第三版 - 真 もわ爛漫
今回理解する必要のある辞書ファイルの形式は三種
* PDICバイナリ形式 * PDIC一行テキスト形式 * sdic形式
いずれも広く使われている呼び名でない可能性がある点についてご注意願いたい。
PDIC というはソフトウェアの名称で、そのソフトウェアで使用されている辞書ファイルのフォーマットのようだ。
ダウンロードした辞書から取り出した上記の辞書ファイルは、PDIC 一行テキスト形式 フォーマットと呼ばれるものらしい。
上記のサイトではこのPDIC 一行テキスト形式を sdic 形式に変換を行っているが、ここでは、stardict 形式に変換する。
3. 英辞郎辞書ファイルを stardict 形式の辞書ファイルに変換
辞書ファイルの変換を行う。
変換対象のファイルは、PDIC 一行テキスト形式 フォーマットとなっており、文字コードは、SJIS、改行コードは、Windows の CR + LF となっている。
どのようなフォーマットとなっているのか確認してみる。
$ head -n 15 eiji-127.txt | nkf -w8
■! {記号} : =<→exclamation point>
■" {記号-1} : =<→inch>
■" {記号-2} : =<→double quotation mark>
■"Best Product of the Year" award : 「年間最優秀製品{ねんかん さいゆうしゅう せいひん}」賞
■"bring it on" gesture : 《a 〜》「かかってこい」というジェスチャー◆上向きの指先などで招くしぐさ。
■"go slow" convoy : のろのろ運転{うんてん}の車列{しゃれつ}、ゆっくり運転{うんてん}の車列{しゃれつ}
■"he said, she said" case : 互いに言い分の異なる[食い違う]訴訟{そしょう}
■"he said/she said" case : =<→"he said, she said" case>
■"he-said/she-said" case : =<→"he said, she said" case>
■"I can do anything " mindset : 《the 〜》「人[人間{にんげん}・自分{じぶん}]は何でも[どんなことでも]できるのだ」という考え方[心的態度{しんてき たいど}]
■"it was all a dream" ending : 《an 〜》夢落ち◆物語(特に収拾のつかないストーリー)が「実は全部夢だった」という説明で終わること。
■"It's me" fraud : おれおれ詐欺{さぎ}、なりすまし詐欺◆あちこちに電話をかけて、電話に出た人の子ども(または孫)のふりをして、緊急に多額の金が必要になったと告げ、指定の口座に銀行送金させるという詐欺。
■"just-following-orders" excuse : 「命令{めいれい}に従っただけ」という言い訳
■"Leave It to Beaver" family : 《the 〜》男は仕事{しごと}、女は家事{かじ}と育児{いくじ}という家庭{かてい}◆【参考】Leave It to Beaver
■"let's pretend" game : ごっこ遊び
$ tail -n 15 eiji-127.txt | nkf -w8
■π {映画} : π〈パイ〉◆米1998《監督》ダーレン・アロノフスキー《出演》ショーン・ガレット、マーク・マーゴリス
■ρ {名-1} : 《ギリシャ文字》ロー(rho)◆大文字はP◆【参考】Greek alphabet(ギリシャ文字)
■ρ {名-2} : 《化》ロー◆密度g/cm3の記号
■σ {名} : 《ギリシャ文字》シグマ(sigma)◆大文字はΣ◆【参考】Greek alphabet(ギリシャ文字)
■τ {名-1} : 《ギリシャ文字》タウ(tau)◆大文字はT◆【参考】Greek alphabet(ギリシャ文字)
■τ {名-2} : 《数学》タウ◆時間の記号◆T=time
■υ {名} : 《ギリシャ文字》ユープシロン、イプシロン、オイプシロン(upsilon)◆=筆記体の「v」の字。大文字はΥ(「γ」を大きくした字)。◆ 【参考】Greek alphabet(ギリシャ文字)
■φ {名-1} : 《ギリシャ文字》ファイ、フィー(phi)◆大文字はΦ◆【参考】Greek alphabet(ギリシャ文字)
■φ {名-2} : 《数学》ファイ、フィー◆角度または位相の記号
■χ {名} : 《ギリシャ文字》キー、クシー(chi)◆大文字はΧ(「X」を滑らかに書いた字)。◆【参考】Greek alphabet(ギリシャ文字)
■ψ {名-1} : 《ギリシャ文字》プシー、ブサイ(psi)◆大文字はΨ◆【参考】Greek alphabet(ギリシャ文字)
■ψ {名-2} : 《数学》プシー、ブサイ◆角度の記号◆φと同様。
■ω {名-1} : 《ギリシャ文字》オメガ(omega)◆大文字はΩ◆【参考】Greek alphabet(ギリシャ文字)
■ω {名-2} : 最後のもの◆ギリシャ文字の最後の文字なので。
■ω {名-3} : オメガ◆角周波数の記号◆=ω=2πf。fは周波数。◆【参考】angular frequency(角周波数)
英辞郎の辞書ファイルのコンバートで、区切り文字は、' /// '
を使っているのをよく見るが、このファイルフォーマットでは、' : '
となっているようだ。変換処理は、以下でやることにする。
(1) 文字コードを UTF-8 へ。改行コードは LF のみに。
(2) PDIC 一行テキスト形式のフォーマットを stardict 形式に変換するための “key<タブ>content” 形式に変換する。
(3) StarDict のツールを利用して、“key<タブ>content”形式のフォーマットを stardict 形式の辞書ファイルに変換する。
(1) は nkf でできる。(2) は変換用のスクリプトを用意する必要がありそうだ。(3) は StarDict のツールを利用する。
しばらくフォーマットを眺めていた結果、(2) のスクリプトは以下でいくことにした。
# -*- coding: utf-8 -*-
ARGF.each do |line|
line.gsub!("■・", "\\n・")
line.gsub!(/■/, '')
attr = nil
line.sub!(/ \{(.+?)\}/) do |e|
attr = $1
''
end
key, content = line.split(' : ')
content = "【#{attr}】" << content if attr
puts [key, content].join("\t")
end
もっと凝ったこともできそうだが、とりあえず今回の用途では上記で。
上記スクリプトを pdic1line2tab.rb
というファイル名で保存し(文字コードは UTF-8)、“key<タブ>content” 形式のフォーマットへ以下のコマンドで変換を行う。
まずは、eiji-127.txt
の変換を行う。以下で、上記の (1)、(2) を実施している。
$ cat eiji-127.txt | nkf -Lu -w8 | ruby pdic1line2tab.rb > eiji-127.tab
StarDict のコンバートツールを利用して、stardict 形式の辞書ファイルに変換を行う。上記の (3) になる。
$ /usr/lib/stardict-tools/tabfile eiji-127.tab
eiji-127.idx
、eiji-127.dict.dz
、eiji-127.ifo
の 3 ファイルが作成されている。これが StarDict で使用される辞書ファイルたちとなる。
$ ll eiji-127.*
-rw-r--r-- 1 taka taka 37844881 2011-01-01 02:24 eiji-127.dict.dz
-rw-r--r-- 1 taka taka 60659155 2011-01-01 02:24 eiji-127.idx
-rw-r--r-- 1 taka taka 115 2011-01-01 02:24 eiji-127.ifo
-rw-r--r-- 1 taka taka 186402189 2011-01-01 15:39 eiji-127.tab
-rw-r--r-- 1 taka taka 153415785 2010-12-16 15:01 eiji-127.txt
同様に、reiji127.txt
ryaku127.txt
waei-127.txt
についても、eiji-127.txt
に対して行なったのと同様の処理を行っておく。
以上で辞書ファイルの変換は完了。
4. 変換した辞書ファイルを配置する
これまでに作成した stardict 形式の辞書ファイルを適切な場所に配置しておく。
$ sudo mv *.dict.dz *.idx *.ifo /usr/share/stardict/dic/
$ ll /usr/share/stardict/dic/
合計 303504
-rw-r--r-- 1 taka taka 37844881 2011-01-01 02:24 eiji-127.dict.dz
-rw-r--r-- 1 taka taka 60659155 2011-01-01 02:24 eiji-127.idx
-rw-r--r-- 1 taka taka 115 2011-01-01 02:24 eiji-127.ifo
-rw-r--r-- 1 taka taka 19709525 2011-01-01 16:22 reiji127.dict.dz
-rw-r--r-- 1 taka taka 35256865 2011-01-01 16:21 reiji127.idx
-rw-r--r-- 1 taka taka 114 2011-01-01 16:22 reiji127.ifo
-rw-r--r-- 1 taka taka 1599370 2011-01-01 16:23 ryaku127.dict.dz
-rw-r--r-- 1 taka taka 469666 2011-01-01 16:23 ryaku127.idx
-rw-r--r-- 1 taka taka 111 2011-01-01 16:23 ryaku127.ifo
-rw-r--r-- 1 taka taka 40602168 2011-01-01 16:26 waei-127.dict.dz
-rw-r--r-- 1 taka taka 114616145 2011-01-01 16:26 waei-127.idx
-rw-r--r-- 1 taka taka 116 2011-01-01 16:26 waei-127.ifo
以上で完了。
5. 辞書アプリ (StarDict) の設定を行う
StarDict を再起動してあげると、辞書ファイルの読み直しを行う。和英辞書もキチント動作しているようだ。
他アプリケーションでのポップアップ表示のタイミングなど、StarDict の設定画面で好みのものに変えておく。
また、StarDict には、sdcv
というコマンドラインツールも存在する。
$ sdcv -n "buffer"
Found 1 items, similar to buffer.
-->eiji-127
-->buffer
【1-自動】バッファー[緩衝器{かんしょうき}・緩衝装置{かんしょう そうち}]の役割{やくわり}を果たす
$ sdcv -n "用意する"
Found 1 items, similar to 用意する.
-->waei-127
-->用意する
accommodate someone with●come up with●fit out●fit up●fix up●make up●put up●ready oneself●set out●tee up
この sdcv
というコマンドラインツールだが、同じキーで、登録が複数あった場合の表示方法がイマイチだ。オプションを確認してみたが、うまく表示させる方法がわからない。
例えば、“take” という単語にはいろいろな意味、用法がある。GUI の StarDict を使うと冒頭取り上げた、以下のような表示になる。
sdcv
では・・・
$ sdcv -n "take"
Found 1 items, similar to take.
-->eiji-127
-->take
【他動-4】〔人を場所へ〕連れていく、〔物を〕搬送{はんそう}する、持ち込む<br />・Where are you taking me? どこに連れてくつもり?
はて、何かよい方法があるのだろうか?