OS Xの「辞書」アプリで「英辞郎」を使う

11月 6th, 2007
[`evernote` not found]
Facebook にシェア

先の記事でも書いたように、Mac OS X v10.5 “Leopard”の「辞書」アプリケーション(辞書.app / Dictionary.app)用の辞書はユーザーが追加できるようになっている。そこで、定番の英和辞書「英辞郎」を変換するツールを作ってみた。英辞郎は、現時点で最新のv108を使用している。


使い方は以下の通り。
・OS Xのインストールディスクに含まれる開発ツールをインストールする(「Optional Installs」→「Xcode Tools」→「XcodeTools.mpkg」を実行)
・「/Developer/Exmaples/Dictionary Development Kit/project_templates」フォルダ(OS X 10.7以降は「/Developer/Extras/Dictionary Development Kit/project_templates」フォルダ)を適当な場所にコピーする
→(※OS X 10.7 Lion以降用のXcodeはMac App Storeから入手する。注意点については、下の2012年6月12日/30日の追記を参照のこと)
・コピーした「project_templates」フォルダに、英辞郎の英和辞書データ「EIJI-???.TXT」、略語郎「RYAKU???.TXT」をコピー(英辞郎と略語郎は1つの辞書にした方が使い勝手がよいのでこうしている)。???は英辞郎のバージョンによって異なる
ここから「eiji_conv???.zip」をダウンロードして解凍し、同じく「project_templates」フォルダにコピーする(同じファイル名は「上書き」)
・「ユーティリティ」フォルダの「ターミナル」アプリケーション(Terminal.app)を起動して、「cd」コマンドで(コピーした)「project_templates」フォルダに移動する
・ターミナルで、「ruby -Ks ryaku_conv.rb < RYAKU???.TXT > Ryaku.txt」と入力(略語郎内のリンクを英辞郎の表記に合わせている)
・「ruby -Ks cat.rb EIJI-???.TXT Ryaku.txt > Eijiro.txt」と入力(英辞郎と略語郎のファイルを連結して「Eijiro.txt」というファイルを生成)
・「ruby eiji_conv.rb < Eijiro.txt > MyDictionary.xml」と入力(2GBのメモリを搭載したMacBook(2GHz)で約20分)
・「make」と入力(同環境で約40分)→(Snow Leopardの辞書ツールでは、生成される辞書のサイズが小さくなる代わりに作成時間が大幅に伸びた。十数〜数十時間を要することがある)
・「make install」と入力
※「ruby eiji_conv.rb < Eijiro.txt > MyDictionary.xml ; make ; make install」と入力すれば、3つの作業をまとめて実行できる
・「辞書」アプリケーションを立ち上げると、英辞郎(Eijiro)が使えるようになっている。なっていない時は、「環境設定…」で英辞郎にチェックを入れる

control+command+Dを押しっぱなしにしていると、マウスカーソル近くの単語を自動認識して辞書を引いてくれるのでとても快適だ。

eiji_conv.png出来上がったデータはけっこう大きくなる(略語郎こみで1.36GB)。
アップルが提供するツールでは、他の項目とリンクしうる本文内の箇所について自動的にインデックスを作成する模様。このインデックスがかなり大きくなっているようだ。リンクさせたい箇所を明示的に指定すれば、インデックスは小さくなるだろう。ただ、自動的に作ってくれるインデックスの方が使い勝手がよいのではないかと思う。

(2007年11月9日追記)
いくつかバグ取りと改良を行った。
○v0.01→v0.02の変更点
・品詞が間違って付けられることがあったのを修正
・<→単語>という形式で飛び先が明示されているものにはリンクを張った
・URLをクリックすると、該当ページにジャンプするようにした
※URLの判別ルーチンは、『Ruby Magic―Rubyで極める正規表現』を参考にしている。

(2007年11月12日追記)
eiiji_conv2.png○v0.02→v0.03の変更点
・空行処理
○v0.03→v0.04の変更点
・スタイルの指定(品詞、定義の順、ルビ、文例)

表示が見づらかったので、スタイルシートで体裁を整える。一部行間隔がおかしいところもあるが(スタイルシートって難しい……)、けっこう見やすくなった。
スタイルシートを変えたい場合は、「~/Library/Dictionaries/Eijiro.dictionary/Contents/DefaultStyle.css」を修正すればOK。スタイルシートの修正だけならば、辞書データを再作成する必要はなく、辞書アプリを再起動するだけでいい。

(2007年11月12日追記(続き))
○v0.04→v0.05の変更点
・品詞名のついていない項目で、スタイル指定が間違っているのを修正
静的なデータを加工するだけなのに、けっこうバグが出る……。これで問題はなくなったと思いたい。

(2007年11月15日追記)
○v0.05→0.06の変更点
・名詞の複数形や動詞の過去形など、変化形でも引けるように改良。
※ただし、熟語になっているものは変化形では引けない。

(2007年11月20日追記)
日本郵便の郵便番号データの変換ツールを公開。詳しくはこちら

