構文解析は三角行列
(1
,
は単語数)を用いて解析を行う.
日本語入力文``あの 人 は たくさん の 友達 が いる 。"を表2.9の文法規則を用いて構文解析する場合の三角行列を図2.13に示す.
構文解析において,変数に複数単語が適合することを許す.また,変数は品詞情報や関数による制約を持たないため,全ての単語および複数単語が変数と適合する.
文法規則を用いて要素
から
へボトムアップアルゴリズムで文法規則の探索を行う.要素
において,文法規則の探索を行う場合,
と
を参照し探索を行う.ここで,
は0
から
になるまで1ずつ加算していく.例えば,図2.13の要素
のS4は表2.9の文法規則より
の``が"と
の``S5"の文法規則より作られる.また,要素
の
は
の``友達"を変数``
"とし,
の``S4"との文法規則より作られる.なお,各記号が,どの記号,変数および字面から作られたかをポインタにより記録しておく.
そして,要素
まで,文法規則の探索を行い,
に開始記号Sが与えられれば,入力文の構文解析に成功したといえる.
構文解析に成功した場合,開始記号Sからポインタをたどり,各変数に対応する入力文の単語列を句として抽出する.
図2.13の構文解析により抽出される日本語句を表2.10に示す.
日本語文パターンの対となる英語文パターンを用いて日本語学習文の対となる英語学習文に対しても同様の構文解析を行い,変数に対応する英語学習文の単語列を句として抽出する. そして,得られた日本語句と英語句において,同一の変数におけるすべての組み合わせを取得し,対訳句とする.
対訳句抽出の流れを図2.14に示す. なお,対訳句の抽出は網羅的に行うため,不適切な対応をとる対訳句を抽出する問題がある.図2.14の例では``彼の顔に"と``He"のような不適切な対応をとる対訳句がある.