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は,以下の作業をします.
まず,閾値(-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 を適用し,新し いテンプレートを生成します. | |
ここで新たに作ったテンプレートを 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 | 未知語のキー |
| 未知語のエントリのためのキーを作ります. | |