%%Title: Canna の使い方

%%Created: Mon Feb 11 19:02:18 JST 2002
%%Updated: Fri Feb  4 12:45:52 JST 2005

以下は多くの記述は FreeBSDの場合です。
NetBSDの場合、辞書は /var/dict/canna, サンプルは /usr/pkg/share/canna です。

o Cannaとは?
	まずは本家http://www.nec.co.jp/canna/
	こういう所も役に立つです。

o 設定
	% cp /usr/local/canna/lib/default.canna ~/.canna
	して適時いじる

o kinput2をFEPとして使う
	Ctrl+Space で入力モードにするには

	% cat .xinitrc
	if ( -x /usr/X11R6/bin/kinput2 ) then
		setenv XMODIFIERS	'@im=kinput2'
		/usr/X11R6/bin/kinput2 -xim &
	endif

	% cat .canna
	(set-key 'alpha-mode "\C-@" 'japanese-mode)
	(global-set-key "\C-@" 'alpha-mode)

	% cat .Xdefaults
	KTerm*VT100.Translations:	#override \n\
		Ctrlspace: begin-conversion(_JAPANESE_CONVERSION)
	*inputMethod: kinput2
	Kinput2*conversionStartKeys:	Ctrlspace

	メニューを開くには、kinput2 のクライアントを起動して、[HOME]を押す。
	[HOME]キーがない時や、別のキーにバインドされている時は、
	~/.canna に 
		(global-set-key "\F12" 'extend-mode)
	とか書いとく。すると [F12]キーで代用できる。

o Cannaを育てる
	Cannaをインストールしたばかりの時に、『わくせいたんさき』と入力すると、
	『惑星単先』とか『惑星短先』と変換されて悲しくなる。

	さて辞書を管理するために知っとくコマンドは以下の4つ
	mkdic, lsdic, catdic, addwords, delwords

	- ユーザ辞書を作る
		例えば、basic と言う名前の辞書を作るには
			% mkdic basic
			New dictionary "basic" is created.
			Please change customize file.

		確認するには
			% lsdic
			basic

		辞書を作ったら ~/.cannaの use-dictionaryに作った辞書を追加する。

			% can ~/.canna
			(use-dictionary
			"iroha"
			"fuzokugo"
			"hojomwd"
			"hojoswd"
			"keishiki"
			:bushu "bushu"
			:user "basic"
			:user "user"
			)

		kinput2や jvim-canna等のクライアントの再起動を忘れずに。

		さて mkdic すると /usr/local/lib/canna/dic/user/sakane の下に
		辞書が作られる。
			% ls -R /usr/local/lib/canna/dic/user/sakane
			#dics.dir       dics.dir        usr1.ctd

		実際の辞書ファイルは dics.dirでマップ
		されている usr1.ctd
			% cat /usr/local/lib/canna/dic/user/sakane/dics.dir
			#CANNA dics.dir [Mon Feb 11 19:33:25 2002] user/sakane
			usr1.ctd(.mwd) -basic--w-

		この状態で usr1.ctd はカラっぽ

	- 単語の登録と削除
		% addwords [読み] [品詞記号] [単語]
		% delwords [読み] [品詞記号] [単語]

		さて、『惑星探査機』を辞書 basicに登録するには、

		% echo 'わくせいたんさき #T35 惑星探査機' | addwords basic
		Addwords has done on "basic".

		とする。

		品詞記号は以下の通り。
		マニュアルとソースコード(cmd/wtoc/wtoc.c, lib/canna/ulhinshi.c) から抜粋。
		ほんとに処理してるかどうかは知らない。
		#JCN は #JN と #CN で登録失敗したら使われるみたい。
		#N2T17 は使うと mkbindic(正確には crxdic) でエラーになる。

		品詞コード 品詞名                                  例
		#T35       一般名詞                                山, 本
		#T30       サ変名詞                                努力, 検査
		#KK        固有名詞
		#JN        人名
		#CN        地名
		#NN        数詞                                    何
		#KJ        単漢字
		#RT        連体詞
		#PRE       接頭語                                  お、各
		#CNPRE     接頭地名
		#NNPRE     接頭数詞
		#SUC       接尾語
		#JSSUC     接尾助数詞
		#JNSUC     接尾人名
		#CNSUC1    接尾地名
		#N2T30     サ行(する)&名詞化接尾語
		#JCN       人名&地名

		#K5        カ行五段活用動詞                         描く
		#G5        ガ行五段活用動詞                         注ぐ
		#S5        サ行五段活用動詞                         倒す
		#T5        タ行五段活用動詞                         絶つ
		#N5        ナ行五段活用動詞                         死ぬ
		#B5        バ行五段活用動詞                         転ぶ
		#M5        マ行五段活用動詞                         住む
		#R5        ラ行五段活用動詞                         威張る
		#W5        ワ行五段活用動詞                         言う
		#KS        上/下一段活用動詞                       降りる
		#KX        カ行変格活用動詞                         来る
		#ZX        ザ行変格活用動詞                         感ずる
		#SX        サ行変格活用動詞                         関する
		#K5r       カ行五段活用動詞(連用形が名詞)           動く
		#C5r       カ行(行く)
		#L5        ラ行(下さい)
		#kxo       来(こ)
		#kxi       来(き)
		#kxuru     来(く)
		#sxi       為(し)
		#sxuru     為(す)
		#sxe       為(せ)
		#G5r       ガ行五段活用動詞(連用形が名詞)           行く
		#S5r       サ行五段活用動詞(連用形が名詞)           急ぐ
		#T5r       タ行五段活用動詞(連用形が名詞)           写す
		#N5r       ナ行五段活用動詞(連用形が名詞)           勝つ
		#B5r       バ行五段活用動詞(連用形が名詞)           遊ぶ
		#M5r       マ行五段活用動詞(連用形が名詞)           歩む
		#R5r       ラ行五段活用動詞(連用形が名詞)           見張る
		#W5r       ワ行五段活用動詞(連用形が名詞)           扱う
		#KSr       上/下一段活用動詞(語幹が名詞)           生きる

		#KY        形容詞                                   美しい, 早い
		#KYT       形容詞                                   古い
		#T00       形容動詞(サ変名詞としても使う)           心配だ
		#T05       形容動詞(詳細の品詞を必要としない場合)   幸運だ
		#F00       形容動詞(たる)

		#F04       副詞
		#F06       副詞
		#F12       副詞
		#F14       副詞(詳細の品詞を必要としない場合)       飽くまで

		#CJ        接続詞/感嘆詞                            及び

		#D2T35     接尾動詞
		#D2KY      形容詞化接尾動詞
		#N2T17     形容動詞化接尾語
		#JS        助数詞、接頭助数詞

	- 辞書の削除
		% rmdic	basic

		cannaserverが動いてなければ dics.dirから辞書を消して、
		対応する辞書ファイルを消せばいい。
		いずれにせよ、 ~/.canna の編集を忘れずに。

o 辞書の形式

	- テキスト形式辞書
		拡張子 .ctd
		辞書を直接編集した時はサーバを再起動する。
		[読み] [品詞記号] [単語 [単語 ... ]]
		テキスト形式辞書をバイナリ形式辞書に変換するにはmkbindicを使う。

	- バイナリ形式辞書
		拡張子 .cbd
		拡張子 .cld (頻度ファイル)
		高速読み込みが可能になる
		バイナリ形式辞書をテキスト形式辞書に変換するにはdpbindicを使う。

	- 辞書目録 dics.dir
		+ 辞書名とファイル名を関連付ける。
		+ アクセス権を設定する。

		形式:
			辞書のファイル名(子辞書名) -辞書名--アクセス権-

		辞書のファイル名
			実際のファイル名。最初の文字はアルファベットから
			始まらないといけないぽい。

		子辞書名
			テキスト形式辞書の場合、辞書名を省略して登録する。
				ex. usr1.ctd(.mwd) -basic--w-
			バイナリ形式の時は省略不可。(#子辞書を複数登録できるの?)
		辞書名
			.cannaで指定する辞書名

		アクセス権
			w: 書き込みのみ
			r: 読み込みのみ
			rw: どっちも

o 辞書を充実させる
	http://www.vector.co.jp/vpack/filearea/data/writing/dic/index.html
	http://www.kusastro.kyoto-u.ac.jp/~baba/dic/free-dic.html
	とかから元になる辞書を拾ってきて、こんなスクリプトとかで頑張ってCanna形式に変換する。
	EUCに変換するのを忘れずに。

	全部1つの辞書にするとクライアントの起動に時間がかかるので、
	mkbindic するとか、適当に分割して
	用途にあわせてマウント/アンマウントすべし。


o テキスト形式辞書をバイナリ形式に変換する

	例えば、テキスト形式辞書 basic.ctd を変換する。
	mkbindic する前に sort | uniq しておく。

		% mkbindic basic.ctd
		forcpp -7 < basic.t | /usr/bin/cpp  | forcpp -8 > /tmp/basic.cpp
		:109295: possible real start of unterminated constant   <== ' とか " が終端してない(?)
		:235589: unterminated character constant
		:253639: unterminated character constant   <== ' とか " が終端してない
		splitword /tmp/basic.cpp > /tmp/basic.spl
		mv basic.t basic.bk
		forsort -7 < /tmp/basic.spl | sort -d | forsort -8 | mergeword -X > basic.t
		too long line
		too long line          <== 読みと漢字の合計が1024バイトを越えてる。無視
		too long line
		too long line
		crxdic -m -o basic.cbd basic.t
		Error in RkParseWrec   <== N2T17 を使ってる
		mkbindic: fatal error. exit

	エラーを回避すると basic.cbd と basic.cld ができる。
	一時ファイルを /tmp に作るので容量が足りなければ適時 TMPDIR を設定する。

	cannaserver を止める。
	/usr/local/lib/canna/dic/canna/dics.dir を編集する。
	追加したいバイナリ辞書を basic.cbd とすると。
	% cat dics.dir
	       :
	     (省略)
	       :
	basic.cbd(.mwd)	-basic--r--
	basic.cld(.mwd)	-basic--r--

	として、できたファイルをこのディレクトリに置く。
	更新する必要がないのでリンクしてもよい。

	準備が出来たら cannaserver を起動する。

o バイナリ形式辞書をテキスト形式にする
	バイナリ辞書を編集する時とかに有効

	前述の basic.cbd を例に取ってテキスト形式 basic.txtに保存してみる。
	最初にバイナリ形式辞書の中にある辞書名を調べる。

	% dpbindic basic.cbd 
	dpxdic basic.cbd
	basic.mwd [ Wed Feb 13 01:26:26 2002 ] = 304475 + 195663

	basic.mwdという辞書が含まれている事がわかるので、これを引数として再度
	dpbindicに渡す。

	% dpbindic basic.cbd basic.mwd > basic.txt

o 世の中のフリー辞書
	Canna用岩石学辞書
	http://www.vector.co.jp/soft/data/writing/se125795.html

	Kan君 部首変換と総画数
	http://www.vector.co.jp/soft/data/writing/se001797.html

	r-dic 鉄道関連データ辞書
	http://www.vector.co.jp/soft/data/writing/se001883.html

	WX3用【P】現代流行語辞書 PART.8
	http://www.vector.co.jp/soft/data/writing/se021458.html

	ATOK/WX3用 経済用語辞書
	http://www.vector.co.jp/soft/data/writing/se060789.html

	精神世界辞書TXT版
	http://www.vector.co.jp/soft/data/writing/se132180.html

	当て字難読語
	http://www.vector.co.jp/soft/data/writing/se194451.html

	特殊単語TЁχT辞書
	http://www.vector.co.jp/soft/data/writing/se188089.html

	日本史・文学史辞書(ATOK・IME)
	http://www.vector.co.jp/soft/data/writing/se144944.html

	Atok11辞書登録用の姓名のテキストdete date
	http://www.vector.co.jp/soft/data/writing/se218823.html

	ATOK13/14用 戦国人名辞書
	http://www.vector.co.jp/soft/data/writing/se205703.html

	ATOK8用 顔マーク辞書
	http://www.vector.co.jp/soft/data/writing/se019194.html

	ATOK8用 物理用語集
	http://www.vector.co.jp/soft/data/writing/se039662.html

	さくらの顔文字辞書2100 for ATOK
	http://www.vector.co.jp/soft/data/writing/se083974.html

	さくらの麻雀辞書 for ATOK11,12
	http://www.vector.co.jp/soft/data/writing/se084007.html

	花卉植物名辞書
	http://www.vector.co.jp/soft/data/writing/se009721.html

	会計用語辞書(ATOK)
	http://www.vector.co.jp/soft/data/writing/se190306.html

	古建築用語辞書
	http://www.vector.co.jp/soft/data/writing/se023301.html

	武道辞書
	http://www.vector.co.jp/soft/data/writing/se029246.html

	全国地名テキスト MS-IME95用
	http://www.vector.co.jp/soft/data/writing/se044245.html

	ATOK用人名辞書
	http://www.vector.co.jp/soft/data/writing/se011392.html

	沖縄人名地名辞書 ATOK8用
	http://www.vector.co.jp/soft/data/writing/se018546.html

	三国志人名辞書 MS-IME版
	http://www.vector.co.jp/soft/data/writing/se090024.html

	女の子の名前辞書用データ
	http://www.vector.co.jp/soft/data/writing/se021655.html

	人名辞書
	http://www.vector.co.jp/soft/data/writing/se008149.html

	元素名辞書
	http://www.vector.co.jp/soft/data/writing/se016875.html

	鉱物名辞書A型
	http://www.vector.co.jp/soft/data/writing/se017251.html

	VJEB用山名一括登録ファイル
	http://www.vector.co.jp/soft/data/writing/se021124.html

	軍事用語辞書
	http://www.vector.co.jp/soft/data/writing/se119094.html

	水滸伝・人名辞書 MS-IME2000版
	http://www.vector.co.jp/soft/data/writing/se191693.html

	pubdic+から作ったFreeWnn/Wnn4.2の辞書パッケージ 
	http://www.remus.dti.ne.jp/~endo-h/wnn/

	gerodic 「人名に関する固有名詞辞書」
	http://www.remus.dti.ne.jp/~endo-h/wnn/

	私家版pubdic+補遺
	http://www.remus.dti.ne.jp/~endo-h/wnn/

	地球物理辞書
	http://www.chibutsu.org/jisho/

	天文・天体物理用語の辞書
	http://www.kwasan.kyoto-u.ac.jp/~tanuma/

	えっち・へんたい(えっへん)辞書
	http://www.sf.airnet.ne.jp/kurasiki/ehhen.html

	2ch用語辞書
	http://omaemona.sourceforge.net/packages/Canna/