2. 素性構造

HPSGとは一章であげたような文法枠組になるわけですが、まず、その中心的役割を果たす素性構造について説明いたします。

2.1. 素性構造

素性構造は単語、句、構文木を表現する根付き有向グラフで、例えばsheという単語の素性構造は次のように表されます。
素性構造の有向グラフによる表現
一番左端の矢印がrootをあらわしています。ここでは各ノードのラベルをイタリックで記述し、矢印のラベルを大文字であらわしています。例えば、rootのノードはwordとなっていてPHONというラベルの矢印をたどるとnelistというノードにたどりつきます。このような各ノードのラベルはHPSGにおいてはsortと呼ばれ、矢印のラベルは素性と呼ばれます。HPSGにおいてはsortには階層があって(2.2で後述)、各sortから生えうる矢印(素性)はsortによって決まっています(well-typed)。また、矢印が生えていないsortのことをatomと呼びます。例えば右下のほうのGENDの矢印がさしているfemはatomです。しかしながら、HPSGを語る上において上記のようなグラフをいちいち書いていたのでは不便でしょうがないので、一般には以下のようなAVM(attribute-value matrix)で表記されます。
素性構造のavm木による表現
これは上記の有向グラフとまったく同じものを表しています。つまり、各ボックスが素性構造を表しており、その素性構造のsortはボックスの左上に記述され、各sortにおける素性がさらに内側にある素性構造へのパスを示しています。また、グラフにおいて、サイクルになっている場合を含め、矢印の先が共有されている場合(上記の場合において、SYNSEM, LOCAL, CONTENT, INDEXとたどった場合とSYNSEM, LOCAL, CONTEXT, BACKGROUND, FIRST, INSTとたどった先のノードは同一)のことを構造共有と呼び、AVMにおいてはタグ( □1 とか □2 であらわされます。ここでは □1 が構造共有をしめしている)で表現されます。また、省略表記として、リストを <> で表記します。Lispでいえば、nilがここではelistに対応し、consがnelist, carがFIRST, cdrがRESTに対応すると思ってください。また、もう一つ重要な省略表記として、値が特に入っていないような素性は(ボトムと呼ばれる特殊な型が入っている)その素性を省略して書きます。また、その結果、ある素性のボックスの素性が一つしかない場合、ボックスを書かずに素性と素性の間に縦棒が一本だけ引くという省略をしたりします。例えば上記の素性構造は一般には次のように省略して書かれます。
素性構造のavm木による表現(略記)

また、素性構造の素性にDTRSという素性があり、ここに上記のような構文木のノードをあらわすような素性構造を格納することにより、構文木も表現できます。具体例はスキーマの章(4章)でみることができます。

2.2. sort hierarchy と単一化 (unification)

前節においてsortには階層があると述べましたが、そのことについて述べ、および、それと大いに関係してくる単一化について説明いたします。

2.2.1. sort hierarchy

sortには階層(順序関係)があります。まず天下り的ですが、次のような階層構造があると思ってください。
四角形の階層
各階層におけるノードがsortを表しています。下にいくほど一般的なsortであり、上にいくほど特殊なsortだと思ってください。sortには以上のような関係があり、各sortが持ち得る素性は下の階層のsortの素性+なんらかの素性となります。つまりC++でのクラスでの継承と同じように素性を継承すると思えばいいでしょう。例えば、次のような
素性構造の階層
階層があった時(四角のボックスは素性構造を意味していて、ボックスの中の文字列は各行が素性をあらわしているつもり)、古い名前、名前、名、住所、電話番号、名簿項目というsortがあり、各sortにはsortに応じた素性によって指定されるフィールドが用意されます。例えば名前には、「姓」という素性、および、「名」という素性があり、住所には「郵便番号」という素性と「住所」という素性が用意されています。ここにおいてsort階層ができているわけですが、例えば名前は名を継承して、「名」という素性をもちつつ、新たな素性、「姓」を追加しています。同じく名を継承して古い名前というsortがありますが、やはり、「名」という素性を継承して、新たに「旧姓」という素性を用意しています。続いて、多重継承する場合なのですが、この場合では名簿項目というsortが古い名前、名前、住所、電話番号を継承しています。すなわち親の全ての素性をマージしたものを素性としてもつようなsortになります。注意するのは、「名」という素性はマージされて一つになっていることでしょう。

