# システム構成

English version

Enju ユーザマニュアルのEnju 文法の構造の節で説明されているとおり，Enju は MAYZ ツールキットの汎用パーザ up を利用しています． up とのインタフェースについて詳しくは up のマニュアルを参照して下さい．

Enju では以下の図のように up に渡す情報が作られ，up の出力を利用して最終出力を作成します．

以下では，各処理について簡単に説明します．

## 前処理

入力文字列に品詞タグ付けや stemming を行い，word lattice に変換して up に渡します． これらの処理は "enju/preproc.lil" の述語 `sentence_to_word_lattice/2` などで実装されています． 詳しくは，前処理の節を見て下さい．

## 辞書引き，語彙項目

次に，up では word lattice をもとに，各単語に語彙項目を割り当てます． 語彙項目を割り当てるためには，述語 `word_to_lookup_keys/2`， `lexical_entry_sign/2` が使われています． 述語 `word_to_lookup_keys/2` では，word lattice 内の品詞などの情報から語彙項目辞書を引くためのキーが計算されます． up ではそのキーをもとに語彙項目辞書を引き、単語に割り当てる語彙項目の ID を得ています． 述語 `lexical_entry_sign/2` では，語彙項目の ID から実際に語彙項目の sign が生成されて up に渡されます． 2個の述語は両方とも "enju/schema.lil" で実装されています． 詳しくは，辞書とテンプレートデータベースの節を参照して下さい．

## 文法規則

次に，up では割り当てられた語彙項目とHPSG の文法規則を用いて構文解析を行います． HPSG の文法規則，すなわちスキーマとプリンシプルは述語 `id_schema_unary/4`, `id_schema_binary/5` を使って up に伝えています． Enju のスキーマとプリンシプルについては，スキーマとプリンシプルの節を参照して下さい． 実装は "enju/schema.lil" にあります．

また，構文木のルート条件は "enju/schema.lil" 中の述語 `root_sign/1` によって up に伝えられています。 その実体は "enju/macro.lil" で定義されている述語 `is_root_sign/1` です．

## 確率モデル

up では構文解析結果が複数ある場合，一番尤もらしい結果を選ぶために確率モデルを使った曖昧性解消を行っています． 確率モデルには，語彙項目割り当ての曖昧性解消に使われるモデルと構文解析結果の曖昧性解消に使われるモデルがあります． 構文解析結果の曖昧性解消に使われるモデルは "enju/synmodel.lil" で実装されています． 2個のモデルについて詳しくは，確率モデルの節を参照して下さい．

## 出力

Enju では, up の構文解析結果をエンドユーザが使いやすい形（述語項関係や XML）に加工して出力します． 述語項関係への変換は，"enju/outputdep.lil" で，XML 出力への変換は "enju/outputxml.lil" で実装されています． 詳しくは，出力の節を参照して下さい．

また，up の出力や文法の詳細はグラフィカルにブラウズすることができます． 詳しくは，GUI を使うを参照して下さい．

Enju 開発者用マニュアル Enju ホームページ 辻井研究室