09 01/11
■[emacs][英辞郎]英辞郎第四版買ってみた。emacsで使いたい。 sdic編

id:eiel:20090110のつづき。
テキスト形式にしてしまえばこっちのものです。
とはいえ、sdicについてくるeijirou.perlで変換すればいいというわけにもいかないです。*1というわけで、rubyでかいてみた。gene.perlを参考にした。
#!/usr/bin/ruby -Ku def make_key(key) head = key.clone key.tr!('A-Z', 'a-z') key.sub!(/\s+/, ' ') # key.sub!(/ \+\d+/, '') # これなんの処理だろ? ret = "" if head != key ret = "<H>#{head}</H>" end ret + "<K>#{key}</K>" end $stdin.each do |line| line.gsub!('&', '&') line.gsub!('<', '<') line.gsub!('>', '>') line.gsub!(' \ ', '&lf; ') key, content = line.split(' /// ') puts make_key(key) + content.chomp end
あとはこれを使ってsdic形式に変換します。
上記の内容をpdic1line2sdic.rbという名前で保存してて、辞書ファイルの名前がeijiro112.txtみたいな感じにしているならば。以下の感じでインストール。適宜修正してください。
出力先は/usr/shar/dictにしてます。
sudo sh -c "cat eijiro112.txt ryakuji112.txt| nkf -w8| ruby pdic1line2sdic.rb > /usr/share/dict//eijiro112.sdic" sudo sh -c "cat waeiji112.txt | nkf -w8| ruby pdic1line2sdic.rb > /usr/share/dict//waeiji112.sdic"
あとは.emacsに設定。なにを思ったかutf-8を採用したので余計な設定があります。
debianでsdicをインストール済の場合以下の感じ。Ubuntuでも大丈夫かと。
(global-set-key "\C-cw" 'sdic-describe-word) (global-set-key "\C-cW" 'sdic-describe-word-at-point) (setq sdic-eiwa-dictionary-list '((sdicf-client "/usr/share/dict/eijiro112.sdic"))) (setq sdic-waei-dictionary-list '((sdicf-client "/usr/share/dict/waeiji112.sdic" (add-keys-to-headword t)))) (setq sdic-default-coding-system 'utf-8-unix)
使用してる様子はこんな感じ
追記。
和英がこのままだとぐだぐだな予感。そのうち調査しよう。
補足
pdic1行テキスト形式のフォーマット
http://pdicviewer.naochan.com/glossary.html
テキスト形式で、見出し語、訳語、用例が1行で表されたファイル。
見出し語 /// 訳語 / 用例
※見出し語部と訳語部の区切りは " /// "(半角スペース + スラッシュ3つ + 半角スペース)
※訳語部と用例部の区切りはPDICテキスト形式と同様 " / "(半角スペース + スラッシュ1つ + 半角スペース)
※訳語部、用例部には改行コードを含めることができる。改行コードは " \ "(半角スペース + 円マーク + 半角スペース)
※見出し語部には改行コードは使えない。
sdic形式についてはinfo参照とかかいてごまかしておく。
*1:ダメなことはないけど、つかってみるとつかいづらいので
- ひげぽん OSとか作っちゃうかMona- - sdic を利用し Emacs から英...
- 8tree にっき - Emacs + 英辞郎 + SDIC を使っている人がちょびっ...
- 日記のタイトル - railsのインストール
- 日記のタイトル - NTEmacsで英辞郎で辞書検索
- 3行以上日報〜青年海外協力隊(JOCV)でモザンビークに派遣されている...
- 人生 - NTEmacsで英辞郎で辞書検索
- もうカツ丼でいいよな - sdicのために英辞郎のデータ変換しようと...
- Secondary Storage - やりたいこと
- Secondary Storage - emacsで英辞郎で使う sdicでらくらく検索


geneのエントリ
bit +1
(a 〜)少し
を
<H>bit +1</H><K>bit</K>(a 〜)少し
に変換するためのものなので英辞郎ではいらないですね。
そうですか、sdicで英辞郎が使い物になりますか。
いや、sdic開発が活発に動いていた頃は、SAを使ってさえ実用的じゃなかったので、別な枠組みがいるんじゃないかとか言われていたもので。
あと、英辞郎のフォーマットがその後変わったりとか、元々バグ入りだったりとかで、パッケージに添付の変換スクリプトは刷新される必要があったはずです。
> <H>bit +1</H><K>bit</K>(a 〜)少し
>
> に変換するためのものなので英辞郎ではいらないですね。
なるほど。
ちょっとgeneの辞書をgrepしてみればわかることなのに気づかないなんてorz
> そうですか、sdicで英辞郎が使い物になりますか。
英和に関しては個人的には十分つかえると思います。全文検索すると単語によっては、4、5秒またされてしまいますけど。
lsdicはインターフェイスがすごく使い安いので、辞書形式のほうをなんとかしてみたいな、とか思ったり思わなかったりです。
動かすと
private method `chomp' called for nil:NilClass (NoMethodError)
from /home/****/pdic1line2sdic.r:14:in `each'
from /home/****/pdic1line2sdic.r:14
と、いうことで動きません。
なにか、理由がありそうですか?
突然の質問で申し訳ございません。
ご回答いただけると助かります。
動くようになりました。
英辞郎第五版でもうまくいきました。
ただ、四版からなんですが、
一行形式にして辞書を変換しているのですが、
buffer
緩衝装置, 緩衝の働きをするもの[人], 【コンピュータ】バッファ
buffer
緩衝器 / バッファー
buffer solution
緩衝液
buffer state
中間国
buffer stock
バッファーストック
と
情報がすくないんですよね。
変換ミスでしょうか??
理由が、よくわからないんですが。。
ご報告まで。
よろしくお願いいたします。
buffer
【1-名-1】緩衝となるもの、緩衝材
【1-名-2】緩衝器、緩衝装置◆動きを緩衝させる、または一時的に蓄える場所。
【1-名-3】《コ》バッファー◆入力データを一時的に蓄えておくメモリー、レジスター。演算処理器の処理がデータの入力速度に間に合わない時に使う。
【1-名-4】バッファー◆真空ポンプの吸気口に設置した冷却フィン。水など蒸気圧が高いガスを吸着する。またポンプ内の高温ガスが排出されないようトラップする。水冷、冷媒冷却などがある。
【1-名-5】緩衝国
【1-名-6】=<→buffering solution>
【1-自動】バッファー[緩衝器・緩衝装置]の役割を果たす
【1-他動-1】(衝撃を)和らげる[減らす]
【1-他動-2】〜をバッファーに格納する、〜をバッファーリングする
【1-他動-3】中和する
・The esophagus also produces bicarbonate ion to buffer the acid. 食道もまた酸を中和するために重炭酸イオンを作り出す。
【2-名】磨き布
・Did you use a buffer to polish it up, or just a towel? それ磨き布で磨いたの、それともただのタオルで?
【@】バッファー、バファー、【変化】《動》buffers | buffering | buffered、【分節】buff・er
buffer action
Meadow はarrayがうまく動いてくれなくて苦戦中です。
ここまでのコメントを決して下さい。
では。
ありがとうございました。
>エラーの内容からすると、入力データがpdicの1行形式になっていない可能性が高そうです。
>yutaka 2009/04/27 14:57
>どうもありがとうございました。
>動くようになりました。
yutaka様
私も同じように英辞郎第5版で同じエラーがでたのですが
まだまだweb上に英辞郎第5版をemacsで使う為の情報が少ないです。
rubyが全く解らないので
どうかemacsで”動くように”する為の方法を具体的にお教えいただくと
大変助かります。
>エラーの内容からすると、入力データがpdicの1行形式になっていない可能性が高そうです。
>yutaka 2009/04/27 14:57
>どうもありがとうございました。
>動くようになりました。
yutaka様
私も同じように英辞郎第5版で同じエラーがでたのですが
まだまだweb上に英辞郎第5版をemacsで使う為の情報が少ないです。
rubyが全く解らないので
どうかemacsで”動くように”する為の方法を具体的にお教えいただくと
大変助かります。
private method `chomp' called for nil:NilClass (NoMethodError)
from /home/****/pdic1line2sdic.r:14:in `each'
from /home/****/pdic1line2sdic.r:14
であるならば
eijiro112.txtなどの辞書ファイルがPDIC1行形式になっていません。
これを作成するには(第4版では)
PDIC Unicode for EIJIRO IVを立ち上げる.
<ファイル>の<辞書設定<詳細>>で,一覧として出力される辞書を一つ一つ右クリックして,“PDIC 1行テキスト形式”でエクスポートする
とするとPDIC1行テキスト形式を作成することができます。
違うエラーがでるようならば、教えてください。