Ruby/CHISE
■Ruby/CHISEとは
Ruby/CHISEは,XEmacs CHISEにおけるChaon実装をRubyへ移植することを試みたモジュールです.
Chaonモデルとは
Chaonモデルとは,文字を符号ではなく素性によって扱う方法を意味します.
Ruby/CHISEではそれを拡張し,文字をオブジェクトとして扱っています.
■download
最新版
文字データベース
Ruby/CHISEを使うには,別途文字データベースを用意する必要があります. 文字データベースはXEmacs CHISEと一緒に配付されてますが, 必要な環境(GNU/Linux)を用意できない人もいるため, 文字データベースのみを取り出したファイルを用意しました.
- 2003-11-04 : char-db.tar.gz Windows用
LinuxでXEmacs CHISEをinstallし,付属のmkdbtarball.rbを使った作成した.tar.gzにしたもの. - 2003-11-04 : char-db-linux.tar.bz2 Linux用
/usr/local/lib/xemacs-21.4.12/i686-pc-linux/char-db以下をtar.bz2にしたもの.
CVS access
CVSによる入手もできます.
ライセンス
GPLです.COPYINGをごらんください.
■install
chise以下を,適当なdirectoryに移動します.
例:
# mv chise /usr/local/lib/ruby/site_ruby/1.8
通常,/usr/local/lib/ruby/site_ruby/以下にinstallされます.
拡張ライブラリは,ext以下にcdし,下記のように打ち込みます.
% ruby extconf.rb % make # make install
拡張ライブラリが無くても動作します.ある場合は,高速化します.
config
chise/config.rb内および,ext/config.h内にて
DB_DIR = '/usr/local/lib/xemacs-21.4.10/i686-pc-linux/char-db'
などを必要に応じて変更してください.
IDS_DB_DIR = '/home/eto/work/chise/ids/''
IDSのテキストファイルが置かれているディレクトリーを指すます.(下記の字形分解・合成についてを参照.)
依存関係
下記のパッケージが必要です.
- db3-3.2.9以上
- bdb-0.5.0以上
- ruby 1.8.1以上
一般にRubyのパッケージは RAAを使って探すことができます.
Unicode
現状では,Ruby/CHISEに渡す文字コードはUTF-8のUnicodeにしておくと便利です.
将来的にはプログラム自体がSJIS,EUCなどで書かれていても 問題なく処理できるようにしたいと思っています.
WindowsでUnicodeを使えるエディターとして,Meadow + Mule-UCSが使えます.
フリーのUnicode対応エディターとして「サクラエディタ」が使えます.
また,Windows付属のメモ帳も使えます.
見るだけであればIEが使えます.
■使い方
基本的な使い方
require "chise" str = "字" # Stringを拡張している.UTF8で与える. p str.ucs # その文字のucsの値が表示される. p str.total_strokes # 画数が表示される. p str.gb2312 # などなど. str.each_feature {|f, v| # 全素性を表示する. print f, ": ", v, "\n" }
■字形分解・合成
Ruby/CHISEは,もともと字形分解・合成を扱うために作られたため,その機能が強化されています.
字形分解・合成は,現在はUnicodeにおけるIDS(Ideographic Description Structure)という仕様に準拠しています. U+2FF0〜U+2FFBで表わされるIDC(Ideographic Description Characters)によって合成方法を指定し,これに続く二文字から三文字の文字を合成して表示します.
IDSを使うための準備
下記のようにして,IDSのテキストファイル群を持ってきます.
% cd ~/work/chise (このディレクトリーは適宜変更する) % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login password: (何も入れずにただもう一度return) % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/chise co -d ids ids
このようにすると,IDSのテキストファイル群を持ってくることができます.
その後,chise/config.rb内の,
IDS_DB_DIR = '/home/eto/work/chise/ids/''
ここに,上記のIDSテキストファイル群を持ってきたディレクトリーを入れます.
このようにして適切にIDS_DB_DIRを設定し,
./tools/idsdbdumpall.rbを実行します.(かなり時間がかかります.)
これで,文字素性として新たにidsなどが加わります.
字形分解
Stringに,decompose, decompose_allという二つのメソッドがあります. decomposeは一段階だけ分解します.decompose_allはそれを再帰的に行います.
p "字".decompose p "字".decompose_all p "榊".decompose p "榊".decompose_all p "終了".decompose p "終了".decompose_all p "鬱".decompose p "鬱".decompose_all
最初の説明から,字形分解されて出てきた結果の文字列には, IDSキャラクターが含まれているため,うまく表示されない場合もあります. メモ帳だと表示できます.
字形合成
字形合成は,composeメソッドで行います.
p "⿰木木".compose
findメソッドで,ある部品が漢字の一部として含まれている漢字群を探すことができます.
p "日雲".find
ここでは,日と雲という部品が含まれている全漢字を出力します.
■説明
現時点では,test caseを見たほうが使い方はわかりやすいです.
class String char 先頭の文字をCharacterに変換したものを返す class Character [] ある素性をgetします. 存在しない素性を参照したときは,nilが返えってきます. []= ある素性をputします.
tools
- define-kanji-meaning.rb
- 漢字の意味による分解を行うための情報を素性として定義します.
- dump-database.rb
- 文字データベースをテキストとしてダンプします.中身を見ることができます.
- make-chisedb-tarball.rb
-
Usage: make-chisedb-tarball.rb <directory of XEmacs CHISE> <tmp dir>
example. % ./make-chisedb-tarball.rb /usr/local/lib/xemacs-21.4.14/i686-pc-linux
XEmacs CHISEの文字データベースを,一つのtarballにまとめます.Windowsで は使えないファイル名を適宜変更します.UNIX上で使います. Windowsでtar.gzを展開するには, eoがおすすめです. - make-ids-database.rb
- IDSのテキストファイル群を読みこみ,素性として使えるようにします. 実行には時間がかかります.
- move-obsolete-files.rb
- すでにobsoleteになった素性のBDBファイルをobsolete directoryに移動させます.
- rename-files.rb
- 古い構造の文字データベースのディレクトリ構造を,新しいディレクトリ構造に直します.
- trim_bom.rb
- Unicodeファイルを作ったときの先頭についてくるBOM(byte order mark)を削除します.
■付属libraryの説明
- ext/*
C言語版のlibchiseを用いたextensionです. - network.rb, makegraph.rb, graphviz.rb, defkanji.rb, kanjilist.rb
漢字の部品間の接続関係を計算します.Graphvizによるグラフ化も行います.ruby makegraph.rb
Graphvizが必要です.min.svgが生成されます.
ruby defkanji.rb
漢字の定義を行います.
- stroke.rb, kage.rb, kageserver.rb, csf.rb
StrokeFontを用いるライブラリー群. 上地宏一氏によるKAGE System, 坂直純氏によるCSFという二つのStrokeFontが使えます. 別途フォントファイルが必要です.
csf.rb中のCSF_FONT_DIR = 'd:/work/chise/csf/'を適切に設定してください.sglという独自のグラフィックライブラリーが必要ですが,これはまだ非公開です.
ruby stroke.rb
漢字のCodeTableが表れ,その中の文字を表示できます.
- 漢字フォント自動生成技術フォーラム
- KAGEモデル
- KST32ZX, 篆文風(Zhuanwen-Like),漢字StrokeFont(KST)
- KST32A, 極めてコンパクトなJIS第一水準漢字(非漢字)ストローク・テーブル
■discussion
Ruby/M17Nとの整合性
Ruby/M17Nとの整合性をどうとればいいか.
■links
■history
- 2003-0110 : テスト公開
- 2003-0112 : XString追加
- 2003-0115 : IDSの読み込み機能β版
- 2003-0116 : IDSの読み込み機能1.0
- 2003-0117 : XStringを廃止し,Stringに一本化.IDSの読み込み機能を強化.
- 2003-0120 : IDS_Treeの読み込み機能を追加.木構造の整合性checkを追加.
- 2003-0130 : IDSの逆変換機能などを追加.
- 2003-0213 : ruby-chise-20030213.tar.bz2
名称をRuby/UTF-2000からRuby/CHISEへと変更. - 2003-0312 : ruby-chise-20030312.tar.bz2
様々なライブラリを追加. - 2003-1004 : ruby-chise-20031004.tar.bz2
新しい素性名に対応した.Copyright noticeをいれた. - 2003-10-31 : LC2003にて発表.
- 2003-1110 : ruby-chise-20031110.tar.bz2
ディレクトリ構造をchise/*.rbとなるように変更.installerをつけた. - 2004-07-08 : ruby-chise-0.2.targz
libchiseに対応した.他,多数の変更.