[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00040] what to do? / directory structure




古川竜雄です。

では、次に「 FreeWnn 1.2 で何をするか」ですが、それを考えるにはまず、
FreeWnn が何を目指すかを明らかにしないといけないでしょう。それはずばり
これです。


        多国語情報処理のプラットホーム      (おお、大きく出たなあ)


具体的になにをするのかというのは、いまのところ私にはアイデアはありませ
ん。でも「わかち書きシステム」なんてのはかなり簡単にできるのではないで
しょうか? つまり kakasi の FreeWnn 版です。(kakasi は skk をベースにし
ているらしい)。FreeWnn には逆変換機能がありますので、結構賢いものがで
きると思います。辞書もそのまま使えるしね。名前は戸村さんのアイデアなん
だけど「北北西」なんてどうでしょ? (Wnn を反対に書いて NNW。これを辞書
で引くと…)

それができたら、普通のプレーンテキストを北北西でぜんぶひらがなにして、
それをバッチ処理で FreeWnn に食わせるようなシステムを作ります。普通の
文章をなるべく一発で変換できるような学習システム。でも自動にするのはか
なり難しいだろうなあ。ちゃんと変換できるように複合語あたりを切り出すよ
うにするあたりが関の山かも? 

あと大事なのが、「どれだけ賢いか?」を数値で判断するようなシステムです。
オムロンが Wnn6 を出す時にそういった感じの評価システムをつくったという
話がありましたよね?

上の3つのシステムが仮に完成すると、あとはこれらをぐるぐる回していけば
「よしだともこの必殺パラメータ」を越えるパラメータをつくり出すのも夢で
はない?

あと、本丸の「変換アルゴリズム」に関しても何らかのアプローチが取れると
面白いと思います。戸村さんから伺ったのですが、実は Wnn4 の変換部分は 
lisp で書かれていたそうです。でも何らかの理由で、これを C に書き換えて
実装されたと。なら、FreeWnn に lisp インタプリタを載せてみるというのは
どうでしょうか? 現在の FreeWnn は、辞書と付属語を起動時に読み込みます
が、これに加えて変換アルゴリズムも読み込むようにする。そうすれば、チュー
ニングなんて自由自在です。完璧なやつができたら C で書き直して、バイナ
リをプラグインという形で読み込めるようにしておけばいいわけですし。いや、
今なら lisp よりももっといい言語があるかもしれませんね。いや、変換アル
ゴリズム専用の言語を作ってしまった方がいいかな?

これなんか修士論文のネタになりませんかね? あ、そうそう、FreeWnn は GPL 
だから成果は FreeWnn に還元してね。


……とまあ妄想はどんどん膨らんでいきますのでこのへんでやめておきます。
あ、上記の話は「そういうことができたら面白いなあ、そういうことができる
ようなものに FreeWnn をしたいなあ」ということで、「俺が作ってやるぜ」っ
て宣言ではありませんので念のため。


------------------------------------------------------------------------------

で、上記のようなものにするにはどうすればいいか? ですが、まずは
「FreeWnn をできる限りバラバラにしたい」と思っています。現在の FreeWnn 
は一つのソースコードに全てが入っていますが(他からソースを取ってこない
とだめなものもあるにはありますけど)、それを意味のある単位でバラバラに
して、独立にソースコードの管理ができるようにするのです。んで、FreeWnn 
は linux のディストリビューションや FreeBSD みたいに「パッケージの集合
体」にする。

個々のパッケージは

    - libwnn
    - jserver/cserver/tserver/kserver
    - uum
    - 辞書ツール
    - Xwnmo
    - (辞書)

というような感じで分離します。こうすると、例えば辞書ツールだけバージョ
ンアップした時に他の部分を配布しなくていいので管理も楽になります。また、
libwnn のように全てに影響を与えるような重要なライブラリもバージョンアッ
プが比較的楽にできます。

そして、何よりも楽なのが、個々が独立して小さくなるので理解が容易になり、
開発もやりやすくなると思います。

また、何か新しいツール(北北西とか)を作る時に、ソースコードが機能別に小
さくわかれていると再利用もしやすいと思います。

この「バラバラにする」というのは上記の妄想と異なり、だれもやろうという
人がいなくても自分でやるつもりでした。

# でも、jserver が libwnn のソースを include していて、しかもオプショ
# ンを変えてコンパイルしているため、分離するのがすごく大変。


元木さん> 次に、cWnn(tWnn), kWnn も手を入れようかなと思ったのですが、 
元木さん> 今のソース構成だと automake(autoconf) にはあまり向かなそう 
元木さん> なので、(ちょっとやってみた感触として)そこそこ大変だと思わ 
元木さん> れます。
 
というわけで、FreeWnn 1.2 では automake の都合のいいようなディレクトリ
構成で進めていきましょう!


元木さん> 元木的には [ctk]Wnn と 日本語Wnn のコンパイルの段階での違い 
元木さん> は辞書や[ctk]serverrcなどのインストールするファイルと -D の 
元木さん> 違いぐらいと思っているので [ctk]Wnn も Wnn とまぜてしまって 
元木さん> configure のオプションで --with-japanese, --with-chinese, --
元木さん> with-korean, --with-taiwanese なんぞと区別するのがよいの で
元木さん> はないかなと思っています。

そうですね。でもどれもつけないと何も作られないというのもアレなので、デ
フォルトで全部作成されて --without-japanese なんかで省いていくという方
がいいかもしれません。

実は、かなり前なのですが、Wnn4.2 (FreeWnn ではない)で、以下のようなディ
レクトリ構成を試していました。

    libwnn --+-- Src     共通のソース
             |
             +-- jWnn    日本語固有のソースと、全オブジェクト
             |
             +-- kWnn    韓国語固有のソースと、全オブジェクト
             |
             +-- cWnn    中国語固有のソースと、全オブジェクト
             |
             +-- tWnn    台湾語固有のソースと、全オブジェクト


この試みは、結局 jserver とソースが分離できないという壁にぶちあたり止
まってしまいましたが。こういう構成って automake で対応できますか? すい
ません automake は不勉強なもので…


元木さん> さて、質問なのですが、ソースアーカイブの構成の再編や、 
元木さん> autoconf(+libtool) へのさらなる対応などは FreeWnn Projectの 
元木さん> 方で計画されているのでしょうか?

というわけで、FreeWnn 1.2 にむけての最優先項目であると私は思っています。
保守しやすいソースコードにする。パワーアップはそれからですね。(だって、
ソースコードの構成を変えてしまったらパッチが当たらなくなるし…)

-- 
古川竜雄 (frkwtto@osk3.3web.ne.jp) / FreeWnn Project