言語モデル入門 (第二版) 
2014年10月19日 
@akkikiki
免責事項 
•この発表は個人のものであり、会社とは 関係ありません
目次 
•はじめに 
–言語モデルとは?何に使うの? 
•基礎編 
–スムージング 
–言語モデルの評価 
•応用編:言語モデルの最近の研究 
•ツールキットのお話
今回メインで使用した資料 
•Coursera 
•IME本
言語モデルって何? 
•人間が用いるであろう言葉らしさ、を確率とし てモデル化する 
•例:P(<BOS>我輩は猫である<EOS>) > P(<BOS>は猫である<EOS>) 
IME本210ページより
モデル化するデータは? 
•コーパスが整備されている。 
•Brownコーパス 
•新聞コーパス(読売、毎日、日経等々) 
•Google 日本語 n-gramコーパス 
•日本語書き言葉均衡コーパス(BCCWJ) 
•…
言語モデルは何に使うの? 
•例:基本タスク 
–機械翻訳 
•翻訳した日本語は日本語らしいか。 
–かな漢字変換 
•変換候補はよく使われる漢字(+送り仮名等)か。 
•例:変化球系タスク 
–翻字(マイケル=Michael)検出(Li+ ACL 2004) 
–Twitter上のTopic tracking(Lin+ KDD 2011) 
–ユーザのオンラインコミュニティの退会予測 (Danescu-Niculescu-Mizil+ WWW 2013)
•基礎編: 
言語モデルとスムージング
シャノンゲーム 
•次の単語はなにがくる? 
•I want to go to ______ 
•P(w | I want to go to)でモデル化しよう!
n-gram言語モデル 
•n-1語を文脈として次の単語を予測する 
–文字n-gram、単語n-gram、品詞n-gram 
–1-gram = unigram, 2-gram = bigram 
•例:bigram言語モデル 
–P(w_i | w_i-1) = c(w_i, w_i-1) / c(w_i-1) 
•P(<BOS>/我輩 / は / 猫 / で / ある/<EOS>) 
–=P(我輩| <BOS>) * P(は|我輩) * P(猫|は) * P(で|猫) * P(ある|で) * P(<EOS> | ある)
スムージング 
•コーパスに登場する単語は有限である。 
•例:<BOS>/俺/は/猫/で/あ/る/<EOS> 
•P(俺 | <BOS>) = 0 
•コーパスに登場していない単語にどう対応す るか?(=ゼロ頻度問題) 
•⇒解決策:スムージング
スムージングの種類 
•加算スムージング ⇒ 不十分 
•n-1, n-2, …と低次のn-gramを用いよう! 
•バックオフ型 
–高次のngramが存在しない場合、低次を考慮 
–Good Turingによる推定値で低次をDiscount 
•補完(interpolated)型 
–常に低次を考慮 
–Interpolated Kneser-neyスムージング
加算スムージング 
•一番単純:定数を頻度に加算する 
•n(w):コーパス中の単語の出現回数 
•C:コーパス中の全単語の出現回数 
•k:加算する定数 
•P(w) = (n(w) + k) / (C + kV)
Good Turing 推定:バックオフ型 
•頻度の頻度を用いた、頻度の補正 
•N_c: 頻度の頻度 
•コーパス例: 
–マグロ:2,鮭:3,こはだ:1, 玉子:1, いか:1 
–合計8単語 
•N_1 = 3, N_2 = 1, N_3 = 1 
•1回しか観測されていない単語を「未知の単 語が観測される確率」と扱う
Good Turing 推定:例 
•P_gt(ゼロ頻度) = N_1 / N 
•ゼロ頻度: 
–P_gt(ゼロ頻度) = 3/8 
•一回だけ観測された単語: 
–c*(こはだ) =2 * N_2 / N_1 = 2/3 
–P_gt(一回だけの単語) = 2/3 / 8 = 1/12
Kneser-neyスムージング: Discounting 
•Good turingは結局ほ ぼ0.75ぐらいを discount 
–AP corpus 
–(Church & Gale 1991) 
•⇒定数でdiscountすれ ばいい! 
c 
C* 
0 
0.000027026 
1 
0.4457 
2 
1.260 
3 
2.237 
4 
3.236 
5 
4.23 
6 
5.19 
7 
6.21 
8 
7.24
Kneser-neyスムージング: overview 
•実験的に一番良いスムージング 
•いくつかバリエーションがある 
–Interpolated Kneser-ney (Kneser & Ney 1995) 
•今回はこっちを説明 
–Modified Kneser-ney(Chen & Goodman 1999) 
•アイディアは: 
–直前の単語の種類数を重視
Kneser-neyスムージング:例 
•Bigram言語モデルを想定 
•I want to go to Toyama Fransisco 
–Fransiscoは頻度が高いが、ほぼSanの後に続く 
•スムージング:unigramの頻度 
–P(Toyama Fransisco) ≒ P(Fransisco) 
–P(Toyama Fransisco)が高くなってしまう! 
•Kneser-neyのアイディア: 
–P_continuation: 単語wは直前の単語の種類は 豊富か?
Kneser-neyスムージングによるバ イグラム確率
Kneser-neyスムージングによるバ イグラム確率 
w_iの直前に現れる単語の 種類数
Kneser-neyスムージングによるバ イグラム確率 
w_iの直前に現れる単語の 種類数 
全ての単語の直前に現れ る単語の種類数
•言語モデルの評価
パープレキシティ 
•情報理論的距離 
•低いほど言語モデルに近く、高いほどモデル から遠い 
•D: テスト文書 
•N: 単語数 
•長さNで正規化しているイメージ
•応用編
発展1:ニューラル言語モデル (Bengio+ 2003) 
•分散表現 
–単語を固定長のベクトルで表す 
•AP newsコーパスではModified Kneser-ney よりPerplexityが低い 
model 
n 
Perplexity 
Neural LM 
6 
109 
N-gram (Kneser-ney) 
3 
127 
N-gram (Kneser-ney) 
4 
119 
N-gram (Kneser-ney) 
5 
117 
※ただしNeural LMはinterpolated trigramも使用している
発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) 
•Stupid back off 
–文字通りstupidだが、意外とうまくいく 
–Discoutingなし 
•確率ではなくスコア 
–α = 0.4 
•Unigramは
発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) 
BLEU scoreは stupid backoff の方が 上!
発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) 
BLEU scoreは stupid backoff の方が 上! 
コーパスのサイズが大きくなると スムージングの性能差がなくなる
•ツールキットのお話
主な言語モデルツール 
•CMU-Cambridge language model toolkit 
–Kneser-neyがないのであまりおすすめしない 
•SRI language model toolkit (SRILM) 
–Kneser-neyはある 
–Bengioらもこれを使った。多分これが一番使わ れている? 
–早い!
まとめ 
•N-gram言語モデルが主に用いられる 
•Kneser-neyが経験的に良いスムージング 
•スムージングの性能差はコーパスを大きくす ればなくなる 
•おすすめツールはSRILM
参考文献 
•日本語入力を支える技術 
•StanfordのNLPの授業 
–https://class.coursera.org/nlp/lecture 
–http://nlp.stanford.edu/~wcmac/papers/20050421-smoothing- tutorial.pdf 
•NYUの言語モデルの授業スライド 
–http://www.cs.nyu.edu/~petrov/lecture2.pdf 
•Univ. of Marylandの言語モデルの授業スライド 
–http://www.umiacs.umd.edu/~jimmylin/cloud-2010- Spring/session9-slides.pdf 
•Neural Language Modelの授業スライド 
–http://www.inf.ed.ac.uk/teaching/courses/asr/2013-14/asr09- nnlm.pdf
付録:SRILMのコマンド 
•# build a 5-gram model 
•ngram-count -order 5 -text hogehoge.txt - unk -lm hogehoge_lm 
•# calculate perplexity 
•ngram -order 5 -lm hogehoge_lm -ppl test.txt

言語モデル入門 (第二版)