# lexrefine: 文法精製ツール

English version

lexicon の thresholding や lexical rule による expansion を行なうツー ルです．

lexrefine [オプション] ルールモジュール 元lexicon 元template 新lexicon 新template
ルールモジュール | lexical rule が定義されたモジュール
元lexicon | 入力の lexicon
元template | 入力の template database
新lexicon | 精製された lexicon
新template | 精製された template
オプション
-wf 閾値 | 単語頻度の閾値 (デフォルト: 1)
-tf 閾値 | テンプレート頻度の閾値 (デフォルト: 0)
-uwf 閾値 | 未知語とみなす単語の閾値 (デフォルト: 1)
-utf 閾値 | 未知語のテンプレートとして採用する閾値 (デフォルト: 0)
-v | デバッグ用メッセージを表示する
-vv | デバッグ用メッセージをたくさん表示する
-vvv | デバッグ用メッセージをたくさんたくさん表示する

`lexrefine`は，以下の作業をします．

- 閾値以下の頻度のテンプレートを削除する．
- 残ったテンプレートに lexical rule を適用し，inflected word で使 われるテンプレートを作る．
- 閾値以下の頻度の単語を未知語とみなし，未知語の辞書項目を作る．
- 閾値以下の頻度の単語を削除する．
- Inflected word の辞書項目を作る．

まず，閾値(-tf の値)以下の頻度のテンプレートを削除します．

さらに，残ったテンプレートに lexical rule を適用し，inflected word の エントリを offline で作ることもできます．既存のテンプレートに lexical rule を適用するには，"mayz/lexrefine.lil" で定義されている以下のインタ フェースを実装して下さい．

`expand_lexical_template(+$InTemplateName, +$InTemplate, +$Freq, -$LexRules, -$NewTemplate)`
$InTemplateName | 入力テンプレートの名前
$InTemplate | 入力のテンプレート
$Freq | テンプレートの観測回数
$LexRules | 適用された lexical rule のリスト
$NewTemplate | 新しいテンプレート
lexeme のテンプレートに lexical rule を適用し，新し いテンプレートを生成します．

新しいテンプレートは，入力テンプレートの lexeme 名と lexical rule のリ ストの組み合わせをキーとして，テンプレートのデータベースに登録されます． 新しく作られたテンプレートの出現回数は，それを作る元となったテンプレー トの出現回数と同じに扱われます．

ここで新たに作ったテンプレートを lexicon で使うためには，以下のインタ フェースを実装します．

`expand_lexicon(+$InKey, +$TemplateName, -$NewKey)`
$InKey | 入力単語のキー
$TemplateName | テンプレートの名前 (lex_template 型)
$NewKey | 新しいキー
$InKey の辞書項目から expand したテンプレート $TemplateName を登録すべきキー $NewKey を返します．例えば，他動詞原形 のテンプレートから受身形のテンプレートを作った場合，原形の love のエン トリに他動詞原形が登録されている時，過去分詞形の loved のエントリに受 身形のテンプレートを登録します．

次に，lexicon の各エントリについて，その単語(正確には， reduce_lexical_template/5 の第3引数で与えられるキー)の頻度が閾値(-wf の値) 以下の場合はそのエントリを削除します．それ以外の単語のエントリは 辞書に残されますが，削除されたテンプレートは自動的に辞書から取り除かれ ます．

また，頻度が -uwf の値以下の単語は，未知語とみなされ，その単語に割り当 てられているテンプレートは未知語のエントリに追加されます．未知語のエン トリのキーは，"mayz/lexrefine.lil" で定義されている `unknown_word_key/2`で指定します．

`unknown_word_key(+$InKey, -$OutKey)`
$InKey | 入力単語のキー
$OutKey | 未知語のキー
未知語のエントリのためのキーを作ります．

たとえば，$InKey の POS 素性の値だけを未知語のキーとして返せば，品詞だ けを見て未知語のエントリを引くことになります．未知語に割り当てるテンプ レートの出現頻度の閾値は，別に指定することができます(-utf オプション)．

MAYZツールキットマニュアル MAYZホームページ 辻井研究室