基本的にKNPの構文解析に依存した形で作る。前は、KNPだけではなく接続詞や助詞などを考慮して二分木の構造を作っていたが、基本、KNPをベースにしその上で、他を顧慮することにする。
KNPは、係り受け解析なので、それをどう使うかである。
KNPは、文節、タグ、そして形態素解析の個々の要素という構造を持っている。文節とタグはそれぞれ独立した係の番号を持っている。ただし、相互に矛盾しているわけではない。その上で基本、文節の係り受けをもとにする。
ある文節mから開始するとしよう。再帰構造を前提にする。mのかかり先がm+1だった場合、リストにm+1を加え、次を調べる。次ではなくて、mの係先がm+kだった場合、それまでの文節リストとかかり先をセットにして保存する。次にm+1を調べる。
このm+1から順に調べて行って、その、最終的なかかり先がm+kよりも大きくなることはあり得る。しかし、最終的なかかり先が二つになることはない、
ということて、まず、mがm+kにかかっている場合。mまでを部分知識として登録する。m+1以降もそれを繰り返して、m+kまでの部分知識が、すべて確定したら、m+kからの分とそれにかかっているすべての部分知識を含めて、一つの部分知識とする。
このアルゴリズムでなんとかなりそうだが。
ただ、どこまで、KNPが、文法構造を正しく捉えているかがポイントだ。