1. はじめに

このテーマではHPSGパーザー、およびHPSG文法をLiLFeSという素性構造を扱える論理型プログラミング言語の上でつくってもらいます。まず、HPSGとは何かということですが、HPSGとは、 です。

HPSGはHead-Driven Phrase Structure Grammarの略であり、日本語にすると、主辞駆動句構造文法と呼ばれます。それでその主辞とはなんぞや?ということですが、たとえば、「美しい花」という名詞句があれば、この主辞は名詞である「花」になります。「彼は美しい花を見た」だと「見た」が主辞になります。この主辞を正確に定義しようとすると非常に難しいのですが、つまり、与えられた句のうち、もっとも重要そうな要素、修飾先がない要素のことを主辞と呼べば差し支えないでしょう。もしくは、関数と引数の関係でたとえるならば、主辞が関数で補語が引数だと思えばいいでしょう。例えば、さきほどの例なら「見た(彼、花(美しい))」となります。それでHPSGというのは概念的には、主辞のまわりに、その主辞を修飾する句がくっついていくことにより、文全体が完成する文法枠組と考えればよいでしょう。

続いてHPSGに限らないことですが、HPSGは制約に基づく単一化文法である、ということです。制約に基づくというのはある意味CFGなどの文法規則により文を導出、生成するという生成文法の概念とは反対の概念になります。つまり、文字の無限集合のうち、こういう形のものは可能、こういう形のものはだめ、と規定することによりある言語に属する文法を記述していきます。つまり、ある言語 G の文字の集合を L(G)、導出された記号を S とすると、生成というのは、

L(G) = S1S2S3 ∨ .........
というORで記述され、制約に基づくというのは、制約を C としたとき、
L(G) = C1 Λ C2 Λ C3 Λ .........
とANDで記述されたものと考えればわかりやすいでしょう。どちらが果たして言語を記述する枠組みとして適当なのかは意見がわかれるところですが、HPSGでは後者のアプローチを採用しています。

それから辞書の情報を増やすということですが、一般にCFGだと辞書というのは単語の音韻とそれに対応する非終端記号だけしか情報がなく、動詞がどういった補語をとるのかということは文法規則に書かれます。例えば、

文 → 名詞句 動詞
名詞句 → 名詞 助詞
名詞 → 光石
助詞 → が
動詞 → 寝る
といったCFGで「光石が寝る」といった文が生成されるわけですが、このように書いた場合には、もし本気で英語文法とか日本語文法を書こうとしたら文法規則を山のように(数百数千)書いていかなくてはいけませんし、些細な方針の変更で ほとんどの文法規則を書き換えなくてはいけなくなります。ですが、HPSGではこういうCFGでの文法規則に対応する構造に関する制約、意味に関する制約、一致(三人称単数の一致とか)に関する制約といった感じで制約をモジュール化し、文法の変更は、モジュールごとに行えるようになっています。また、単語によって違う振る舞いをする現象は辞書の中に書けるため、より抽象化されたモジュールの記述が可能になります。したがって辞書項目の情報を十分に記述できるような柔軟なフレームワークが必要になるわけですが、HPSGにおいては、その基本的な構造に素性構造という構造が用いられており、各単語、句、構文木、文法規則、など全てがそれを用いて記述されます。して、その素性構造とはなんなのか、ということですが、詳しくは次章で述べるとして、おおざっぱに言えば、各単語、句、構文木の状態、情報を表す有向グラフと考えていただければいいでしょう。例えば、矢印にPERSON(人称)と書かれた先のノードにはfirst(一人称)と書かれていたり、GENDER(性)と書かれた矢印の先のノードにはmale(男性)と書かれていたりします。HPSGにおいては、素性構造が単語、句、文法規則、構文木、全てを表すベースとなり、素性構造間に制約を設けることにより、構文解析、文生成を行い、また、その柔軟な記述方式により、統語論、意味論、語用論全てをまとめて取り扱えることが期待されています。ここでの制約とはおおざっぱにはprologにおけるHorn節みたいなもので、prologにおけるtermに素性構造を置くことができ、この素性構造の単一化を行うことによって制約がかけられると思っていただければ十分でしょう。詳しくは次章以降で説明いたします。
HPSG入門

2. 素性構造


HPSG入門

二宮 崇 & 坂尾 要祐