リストによる接続詞のprolog化

(この記事を理解するためには、prologに関するこれまでの記事を見ておく必要があります)

ここでリストというのは、prologのリストのことではなく、文章を複数の句のリストからなるものとするという意味である。

文章を構成する句とは、基本的に 動詞または名詞のリーフ語に、助詞や動詞あるいは接続詞のノード語からなっていると考える。例えば「私はみかんが好き」は、「私」というリーフ語に「は」というノードが続いた句が最初にあり、次に「みかん」というリーフ語に、「が」というノード語がついたものだ。最後の「好き」はリーフ語しかない。こういう場合もある。

もっとこのような関係を抽象化しよう。ひらがな1文字をノード語としアルファベット1文字をリーフ語化し、ある文章が、次のような句のリストから成り立っているとする。

句番号、リーフ語、ノード語
0, A, あ
1, B, い
2, C, う
3, D, え
4, E, お
5, F, か
6, G, き
7, H, く

この抽象的文章は次のようなものである。

「AあBいCうDえEおFかGきHく」

である。もちろん、訳がわからないし意味もない。ただ、説明上は都合がいいのである。

今、ルート句が5番の「Fか」だったとし、また、第2番目の句のノード語「う」が「または」という接続詞だったとしよう。このとき、次のようなツリーを描くことができる。

αのサブツリーとβのサブツリーが「または」によって並立する形になっている。先の抽象的文章がこのツリーにどのようにはめ込まれているかを確認することは、大切な作業である。

サブツリーαで、Cは句の中で「う」に繋がるのであるが、「う」は、「または」でツリーαからはじき出されている。抽象化文章を書き下すと、

「AあBいCまたはDえEおFかGきHく」

という文章なのである。日本語は、またはという接続詞が来て、どこからどこまでを並立するかをルール上は決定できない。文章の意味の中にしかその答えはないのである。ここでは、次のような構造を想定している。

[[AあBいC]または[DえEおF](か)GきHく]

ただし、「か」はルートノード語である。

この構造化された抽象文章は、その構造を確定的にそして一意に、曖昧さなく表現している。その意味では、前の記事に書いたようなリストによる構造の表現は、句のノード語とリーフ語が、別れる場合を描ききれないので、こちらの表現の方が望ましいと思える。これについては、別にまた考察する。

さらにルートノード語の「か」と同じくにあるリーフ語はFであり、それは「または」で並立した右のサブツリーの右端の語から繋がっている。遠くになるのである。これも、必然なのである。

さらに、右側のツリーに接続詞が来た場合も考察しておこう。

抽象文章は同じとしよう。そして、ルートノード語は第2フレーズの「う」であり、第5フレーズのノード語「か」が「または」であるとする。このとき、ツリーは次の図のようになる。

もちろん、「または」が一意にこのようなサブツリーを生み出すわけではなく、意味によって並立の範囲は異なってくる。ここではその中の一例に過ぎない。

抽象化された文章のリストは次のようになる。

[AあBいC(う)[DえEおF]または[GきHく]]

「または」から、左に伸びたツリーは、ルートの「う」から左に伸びたツリーと同じ特徴を持っている。

ここでは「う」の繋がるノード語がDで、真下の奥になっているところが面白い。これも先と同様に必然なのである。

抽象化文章を用いることによって、具体的言葉の意味に惑わされずに、的確に文章構造を捉えることができる。構文解析なのだ。