(2007年11月27日追記)
○v0.06→0.07の変更点
・2通りの変化形に対応。例えば、「evil」の比較級は「eviler」と「eviller」があるが、どちらでも引けるようにした。
・リンク先が2つ以上ある場合にも、きちんとジャンプできるようにした。
・辞書名を「Eijiro」から「英辞郎」に変更。

(2008年2月12日追記)
EPWINGの辞書を使えるようにしてみた。詳しくはこちら

(2009年8月31日追記)
Snow Leopard付属ツールで辞書データを作成すると、Leopard上で作った場合に比べてサイズが2/3になる。ただし、作成時間も延びているので注意。英辞郎+略語郎のデータを初代MacBookでmakeするのに、22時間を要した。

(2010年5月14日追記)
○v0.07→0.08の変更点
見出しが長すぎる項目があるとエラーが出てしまうことがあった。そこで、見出しが長すぎる(512文字以上)項目はスキップするようにした。

(2011年4月11日追記)
○v0.08→0.09の変更点
・スタイルシートを一部修正(例文前後の空行など)。
・解説文中の読みがなの表示/非表示が選択可能に。これを行うためには、eiji_conv009.zipの「extras」内にある「MyDictionary_prefs.html」と「MyDictionary.xsl」を、(コピー済みの)「project_templates」フォルダ→「OtherResources」フォルダにコピーしてから、辞書の変換作業を実行する。変換作業終了後、辞書.appを立ち上げ、「環境設定」から英辞郎を選択して「読みがな」の設定を行う(読みがなの設定を行わないと、解説文が正常に表示されないことがある)
※スタイルシート修正および読みがな設定は、滝本さんからの情報を元にしています。どうもありがとうございました。

(2012年6月12日追記)
Lion用のXcode 4.3にはDictionary Development Kitが含まれていません。
これを入手するためには、まずMac App StoreからXcode 4.3をダウンロード&インストール。Xcode 4.3のアプリケーションメニュー「Open Developer Tool」→「More Developer Tools…」で開発者用のウェブページを開くと、Auxiliary tools for Xcodeをダウンロードすることができ、この中にDictionary Development Kitが入っています。
なお、Auxiliary tools for Xcodeのダウンロードには、Appleの開発者用アカウントを作成する必要があるので注意(無料で作成できます)。

(2012年6月30日追記)
2012年6月12日に追記した内容の補足。
Xcode 4.3以降用のDictionary Development Kitを使う場合、一部修正が必要になります(Hiroさんより情報をいただきました)。

>本サイトからダウンロードできる,「eiji_conv009.zip」に含まれる「Makefile」をテキストエディットで開き,
>DICT_BUILD_TOOL_DIR = “/Developer/Extras/Dictionary Development Kit”
>の記述を,Dictionary Development Kitをインストール(コピー)したディレクトリに書き換えることで,makeコマンドが起動します.
>例えば,Dictionary Development Kitを「アプリケーション」フォルダにインストールした場合,
>DICT_BUILD_TOOL_DIR = “/Applications/Dictionary Development Kit”
>に書き換えます.

