これはJava実装の京都言語モデルツールキット(Kylm)のホームページです。 Kylmに以下のような機能が揃っています:
最新版: Kylm 0.0.7
ソースコードはgithubにて。
コーパスから平滑化されたn-gramモデルを構築するプログラムです。
使用例: java -cp kylm.jar kylm.main.CountNgrams training.txt model.arpa
N-gramモデルオプション:
-n: n-gramオーダ [デフォルト: 3]
-trim: 指定頻度以下のn-gramを削除する(例: 0:1:1)
-name: モデルの名前(モデル比較の時に用いる)
-smoothuni: 1-gramの平滑化を行う
記号・語彙オプション:
-vocab: 語彙の入力ファイル
-startsym: 文開始記号 [デフォルト: <s>]
-termsym: 文終了記号 [デフォルト: </s>]
-vocabout: 語彙の出力ファイル
-ukcutoff: 指定頻度以下の単語を未知語とする [デフォルト: 0]
-uksym: 未知語記号 [デフォルト: <unk>]
-ukexpand: 未知語を展開する
-ukmodel: 未知語のモデルを作る。複数指定可。他のモデルを含めるモデルは
最後に指定。
指定形式: 「記号:文字語彙サイズ[:正規表現(.*)][:オーダ(2)][:平滑化(wb)]
クラスオプション
-classes: 単語クラス指定ファイル (形式:「クラス 単語 [確率]」)
平滑化オプション [デフォルト: kn]
-ml: 最尤推定
-gt: Good-Turing平滑化
-wb: Witten-Bell平滑化
-abs: 絶対平滑化
-kn: Kneser-Ney平滑化
-mkn: Modified Kneser-Ney平滑化(Chen & Goodman)
出力オプション [デフォルト: arpa]
-bin: バイナリ出力
-wfst: 重み付き有限状態トランスデューサー(WFST)出力
-arpa: ARPA形式テキスト出力
-neginf: バックオフ値がないn-gramに使うバックオフ値 [デフォルト: null, 例: -99]
その他のオプション
-debug: 出力するデバッグ情報のレベル [デフォルト: 0]
テストデータを利用して、言語モデルのクロスエントロピーを計算します。
Usage: java -cp kylm.jar kylm.main.CrossEntropy [OPTIONS] test.txt
Example: CrossEntropy -arpa model1.arpa:model2.arpa test.txt
-arpa: ARPA形式のモデルファイル (model1.arpa:model2.arpa)
-bin: バイナリ形式のモデルファイル (model3.bin:model4.bin)
-debug: 出力する情報:0=文章, 1=文, 2=単語 [デフォルト: 0]
一番簡単なやりかたは「-smoothuni」オプションを利用することです。これによりモデルunigramでも平滑化されるので、残りの確率が未知語に割り当てられます。
もう1つのやり方は「-ukcutoff 1」を設定することです(1の代わりに違う整数も利用可)。これだと1以下の頻度を持つ単語は未知語として扱われるため、ある程度の確率が未知語に割り当てられることが保証されます。
他の開発者は歓迎します。
ご興味があればkylm@
までご連絡ください。
GNU Lesser General Public Licenseに従って利用、再配布できます。