CHISE specs (Re: UTF-2000 char-db)

守岡知彦 / MORIOKA Tomohiko tomo @ mousai.as.wakwak.ne.jp
2003年 1月 23日 (木) 04:06:59 JST


>>>>> In [utf-2000 : No.00342] 
>>>>>	"江渡さん" = Kouichirou Eto <2003 @ eto.com> wrote:

江渡さん> > specs 云々というのは CHISE Project に関わる各種 API, 仕様、
江渡さん> > 形式、protocol等を文書化しようということです。(Subversion 
江渡さん> > 移行までは)cvs.m17n.org:/cvs/chise の specs/ に書き込んで
江渡さん> > いこうとしてます。
江渡さん> > ;;	char-atr.ja.txt		文字属性の一覧
江渡さん> > ;;	chise-elisp_ja.tex	XEmacs UTF-2000 API

江渡さん> 見てみました。特にchar-atr.ja.txtについて、おおまかにフォー
江渡さん> マットが決まっているみたいなのですが、機械可読な方法でテキス
江渡さん> ト化しませんか?  そうすれば、それをrubyからよみこんで、言語
江渡さん> 内ヘルプみたいな形式でattributeの説明を見られるようにできる
江渡さん> と思います。
江渡さん> 一番合意しやすいのは、やはりXMLでしょうか。

賛成です。関係者もいることだし、文書のマスターファイルは TEI ベースの
形式にしたいなあ(CHISE のデータベースと連動した WSD 実装も用意して)
という野望を持っているんですが追いついてません。というか、文書化苦手で
す。(^_^;;;

という訳で、

江渡さん> <attribute>
江渡さん> <name>name</name>
江渡さん> <category>一般</category>
江渡さん> <type>string</type>
江渡さん> <meaning>文字名称</meaning>
江渡さん> <note>公的標準で決まっているものは大文字で記し、私的な名称は
		小文字で記す</note>
江渡さん> </attribute>

江渡さん> とかこういう感じ? あんましうまくいってないかな。

という風に文書を機械可読にしてそこからプログラミング言語にバインドする
という方法とは逆に、DOC-string(Lisp におけるオンラインヘルプの元)な
どから文書を自動合成する方が良いんじゃないかと思っています(文芸的プロ
グラミング万歳)。

そこで、文字属性名に対して DOC-string や型情報、フォーマット情報などの
メタ情報(文字属性のクラス定義)を付けてはどうかと思っています。そして、
その情報は各文字属性値と同様に外部文字データベースに格納します。


こうした機能があれば、

>>>>> In [chise-ja : No.00128] 
>>>>>	"藤原さん" = Yoshi Fujiwara <yfujiwar @ atr.co.jp> wrote:

藤原さん> > XEmacs UTF-2000でdefine-char形式で定義された標準文字データ
藤原さん> > ベースがあらかじめ与えられていることを前提にできるのならば、
藤原さん> > それでもあまり

藤原さん> ユーザとして,以下のような素朴な疑問があります.年末,守岡さんに
藤原さん>   put-char-attribute
藤原さん>   save-char-attribute-table
藤原さん> とか聞いていました.文字の属性をいじくって遊び,例えば
藤原さん> ideographic-structure-mydepth という自分で定義した属性を
藤原さん>   木 -> 1
藤原さん>   林 -> 2
藤原さん>   森 -> 3
藤原さん>   ?\u236E7 -> 4
藤原さん>   ?\u23855 -> 6
藤原さん>   ?\u2387D -> 16
藤原さん> とかしたり(最後のアマゾンですね)して,mydepth で文字の色を変
藤原さん> えるとかしたいとします.

藤原さん> あるいは甲骨文字を define-char して,現在の文字との関係属性
藤原さん> を付けるとかしたいとします.

藤原さん> このように新たな文字オブジェクトや文字属性を定義するという機
藤原さん> 能がXEmacs UTF-2000の真骨頂だという気がするのですが,そうい
藤原さん> うのをruby/utf2000, perl/utf2000で実装し,マイ文字オブジェク
藤原さん> トやマイ属性を共有し合うとか,仏典研究者間で公開するとかいう
藤原さん> ことは可能なのでしょうか.単にユーザーとしての意見でした
藤原さん> (^^;).

というような場合に対応しやすいと思います。

テキスト形式の交換でいえば、XML を使って大風呂敷を作り、DTD やスキーマ
などで形式(や意味)を定義し、スタイルシートで見掛けを定義するというこ
とをやる訳ですが、同様のことを文字に対してやれば言い訳です。

XML に基づく方法としては、Wittern さんが TopicMaps の使用を提案してい
ます。ただ、これはもう少し時間が掛かると思うし複雑なので、現在の文字属
性データベースに特化した割と簡単な方法を考えてみたいと思います。

現在考えてる方法は、

・文字属性ファイルのキーとして、Lisp における symbol に相当するものを
  文字属性のクラス属性として予約する

・幾つかの標準クラス属性を定義する。例えば、

  - description	: 説明文
		  (国際化はどうするか?
			gettext 式?
			後ろに LANG を付ける?)

  - type	: 型定義
		  (defcustom の :type みたいなのが良いかな?
		    あるいは、S 式ベースのパターンパッチング言語を定義
		    して、S 式ベースの正規表現みたいなので書くとか(で
		    も、文脈自由文法が良いと思う))
		  (複雑な型システムを導入するなら、やはり libchise で
		    そういうのをサポートすべきか?)

  - format	: 属性値の標準的な表示法

  など

というものです。クラス属性は必要に応じて増やして良く訳ですが、

・特定のアプリケーション専用のクラス属性空間を用意し、Emacs Lisp や 
  Ruby などの各種プログラムを登録できるようにする。と思ったけど、セキュ
  リティ上の理由からこれは止めといた方が吉かも。むしろ、method の種類
  を登録したり、method に関するプロトコルを決める方が良いかも。各言語
  処理系では送られて来たメッセージを解釈して処理したり、処理をメッセー
  ジにして libchise に送る方が良いかも。method がどの処理系でも解釈さ
  れなかったら適当な例外を起こす。って、ここまで書いて思ったけど、これ
  じゃ .net とか Cocoa みたいなのを作るはめになるかな。うーむ。(^_^;;

といったことも考え中です。

-- 
守岡 知彦 (MORIOKA Tomohiko) <tomo @ kanji.zinbun.kyoto-u.ac.jp>




More information about the CHISE-ja mailing list