[Anthy-dev 3467] [uim-tutcode]部首合成変換と交ぜ書き変換を実装

Back to archive index

KIHARA Hideto deton****@m1*****
2007年 5月 10日 (木) 22:16:20 JST


uim-1.4.1のtutcode.scmに部首合成変換と交ぜ書き変換機能を追加しました。
http://www1.interq.or.jp/~deton/tutcode/uim-tutcode-20070510.tar.bz2

* 部首合成変換 ("シ"+"談"→"淡"のように漢字の部首を組み合わせる変換)
  前置型のみ実装しています。
  再帰的な部首合成変換も可能です。(例:▲▲七上→▲虍リ→劇)
  部首合成のアルゴリズムはtc-2.1のものです。

* 交ぜ書き変換 ("か定"→"仮定"のように漢字交じりの読みからのかな漢字変換)
  単純な前置型交ぜ書き変換ができます。
  交ぜ書き変換辞書はtc2と同じ形式(SKK辞書と同様の形式)です。
  skk.scmから、かな漢字変換に関係する部分を取り込んで実現しています。

** 交ぜ書き変換辞書(例:/usr/local/share/tc/mazegaki.dic)へのアクセスは
   libuim-skk.soの機能を使っています。
   そのため、学習機能もSKKと同様の動作になります:
     確定した候補は次回の変換から先頭に来ます。
     確定した候補は個人辞書(~/.mazegaki.dic)に保存されます。

** 活用する語の変換は自動的には行いません。
   読みに明示的に"―"を付加して変換してください。

** 交ぜ書き変換関係の未実装の機能
 - 後置型交ぜ書き変換
 - 交ぜ書き変換辞書への登録・削除、
 - 読みを伸ばしたり縮めたりする機能、読みの補完機能
 - 候補選択ウィンドウの使用

* uim-tutcodeで、T-Code等のコード表も使えます。
  uim-pref-gtk等で設定するか、~/.uimで以下のように設定してください。
   (define tutcode-rule-filename "/usr/local/share/uim/tcode.scm")
   (define tutcode-mazegaki-start-sequence "fj")
   (define tutcode-bushu-start-sequence "jf")

* vi使用時の利便性のため、ESCキーでTUT-Codeをオフにする設定を追加:
  tutcode-use-with-vi? 
# {anthy,canna,mana,skk}-use-with-vi?やbyeoru-esc-turns-off?と同様

* Dvorakキーボードを使うかどうかの設定を追加: tutcode-use-dvorak?
  (TUT-Code/T-Codeではキーの値ではなく、
   キーボード上のキーの位置の情報(キー番号)を使います。
   つまり、QwertyでもDvorakでも同じ指の動きで漢字が入力できます。)
  現状のuim-tutcodeのコード表はQwertyで記述しており、
  Dvorak使用設定時にはこの表をDvorak用に変換して登録するようにしました。
  (例:Qwertyでのキーqの位置にはDvorakでは'があるので表中の"q"を"'"に変換)
# tutcode.scmの前段階でキー番号への変換処理を入れる方が自然かもしれません。

* インストール・設定方法
1.以下の5ファイルを、uimの*.scmがある場所(例:/usr/local/share/uim)に
  置いてください。
    tutcode-bushudic.scm  tutcode-key-custom.scm  tutcode.scm
    tutcode-custom.scm    tutcode-rule.scm

2.交ぜ書き変換辞書ファイルのパスをuim-pref-gtk等で設定するか、
  ~/.uimで以下のように設定してください。
    (define tutcode-dic-filename "/opt/sfw/share/tc/mazegaki.dic")
  デフォルトでは、/usr/local/share/tc/mazegaki.dic あたりになります。

  交ぜ書き変換辞書はtc2<http://openlab.jp/tcode/tc2/>に含まれるものと
  同じ形式の辞書を使ってください。

* 変更点や実装上考慮した点
** TUT-Codeのコード表をtutcode.scmから分離してtutcode-rule.scmを作成。
   他の漢字直接入力(T-Code,Try-Code,TT-Code,G-Code等)でも
   交ぜ書き変換や部首合成変換を使えるようにするため。
** 交ぜ書き変換はlibuim-skk.soを使用。
   交ぜ書き変換辞書の形式がSKK辞書と同様の形式なので、流用が可能なため。
   ただし、学習動作がSKKの動作になるが、あまり問題にならないはず。
** 交ぜ書き辞書はSKKの共用辞書としてアクセスする設定をデフォルトにした。
   交ぜ書き辞書はもともと個人ごとに作る辞書なので、
   SKKの個人辞書として設定するのが自然だが、メモリ使用量が増えてしまうので。
** 部首合成変換辞書をtutcode-bushudic.scmとして作成。
   C言語で実装するよりもSchemeで実装する方が楽そうだったので。
   ただし、変換が少し遅い印象も。
** ~/.uimでのコード表の一部変更の方法を変更。
   以下のようにtutcode-rule-set-sequences!を使ってください。
   (tutcode-rule-set-sequences! '(((("w" " "))("〜"))
                                  ((("s" " "))("―"))))
   TUT-Codeでは記号部分の割り当ては変更するのが前提になっているので、
   ~/.uimでの設定を容易にするためにこの手続きを用意しました。

* TODO
** 一覧表からの記号入力
** 交ぜ書き変換候補選択の強化(候補選択ウィンドウを使うようにする)
   ちなみに、tc2に合わせるなら以下のようになりますが、優先度は低いです。
     候補数2       △{勘定,鑑定}
     候補数10以下  △[- 泡 阿波 粟] -  - [- - - -]
     候補数11以上  (仮想鍵盤ウィンドウで以下のように表示)
             -    -    -    -     -        -     -    -    -    -
            [孔   幸   厚   黄  ] 逅      鈎 [  肛   浩   袷   恰]
            [頁   煌   候   稿  ] 項      耕 [  膠   淆   功   侯]
            [-    -    -    -   ] -        - [   -    -    -    -]     (1/5)
** ヘルプ機能(仮想鍵盤表示/ストローク表表示/文字ヘルプ)
   (漢索窓相当の独立アプリ?)
** 後置型部首合成/交ぜ書き変換
** その他tc2や漢直Win<http://www.sato.kuis.kyoto-u.ac.jp/~yuse/tcode/kw/>
   にある機能の実装

-- 
木原 英人 / KIHARA, Hideto / deton****@m1*****
http://www1.interq.or.jp/~deton/




Anthy-dev メーリングリストの案内
Back to archive index