少し前に Kneser-Ney スムージングの性能を測ってみた記事 を書いたが、今回は Kneser-Ney スムージングによる n-Gram 言語モデルで文書生成を行なってみた。 スクリプトはこちら。 https://github.com/shuyo/iir/blob/master/ngram/knlm.py 適当なテキストファイル(複数可)を入力すると、1行1文書の訓練データとみなして Kneser-Ney スムージング付きの n-Gram 言語モデルを学習後、文書を生成してファイルに出力する。 オプションもいくつか指定できるが、-h でヘルプを出すか、ソースを読むかしてもらえば。 与えられた文書の確率を Kneser-Ney で計算するには、ディスカウントによって生じる正規化係数の補正を求めるために N1+ などのちょいややこしい値をあらかじめ計算して保持しておかないといけないが、文