辞書とテンプレートデータベース

English version

ここでは,MAYZ ツールキットで作成した辞書とテンプレートデータベースから, up に渡す語彙項目を作成するところについて説明します.MAYZ ツールキット を使って文法を開発するプロセスについては,辞書の抽出を見て下さい.

up に語彙項目の sign を渡すには,lexical_entry/2lexical_entry_sign/2 を実装する必要があります.それぞれ, 語彙項目の名前と,それに対応する sign を返すための述語です.従って,こ れらの実装の中で,辞書やテンプレートデータベースを使って語彙項目の sign を作ることになります.

辞書およびテンプレートデータベースは,LiLFeS データベースの形式でファイ ルに格納されています.辞書は "DATA/Enju.lexicon", テンプレートデータベー スは "DATA/Enju.templates" です.実際には,これらのデータベースに直接 アクセスするのではなく,MAYZ ツールキットで提供されてい るlookup_lexicon/2lookup_template/2を使って,辞書 引きやテンプレートの取得を行っています.

以下で説明するプログラムは,"grammar/grammar.lil" で実装されています. また,パーザの起動時に辞書とテンプレートデータベースをファイルから読み 込むプログラムも同じファイルで実装されています.

辞書引き

辞書のデータベース("DATA/Enju.lexicon")はキーが 'word' 型,値が 'lex_entry' 型のリストになっています.キーの 'word' 型のうち,BASE と POS の値が埋まっているものが実際のキーになっています.つまり,単語の base form と品詞を与えると,対応する語彙項目のリストが得られるようになっ ています.また,未知語の語彙項目を引くためのキーは,POS の値だけが埋まっ た 'word' 型になっています.

実際に辞書を引くときは,MAYZ で提供されてい る lookup_lexicon/2 を使います.これは, lexicon_lookup_key/2unknown_word_lookup_key/2を定 義しておくと,単語を表す素性構造を渡すだけで lex_entry のリストを返し てくれます.

up のインタフェース lexical_entry/2は, sentence_to_word_lattice/2 で返す各 extent の word 素性の値を 第1引数として呼び出されます.前処理の 節 で説明したとおり,これは word 型のリストになっていたので,ここで は,リストの各要素について,lookup_lexicon/2を呼び出し,その結 果得られた lex_entry を一つずつ返します.

語彙項目テンプレートの取得

次に,up は lexical_entry/2の第2引数 を lexical_entry_sign/2の第1引数に入れて,これを呼び出します. 従って,第1引数には lex_entry 型が入っていることになるので,これを使っ て語彙項目の sign を作ります.

テンプレートデータベース("DATA/Enju.templates")は,キーが lex_entry 型, 値が sign になっています.MAYZ で提供されてい る lookup_template/2 を使えばデータベースを引くことができるの で,これを使って,まず lex_entry に対応するテンプレートを取得します. 次に,テンプレートに単語依存情報を付加します.具体的には,PHON 素性の 値や,確率モデルで使う情報を,テンプレートに単一化します.


Enju 開発者用マニュアル Enju ホームページ 辻井研究室
MIYAO Yusuke (yusuke@is.s.u-tokyo.ac.jp)