next up previous
: 4 canna辞書の強化 : cannaによる日本語入力 : 2 canna を使う最低限の設定と使い方


3 cannaによる日本語入力のカスタマイズ法(基本編)

3.1 ユーザー辞書、個人別頻度ファイルの作成

まず、自分専用の辞書(単語登録した際に登録される辞書)を作成する。

     % cannacheck -v cannaserverのホスト名
として、
      単語登録用辞書 "user"を指定しています。
という行が表示されれば、すでに出来ている。user が表示さ れなければ、

    % mkdic -cs  cannaserverのホスト名 user
      New dictionary "user" is created.
      Please change customize file.

で、作る。ここで、``Please change customize file.'' は、 ~/.canna ファイルに、

   (use-dictionary
   ...
   :user  "user" ;この行
   )

があるかどうかで、なければ追加しなさい、の意味。

次に、個人別頻度ファイルの作成をおこなう。大きなシステム辞書について は、頻度情報を個人で持った方がよい。そうしないと、他の人が最後に変換 した単語が、候補の最初に出てきてしまう。どういうシステム辞書があるか は、

    % lsdic -a -cs cannaserverのホスト名

とすれば、表示される。ただし、ここで表示されるすべての辞書に ついて、個人別頻度ファイルを作成する必要はない(できない)。個人別頻度ファ イルが作成できるのは、バイナリー辞書で、システムの頻度ファイルが存在す るもの(たぶん、自立語辞書)だけである。実際にその条件を満たすシステム辞 書は、cannaserver の動いているホストの、システムの dics.dir を見るとわ かる。dics.dir ファイルは、FreeBSDでは、 /usr/local/share/canna/dic/canna/ (古いシステムでは、 /usr/local/lib/canna/dic/canna/なので、以下の記述は、読みかえること) に存在する。

canna では 頻度ファイルは .cld の拡張子なので、cannaserver の動いているホストで、

    % grep cld /usr/local/share/canna/dic/canna/dics.dir

      gcanna.cld(gcanna.mwd)  -gcanna---
として表示される gcanna (右端の - と -- で囲まれた部分) について、

    % mkdic -fq -cs cannaserverのホスト名 gcanna

とすれば、システム辞書 gcanna についての、個人別頻度ファイルが 作成される。個人別頻度ファイルは、cannaserverの動いているホストの /usr/local/share/canna/dic/user/ユーザー名/ 以下に出来る。 /usr/local/share/canna/dic/user/ユーザー名/dics.dir ファイルの中身を見て みよう。

なお、このように 個人別頻度ファイルを作成した後で、システム辞書が変更さ れると(管理者がより強力な辞書に入れ換えた場合など)、個人別頻度ファイルと システムの頻度ファイルに矛盾が生じて、そのシステム辞書が使えなくなる。

     % cannacheck -cs cannaserverのホスト名
すると、
     XXXXXをマウントできませんでした
といわれる。この場合には、再度、個人別頻度ファイルを作りなおす必要がある。
      % rmdic -fq -cs  cannaserverのホスト XXXXX
      % mkdic -fq -cs  cannaserverのホスト XXXXX

以上の操作は、コマンドに ``-cs cannaserverのホスト名'' を付けて実行し たことからもわかるように、変換サーバーのカスタマイズであり(つまり、 「かな」から「漢字」にどのように変換するか)、変換クライアント (kinput2 や canna/mule、tamago4/emacs) とは独立なカスタマイズである。

3.2 変換クライアントのカスタマイズ

キーボードからキーを入力した際に、画面上にどのような文字(かな)を表 示するかは、変換クライアントの仕事である。普通は、ローマ字入力が多 いが、カスタマイズすれば、「かな入力」も可能になる。

3.2.1 kinput2, canna/mule のカスタマイズ

これらの変換クライアントは、~/.canna ファイルでカスタ マイズを行う。~/.canna ファイルが存在しない場合は、 /usr/local/share/canna/default.canna が使われる。

自分の home directory に、.canna が存在しない場合は、 /usr/local/share/canna/sample/ directory にカスタマイズ用のサンプル ファイルがあるので、ひとつをコピーする。普通は、unix.canna ファイル でよいが、ATOKの入力に慣れている場合には、just.canna の方がよいかも しれない。

    % cp /usr/local/share/canna/sample/unix.canna ~/.canna

