(この記事を理解するためには、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で、真下の奥になっているところが面白い。これも先と同様に必然なのである。
抽象化文章を用いることによって、具体的言葉の意味に惑わされずに、的確に文章構造を捉えることができる。構文解析なのだ。