考察:「発火と悉皆検索機構」

by ご近所のきよきよ


 
 知識ベースは基本的に記号ベースのパターンマッチングと連想によるデータ処理です。自然言語では言葉から、それに相当する知識をパターンマッチイングして発火していく事です。知識に入ってしまえば、あとは連想によってメタファーなどの推論機構が発火していきます。発火は悉皆検索で実現していくしかないのでした。今回は、この悉皆検索をもう少し詳しく考察していくことにします。
 
1.知識ベースの構造
 知識要素は基本的に1レコードで1単位のデータを持つとします。そうして、固定長の更新可能データと可変長の構造化データからなるとします。可変長部分は更新できなく、XMLで表現します。
 知識要素には2種類あります。データを担うデータベースと、データへのリンクを集めた連想データベース、つまり、インデックスデータベースとです。インデックスは知識要素格納レコードの先頭のアドレスです。
 
 
2.パターンマッチング部とインデックス部
 知識要素へのアクセスは、上位ソフトウェアと単純処理をするハードウェアから成るとします。上位ソフトウェアはXQueryとか自然言語処理向きの簡易検索インターフェースを提供します。下位ハードウェアは単純に文字パターンマッチングを実現するだけとします。XMLのタグもテキストも、属性も全てプレーンな文字列として検索し(and/or/not条件処理能力は持つ)、当てはまるレコードを全て、上位ソフトウェアに返します。上位ソフトウェアはそのレコードをXML解析して、Javaオブジェクトの形にして返します。
 
 
3.その他
3.1 パターンマッチXMLの表現
 知識要素群とパターンマッチングしていく入力データの表現は基本的にXMLを採用していくとして、問題は相対アドレッシングとand,or,not条件です。表現例として、
(例1)<ND><means>+human</means></ND><XX><surface>が</surface></XX>
などが考えられます。その他、
・並びは、{,}
・選択は、{|}
・否定は、!
・順序は<sequence>・・・</sequence>
・ルートは/で、相対は//
・間にテキストがあると、*
 
 
3.2 プロセス連鎖
 発火によって次々にプロセスが呼び出されて、処理を連鎖させる必要が生じたとします。それを管理するには、プロセス要素が知識識別子を持っていて、処理が終了したら、知識ベースをその知識識別子で検索して次の発火を促すようにすればいいと思います。結果の集約はデータの項目(XMLタグ)に属性として識別子を添付できるようにすればいいでしょう。パターン変換処理もこのタグの識別子を用いて、コマンドを作っていけば良いのです。例えば、
(例2)<ND id=p001.001><surface>信子</surfase><means>+human+life+female</means></ND>
 idには複数の識別子を付ける事ができなくてはなりません。id=p001.001:p010.002などと「:」で区切るようにすればいいでしょう。そのように複数の識別子が必要なのは、前の係り受け解析で、後段のどの名詞に修飾すべきかをXMLで表現するには識別子しかないし、それに重畳して後段の格解析で、ローカルにパターン変換をするときに名詞や助詞に識別子を置いて変換コマンドを作っていかねばなりません。その変換で名詞の配置が変わっても修飾関係は変えないようにするには識別子を用いねばならないということで、2重に識別子が必要なのです。
 
 

おわり