九州大学学術情報リポジトリ
Kyushu University Institutional Repository
自然言語によるデータベース問合せ文の意味表現方 法とその日本語問合せシステムへの応用に関する研 究
笠, 晃一
https://doi.org/10.11501/3120493
出版情報:Kyushu University, 1996, 博士(工学), 論文博士 バージョン:
権利関係:
8 0
第3章 S A XアルゴリズムのCによる実現
本章では、 DC G記法で記述された文法規則をS A Xアルゴリズ ムのCプログラムへと変換するトランスレータについて述べる。 実 験の結果、 このトランスレータの出力するCプログラムは、 S A X トランスレータの出力するP r 0 1 0 gプログラムに比べて、 約1
0倍の処理速度を持つことが確認された。 また、 必要な作業領域に ついても、 前者は後者の約半分で済むことが分かった。
3 . 1 はじめに
自然言語の文法を記述するのにDC G記法[3 . 1 ]というも のが使 用される機会が増えてきた。 その理由として、 この記法を用いると
統語規則と意味規則が同時に記述できるためパーザの実行効率がよ くなること、 簡単な操作でP r 0 1 0 gプログラムに変換可能なこ となどを挙げることが できょう。 DC G記法をP r 0 1 0 gプログ
ラムへと変換するツールは、 通常DCGトランスレータと呼ばれて いるが、 これはごく簡単に実現できるのでP r 0 1 0 g処理系にす
でにインプリメントされていることが多い。
D C Gトランスレータには簡単に実現できるという長所があるが、
その反面、 DCG記法中で左再帰規則が使用できないとか、 変換後 のプログラムが同じ計算を何度も行ない実行効率が悪くなるという ことも知られている。 そこで、 松本らはDC Gトランスレータの持 つこれらの欠点を改良するために、 BUPトランスレータ[3.2 Jと SAXトランスレータ[3.3J[3.4Jを開発した。 DCGトランスレー タが、 下降型のアルゴリズムを持ったP r 0 1 0 gプログラムを生 成するのに対し、 これらのトランスレータは上昇型のアルゴリズム
8 1
を持ったプログラムを生成するので、 左再帰規則が使用可能になる。
また、 共に到達可能性を用いたトップダウン予測を行なうなど、 処 理上の工夫もなされているので、 変換後のプログラムの実行効率も よくなっている。 この2つのトランスレータの聞の違いは、 前者が 後戻り型アルゴリズムを持ったプログラムを生成するのに対し、 後 者が並行型のプログラムを生成するというものである。 この差のた め 、 生成されたプログラムの実行効率とメモリ効率は、 SAXトラ ンスレータによるものの方が優れているという研究結果が出ている [3.5J。
本研究では、 SAXトランスレータによって生成されたP r 0 1
o gプログラムの持コアルゴリズム(これをS A Xアルゴリズムと
呼ぶことにする)が後戻りを行なわないことに着目し、 DC G規則 からSAXアルゴリズムのCプログラムを生成するトランスレータ を開発した[3.6 J。 これを、 ここではSA X - Cトランスレータと 呼んでいる。 P r 0 1 0 gという言語は、 研究的な目的でプロトタ イプ ・ システムを開発したりするのには向いているが、 処理速度や メモリ効率から言えばCやP a s c a 1 などの言語の方がずっと優 れている。 中でもCの処理系は豊富に出回っており、 本論文の試作
システムもCで記述することにしたので、 今回は変換後のプログラ ムの記述言語としてこれを選ぶことにした。
以下、 3 . 2節において、 DC Gを文脈自由文法に制限し、 文脈 自由文法からSA XアルゴリズムのCプログラムへと変換する方法 について述べる。 3. 3節では、 一般のDCG規則からCプログラ ムへの変換法について説明し、 3 . 4節でトップダウン予測を導入 する。 3. 5節では、 SA X -CトランスレータがDCGに課して いる制限について述べることにする。 なお、 SAXアルゴリズムや
8 2
これに関連する用語についての説明は行なっていないので、 オリジ ナルの論文[3.4Jなどを参照して欲しい。
3 . 2 文脈自由文法からの変換
SAXアルコリズムは、 上昇型のチャート法[3.7 Jをもとにした ものであり、 完全統制解析[3.8 Jを行なう。 この完全統制解析は、
到達可能性の利用なしには考えられないが、 本節では、 説明を簡単 化するために文脈自由文法を例にとり、 到達可能性を導入すること なく、 Cプログラムへの変換についての説明を行なう。
3 . 2 . 1 層状ストリームの構造
SAXアルコリスムでは、 層状ストリームというものを用いて処 理を進めていくので、 まずこれをC言語で表現する方法を考えなけ ればならない 。 M個の要素を持つ 層状ストリームは、 オリジナルで はP r 0 1 0 gによって、 次のように表現されている。
[idnl(substl), idn2(subst2), . . . , idnM(substM)J
ただし、 nl""nM は識別子の番号を表す自然数であり、 Substl""S u b S t M は、 再び層状ストリームである 。 このようなデータ 構造を 表現するために、 ここでは、 図3 . 1に示すような二種類の構造体 を用いることにする。 StreamCellというのは、 リスト構造を構成 するための構造体で、 IdentifierCel1という構造体へのポインタi dと、 次のStreamCel1構造体へのポインタnextを持っている。
方、 IdentifierCellというのは、 リストの要素に対応する構造体 であり、 識別子番号を表すnumberと下位の層状ストリームへのポ
typedef struct StreamCell { struct IdentifierCell *id;
struct StreamCell *next;
}
*Stream;
typedef struct IdentifierCell { int number;
struct StreamCell *substream;
}
*Identifier;
図3 . 1 層状ストリームを構成する構造体の定義
id
II next
」ーう
I nurnber
拡大
substream
図3 . 2 構造体による層状ストリームの構成
8 3
8 4
インタsubstream からなる。 これらの構造体による層状ストリ
ムの構成図を図3. 2に示しておく。 なお、 S A Xアルゴリズムは 特殊な識別子として、 be g inとendを使用するが、
const int BEGIN = 0;
const int END = -1;
と定義し、 IdentifierCell構造体のnumberがBEGINに等しい ものをb e g in識別子、 ENDに等しいものをend識別子と見なすこ とにする。
3 . 2 . 2 二つのタイプの処理
オリジナルの論文では、 タイプ1の述語あるいはタイプ2の述語 という用語が使用されているが、 ここでは、 タイプlの述語が行な う処理をタイプ1の処理、 タイプ2の述語が行なう処理をタイプ2 の処理と呼ぶことにする。 さらに、 もとのP r 0 1 0 g版のS A X
アルゴリズムでは、 ある文法範鴎に対してタイプ1の処理とタイプ 2の処理を両方とも行なう必要のあるときは、 これらの処理に対応 する述語を上記のようにそれぞれ定義し、 別なところでこれらをま とめ上げている。 これは、 タイプ2の処理に繰返しの動作が必要と なるためである。
しかしながら、 C言語を使用する場合には、 これら二つの処理を 分離する必要性は全くなく、 むしろ、 これらの処理を一つの関数内 にまとめて記述した方が、 処理効率の点でも有利になる。 そこで、
本研究では、 一般にca tという名前の文法範鴎があったとき、 これ に対する処理関数を図3. 3のように記述している。 処理の前半が
void cat(St.ream is)
Identifier id;
Addld(nl,is);
Addld(n2,is);
タイプl の処理
Addld(nM,is);
d 0
{
id = is->id:
svvitch (id一>number)
{
case Pl:Addld(Ql,idー>substream);
break:
. . . . . . . . . . . . . . . . . . . .
case PN:
Addld(QN,idー>substream);
break:
} \v h i 1 e (( i s = i s -> n e x t) ! = N U
L L) ;
図3 . 3 処 理の一般的な記述
9 5
タイプ2 の処理
8 6
タイプlの処理、 処理の後半がタイプ2の処理であり 、 これらの処 理のどちらか一方が不要な場合には、 当然のことながら必要な方の 処理のみが記述される。 なお、 関数中、 Streamという型はSt r e a
m C e 11構造体へのポインタを、 Identifierという型はIdentifier C e 11構造体へのポインタをそれぞれ表している。
また、 もとのP r 0 1 0 g版のS A Xアルゴリズムでは、 タイプ
1とタイプ2の述語の両方とも入力ストリームと出力ストリームに 対応する引数を持っている。 そして、 処理の基本はどちらのタイプ でも、 入力ストリームに対する処理結果を出力ストリームに吐き出 すというものである。 これに対し、 図3. 3の関数の場合は、 入力 ストリームに対応する引数だけを持っており、 i sで表されている。
出力ストリームは、 大域変数osとして用意されており、 引数の受け 渡しに要する時間をできるだけ短くしている。
3 . 2 . 2 . 1 タイプ1の処理
S A Xアルゴリズムでは、 文法規則の右辺の先頭に出現する文法 範鴎に対しては、 タイプ1の処理を行なう必要がある。 一般に、 文 法範時c a tが右辺の先頭に出現するような規則がM個あり、 ca tの すぐ後にある識別子がそれぞれidn 1、 id n 2 , ...、 idnM (nl'"'-'nM は自然数を表す)であるとき、 catに対するタイプ1の処理の記述 は、 図3. 3の前半 に示したようなものになる。 ここに、 Add Id (n , S )という関数は、 識別子の番号としてnを、 下位ストリームと してsを持つようなIdentifierCe11構造体を作成し 、 出カストリ ムos に追加する働きをする。 なお、 文法規則の右辺に出現する規 則がただ一つしかない場合も、 タイプ1の処理に含まれるが、 この 場合はAd d Id関数を呼び出す代わりに、 その規則の左辺にある文
法範鴎を直接呼び出すことになる。
3 . 2 . 2 . 2 タ イ プ 2の 処理
ヨ7
文法規則の右辺に出現する文法範鴎のうち先頭以外のものに対し て は、 タイプ2の処理を行なわなければならない。 一般に、 文法範
時catが規則の右辺で先頭以外部分にN回出現するとし、 ca tの前 後にある識別子がそれぞれ、 idP 1とidQ 1、 . . .、 id P NとidQN (Pl'"'--'
PMとQ1 '"'--' QMは自然数を表す)であるとするとき、 ca tに対するタイ
プ2の処理の記述は、 図3 . 3の後半に示したようなものになる ここでやっている処理は、 入カストリ」ームを表すリストから1 d e n t ifierCell構造体を次々に取り出し、 そのそれぞれについて識別子 番号を調べた上で、 対応する識別子番号を持ったIdentifierCell
構造体を出力ストリームに付加するというものである。 なお、 文法 範鴎が文法規則の右辺の最後に出現する場合、 この文法範醸の後ろ には識別子がないが、 この場合はA d d Id関数を呼び出さないで、
規則の左辺にある文法範酵を直接呼び出すことになる。
3 . 3 一般的なD C G記法からの変換
DCGという文法記述形式は、 文脈自由文法を二つの点について 拡張したものと考えることができる。 つまり、 非終端記号への引数 の付加と規則の右辺への補強項の付加である。 本節では、 この二つ の拡張がなされた場合、 Cプログラムの記述をどの様に変更すれば よいかについて述べる。
3 . 3 . 1 引数の付加
オリジナルのP r 0 1 0 g版のSAXアルゴリズムでは、 引数の
9 8
情報を識別子に関連する複合項が運んでいるが、 ここでも、 引数の 情報をこの複合項に対応するIdentifierCell構造体に運ばせるこ とにする。 そのために、 この構造体を図3. 4に示すように拡張す る。 新しく追加されたメンバpacketは、 引数を入れるために確保 された配列へのポインタである。 N個の引数を運ぶ必要があるとき、
新しいIdentifierCel1構造体と引数用配列の関係は図3. 5に示 すようになる。 なお、 引数用配列に引数を入れるために、 関数Add Id に対 しでも拡張が行なわれている。 N個の引数を格納したい場 合の関数記述は次のようになる。
Addld(n,s,N ,al,a2,...,aN);
二番固までの引数については前と同じであるが、 三番目の引数がId entifierCell構造体の運ぶべき変数の個数を、 四番目以降の引数 が運ぶべき変数の値を表している。
3 . 3 . 2 補強項の付加
次に、 文法規則の右辺に補強項を付加することを考える。 たとえ ば、 図3. 6の文法中、 波括弧で囲まれた部分が補強項である。 補 強項の関数は、 引数に対する処理を行なうとともに、 統語解析処理 を継続するかどうかも決定する。 つまり、 この関数が真の値を返せ ば処理は継続されるし、 偽の値を返せば処理は中断されることにな る。 ところで、 SAXアルゴリズムにおける基本的な処理は、 新し い識別子構造体CIdentifierCell構造体)を記憶するというもの と規則の左辺にある範鴎を呼び出すというものの二つに限定される。
したがって、 補強項のすぐ右側に識別子があるときは、 補強項の関
typedef void* Var:
typedef struct IdentifierCell { int number;
struct StreamCell *substream:
Var* packet;
} *Identifier:
図3 . 4 引数を運ぶために拡張された構造体
number substream
packet
」→
packet[O]
packet[l]
packet[N-l]
図3 . 5 引数を運ぶための構造体と引数用配列
8 8
100
数をすべて実行して、 これらがすべて真の値を返したときのみ、 対 応する識別子構造体を記憶するようにすればよい 。 また、 補強項の 右側に何もないときは、 補強項を実行しその結果に従って、 規則の 左辺にある範時を呼び出せばよい。
たとえば、 図3. 6の文法lにおける範鴎verbの処理は図3 . 7のようになる。 ここで、 変数b がブロ ック内で宣言されているが、
このような変数は、 補強項の関数が真偽値以外の値を返したい場合 に用いられる。
3 . 4 トップダウン予測
今までに述べてきたアルゴリズムだけでは、 少々効率が悪い。 そ れは、 最終的な解析結果に寄与しない無駄な部分解析木が多量に作 成されるからである。 このような無駄な部分解析木を抑制するのに 最もよく使用されているものの一つに、 到達可能性[3.8Jを用いた トップダウン予測がある。 到達可能性を、 文脈自由文法<V ,T,P,S
>に対して記述すると次のようになる。 ただし、 Vは非終端記号の 有限集合、 Tは終端記号の有限集合、 Pは書き換え規則の有限集合、
Sは開始記号をそれぞれ表わしている。 このとき、
* *
A 二今 B α , α ε (VUT), A,B ε v
が成り立つならば、 BからAへ到達可能であるという。 たとえば、
図3. 8に示す文法2に対して到達可能性の表を作成してみると、
表3 . 1のようになる。 これは、 表の左側に記述されている文法範 鴎から表の右側に記述されている範鴎へ到達可能であることを表し
1. vp(X) 一一> verb(X), {check(X), set(X)}.
2. vp(W) 一一> verb(X),
{convert(X,Y)}, id6 np(Z), {dnr(X,Y,Z,W)}.
図3 . 6 文法l
void verb(Stream is, Var a)
if (check(a) && set(a)) vp(is,a);
V a r b;
if (convert(a,&b)) Addld(6,is,2,a,b);
図3 . 7 範鴎verbに対する補強項の処理
1 0 1
1. S 一一> np, idl vp.
2. np 一一> det, id2 noun.
3. np 一一> det, id3 noun, id4 relc.
4. re l c 一一> r elp , id5 vp.
5. vp 一一> ve rb.
6. vp 一一> verb , id6 np.
図3 . 8 文法2
表3. 1 到達可能性関係
np s
det
I
np,srelp
I
relcverb
I
vpvoid det(Stream is)
Stream isp;
if ((isp = TpFilter(is,NP) ) 1= NULL)
{
Addld(2 ,isp );
Addld(3 ,isp);
図3 . 9 到 達 可 能 性を用いた範時d e tの処理
102
103
ている
S A Xアルゴリズムでも到達可能性によるトップダウン予測を利 用しており、 それをここでは、 TpFilter(is,cat)という関数によ って実現している。 このTpFilter(is ,cat)という関数は、 isとい う識別子構造体のリストを受け取り、 先頭の識別子構造体から順に 、 範鴎ca tからその識別子構造体が予測する範障に到達可能かどうか を調べ、 もし到達不可能であれば、 その識別子構造体をリストから 取り除くような働きをする。 この関数の返す値は、 不要な識別子構 造体を取り除いた後にできるリストである。 リストからすべての識 別子構造体が取り除かれたときは、 この関数はゼロポインタを返す。
図3 . 9に 、 トップダウン予測がある場合の、 文法2の範臨detの 処理を記述しておく。
3 . 5 DCGに課せられる制限
現在のところ、 S A X -Cトランスレータが扱えるDC G規則に は主として三つの制限がある。 一つは、 文法規則の右辺に終端記号 と非終端記号が混在するときに生ずる制限であるが、 これは後に述 べるように本質的なものではない。 残りの二つは、 環境のコピーの 問題と、 補強項の後戻りに関する問題に起因するものであって、 こ れらは若干面倒な状況を引き起こす。
3 . 5 . 1 終端記号と非終端記号の混在
S A X -Cトランスレータの入力において、 DCG規則の右辺に 終端記号と非終端記号が混在している場合には、 これらの個数と順
序に強い制限がつく。 つまり、 一個の終端記号のあとに一個の非終 端記号が続く形しか許されない。 また、 終端記号と補強項が混在す
104
る場合でも、 一個の終端記号のあとに一個の補強項が続く形しか許 されず、 しかも、 補強項の中はただ一つの関数でなければならなレ さらにいえば、 終端記号と非終端記号と補強項の三つが混在するよ うなものは、 どのような形であれ許されない。 しかしながら、 これ らの制限は、 各終端記号に対してそれぞれ一個の非終端記号を導入 し、 その非終端記号から対応する終端記号を生成する規則をつけ加 えることによって、 事実上取り除くことができる。
3 . 5 . 2 環境の コピーの問題
SAXトランスレータによって生成されたP r 0 1 0 gプログラ ムは、 統語解析に唆昧性がある場合に 、 環境のコピーに関する問題
を引き起こす可能性がある。 環境のコピーに関する問題は、 統語的 な唆昧さによって処理が複数に分岐する際に、 それらの複数個の処 理あるいは環境に、 未束縛の変数を含む同じ構造が渡される場合に
発生する。 つまり、 その未束縛の変数がある環境によって束縛され てしまった場合、 その副作用が他の環境にも及んでしまうという訳 である。 このような状況を避けるために、 松本らは二通りの解決策 を提案している。 一つは、 受け渡されるデータに未束縛の変数が含 まれるのを禁ずることであり、 もう一つは、 解析の途中で環境が分 岐する直前に 、 データのコピーを作ってそれぞれの環境に渡すこと である。
もちろん同様の問題はSAX-Cトランスレータの生成するCプ ログラムの場合にも発生する。 P r 0 1 0 gにおける未束縛の変数 を含む構造は、 C言語の場合、 一部のメンバが未代入であるような 構造体に対応する。 そして、 この場合にも、 松本らの解決法は同様 に有効であると考えられる。
105
3 . 5 . 3 補強項の後戻りの問題
もともとのDC Gは、 補強項によって得られるデータにも綬昧性 があることを許している。 つまり、 これをDC Gトランスレータに よりP r 0 1 0 gプログラムに変換すれば、 後戻り機構を用いて、
補強項の計算によって得られる複数の解を抽出することができる しかしながら、 SAXアルゴリズムの場合、 決して後戻りを行なわ
ず、 補強項の計算は一度しか行なわないので、 補強項の計算が複数 個の解を持っていても、 最初に得られる解だけが採用されることに なる。
松本らは、 このような問題に対する解決策として、 二通りのもの
を考えている。 一つは、 補強項に唆昧性のあるような記述を禁じる ことであり 、 もう一つは、 DC Gをfreeze機能をもっP r 0 1 0
gのプログラム に変換し、 このfreeze機能によって補強項の評価 のタイミングを遅らせるという方法である。 しかしながら、 SAX
-Cトランスレータの場合、 DCGはCプログラムへと変換される ので後者の方法は使えない。 とはいえ、 補強項に暖昧性のある記述 を完全に禁じるのでは、 応用プログラムの開発に支障をきたす恐れ があるので、 本研究では、 特殊な規則においてのみ補強項に後戻り を許すことにした。 すでに、 3 . 5 . 1節において、 終端記号の現 れる規則には強い制限が課されるということを述べた。 たとえば、
終端記号と補強項が規則の右辺に現れるときは、 一個の終端記号の 後に一個の補強項が続く形しか許されないのであった。 そして、 補 強項に後戻りが許されるのはまさにこのような規則に対してなので ある。 たとえば、 同じ表記に対して複数個の活用形がある場合など に、 この機構を役立てることができる。
3 . 6 解析速度の比較 実験
106
SAX-Cトランスレータの有効性を確認するために、 SA Xト ランスレータとSAX-Cトランスレータの生成するプログラムに ついて、 その解析速度を比較した。 比較実験は、 Mi c r o VA X上で行な い、 SAXトランスレータの生成するP r 0 1 0 gプロ グラムに対しては、 Q u i n t u s P r 0 1 0 g コンパイラを、
S A X -Cトランスレータの生成するCプログラムに対しては、 V AX C コンパイラを、 それぞれ用いた。 また、 実験に用いた統語 規則は日本語に対する もので、 DCGにして5 0ルール程度の簡単 なものである。 実験結果を表3. 2に示すが、 SAX-Cトランス レータによって生成されたCプログラムは、 SAXトランスレータ によって生成されたP r 0 1 0 gプログラムに比べて、 約1 0倍の 解析速度を持っている ことが分かる。 なお、 詳し い数値は示さない が、 必要なメモリ空間についても、 前者は後者の約半分程度で済む
ことが分かっている。
3 . 7 検討
D C Gによって記述された文法規則をS A X -Cトランスレータ がどのようなCプログラムに変換するかということについて述べたり また、 SAX-CトランスレータがDCGに課している制限、 およ
び、 その制限を緩和する方法についても一部述べた。
将来の課題としてまず挙げられるのは、 DCGによって記述され た文法規則をC + 十のプログラムに変換するトランスレータの作成 である。 C十 十というプログラミング言語は、 オブジェクト指向的 な記述を許しているが、 このような立場からSA Xアルゴリズムを
表3 . 2 処理時間におけるSAXとSA X - Cの比較
番 言音 解 処 理 時 間 速
釈 度
可Eコ 数 数 SAX SAX-C 比
1 6 1 130 12.2 10.7
2 10 1 410 41.3 9.9
3 12 5 1110 116.3 9.5
4 18 20 2360 254.9 9.3
(処理時間の単位 ms e c)
107
108
記述してみるのも意義のあることだと思われる。 さらには、 現在の
トランスレータがD C Gに課している制限もできる限り取り除きた いと思っている。 環境のコピーの問題に関する解決策についてはす でに述べたが、 補強項の後戻りの問題に対しては、 部分的な解決し かできていない 。 したがって、 後者の問題に対しでも 、 たとえばfr e e ze機能に相当するようなものをCによって実現するなどの解決 策を考えたいと思っている。
108
第4章 日本語 によるデータペース問合せシステム
本章では、 本研究の最終目的である、 日本語によるデータペース 問合せシステムの試作について述べる。 第2章で述べた中間意味記 述言語と第3章で述べたSAX-Cトランスレータは、 ともにこの システムの統語 ・ 意味解析部において使用されている。
4 . 1 はじめに
データペースにアクセスするには、 S Q Lなどの形式的問合せ言 語を利用するのが一般的であるが、 形式的問合せ言語は抽象的かっ 複雑であるので修得するのに時間がかかるし、 また仮に修得できた としても、 検索内容によっては、 かなり複雑な問合せ文になる可能 性がある。 このため、 自然言語によってデータペースにアクセスで きるようなシステムが、 今までにも数多く開発されてきた[4.1J[4.
2J[4.3J。 しかしながら、 これらのシステムは、 使用する前にかな りの準備を必要としたり、 入力文に特殊な細工をしなければならな かったりと、 ユーザにとって本当に使い易いシステムになっていな かった。 また、 中には、 入力文の解釈に唆昧性があっても適当にそ のうちの一つを選択してしまい、 信頼性に欠けるシステムもある。
本研究では、 ユーザが使い易いこと、 および、 信頼性の高い応答 をすることを目標に、 自然言語によるデータペース問合せシステム を試作した[4.4J。 ユーザが使い易い条件として、 前もって準備し なくても一応は使用可能なこと、 漢字仮名混じりのべた書き文を普 通に入力すればよいことなどの他に、 受理可能な文の範囲が充分に 広いことや応答が充分に速いことが挙げられる。 しかし、 この二つ の条件は排他的であり、 受理可能な文の範囲を広げるとシステムの
1 1 0
応答が遅くなり、 使いづらいシステムになってしまう。 中間意味記 述言語IMLにおいて、 日本語からIML表現への変換とIML表 現からS Q L表現への変換がともに効率的に行なえるように設計さ れているのは、 受理可能な文の範囲を広げても、 応答速度ができる だけ低下しないようにしたかったからであり、 S A X - Cトランス レータを開発したのも同様の理由による。 なお、 問合せ文に省略を 許すように することは、 受理可能な文の範囲を広げることにつなが り、 これも中間意味記述言語の研究で行なった。
問合せシステムは、 形態素解析部、 統語 ・ 意味解析部、 意味トラ ンスレー夕、 エコーパック生成部、 および、 知識獲得部から構成さ れており、 それら相互の関係およびデ「タベース管理システムとの
関係は、 図4. 1に示すようになっている。 この図において、 形態 素解析部と統語 ・ 意味解析部は分離して描かれているが、 処理的に は、 この二つの部分は同時並行的に動作する。 入力された質問文は 形態素解析部、 統語 ・ 意味解析部を経て中間意味記述言語IMLに よる表現に変換される。 このIML表現は、 意味トランスレータに よってS Q L表現に変換された後、 エコーバック生成部に送られる が、 ここで、 そのS Q L表現は日本語で表示され、 ユーザに正しい かどうかの確認が行なわれる。 もし、 質問文が複数の解釈を持って いるときは、 それらすべてを見ることができる。 ユーザによる確認 が行なわれたS Q L表現は、 データベース管理システムに送られ 、 データの検索や表示がなされることになる。 なお、 知識獲得部はデ ータベースからの知識を自動的に取り込むが、 ここでユーザがさま
ざまな単語を登録することもできる。
以下、 4. 2節において、 知識獲得部を、 4. 3節において、
形態素解析部を説明する。 4 . 4節では、 統語 ・ 意味解析部と意味
4E1
4E1'
ー
質 問 文 ユーザ定義単語
形態素解析部 獲 得 部
統語 ・ 意味解析部
意味トランスレータ
タ ス
一一Jアべ
エコーパック生成部 データベース管理部
唆昧性のない 日本語による表示
検索結果の表示
図4 . 1 データペー ス問合せシステムの全体構成
名前 性別 住所 年齢 給料
山崎 男 長崎 35 250,000
大磯 女 宮崎 19 180,000
宮崎 女 大分 27 320,000
図4 . 2 社員に関する関係データ ベー ス
1 1 2
トランスレータを併せて説明し、 4. 5節でエコーバック生成部に ついて述べる。
4 . 2 知識獲得部
本システムは、 いろいろな情報を外部から学習することができる が、 この役割を請け負っているのが、 知識獲得部である。 知識獲得 部は、 データペースとユーザの両方から知識を獲得する。
4 . 2 . 1 データペースから得られる知識
システムは、 自然言語による質問を受けつける前に、 データべ
ス管理部を通じて、 データベースが持っている情報を自動的に取り 込み、 解析用辞書に登録する。 この解析用辞書は、 形態素解析部が 使用する。 データペースとしては、 関係データベースを仮定してい るので、 ここで登録されるのは、 属性名と属性値の二種類である
関係データペースの例を図4 . 2に示す。 ここに、 「名前J i性別」
などが属性名であり、 「山崎J i大磯J i男」 などが属性値である。
ただし、 属性値は、 たとえば、 数値型、 文字型、 日付型、 金額型な どのデータ型を持っているが、 辞書に登録されるのは文字型の属性 値だけである。 i給料」 の欄の i25,OOOJ なども属性値であるが、
これは金額型であるので辞書には登録されない。 なお、 このような データ型の情報も、 属性名とともにシステムに取り込まれる。
4 . 2 . 2 ユーザから得られる知識
最初に述べたように、 本システムはユーザが何ら準備しないでも 一応すぐに使用できるようになっている。 しかしながら、 ユーザが システムに対して様々な単語を教えることもできる。 このような単
1 1 3
語を教える目的は二つある。 一つは、 システムが受理可能な文の範 囲を広げることであり、 もう一つは、 システムからの問い返しを減 少させることである。 このうち、 後者は次のような意味である。 シ ステムは推論によって、 属性値と関係している属性名を一つに絞り 込んでいくが、 どうしても一つに絞り込めないときはユーザに対し て問い返しを行なう。 たとえば、 図4. 2の関係データベースに対 して、 次の(Q 1 )のような質問がなされたとしよう。
宮崎さんの給料はいくらか。 (Q 1 )
このとき、 「宮崎Jという属性値は、 「名前」と 「住所」 の両方の 欄に現われるから、 この属性値と関係する属性名を一つに決めるこ とはできない。 このような場合、 システムはユーザに対し、 「宮崎」
がどちらの属性名と関係しているかを決定するように要求する。 し かしながら、 接尾語「さん」 が「名前J とのみ関係することをシス テムに教えておけば、 「宮崎」 を 「名前」 とすぐに結びつけること ができ、 問い返しは発生しない。 このように、 単語をシステムに教 えることで、 システムからの問い返しを減らすことができる。
ユーザがシステムに教えることができるのは、 次のような種類の 単語である。
( 1 )主題
( 2 )比較のための形容詞
( 3 )動詞と格助詞 ( 4 )接尾語
( 5 )属性名の同義語
( 6 )一般的な同義語
以下、 それぞれについて説明する。
4 . 2 . 2 . 1 主題
1 1 4
まず、 図4. 2の関係データペースに対して、 次のような質問文 を考えてみよう。
性別が男である社員はだれか。
給料が3 0万以上である社員を表示せよ。
( Q 2 ) ( Q 3 )
ここに、 「社員」 という単語は、 いずれの場合も、 検索条件を表わ す関係節の修飾先の名詞として使われている。 ここで主題と呼んで いるのはこのような名詞のことである。 主題をシステムに教える際 に表示される入力表の例を図4. 3に示す。 なお、 「人J Iもの」
あるいは助詞「のJなども同様の使われ方をするが、 これらはかな り一般的に使用されるので、 最初から辞書に登録されており、 シス テムに教える必要はない
4 . 2 . 2 . 2 比較のための形容詞
質問文で、 特定の属性名の大小に関係する形容詞が使用されるこ とがある。 たとえば、 図4. 2のデータベースに対して、 次のよう な質問をすることができる。
3 0よりも若い社員はだれか。 ( Q 4 )
このデータベースは、 特定の 『 情報の集まりです。
』に関する
上の文の括弧の中を埋めるのに適当な言葉があ りますか。 もしあれば、 下の空所の中に書き込
んでください。
<社員 >
< >
< >
< >
図4 . 3 主題の定義画面
「年令」 の大小に関連した言葉を使いますか。 もし使う のなら、 下の文の【 〕に当てはまる言葉を下の< >
の中に入れて下さい。
年令が~より
大きな値に対応する言葉
< >
< >
< >
< >
]社員
小さな値に対応する言葉
<若い >
< >
< >
< >
図4 . 4 比較のための形容詞の定義画面
1 1 5
1 1 6
ここに、 「若い」 という形容詞が用いられているが、 これは、 「年
令J の大小を比較していると考えることができる。 このような形容 詞には、 大きな値に対応するものと、 小さな値に対応するものの二 種類がある。 たとえば、 「若いJ は「年令」 の小さな値に対応する 形容詞である。 なお、 比較のための形容詞をシステムに教える場合 には、 図4. 4のような画面が用いられる。 この画面では、 すでに システムに教えである「社員」 という単語が使用されている。
4 . 2 . 2 . 3 動詞と格助詞
システムに動詞を教えるやり方には二種類あり、 一つは属性名に 関連する動詞だけを教える場合と、 もう一つは属性名に関連する動 詞と格助詞の組合せを教える場合である。 まず、 前者のほうから説 明しよう。 図4. 2のデータペースに対して、 次のような質問文を 考える
宮崎に住んでいる人はだれか。 ( Q 5 )
この文において使われている 「住む」 という動詞は、 「住所J とい う属性名と強く関連していると考えられる。 したがって、 この動詞 から「住所J という属性名を推定することが可能であり、 一般にこ のような目的でシステムに動詞を教えることができる。 図4. 5に
示すのは、 このような動詞をシステムに教えるときの画面である ここに、 「長崎」 というのは、 図4. 2のデータベースの「住所」
欄の最初のデータであり、 「社員J はすでにシステムに教えである 主題を表わす単語である。 なお、 この画面では三角括弧内に動詞の
「住む」 ではなくて「住んでいる」 という句が入力されている。 こ
1 1 7
「住所J に関連して使いたい動作や状態を表 わす言葉がありますか。 もしあれば、 下の文 の( Jに当てはまる言葉を< >の中に入 れて下さい。
長崎{が、 を、 に、 と} 社員
<住んでいる
<
<
<
>>>>
図4 . 5 単独の動詞の定義画面
便 出発地 到着地 出発時刻 到着時刻
307 熊本 東京 9:00 11 :20
475 東京 福岡 8:10 10:10
278 福岡 千歳 12:30 16:10
562 那覇 大分 10:20 14:30
図4 . 6 航空機の時 刻表
1 1 8
のような場合でも、 システムは形態素解析によって 「住む」 という 動詞を抽出し登録する。 したがって、 実際の使用に当たっては、 様
々な付属語をつけることができ、 例文(Q 5 )以外にも次のような 使用が可能である
宮崎に住んだ人はだれか。
宮崎に住んでいない人はだれか。
( Q 6 )
(Q 7 )
動詞と格助詞の組合せを教える場合は、 多少面倒である。 図4 .
6に示すようなデータペースを考えてみよう。 このデータペースに 対しては、 次のような質問が可能である
福岡から千歳まで飛ぶ飛行機はなにか。 ( Q 8 )
この場合、 「飛ぶJ という動詞は「出発地」 および「到着地」 の二 つの属性名と関連していると考えられ、 その差は格助詞「からJ と
「まで」 によってもたらされている。 つまり、 動詞だけでは属性名 を推定することはできず、 動詞と格助詞の組合せが必要となる。 こ のような場合の動詞をシステム教える画面を図4 . 7の(a )に示 す。 (b )の方は、 この動詞に関連する格助詞を教える画面である。
4 . 2 . 2 . 4 接尾語
すでに述べたように 、 接尾語も属性名を推定する有力な情報とな りうる。 たとえば、 図4. 2に関連して次のような質問を考えてみ よう
1 1 9
二つ以上の欄に関連して使いたい動作や状態 を表わす言葉がありますか。 もしあれば、 下 の文の( Jに当てはまる言葉を< >の中 に入れて下さい 。
]飛行機
<飛ぶ
<行く
<
<
>>>>
( a )動詞の定義画面
の言呈白文のの のどら
下なれ
、 J そでに、い し「ばさ連」れ下
関をあてに「しれ
葉
」
も入
言、が
。に
う「か中
いるすの
と入ま>
Jにり
ぶ]あ<
飛
が
を
「[葉葉
熊本(出発地) 飛ぶ飛行機
くから
<
<
<
>>>>
( b )格助詞の定義画面
図4 . 7 動詞と格助詞の組合せの定義
120
女性の社員をすべて表示せよ。 ( Q 9 )
この文においては、 「性J という接尾語から 「性別」 という属性名 を推定できる。 このような接尾語をシステムに教えるための画面を
図4. 8に示す。 なお、 本システムでは、 数詞の r 5メートル」 や
I 3 0才」 などから数字を除いた部分の 「メートル」 や 「才」 など も接尾語の一種とみなしており、 これらも属性名に関連づけて登録 することができる。
4 . 2 . 2 . 5 属性名の同義語
属性名を別の言い回しで使いたいことがよくある。 たとえば、 図 4. 2のデータペースに関連する次のような質問においては、 「給
料」 という属性名の代わりに 「給与」 という単語が使われている。
宮崎さんの給与はいくらか。 (Q 1 0 )
属性名の代わりに使われるのは単語だけとは限らず、 句の場合もあ
る。 たとえば、 同じデータペースに関する次の質問では、 「住所」
の代わりに 「住んでいる県」 という句が用いられている。
宮崎さんの住んでいる県はどこか。 (Q 1 1 )
このような属性名の同義語は、 図4. 9に示すような画面でシステ ムに教えることができる。
4 . 2 . 2 . 6 般的な同義語
1 2 1
「性別」 の欄のデータにつけて使いたい言葉 がありますか。 もしあれば、 下の文の( ) に入る言葉を< >の中に記入して下さい。
>>>>>
男
<<<<<
接尾語の定義画面 図4 . 8
「住所」 という単語の代わりに使いたい言葉 がありますか。 もしあれば、 下の< >の中 にそれらの言葉を書き込んで下さい。
>>>>>>>
<<<<<<<
属性名の同義語の定義画面 図4 . 9
122
属性名以外の同義語も質問文で使用することができる。 たとえば、
次の質問文は図4 . 2のデータベースに関するものであるが、 ここ では、 「九州北部地方」 という単語が「福岡または佐賀または長崎」
という句の代わりに使われている。
九州北部地方に住んでいる人を表示しなさい。 (Q 1 2 )
なお、 属性名の同義語の場合と同様、 同義語自身が句であっても構 わない。 このような同義語をシステムに教えるのに、 図4 . 1 0に 示すような画面が用意されている。
4 . 3 形態素解析部
システムに入力された質問文は、 まず、 形態素解析部で処理され る。 質問文は、 漢字仮名混じりのべた書き文でよく、 属性値を括弧 でくくるなどの特殊な細工をする必要はない。 また、 ヒストリ機能 が用意されており、 前固までに入力した質問文をいつでも呼び出し 修正し再入力することができる。 記憶できる質問文の数は2 0個で あり、 古い方から忘れていく。 形態素解析部で使用している辞書 の 構造は、 TRIE構造[4.5 Jに改良を加えたものに なっている。 形 態素解析用の辞書に要求される機能のうち、 最長一致の処理がやり やすいという点は重要である。 このような特長を備えた辞書構造と しては、 TRIEや拡張B - t r e e [4.6Jなどが知られているが、
本システムでは比較的小規模の辞書に向いているTRIEの方を採 用した。 未知語の処理もおこなっているが、 これは、 属性値を括弧 でくくったりしなくてよいようにするために必要となる。
ここでは、 システムに新しい言葉を教えることが できます。 システムに教えたい言葉を( ) の中 に、 その言葉の意味をすぐ下の(( ))の中に記入 していって下さい。 ただし 、 (( ))の中の言葉は
システムがすでに知っているものでなければなり ません。
図4 . 1 0 一般的な同義語の定義画面
123
124
4 . 4 統語 ・ 意味解析部と意味トランスレータ
形態素解析部で形態素に分解された質問文は、 統語 ・ 意味解析部 へと入力される。 ここで、 中間意味記述言語( 1 M L )による表現 に変換され、 さらに意味トランスレータを経て、 最終的なS Q L表 現が得られる。 統語 ・ 意味解析部はDCG記法により記述されてい るが、 これをS A XアルゴリズムのCプログラムへと変換するS A X -Cトランスレータについてはすでに第3章で説明した。 また、 中間意味記述言語についても第2章で説明しているので、 ここでは 処理の概略を述べるにとどめることにする。
4 . 4 . 1 統語 ・ 意味解析部
S A X -Cトランスレータに入力される文法 ・ 意味規則のファイ ル中には、 DCG記法による記述だけではなく、 補強項に出現する 関数の本体の記述も含めることができる。 この関数本体の記述はC によって行われるが、 トランスレータはこの部分を切り離して別の ファイルに出力する。 つまり、 トランスレータの出力としては、 s
AXアルゴリズムのCプログラムのファイルと関数本体のファイル の二つが得られることになる。 補強項に出現する関数の本体を同じ ファイル中に記述できるようにしたのは、 補強項でやりたい処理が すぐに記述 できて便利だからである。 また、 後で見直すときも、 補 強項の関数のすぐ近くに本体の記述があると分かりやすい。 なお、
統語 ・ 意味解析部を実際に動かすにはこれだけのファイルでは不充 分であり、 エンジンに相当する部分が必要である。 このエンジンに おいて、 形態素解析部とのインタフェースや統語 ・ 意味解析全体の
制御が行なわれる。
4 . 4 . 2 意味トランスレータ
125
中間意味記述言語( 1 M L )による表現から、 データ操作言語の 種であるS Q Lの表現への変換を行なうのが意味トランスレータ と呼ばれる部分である。 IML表現からS Q L表現への変換は、 主 として第2章3節で述べた変換関数τによって行なわれる。 実際に は、 変換関数τは手続きによって記述されており、 パタンマッチン
グにより処理が進んでいく
4 . 5 エコーパック生成部
統語 ・ 意味解析部で得られたS Q L表現は、 データペース管理部 に送られる前に 、 日本語表現に変換されてユーザに提示される。 こ
の働きを請け負っているのがエコーバック生成部である。 計算機の 内部表現によって表現された情報を日本語などの自然言語に変換す ることは、 一般に自然言語生成と呼ばれる。 この自然言語生成の研 究は、 自然言語理解の研究に比べて遅れており、 柔軟な自然言語を 生成することは現在でもなお困難である。 しかしながら、 幸いなこ とに本システムで必要なのは定型的な日本語の生成であり、 比較的
簡単に実現できる。
4 . 5 . 1 エコーパック生成部の役割
一つの質問文に対して復数個のS Q L表現が得られたときは、 エ コーバック生成部は、 それらすべてを日本語表現に変換して、 )11員に 表示する。 したがって、 エコーバック生成部の役割には次の二つが ある。
( 1 )入力文が正しく解釈されたかどうかの確認
126
理想的なシステムであれば、 入力された問合せ文は常にユーザの 意図通りに解釈されるはずであるが、 現在のシステムでは、 どうし ても微妙な点で解釈の食い違いが出てくる。 したがって、 入力され た文がユーザの意図通りに正しく解釈されたかどうかをユーザ自身 が確認する機構が必要であり、 エコーバックを生成することでこれ が可能となる。
( 2 )唆昧性の解消
入力文の解釈に唆昧性が生じたとき、 句間の係り受け関係を表示 して、 ユーザに正しいものを選択させるというやり方もあるが、 多
少とも文法知識が必要になり、 あまり現実的ではない。 本システム の場合は、 すべての解釈を日本語で表示して、 その中からユーザに 正しいものを選択させるというやり方をとっており、 特殊な知識な しにだれでもこれを行なうことができる
4 . 5 . 2 穴埋め方式による文の生成
本システムでは、 一部を空欄にした文章を用意し、 この空欄を適 当な語で埋めるという方法で文章を生成する。 このようなやり方は、
柔軟な自然言語文の生成には向かないが、 S Q L表現から自然言語 文を生成するような目的には充分である。 それは、 S Q L表現が規
則的な構造をしており、 生成する文も定型的なものでよいという理 由による。 なお、 図4 . 1 1に穴埋め方式によって生成した出力例 を示しておく。 これは、 I 2 0才以上で住所が福岡か趣味がゴルフ の人は」 という殴昧な入力文の解釈の一つを、 インデントを用いた 日本語で表示している。
図4 . 1 1 エコーバック生成部の出力例
12-'
4 . 6 検討
128
本システムは、 現在、 NECのパーソナル ・ コンビュータpC -
980 1 R A上にインプリメン卜され、 本論文中の例文のような標
準的問合せ文を数秒以内で処理することが確認されている 。 また、
省略を含んだ自然な問合せ文を受理することができ、 このシステム をデータペースに関しては全くの初心者である2 0名ほどの大学生 に使用してもらったが、 使用感はおおむね好評であった。 しかしな がら、 このシステムは現在のところ一つの関係表に対する問合せし か行なえず、 複数の表に対しでも問合せが行なえるようにすること が将来の課題として残っている。 また 、 現在も文脈に依存した問合 せ文を一部受理するようにしているが、 まだ不充分であり、 さらに 処理の範囲を広げたいと考えている。
第5章
5 . 1 本論文の総括
結
128
論
本論文は、 自然言語インタフェースの研究、 中でも自然言語によ るデータベース問合せシステムの研究をまとめたものである。 シス テムの開発過程において、 問合せ文で陽に指定されない情報を適切 に補完する中間的な意味記述言語を設計する必要性が生じた。 また、
システムの応答速度を充分なものとするため、 高効率の統語 ・ 意味 解析システムの開発も必要となった。 したがって、 これらに関する 研究についても併せて説明した。 以下、 2章から4章までに述べた
内容の概略を記しておく。
まず第2章では、 自然言語の問合せ文と形式的問合せ言語の中間 に位置する意味表現について述べた。 この意味表現のための言語を 本論文では中間意味記述言語( 1 M L )と呼んでいるが、 問合せ文 で陽に指定されない情報を適切に補完するだけでなく 、 自然言語や データ操作言語との問の変換を効率良く行なうことができる。 この 章では、 最初に問合せ文をデータ操作言語の文に変換したときに生 ずる空所について説明し、 空所が非談話的なものと談話的なものの 二つに分類できることを示した。 非談話的な空所はさらに四つに細 分類されることを示し、 それぞれについて例を挙げて説明した。 談 話的な空所についても、 主なものを二つだけ取り上げて説明した。
さらに、 IMLの定義を行なった。 IMLは、 S Q Lへの変換を 容易にするため、 これに類似した構造を有している。 また、 自然言 語表現との対応づけが容易になるように、 データ操作言語の文の空 所をうまく表現できるような構造にもなっている。 さらに、 日本語 の問合せ文に対する統語 ・ 意味規則を述べ、 これを用いて 、 空所が
130
発生するとして取り上げた例文に対して、 そのIML表現への変換 過程を説明した 。 その後、 IML表現をS Q L表現に変換する関数 を定義した。 IMLによる表現では、 問合せ文において陽に指定さ れなかった情報はそのままになっているが、 このような情報は、 S
Q L表現に変換される過程で補完される。 ここでは、 非談話的な内 所の四つの場合のそれぞれについて、 空所の補完がいかにして行な
われるのかを、 例を挙げて説明した。 また、 談話的な空所について も同様な説明を行なった。
第3章では、 高効率の統語 ・ 意味解析システムを実現するために 開発されたトランスレータについて述べた。 このトランスレータは、
DCGで記述された文法 ・ 意味規則をSAXアルゴリズムのCプロ グラムへと変換する。 この章では、 まずDC Gを文脈自由文法に制 限して、 文脈自由文法からCプログラムへと変換する方法について 述べた。 つまり、 文法範鴎が文法規則の右辺の先頭にあるかどうか によって処理を二つのタイプに分け、 それぞれのタイプの処理がど のように記述されるかについて説明した。 さらに、 一般のDCG規 則からCプログラムへの変換について述べた。 つまり、 非終端記号 に引数が付加されている場合と、 文法規則の右辺に補強項が付加さ れている場合のそれぞれについて、 変更点を説明した。 また、 到達
可能性を用いたトップダウン予測をアルゴリズムに組み込む方法に ついても述べた。
現在のところ、 このトランスレータが扱えるDCG規則には主と して三つの制限がある。 一つは、 文法規則の右辺に終端記号と非終 端記号が混在するときの}II員序と個数に対する制限であるが、 この制 限は、 各終端記号に対してそれぞれ一個の非終端記号を導入するこ とによって、 事実上取り除くことができる。 別の一つは、 統語解析
1 3 1
に殴昧性があり処理が二つ以上に別れるときに生ずる制限であって、
このような場合、 これらの処理に一部のメンバが未代入であるよう な同ーの構造体へのポインタを渡しではならないというものである このような制限は、 たとえば、 構造体をコピーして各処理 に渡して やることで取り除くことができる。 最後の一つは、 補強項によって 得られるデータに唆昧性があってはならないというものである。 し かしながら、 このような制限は、 たとえば活用語の活用語尾を決定 したりする場合に不便である。 そこで、 本システムでは、 一個の終
端記号のあとに一個の補強項が続くときに限って、 このような後戻 りを許している。
第4章では、 本研究の本来の目的である、 日本語によるデ「タベ
ース問合せシステムの試作について述べた。 問合せシステムは、 知 識獲得部、 形態素解析部、 統語 ・ 意味解析部、 意味トランスレー夕、
および、 エコーバック生成部から構成されているが、 このそれぞれ について説明を行なった。 知識獲得部は、 データベースとユーザの
両方から知識を獲得するが、 特にユーザが教えることのできる知識 として、 主題、 比較のための形容詞、 動詞と格助詞、 接尾語、 属性 名の同義語、 一般的な同義語がある。 ここでは、 これらの単語のそ れぞれについて、 定義画面と使用法を説明した。 なお、 本システム はこのような準備をしないでも一応使用することができるが、 様々 な単語を教えておくことで、 システムが受理可能な文の範囲を広げ たり、 システムからの問い返しを減少させたりすることができる。
形態、素解析部で使用している辞書の構造は、 TRIE構造に改良 を加えたものになっている。 形態素解析用の辞書に要求される機能 のうち、 最長一致の処理がやりやすいという点は重要である。 この ような特長を備えた辞書構造としては、 TR 1 Eや拡張B - t r e
132
e などが知られているが、 本システムでは比較的小規模の辞書に向 いているT R 1 Eの方を採用した。 未知語処理も、 問合せ文で特殊 な記号を使用しなくてもすむようにするために行なっている。
エコーバック生成部の役割は、 入力文が正しく解釈されたかどう かの確認をユーザにしてもらうことと、 入力文の解釈に唆昧性が生
じたときに正しい解釈をユーザに選択してもらうこと のこつである。
そのために、 エコーパック生成部は、 入力文に対するすべて の解釈 を日本語で表示する。 このような日本語文をS Q L文から生成する のに、 本システムでは穴埋め方式を採用している。
5 . 2 今後の展望
ここでは、 本論文を終わるに当たって、 自然言語理解の分野の今 後の展望について述べてみたい。 ただ、 自然言語理解といっても範
囲が広いので、 ここでは本論文とも関連する、 統語解析、 意味表現、
そして、 自然言語インタフェースの各分野に話を絞ることにする。
統語解析について言えば、 今後研究すべきものとして、 二つの方 向があるように思われる。 一つは言うまでもなく、 より効率的な統 語解析システムの開発である。 効率的な統語解析を行なうための情
報としてよく使用されるものに、 到達可能性[5.1Jと連接可能性[5.
1 Jがある。 このうち、 連接可能性というのは、 二つの非終端記号が 正しい文の解析中に連接して出現しうるかどうかを表わすものであ る。 ともに解析中に生成される不要な部分解析木を抑制する働きが あるといわれている。 しかしながら、 筆者が行なった実験によれば、
単一化文法により記述された日本語の文法規則に対する解析の場合、
到達可能性がほとんど役に立っていないらしいことが判明した。 詳 しいことはさらなる分析が必要であるが、 恐らくは、 Xバ一理論に
133
おいて日本語の主辞(head)が基底書き換え規則の右辺の右端に 常に位置するためであろうと思われる。 連接可能性の方は、 それな りに役立っているが、 それでもまだ、 かなりの量の不要な部分解析 木が生成されてしまう。 筆者は、 より効率的な解析を行なうための 情報のーっとしてとして、 条件付き到達可能性というものを提案し ている[5.2J。 この条件付き到達可能性を連接可能性と併用するこ とで、 日本語の文法規則の場合であっても、 不要な部分解析木の生 成をほとんど完全に抑制できることが確認されている。
統語解析の研究が目指すべきもう一つの方向は、 単一化文法に対 する効率的な解析アルゴリズムの開発である。 統語解析の効率を考 える場合、 意味論や語用論を無視するわけにはいかない 。 それは、
統語解析の段階で発生する暖昧性を、 意味論や語用論を用いてでき るだけ早いうちに解消しておいた方が、 より効率的な解析が行なえ るからである。 したがって、 意味解析なども同時並行的に行なえる 統語解析システムが望ましく、 文法記述形式としては意味や語用論 的情報も同時に記述できるDCGや単一化文法が適していると思わ れる。 特に単一化文法は、 単一化という統 一的な手続きにより、 統 語解析、 意味解析、 そして、 語用論的解析までを同時に実行するこ とができ、 また、 モジュラリティの高い柔軟な文法開発が行なえる ので、 最近では、 この文法を用いてシステムを記述した例が増えて いる。 ただし、 単一化文法では、 文法規則の範鴎名として品詞を用 いることが多く、 扱う品詞の種類もたいていの場合非常に少ないの で、 到達可能性などの情報があまり役に立たなくなっている。 した がって、 文法範鴎以外の情報も用いて不要な部分解析木を抑制する ようなアルゴリズムの開発が望まれる。
意味表現についても解決すべき問題点は多い。 現在までに 、 様々