これは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に従って利用、再配布できます。