~/.cannaファイルでの基本的なカスタマイズのみを書く。詳しいことは、 cannaのマニュアル のカスタマイズの章を参照。

  1. ローマ字かな変換テーブルの指定

           (setq romkana-table "default.cbp")
    

    default.cbp は、/usr/local/share/canna/dic/default.cbpにある。こ の directory には、just.cbp(ATOK風)、vje.cbp(VJE風)などいくつかの 変換テーブルがあるので、default.cbp を適当なものに変更すればその変 換テーブルに変わる。ただし、このファイル自体はバイナリーファイルで、 どういう変換テーブルなのかわからない。変換テーブルのソースファイル は、/usr/local/share/canna/sample/src/ 以下に同じファイル名である (拡張子は .ctd)ので、眺めてみよう。

    自分で、ローマ字かな変換テーブルをカスタマイズするためには、 /usr/local/share/canna/sample/src/ のファイルのひとつを持ってきて、 編集し、変換テーブルのバイナリーファイルを作成して、home directory に置けば良い。

       % cp /usr/local/share/canna/sample/src/default.ctd my-table.ctd
       % emacs my-table.ctd (編集)
       % mkromdic my-table.ctd 
    
    で、my-table.cbp を作製し、~/.canna ファイルを、
        (setq romkana-table "my-table.cbp")
    

    に変更して、kinput2などを再起動すれば、変更される。

  2. 使う辞書の指定

         ;;; 利用する辞書
         (use-dictionary
         "gcanna"
         "fuzokugo"
         "hojomwd"
         "hojoswd"
         :bushu "bushu"
         :user  "user"
         )
    

    の部分で、実際に利用する辞書を定義している。

         % lsdic -a -cs cannaserverのホスト名
    

    で表示される辞書で、ここにないものは、追加しておこう。実際に、 使用している辞書は、

         % cannacheck -v -cs  cannaserverのホスト名
    

    で確認できる。

  3. extended-mode へのキーバインド(kinput2のみ)

    canna では Help キーで、拡張モードに入り、単語登録や各種設定、記号 入力などが出来る。Help キーのないキーボードもあるので、

         (global-set-key "\F1" 'extend-mode)
    

    を入れておくと、F1キーで、拡張モードに入れるようになる。

3.2.2 tamago4/emacs のカスタマイズ

tamago4は、変換サーバーとして cannaも利用できる Wnn の変換クライア ントであり、.canna ファイルは読まない。.canna ファイルに対応するの は、.eggrc ファイルであるが、.cannaのような細かいカスタマイズは出 来ない。~/.eggrc ファイルが存在しない場合は、 /usr/local/share/emacs/21.3/site-lisp/egg/eggrc が読まれる。

  1. .eggrcファイル

    ~/.eggrc ファイルでは、使う辞書の指定をする。
    /usr/local/share/emacs/21.3/site-lisp/egg/eggrc には、変換サーバー として、Wnn と canna を使う場合の両方の記述があるが、canna を使う 場合には、

         (canna-define-environment)
         ;(canna-add-dict "iroha" nil) ; nil は書き込みしない
         (canna-add-dict "gcanna" nil)
         (canna-add-dict "gcannaf" nil)
          ...
         (canna-add-dict "user" t) ; t は書き込みする
    

    ~.canna ファイルの場合と同様に、lsdic -a で表示 される辞書は、追加しておこう。

  2. ローマ字かな変換テーブルのカスタマイズ

    現在の tamago4 では、kinput2, canna/mule の様に、洗練された方法 でのカスタマイズはできない。ローマ字かな変換テーブルは、 /usr/local/share/emacs/21.3/site-lisp/egg/its/hira.el に書き込ま れていて、これを変更するには、~/.emacs または ~/.emacs.el ファイルで 再定義するしかないようである。

    例えば、default のテーブルでは、``lalilulelo'' と入力すると ``らりる れろ``に変換されるが、これを''ぁぃぅぇぉ''にするには、

           (defun my-customize-romaji-tamago4-hira ()
    	     (interactive)
                 (define-its-state-machine-append
                   its-hira-map
                     (its-defrule "la" "ぁ" nil t)
                     (its-defrule "li" "ぃ" nil t)
                     (its-defrule "lu" "ぅ" nil t)
                     (its-defrule "le" "ぇ" nil t)
                     (its-defrule "lo" "ぉ" nil t)
                    )
            )
          (eval-after-load "its/hira" '(my-customize-romaji-tamago4-hira))
    

    を、~.emacs.el(または、~.emacs) に書く。筆者は、記号や数字が全角文字ではなくアルファベットで出た方が便利なので、

                     (its-defrule "(" "(" nil t)
                     (its-defrule ")" ")" nil t)
                     (its-defrule ":" ":" nil t)
                     (its-defrule "*" "*" nil t)
                     (its-defrule "!" "!" nil t)
                     (its-defrule "%" "%" nil t)
    		 (its-defrule "\\" "\\" nil t)
    		 (its-defrule "@" "@" nil t)
    		 (its-defrule "\"" "\"" nil t)
    		 (its-defrule "1" "1" nil t)
                     (its-defrule "1" "1" nil t)
                     (its-defrule "2" "2" nil t)
                     (its-defrule "3" "3" nil t)
                     (its-defrule "4" "4" nil t)
                     (its-defrule "5" "5" nil t)
                     (its-defrule "6" "6" nil t)
                     (its-defrule "7" "7" nil t)
                     (its-defrule "8" "8" nil t)
                     (its-defrule "9" "9" nil t)
                     (its-defrule "0" "0" nil t)
    
    という記述(実際にはもう少し多い)も、上記の its-hira-map に加えている。 このように設定した後で、全角の記号や数字を入力したい場合には、 "Z" の後に、その記号を入力すればよい。 余談だが、tamagoでは、小文字の "z" の後にキーを押すと、 色々な記号がでるようになっているので、試してみると面白い。

  3. その他のカスタマイズ
    すべて、~.emacs.el(または ~.emacs) に記述する。

    もっと色々とカスタマイズ可能なので、この辺を参考にしてください。

    http://sodan.org/~knagano/emacs/tamagov4.html
    http://phe.phyas.aichi-edu.ac.jp/~cyamauch/pl2_emacs21.html

3.3 cannaのユーザー辞書への単語登録

変換できなかった単語や、単語だけでなく頻繁に使う長い文章などはユーザー辞 書に登録しておくと、以降の変換効率が上がるので、できるだけ登録しよう。

kinput2 から

HELPキー または F1キー を押して出る 「拡張メニュー」から、「4単語登 録」を選ぶ。

単語登録したいということは、その単語が変換されなかったということで、 その単語を出すために、すでに、何らかの操作をしているはず。kinput2 から登録する場合は、その操作をもう一度する必要があるので、やや不便。

なお、途中で「拡張メニュー」から抜けるためには、C-g を押す。

canna/mule から

登録したい単語をリージョンに入れて、ESC-x canna-touroku-region。

再度、単語を変換する必要はない。「リージョン」とは、マークした位置か ら現在のカーソルの位置までの領域を指す。。マークするためには、 C-Space。X の場合は、マウスの左クリックしながら、領域を選ぶことでも、 リージョンに入れることができる。なお、ESC-x の後は、TABで補完ができ る。候補が複数ある場合は、再度TABを押すと、候補一覧がでる。

tamago4/emacs から

登録したい単語をリージョンに入れて、ESC-x egg-toroku-region。

単語登録を、キーにバインドする

ESC-x egg-toroku-region などの操作が面倒であれば、キー にバインドしておこう。例えば、F7にバインドするためには、 canna/mule では、~/.emacs に

	(global-set-key [f7] 'canna-touroku-region) ;; F7 で touroku-region

tamago4/emacs では、~/.emacs.el に

         (global-set-key [f7] 'egg-toroku-region) ;; F7 で toroku-region
と書く。

3.4 コマンドラインでのユーザー辞書の操作

登録されている単語の一覧表示

user 辞書に登録されている単語の一覧は、
   % catdic -cs cannaserverのホスト名 user
で得られる。出力としては、例えば、
     FreeBSD #T30 http://www.jp.freebsd.org/
     こぴぺ #T35 コピー&ペースト
     そふとゑあ #T35 ソフトウェア
     どしー #T35 \\textcelsius{}
     みかみね #CN 三神峯
     おろかもの #T35 悪露化者
     よろしく #T35 宜しくお願い致します。
のように、読み 品詞コード 漢字(でなくてもよい) になっている (辞書ファイルの形式参照)。。

登録されている単語の削除

間違って登録してしまった単語を削除するには、上記の catdic の出力を そのまま、コピー&ペーストして、
    % echo 'おろかもの #T35 悪露化者' | delwords -cs ホスト名 user
とする。

単語の登録

削除の delwords の代わりに、addwords にして、
    % echo 'おろかもの #T35 愚か者' | addwords -cs ホスト名 user
とする。

空白を含む単語の登録

例えば、"とんぺい" と入力して、"Tohoku University" と変換するためには、 Space の 前に、\を入れて14

    % echo 'とんぺい #T35 Tohoku\ University' | addwords -cs ホスト名 user
でOK。

特殊文字を含む単語の登録

例えば、TeX で良く使う \textbackslash{} を "\\" と単語登録するためには、 \は、特殊記号なので、空白の場合と同様に、\ でエスケープして、
    % echo '\\\\ #T35 \\textbackslash{}' | addwords -cs ホスト名 user
でOK。

単語の一括登録と削除

フリーな辞書をダウンロードして、個人の辞書ファイルに登録するには、 canna に付属する、addwords と delwords コマンドを使う。例えば、user 辞書に、hoge.t ファイルを一括登録するためには、
    % addwords -cs cannaserverのホスト名 -l hoge.t user
でよい。逆に、辞書から一括削除するためには、
    % delwords -cs cannaserverのホスト名 user < hoge.t
で OK。



... を入れて14
cannaの辞書の形式では、 Space は 読み 品詞 漢字1 漢字2 の並びの区切り文字として解釈されてしまう。 このように、ある意味をもった文字の機能をキャンセルし、一般文字として ソフトウェアに認識させることを"エスケープする"と呼び、そのための文字 (エスケープキャラクター)として、UNIXでは通常 \ が用いられる。

next up previous
: 4 canna辞書の強化 : cannaによる日本語入力 : 2 canna を使う最低限の設定と使い方