ddskk で交ぜ書き変換をしたい - 交ぜ書き辞書へん

前回の「ddskk で交ぜ書き変換をしたい」のつづきです。


おさらい

前回の「ddskk で交ぜ書き変換をしたい」は、以下のような内容でした。

  • ddskk で交ぜ書き変換ができる skk-mazegaki を作った。
  • ただし、漢字混じりの変換をするには、漢字混じりのエントリのある交ぜ書き辞書が必要!
  • SKK に含まれる SKK-JISYO.mazegaki では貧弱、しかも、ddskk のリポジトリにある skk-mkmgk.el は古い存在しない skk の関数を使っていたりして望む辞書が作れない。
    #skk-mkmgk.el の存在しない関数問題を直しても、試した限り、欲しいレベルの辞書を作れなかった…。
  • よって、SKK-JISYO.L から生成するスクリプトを作ったので、整理してそのうち公開する。おわり。

交ぜ書き変換と skk-mazegaki.el は、以下のような機能でした。

  1. 通常のかな漢字変換では、「ひらがな」や「数字」のみを変換対象とする。
  2. 漢直で使われる交ぜ書き変換では、その「ひらがな」と「数字」に加えて、「漢字」も変換対象として含める事ができる。
  3. 普通の日本語入力方式では、漢字を直接打てないので、変換対象に漢字を含める事はできない。
  4. よって、skk-mzegaki.el では、確定済みの文字列を変換対象として再変換を行う。

さて、今回は、上記にあるように、交ぜ書き辞書を生成するスクリプトについて作ってみたので、公開します。

交ぜ書き辞書生成

概要

SKK 用の交ぜ書き辞書を生成します。辞書のエントリは、以下のような形式であれば良いです。

...
あいち工業だいがく /愛知工業大学/
あいち工業大がく /愛知工業大学/
あいち工業大学 /愛知工業大学/
...

こういうエントリを SKK-JISYO.L より自動生成します。

skk-mazegaki-mkdict.el

skk-mazegaki.el の launchpad のリポジトリskk-mazegaki-mkdict.el という elisp を追加しました。

skk-mazegaki-mkdict.el を実行するためには、ddskk 自体と skk-mazegaki.el が必要です。

設定

skk-mazegaki.el と skk-mazegaki-mkdict.el を `load-path' の通ったディレクトリに置き、以下のように require します。
デフォルトでは、SKK-JISYO.L より生成するため、SKK-JISYO.L が必要で、辞書のパスが skk-large-jisyo に適切に設定されている必要があります。

(require 'skk-mazegaki-mkdict)
(setq skk-large-jisyo "SKK-JISYO.L へのパス")

辞書生成以下の手順を踏む必要があります。
以下の例では、SKK-JISYO.L.mazegaki が生成されます。

1. 辞書を生成する。
M-x skk-mazegaki-mkdict-make-dictionary
# -> デフォルトでは、/tmp/TMP に生成される

2. 辞書から重複エントリを取り除き、ソートする。
$ skkdic-expr /tmp/TMP | skkdic-sort > SKK-JISYO.L.mazegaki

「1.」の手順では、/tmp/TMP 以下に辞書が生成されます。
辞書ファイルの文字コードは、EUC-JP です。
手元の環境(i386Debian sid、Core2Duo e7200、メモリ4G、Emacs 24)では、SKK-JISYO.L から交ぜ書き辞書を生成するのに、およそ1時間ほどかかりました。

SKK-JISYO.L 以外から生成する

以下の2変数を編集します。

- skk-mazegaki-mkdict-default-dictionary
- skk-mazegaki-mkdict-prog-list

skk-mazegaki-mkdict-default-dictionary には、辞書生成するとき、元としたい辞書を指定します。
デフォルトでは、SKK-JISYO.L となっています。
つまり、SKK-JISYO.L に含まれる単語、「きしゃ /記者/...」、「てんとう /点灯/...」…のような語句から交ぜ書き辞書を生成します。


skk-mazegaki-mkdict-prog-list には、交ぜ書き辞書を生成する際、読みに含まれる漢字を検索する際に使う prog-list を指定します。
デフォルトでは、SKK-JISYO.L のみから検索します。
これを例えば、以下のように skk-search-prog-list を指定すると、通常行っている変換と同じ候補から調べるようになります。
# 注: 複数の辞書を使っていたりすると、尋常じゃなく交ぜ書き辞書の生成が遅くなります。

(setq skk-mazegaki-mkdict-prog-list skk-search-prog-list)

「読みに含まれる漢字を検索」とは、「きしゃ」を例とすると、

  1. 「きしゃ」を「きしゃ、きし、き、し、しゃ、ゃ」のように分解する
  2. 分解した語句それぞれについて変換できる漢字を調べる
    • 「き」ならば、「木」、「気」、「記」…
  3. 分解した語句の変換可能な漢字が、「きしゃ」の変換結果に含まれる漢字であるか調べる
    • 「きしゃ」の変換結果が「記者」ならば、「記」となる。
  4. 変換結果に含まれる漢字であるならば、それを置き換えて、1つの候補とする
    • 分解した語句として「き」を選び、ここでの変換結果が「記者」ならば、「記しゃ」という候補ができ上がる

skk-mazegaki-mkdict-prog-list は、上記における「2.」のプロセスで行う変換の際に使用されます。

まとめ

SKK-JISYO.L より、交ぜ書き辞書を自動生成するスクリプトを作りました。
これにより、SKK で交ぜ書き変換が多少便利に行えるのではないかなと思います。
よろしければ、遊んでみてください。


更新時刻

  • 2010/12/26/3:10