2.2.2. atom の単一化

素性構造の単一化の前にatomの単一化について理解しておきましょう。次のようなsort階層があったとしましょう。ここでは各sortは素性をもたない、つまり、atomであるsortからなる階層だけを考えてみましょう。
atomであるsortからなる階層
単一化の記号は 単一化記号 で表記されます。例えば、上の例では、 四角 単一化記号 ひし形 というように記述され、ここでは 四角 単一化記号 ひし形 = ひし形 となります。例えばprologにおけるtermの単一化の場合を考えてみましょう。
4つの辺をもつ(四角).
4つの辺をもつ(ひし形).
というようなファクトがあったとき、
?- 4つの辺をもつ(X).
というクエリーに対しては
X = 四角;
X = ひし形
という答えが返ってくるのですが、ここで、
?- 4つの辺をもつ(四角).
とした場合は、4つの辺をもつ(四角).というファクトのtermと単一化され、かつ単一化に成功するため、yesが返ってきます。つまり、四角 単一化記号 四角 = 四角 で成功するのですが、ここではsortに階層があるため、四角と四角で単一化しなくとも単一化に成功することができます。 どういうことかというと、sortにおける単一化というのは次のように定義されるからです。 例えば、
?- 4つの辺をもつ(図形).
とクエリーをだした場合において、prologならば 単一化に失敗してno. という答えを返してくるのですが、ここではyesが返ってきます。というのは、四角は図形の子孫であるから、四角 単一化記号 図形 = 四角 となり、単一化に成功します(一方がもう一方の子孫である場合にはより特殊な方のsortが結果として返ってくる)。ここで重要なのはたしかに4つの辺をもつ(図形)で成功はするのですが、、、そのtermのsortは四角で単一化されているということです。例えば、、、
4つの辺をもつ(X,X):- X = 四角.
?- 4つの辺をもつ(図形,Y).
とした場合には、Y = 四角が返ってきて、Y = 図形 という答えは返ってこない、ということです。
他、 長方形 単一化記号 ひし形 = 正方形、 円 単一化記号 ひし形 は失敗、、、となります。注意してほしいのは 長方形 単一化記号 ひし形 = 1cm の正方形 にはならないということです(least upper boundでないから)。また、一番下にある⊥(ボトム)というsortは常に一番したにあり、全てのsortはここから派生されます。つまり、どんなsortとも単一化可能ということです。

2.2.3. 素性構造の単一化

素性構造の単一化についてですが、素性をいくつかもつようなsortでも、やはりatomと同じように単一化したときにはsort階層にしたがって二つのsortの子孫をみていって、合流するところのsortが単一化結果となります。そしてその時の素性と素性の値はどうなるかということですが、上記の例で、
素性構造の単一化式(1)
の結果は
素性構造の単一化結果(1)
になります。また、ここでは790、崇、どこそこというのはsortの一つであるということに注意してください。
素性構造の単一化式(2)
だと名の 豊 と 崇 は単一化できないためこの素性構造の単一化は失敗となります。つまり、各素性の値に対して再帰的に単一化することによって素性構造の単一化が行われます。また、構造共有されている場合には注意が必要になります。次のような例をみてみましょう。構造共有がない場合は、
素性構造の単一化式(3)
となりますが、これが構造共有をしている場合
素性構造の単一化式(4)
となります。つまり、構造共有しているところでも単一化が行われsort階層の中で合流できなかったsortを含むような素性構造の単一化は失敗となります。また、構造共有そのものも単一化されるということに注意してください。例えば、
素性構造の単一化式(5)
はどうなるでしょう?次のようになります。
素性構造の単一化結果(5)

HPSG入門

1. はじめに

3. 選択素性


HPSG入門

二宮 崇 & 坂尾 要祐