CHISE_Value (Re: chise_swig_perl)

KAMICHI Koichi kamichi @ fonts.jp
2006年 12月 1日 (金) 00:47:59 JST


上地です。守岡さん、ご説明ありがとうございます。

> > ところで、chise.hのなかの「CHISE_Value」について、よくわかっていません。

> > これらの関数で使われるCHISE_Valueとは何でしょうか?文字列データの抽象ク

> 素性値を格納するための型で、現在の実装ではその実体は Berkeley DB の
> DBT です。

> 素性値を抽象的に扱いたい気持と、メモリー管理やコピーを避けたい気持が相
> 反する訳ですが、とりあえず、抽象化された CHISE_Value* 型のデータをアク
> セス関数を介して操作するという方式にしとけば、高レベルのアクセス関数を
> 用意することで、拡張も可能になるかなあという意図でこうなってます。

なるほど。とりあえず現状ではC(libchise)とPerlとの文字列データのやりとり
はすべてSWIGに任せているので、結果としてchar*型を介しています(libchise
の文字列はunsigned char*型なので面倒…)。今はCHISE_Value*型を使うメリッ
トがないので後回しにしていますが、そのうちtypemapを使ってCHISE_Value*型
を直接Perlのスカラーに取り込むようにしたいと思います。

さて、早速ですがモジュール化作業に入りました。従来のchiseperl.plは捨てて、
libchiseの命名に沿って再度chise.hにある関数をラッパー化し、読み込み系は
すべて終わり、次は書き込み&更新系です。

あと、動作確認のためサンプルスクリプトもcvsに入れました。こんどのモジュー
ル化でだいぶ素直に書けると思います。

(1)残りの関数が終わったら、今度は念願のPerl/CHISE関数の取り込み、およ
びRuby/CHISEの内容とも整合性を取ることにチャレンジしたいと思います。

今日、別件で野村英登さんと話をしていて、Perl/CHISEはChaonモデルの活用(実
証)を目的とした関数が多いけれども、私が主として考えているのは漢字構造情
報や漢字同士の関係に関する操作関数で、すこし目的がずれていることを認識し
ました。なので、優先順位をつけようと思います。このことについては、ご意見
を頂戴したいと思います。もしくは自分のほしい関数からやっていきます。

(2)新しいchar_idを取得するのに0xF0000から未使用のものを探していく、と
いう方法については、Perlだと今のところ30秒かかります。もちろん文字オブジェ
クトが増えればもっと遅くなるわけですが、よい解決法はないでしょうか?とり
あえずC言語側で書きなおすことを考えています。

(3)CCSについてchar_idからコードポイントを得る向き(feature)と、コード
ポイントからchar_idを得る向き(index)で、対称関係になっていますが、片方に
ついてchise_char_set_feature_valueで新たに値を登録したときに、逆向きの
indexにはデータが自動登録されるのでしょうか?前に聞いたときは「される」
だったと思いますがこれはXEmacs/CHISEの話であり、libchise/concordレベルで
は実装されていないと(ソースを見て)思ったのですが、正しいでしょうか?

また、たとえば新たにCCSに相当するfeatureを作った場合、index側も作る必要
があり、またpropertyの「type」を「CCS」とする、などの作業についても、現
在は手作業になるのでしょうか?libchiseはシンプルなので理解しやすいのです
が、逆にXEmacsで実装できていることが複雑で追いつけない印象です。

(4)char_idから実体参照への変換について、現在XEmacsではlispコードで実
装していますが、これをpropertyを参照すれば変換できる形式(CCSに対する頭
置語の登録?)に移行することはいかがでしょうか。スクリプト内に変換情報
をハードコードするのに抵抗があります。

-- 
上地 宏一 KAMICHI Koichi <kamichi @ fonts.jp>





More information about the CHISE-ja mailing list