175 Responses to “OS Xの「辞書」アプリで「英辞郎」を使う”

  1. MAAR Says:

    こちらで前提の英辞郎ではないので恐縮なのですが、お知恵を拝借したくてお訊ねします。

    英辞郎for対訳君2.0 対訳君に付属の英辞郎のデータはEIJIRO V101 フォルダを解凍した中に 英辞郎_V101 - DATA – EIJIRO.TXT と DATA と同じ階層に INDEX(MAC) - MPEG-1ビデオのファイル(backward, backward.tbl, foward, foward.tbl, keyword, keyword.tbl )が 収まっています。略語郎その他データも同様な感じです。

    普通の英辞郎 3版などとは仕様が異なっているらしいのですが、これを辞書アプリ、ゆくゆくはiPhoneで使えないかと思って模索してます。
    そこでちょっとこちらの方法でなんとかできないかと試してみましたがやはり駄目でした。EIJIRO.TXTをただ名前だけをEIJI-101.TXTにしたり、EIJIRO.TXTを一旦PDICへ変換してそれを DiDi Dictionary Viewerでツール/PDICから他形式へ/英辞郎ビューア用(Shift JIS) で変換してみたりしたんですけど、なまじ知識が足りないせいか、かなり強引に試してみたものの、以下のようなエラーがでてしまい、その先へ進めません。私の方法は見当違いなことをしているんだと思うのですが、やはり通常版のものではないと駄目なんでしょうか。
    「辞書」アプリで「英辞郎for対訳君2.0」を使う何かいい方法はないのでしょうか?

    エラーでは
    ruby eiji_conv.rb < Eijiro.txt > MyDictionary.xml

    eiji_conv.rb:51: undefined method `pre_match’ for nil:NilClass (NoMethodError)

    とでてます。

  2. Tats_y Says:

    MAARさん、こんにちは。
    「英辞郎 for 対訳君」のページを見ると、
    >「英辞郎 for 対訳君」は、英辞郎制作グループEDPから
    >最新バージョンの辞書データを受け取り、弊社にて
    >「対訳君」で検索できる形式に変換した辞書です。
    と書かれていますから、たぶん元の英辞郎とはデータ形式がまったく違うのではないでしょうか。

  3. MAAR Says:

    実は対訳君についている英辞郎のテキストファイルの一部をPDICにしてPalm OSでPAdictを通して使っていたのです。全ての英辞郎データを使っているわけではないのですが、PDICビューアやDiDiで使えるのでもしやそれだけでも移植できないかと…。ちなみに和英辞郎は和英01_V101から和英04_V101と4つのフォルダに分かれてます。
    例辞郎だけまったく別のファイル形式なので使えないのですが…
    REIJI101フォルダのなかにUNIX実行ファイルの(data、idx、index、table、tdfd、tdfm)とfilesのフォルダ(199809-1、20001141などという4KほどのUNIX実行ファイルが6,610ファイルも入っているので…)
    お手間をとらせてすみませんでした。

  4. EarlGrey Tearoom Says:

    Leopardの辞書に英辞郎を追加

    binWord/blog: Leopardの「辞書」アプリで「英辞郎」を使う Mac OS X v10.5 "Leopard"の「辞書…

  5. 商用アヒル Says:

    はじめまして。
    Dictionary.appに、DVD-ROM版の英辞郎ではなくてオンラインの英辞郎を(Wikipediaのように最新のものを動的に使えるように)追加したいのですが、どういうやり方をすればできるのでしょうか? 感じとしては昔のSherlockのプラグインの作り方と似ているであろうことが予想されますが、具体的にはどうすればよいでしょうか。

    URLにmixiでの質問トピへのリンクを置いています。

  6. Tats_y Says:

    商用アヒルさん、こんにちは。
    私も同じことを考えて、いろいろ調べたり、詳しい人に聞いたりしました。結論からいうと、少なくとも現バージョンのDictionary.appでは(あらかじめ用意されているWikipediaのような形態では)オンライン辞典を追加することはできないようです。
    Wikipediaに関しては、ローカルなDicitionary.app側だけでなく、サービス提供側でも何らかの工夫(インデックス関連)がしてあるようですね。
    SnowLeopardのDictionary.appに期待というところでしょうか。

    ただ、Dictionary.appは一種のHTMLブラウザですから、Web上にあるコンテンツを表示させるだけならできるかもしれません。ローカルな辞書やWikipediaのように(アプリケーションの)検索欄にキーワードを入力して検索するというのは無理でしょうけど。

  7. G56 Says:

    はじめまして。いつも便利に使わせていただいてます。
    topic違いですがXcode Tools のuninstall の方法ご存知でしたらお知恵を拝借したく質問いたします。
    macbook 買い替えの為、現在データの移し替えで四苦八苦してるところで、素人の私にはXcode Toolsは無用の長物と思いuninstallを考えています。
    環境はosX 10.5.5 / intel Core2Duo と同os/ intel CoreDuo です。

    *Xcode Toolsのマニュアル通り下記を実行しても
    ”No such file or directory”と表示されるだけで何も起こりません。
    (XcodeTools内のappは開いた事は無いです)
    完全には消去されないとのことでinstall DVD を使うと良いとNOTEには書かれていますがuninstallerが見つけられません。

    $ sudo /Library/uninstall-devtools –mode=all

    $ sudo /Library/uninstall-devtools –mode=systemsupport

    $ sudo /Library/uninstall-devtools –mode=unixdev

    $ sudo /Library/uninstall-devtools –mode=xcodedir

    NOTE: The uninstaller that ships with previous versions of the Xcode developer tools will not clean
    everything off of your system properly. You should either use the one provided on the Mac OS X v10.5
    (Leopard) DVD, or you should use the one installed when you installed the Xcode 3.0 developer tools.

  8. Tats_y Says:

    G56さん、こんにちは。

    > *Xcode Toolsのマニュアル通り下記を実行しても
    > ”No such file or directory”と表示されるだけで何も起こりません。

    アップルのページ(http://developer.apple.com/documentation/Xcode/Conceptual/XcodeCoexistence/Contents/Resources/ja.lproj/Basics/chapter_2_section_5.html)を確認すると、下記のように書かれています。

    > sudo <Xcode>/Library/uninstall-devtools –mode=all

    <Xcode>と書かれているのは、Xcodeがインストールされているフォルダ(標準では「/Developer」)のことでしょう。つまり、「sudo /Library/」ではなく「sudo /Developer/Library/」と入力する必要があるのではないでしょうか。

  9. 匿名 Says:

    早速の返信ありがとうございます!
    あらかた*消去できました。
    (なぜか*Developer/Example/AppKit/以下略/のフォルダが残りましたが)
    $ sudo/Developer/Library/uninstall-devtools –mode=all
    で実現しました。本当にありがとうございました。

  10. TKN Says:

    はじめまして.
    英辞郎Ver.114を使用し,こちらのサイトを参考にさせて頂きましたが,
    makeをしたときに以下のようなエラーが発生してしまいました.
    アドバイスを頂けたら幸いです.
    それでは,よろしくお願い致します.

    $ make
    “””/Developer/Extras/Dictionary Development Kit”/bin”/build_dict.sh” “英辞郎” MyDictionary.xml MyDictionary.css MyInfo.plist
    /bin/sh: -c: line 0: unexpected EOF while looking for matching `”‘
    /bin/sh: -c: line 1: syntax error: unexpected end of file
    make: *** [all] Error 2

  11. Tats_y Says:

    TKNさん,こんにちは。
    makeでエラーが出るということですが、その前処理で”MyDictionary.xml”は正常に作成されていますか? また、同じフォルダ内に”MyInfo.plist”などは解凍されていますか?

    詳しい状況はわかりませんが、そのエラーが出るということは、”MyDictionary.xml”ができていないのじゃないかという気がします。

  12. TKN Says:

    返信ありがとうございます.
    >makeでエラーが出るということですが、その前処理で”MyDictionary.xml”は正常に作成されていますか?
    rubyを実行したところまでは問題なくいけたので,作成されてると思います.
    >また、同じフォルダ内に”MyInfo.plist”などは解凍されていますか?
    ファイルなどのコピーはしています.
    その後に,以下のコマンドを実行していきました.
    何か間違いがあれば御指摘をよろしくお願いします.

    $ cd ~/project_templates/
    $ ruby -Ks ryaku_conv.rb < RYAKU114.TXT > Ryaku.txt
    $ ruby -Ks cat.rb EIJI-114.TXT Ryaku.txt > Eijiro.txt
    $ ruby eiji_conv.rb < Eijiro.txt > MyDictionary.xml
    $ make
    “””/Developer/Extras/Dictionary Development Kit”/bin”/build_dict.sh” “英辞郎” MyDictionary.xml MyDictionary.css MyInfo.plist
    /bin/sh: -c: line 0: unexpected EOF while looking for matching `”‘
    /bin/sh: -c: line 1: syntax error: unexpected end of file
    make: *** [all] Error 2

  13. Tats_y Says:

    ターミナル上の作業しているフォルダで、”ls -l”を実行していただけますか? 生成されたxmlファイルの大きさがどれくらいになっているかと思いまして。

  14. TKN Says:

    返信ありがとうございます.
    早速,”ls -l”を実行してみました.
    それでは,よろしくお願い致します.

    $ ls -l
    total 1650384
    -rw-r–r– 1 User staff 137659237 Nov 15 16:14 EIJI-114.TXT
    -rw-r–r– 1 User staff 141264159 Jan 19 09:14 Eijiro.txt
    -rw-rw-r–@ 1 User staff 1269 Nov 26 2007 Makefile
    -rw-rw-r–@ 1 User staff 688 Nov 12 2007 MyDictionary.css
    -rw-rw-r– 1 User staff 558964365 Jan 19 13:19 MyDictionary.xml
    -rw-rw-r–@ 1 User staff 1052 Nov 26 2007 MyInfo.plist
    drwxrwxr-x 5 User staff 170 Dec 5 02:43 OtherResources
    -rw-r–r– 1 User staff 3463650 Nov 15 16:14 RYAKU114.TXT
    -rw-r–r– 1 User staff 3604922 Jan 19 09:14 Ryaku.txt
    -rw-r–r–@ 1 User staff 90 Nov 10 2007 cat.rb
    -rw-r–r–@ 1 User staff 6408 Nov 27 2007 eiji_conv.rb
    -rw-r–r–@ 1 User staff 131 Nov 10 2007 ryaku_conv.rb

  15. Tats_y Says:

    うーん、サイズを見ると、MyDictionary.xmlは正常に作成されているみたいですね。
    Xcodeもインストールされているんですよね?

    あと、”head -n 10 MyDictionary.xml”と”tail -n 10 MyDictionary.xml”も実行してみてもらえますか? MyDictionary.xmlが壊れていないか確認したいので。

  16. TKN Says:

    >Xcodeもインストールされているんですよね?
    インストールしていますよ.
    >あと、”head -n 10 MyDictionary.xml”と”tail -n 10 MyDictionary.xml”も実行してみてもらえますか? 
    実行してみました.
    何度もすいませんが,よろしくお願い致します.

    $ head -n 10 MyDictionary.xml
    <?xml version=”1.0″ encoding=”UTF-8″?>
    <d:dictionary xmlns=”http://www.w3.org/1999/xhtml” xmlns:d=”http://www.apple.com/DTDs/DictionaryService-1.0.rng”>
    <d:entry id=”74776f20737465702074657374″ d:title=”two step test”>
    <d:index d:value=”two step test” />
    <h1>two step test</h1>
    <p><→<a href=”x-dictionary:r:74776f2d737465702074657374″>two-step test</a>></p>
    </d:entry>
    <d:entry id=”726f79616c7479206f6e206120706174656e74″ d:title=”royalty on a patent”>
    <d:index d:value=”royalty on a patent” />
    <h1>royalty on a patent</h1>
    $ tail – 10 MyDictionary.xml
    tail: -: No such file or directory
    tail: 10: No such file or directory
    ==> MyDictionary.xml <==
    <d:index d:value=”plaster a tight smile on one’s face” />
    <h1>plaster a tight smile on one’s face</h1>
    <p>こわばった笑みを浮かべる</p>
    </d:entry>
    <d:entry id=”53636877617274696e67″ d:title=”Schwarting”>
    <d:index d:value=”Schwarting” />
    <h1>Schwarting</h1>
    <p><span class=”wordclass”>人名</span><br />シュバーティング</p>
    </d:entry>
    </d:dictionary>%

  17. Tats_y Says:

    ちょっと気になったのは、ファイル末尾の”%”です。これって、Terminalのプロンプトでしょうか? それとも、MyDictionary.xmlに含まれているものですか?
    もし、後者ならテキストエディタなどを使ってファイル末尾の%を削除して、makeしてもらえますか?

  18. TKN Says:

    >ちょっと気になったのは、ファイル末尾の”%”です。これって、Terminalのプロンプトでしょうか? それとも、MyDictionary.xmlに含まれているものですか?
    後者なので,”%”を削除してmakeしてみたところ,同じエラーが発生してしまいました.

    英辞郎のバージョンによっては,出来なかったりするものなのですか?

  19. Tats_y Says:

    >英辞郎のバージョンによっては,出来なかったりするものなのですか?
    英辞郎の書式が変わると、現在の変換スクリプトで対応できなくなることは十分あり得ます。
    ただ、TKNさんの場合は、それとも異なるようです。
    なぜかというと、私のスクリプトではファイルの末尾に「</d:dictionary>」と出力して処理を終えるのです。つまり、「%」に限らず、文字が含まれるはずがないのですね。
    OS側の問題か何かで、たまたまファイル出力にノイズが紛れ込んでしまったりしたのでしょうか……(そんなことあるんですかね)。
    余計なアプリケーションをすべて終了して、メモリに十分な空きを作り、その上で再度変換スクリプトを実行していただければと思います。それでも、同じように「%」が紛れ込むのであれば、私の手には負えなさそうです……。

  20. TKN Says:

    返信ありがとうございます.

    解決しました.
    terminal.appのシェルをzshにしてたのが原因みたいでした.
    デフォルトのシェルに変更したら,インストールが完了しました.

    お騒がせして申し訳ありませんでした.
    何度も対応して頂きありがとうございました.

  21. Tats_y Says:

    解決して何よりです。
    しかし、zshだと余計な文字が標準出力に紛れ込む(?)というのは謎ですね……。

  22. 福助 Says:

    初めまして。英辞郎ver.114を変換して快適に使わせていただいています。
    この変換作業なのですが、他のMacにも入れようとした場合それぞれのMacで毎回行わなければいけないのでしょうか?
    スペック的に低いMacもあるので、できれば速いやつで作っておいて移せたら楽なのですが。
    UNIXの知識が無いのでトンチンカンな質問かもしれませんが教えて頂けないでしょうか?

  23. 福助 Says:

    先程の質問とは関係ないのですが、コメントの中にPDFの埋め込みテキストにも使えると便利と書いてありました。
    たしかにApple標準のプレビューでは機能しないみたいなのですが、Skim というPDFビュアーではちゃんと機能しました。
    私は、プレビューより多機能なのでデフォルトのpdfビュアーをskimにしています。
    http://skim-app.sourceforge.net/

  24. Tats_y Says:

    福助さん、こんにちは。
    Dictionary.appの辞書データは、簡単に移行できますよ。
    ユーザーごとの辞書データは、ホームフォルダ以下の「Library」→「Dictionaries」フォルダの中に入ってます。各辞書ごとにフォルダになっていますから、それをまるごと別のマシンの「ホームフォルダ」→「Library」→「Dictionaries」フォルダにコピーするだけでOKです。もし、Dictionary.appを立ち上げても辞書が現れないようなら、Dictionary.appの環境設定をチェックしてみてください。

    > たしかにApple標準のプレビューでは機能しないみたいなのですが、Skim というPDFビュアーではちゃんと機能しました。
    なんと! 確かに動作しますね。以前にSkimもダウンロードしていたのですが、Dictionary.appに対応していたことにはまったく気付いていませんでした。これは、便利です!
    情報をありがとうございます。

  25. 福助 Says:

    ありがとうございます。
    おかげさまで他のMacでも辞書.appで英辞郎が使えるようになりました。
    人間どんどん楽な方へ流れていきたくなるもので、control+command+Dを押し続けるのが面倒に思えてきてしましました。
    そこで、このショートカットを変更できないものかと調べたところ、システム環境設の「キーボードとマウス」でできました。
    そこの「キーボード」タブの「F1、F2などのすべての・・・・」ってところにチェックを入れたうえで、「キーボードショートカット」タブの「辞書で調べる」のショートカットを「F1」にしてみました。
    すると、safari等のアプリで「F1」キーを一度押すだけで、control+command+Dを押しっぱなし状態と同じになり、どこかをクリックしたりするまで持続しました。
    FireFoxのMouseoverDictionary並みに便利だと思ったのでお知らせします。

  26. Tats_y Says:

    これは確かに便利ですね〜。気がつきませんでした。
    長文を読む時には、これが必須になりそうです。

  27. 色々メモです。 Says:

    Lepard標準辞書で英辞郎を使用する

    2年ほど前からMacを使用し出して、大きく不満なのは
     ・秀丸ほど手になじむエディタに出会えない
     ・PDIC + 英辞郎ほど使い勝手が良い辞書がない(Unicode版は、重くてちょっとアレですが)
    でしたが、辞書に関しては、ついに出会えました。

  28. cider Says:

    2009.05.17にトラックバックしたものです。
    文字化けしてしまいました…。すいません。

    お手数ですが削除して頂けますでしょうか。

  29. Tats_y Says:

    ciderさん、こんにちは。
    トラックバック、修正しておきました。こちらのブログで使っている文字コードがUTF-8で、そちらがEUC-JPであることが文字化けの原因のようですね。

  30. cider Says:

    お手数をおかけしました。ありがとうございました。

  31. ken Says:

    こちらのサイトを参考に英辞郎を変換していたのですが、エラーが出て、先に進めません。皆さん、知恵をお貸しください。状況は以下の通りです。

    project_templates $ ruby -Ks ryaku_conv.rb < EIJIRO?RYAKU116.TXT > Ryaku.txt
    project_templates $ ruby -Ks cat.rb EIJIRO?EIJI-116.TXT Ryaku.txt EIJIRO?REIJI116.TXT EIJIRO?WAEI-116.TXT > Eijiro.txt
    project_templates $ ruby eiji_conv.rb < Eijiro.txt > MyDictionary.xml
    project_templates $ make
    “””/Developer/Extras/Dictionary Development Kit”/bin”/build_dict.sh” “英辞郎” MyDictionary.xml MyDictionary.css MyInfo.plist
    – Building 英辞郎.dictionary.
    – Cleaning objects directory.
    – Preparing dictionary template.
    – Preprocessing dictionary sources.
    – Extracting index data.
    – Preparing dictionary bundle.
    – Adding body data.
    – Preparing index data.
    – Building key_text index.
    /Developer/Extras/Dictionary Development Kit/bin/build_dict.sh: line 139: 371 Segmentation fault “$DICT_BUILD_TOOL_BIN”/build_key_index $OBJECTS_DIR/dict.dictionary $KEY_TEXT_INDEX_NAME $OBJECTS_DIR/normalized_key_body_list.txt
    Error.
    make: *** [all] Error 1

  32. Tats_y Says:

    kenさん、こんにちは。
    略語郎、例辞郎なども全部含めて辞書を作ろうとしているんですね。
    私は、例辞郎を変換してないので、このへんが怪しい気もします。
    Ryaku.txtだけとか、例辞郎だけの変換を行うとどうなりますか?

  33. ken Says:

    Tats_yさん、こんばんは。
    英辞郎、略語郎、例辞郎、和英辞郎を一つずつ、変換していくと、すべてうまくいきました。しかし、なぜ一括して行うと変換できないのか、未だに分かりません。
    それと、例辞郎についてなのですが、例えば、「make」という単語を入力すると、文頭が「make」となっている例文は見つかるのですが、文頭以外の文中に「make」が含まれる例文については見つかりませんでした。何か解決方法は無いものでしょうか?

  34. Tats_y Says:

    >しかし、なぜ一括して行うと変換できないのか、未だに分かりません。
    もしかしたら、アップルの変換用ツールが一定以上のインデックスを扱えない仕様になっているのかもしれません。
    あるいは、私のスクリプトはメモリをバカ食いしてしまうので、その関係で正常なXMLファイルが生成されていないのかも……。

    >文頭以外の文中に「make」が含まれる例文については見つかりませんでした。
    Mac OS Xの「辞書」アプリ(Dictionary.app)は前方一致検索しかできませんから、私のツールで例辞郎を変換するとそうなります。

    変換スクリプトの作り方によっては、(文頭以外の)文中にある単語で引くことも不可能ではありません。
    ただ、難しいのは、どの単語を引けるようにするかを判断する基準です。たとえば、”I thought my heart would stop”という例文があった場合、機械的に処理すると、”I”, “thought”, “my”, “heart”, “would”, “stop”のいずれでも引けることになります。”my”と入れようものなら、ものすごい量の例文が表示されることでしょう。先にも述べたように、Dictionary.appは単純な前方一致検索しかできないので、「”my”かつ”heart”を含む」といった条件検索はできないし……。
    現状では、対応は難しいかなと思います。

  35. mori Says:

    サイトを見させていただきました。大変興味深く、私も変換を実行させていただいたのですが、
    ”make”の途中で以下のようなエラーが発生してしまいました。ここまでのコメントを読ませていただいたものの、解決できなかったため 投稿させていただきます。
    お忙しいところ恐縮ですが、解決手段をご教示いただければ幸いです。
    なお、もととなるtextファイルは
    RYAKU81.TXT、EIJIRO81.TXT
    です。

    dhcp237:~ $ cd project_templates
    dhcp237:project_templates $ ruby -Ks ryaku_conv.rb < RYAKU81.TXT > Ryaku.txt
    dhcp237:project_templates $ ruby -Ks cat.rb EIJIRO81.TXT Ryaku.txt > Eijiro.txt
    dhcp237:project_templates $ ruby eiji_conv.rb < Eijiro.txt > MyDictionary.xml
    \n” (Iconv::IllegalSequence)”?P
    from eiji_conv.rb:50
    dhcp237:project_templates kent$ make
    “””/Developer/Extras/Dictionary Development Kit”/bin”/build_dict.sh” “英辞郎” MyDictionary.xml MyDictionary.css MyInfo.plist
    – Building 英辞郎.dictionary.
    – Cleaning objects directory.
    – Preparing dictionary template.
    – Preprocessing dictionary sources.
    Use of uninitialized value in seek at /Developer/Extras/Dictionary Development Kit/bin/make_line.pl line 38.
    seek() on closed filehandle ARGV at /Developer/Extras/Dictionary Development Kit/bin/make_line.pl line 38.
    Use of uninitialized value in pattern match (m//) at /Developer/Extras/Dictionary Development Kit/bin/make_line.pl line 39.
    Died at /Developer/Extras/Dictionary Development Kit/bin/make_line.pl line 39.
    Error.
    make: *** [all] Error 1

  36. Tats_y Says:

    moriさん、こんにちは。
    Ver.81の英辞郎には、データが文字化けしている箇所があり、それを修正する必要があります。
    詳しくは、2007年11月16日のコメントを参照してください。

  37. mori Says:

    なるほど。理解できました。
    また、上述されている通りに直すことで辞書の変換も行えました。
    お手数をお掛けいたしました。ありがとうございます。

  38. binWord/blog - Snow Leopardで、辞書.appのデータもダイエット Says:

    […] 以前公開した「英辞郎辞書変換スクリプト」で変換したXMLファイル(v110の英辞郎+略語郎)を、Snow LeopardのDictionary Development Kitにかけてみた。Leopardでは1.3GB(1,481,183,232バイト)だったデ […]

  39. binWord/blog - Leopardの「辞書」アプリで「ランダムハウス英語辞典」を使う Says:

    […] Leopardの辞書アプリ(Dictionary.app)で英辞郎を使えるようにしたおかげで、海外のサイトを読むのもずいぶん楽になった。しかし、単語の意味などをもう少し詳しく知りたいという時は、英辞郎だとちと物足りない。そこで、だいぶ前に買ったまま、ほとんど活用していなかったランダムハウス英語辞典(第二版)をDictionary.app用に変換してみることにする。 ランダムハウス英語辞典が使えるMac用の辞書ソフトとしては、すでにJammingがあるが、できればDictionary.appにまとめたいところ。検索機能はJammingが格段に優れているが、日常的にさっと調べるならDictionary.appの方が使いやすく感じる。まあ、変換処理自体が面白くなってきたというのもあるのだけど。 […]

  40. binWord/blog - Leopardの「辞書」アプリでEPWING辞書を使う Says:

    […] ○Xcodeをインストールする ここからはMac上での作業になる。 ・英辞郎の場合と同じく、Mac OS X用の開発ツール「Xcode」をインストールする(Leopardのインストールディスクの「Optional Install […]

  41. binWord/blog - Leopardの「辞書」アプリで郵便番号辞書を使う Says:

    […] pingback from binWord/blog – Leopardの「辞書」アプリで「英辞郎」を使う 09-09-10 (木) 22:29 […]

  42. Naitou Says:

    初めまして。
    表題タイトルにひかれ,当方もお教え頂いた通りに実行してみたのですが,コマンドで -Adding body data.でプロセスが停止しているようなのですが,どのような問題が考えられるでしょうか? OSはSnowLeopard,英辞郎は EIJI-116 をダウンロードしました。
    お忙しいこととは存じますが,よろしくお願いします。

  43. Tats_y Says:

    Naitouさん、こんにちは。
    下のエントリでも書いたのですが、Snow Leopard付属のツールは、辞書データの作成方法が変わったようで、Leopardよりもはるかに時間がかかるようになっています。その分、ファイルサイズは2/3で済むのですけど。私の場合、初代MacBookで22時間かかりましたよ……。
    http://www.binword.com/blog/archives/snow-leopard-dictionary-app.html

    ユーティリティフォルダに入っている「アクティビティモニタ」を使って、プロセスやディスクの動作を確認してみてください。たぶん、時間がかかっているだけだと思います。

  44. Naitou Says:

    さっそくのお返事ありがとうございました。
    アクティビティモニターで確認しました。確かにゆっくりと実メモリーの項目が増えていました。昨日より実行させており,現在400Mをやっと超えたところでした。”辞書データもダイエット”の頁で986.9Mとのサイズが目指す実メモリー量だとすると,終了予定は明日でしょうか?
    もうしばらく気長に待ちたいと思います。
    ありがとうございました。

  45. まろ Says:

    素晴らしい変換ツール、ありがとうございます。
    英辞郎 ver 120 でも無事変換でき、辞書アプリでも快適に利用できています。本当に感謝です。

    それで、調子に乗って、和英辞郎も変換してみましたが、make をかけたところ、
    – Adding body data.
    でしばらく進んだところで、以下のようなエラーが出て止まってしまいます。

    —– エラー —–
    Error: Parse failure [e78fbee59ca8e38081e383a2e383aae382b9e383bbe382aae383bce382b9e38388e383a9e383aae382a2e69687e58c96e4bd93e9a893e38397e383ade382b0e383a9e383a0284d6f7272697320412e432e452e29e381a7e381afe38081e382aa
    ・・・長いので途中省略
    e383bce382b9e38388e383a9e383aae382a2e381aee382b1e382a2e383b3e382
    381a6e38184e3818de3819fe38184e3808de381a8e38184e38186e59bbde99a9be382b3e3839fe383a5e3838be382b1e383bce382b7e383a7e383b3e381b8e381aee68385e786b1e3818ce38193e381aee38397e383ade382b8e3].

    2010-05-11 21:18:58.421 add_body_record[17969:903] *** Terminating app due to uncaught exception ‘NSRangeException’, reason: ‘*** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1)’

    Call stack at first throw:

    (
    0 CoreFoundation 0x00007fff862dc444 __exceptionPreprocess + 180
    1 libobjc.A.dylib 0x00007fff8238c0f3 objc_exception_throw + 45
    2 CoreFoundation 0x00007fff862dc267 +[NSException raise:format:arguments:] + 103
    3 CoreFoundation 0x00007fff862dc1f4 +[NSException raise:format:] + 148
    4 Foundation 0x00007fff83b45080 _NSArrayRaiseBoundException + 122
    5 Foundation 0x00007fff83aa7b81 -[NSCFArray objectAtIndex:] + 75
    6 add_body_record 0x000000010000157a 0x0 + 4294972794
    7 add_body_record 0x000000010000192d 0x0 + 4294973741
    8 add_body_record 0x00000001000013dc 0x0 + 4294972380
    9 ??? 0x0000000000000005 0x0 + 5
    )
    terminate called after throwing an instance of ‘NSException’
    /Developer/Extras/Dictionary Development Kit/bin/build_dict.sh: line 147: 11025 Abort trap “$DICT_BUILD_TOOL_BIN”/add_body_record $OBJECTS_DIR/dict.dictionary $BODY_DATA_NAME $OBJECTS_DIR/dict.offsets $OBJECTS_DIR/dict.body > $OBJECTS_DIR/entry_body_list.txt
    Error.
    make: *** [all] Error 1

    —— ここまで

    手元にあった ver113 の和英辞郎ではうまく変換できたので、その違いを素人ながら考察してみたところ、どうも見出し語として長過ぎるもの(したがってハッシュ値?も長くなる)のところで境界エラーを起こしているようなのです。

    これらの長い見出し語は、例文で(記事1パラグラフ分くらいのボリュームがある)、個人的には辞書への組み込みは不要なので、MyDictionary.xml の生成時に、この過度に長い見出し語をスキップするように出来たらいいと思うのですが、ruby プログラミングの経験の無い私にはどこをどのように変更したらよいのか分かりません。

    どうかご教示願えないでしょうか? よろしくお願いいたします。

  46. Tats_y Says:

    えーっと、今実際に検証している余裕がないのですが、たぶん57行目と58行目の間に次のようなコードを入れればOKなんじゃないでしょうか。要するに、見出し語のサイズを判定して、ある程度以上だったら現在読み込んでいる行をスキップすると。
    間違っていたらすみません。

    57: end
    58: definition = /\s:\s/.match(line1).post_match.chomp

    57: end
    58: next if temp_index.length > 適当なサイズ
    59: definition = /\s:\s/.match(line1).post_match.chomp

  47. まろ Says:

    Tats_y さん、
    早速のアドバイスありがとうございます!!

    アドバイスのとおり、eiji_conv.rb の該当箇所を変更して(差し当たってインデックスのサイズの上限を 512 にしてみました)、作業をやり直してみたところ、とりあえず現時点で、昨日エラーで引っかかった箇所を越えて処理が行われています。

    変換作業が終了するまであと半日ほど要するので、まだ確定はできませんが、もしまたどこかでエラーが発生したとしても、上限サイズを調整することで問題は回避できそうです。

    完全に辞書構築が出来ましたら、また改めてこの場にて報告させていただきますが、取り急ぎ、感謝をお伝えしたくて・・・

  48. まろ Says:

    Tats_y さん、
    和英辞郎 v120 変換の件の続報です。
    おかげさまで、無事変換作業が最後まで終了しました。辞書アプリからも利用できるようになり、快適です。

    感謝、感謝です!!

  49. Tats_y Says:

    >まろさん
    報告ありがとうございました。うまく行ったとのことなので、先述のコードを追加しておきました。人柱にしてすみません!

  50. meteor Says:

    まろさんと同じところで、困っていてここにきました。
    お二人のおかげでうまくいきそうです!!
    うれしさのあまりコメントしてしまってすみません。

Leave a Reply

Comments links could be nofollow free.