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 | 未知語のキー |
未知語のエントリのためのキーを作ります. |