Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
言語モデル入門 (第二版) 
2014年10月19日 
@akkikiki
免責事項 
•この発表は個人のものであり、会社とは 関係ありません
目次 
•はじめに 
–言語モデルとは?何に使うの? 
•基礎編 
–スムージング 
–言語モデルの評価 
•応用編:言語モデルの最近の研究 
•ツールキットのお話
今回メインで使用した資料 
•Coursera 
•IME本
言語モデルって何? 
•人間が用いるであろう言葉らしさ、を確率とし てモデル化する 
•例:P(<BOS>我輩は猫である<EOS>) > P(<BOS>は猫である<EOS>) 
IME本210ページより
モデル化するデータは? 
•コーパスが整備されている。 
•Brownコーパス 
•新聞コーパス(読売、毎日、日経等々) 
•Google 日本語 n-gramコーパス 
•日本語書き言葉均衡コーパス(BCCWJ) 
•…
言語モデルは何に使うの? 
•例:基本タスク 
–機械翻訳 
•翻訳した日本語は日本語らしいか。 
–かな漢字変換 
•変換候補はよく使われる漢字(+送り仮名等)か。 
•例:変化球系タスク 
–翻字(マイケル=Michael)検出(Li+ A...
•基礎編: 
言語モデルとスムージング
シャノンゲーム 
•次の単語はなにがくる? 
•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...
スムージング 
•コーパスに登場する単語は有限である。 
•例:<BOS>/俺/は/猫/で/あ/る/<EOS> 
•P(俺 | <BOS>) = 0 
•コーパスに登場していない単語にどう対応す るか?(=ゼロ頻度問題) 
•⇒解決策:スムージ...
スムージングの種類 
•加算スムージング ⇒ 不十分 
•n-1, n-2, …と低次のn-gramを用いよう! 
•バックオフ型 
–高次のngramが存在しない場合、低次を考慮 
–Good Turingによる推定値で低次をDiscount...
加算スムージング 
•一番単純:定数を頻度に加算する 
•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_...
Good Turing 推定:例 
•P_gt(ゼロ頻度) = N_1 / N 
•ゼロ頻度: 
–P_gt(ゼロ頻度) = 3/8 
•一回だけ観測された単語: 
–c*(こはだ) =2 * N_2 / N_1 = 2/3 
–P_gt(一回...
Kneser-neyスムージング: Discounting 
•Good turingは結局ほ ぼ0.75ぐらいを discount 
–AP corpus 
–(Church & Gale 1991) 
•⇒定数でdiscountすれ ばいい...
Kneser-neyスムージング: overview 
•実験的に一番良いスムージング 
•いくつかバリエーションがある 
–Interpolated Kneser-ney (Kneser & Ney 1995) 
•今回はこっちを説明 
–M...
Kneser-neyスムージング:例 
•Bigram言語モデルを想定 
•I want to go to Toyama Fransisco 
–Fransiscoは頻度が高いが、ほぼSanの後に続く 
•スムージング:unigramの頻度 
...
Kneser-neyスムージングによるバ イグラム確率
Kneser-neyスムージングによるバ イグラム確率 
w_iの直前に現れる単語の 種類数
Kneser-neyスムージングによるバ イグラム確率 
w_iの直前に現れる単語の 種類数 
全ての単語の直前に現れ る単語の種類数
•言語モデルの評価
パープレキシティ 
•情報理論的距離 
•低いほど言語モデルに近く、高いほどモデル から遠い 
•D: テスト文書 
•N: 単語数 
•長さNで正規化しているイメージ
•応用編
発展1:ニューラル言語モデル (Bengio+ 2003) 
•分散表現 
–単語を固定長のベクトルで表す 
•AP newsコーパスではModified Kneser-ney よりPerplexityが低い 
model 
n 
Perple...
発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) 
•Stupid back off 
–文字通りstupidだが、意外とうまくいく 
–Discoutingなし 
•確率ではなくスコア 
–α = 0.4 
•...
発展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) 
–Knese...
まとめ 
•N-gram言語モデルが主に用いられる 
•Kneser-neyが経験的に良いスムージング 
•スムージングの性能差はコーパスを大きくす ればなくなる 
•おすすめツールはSRILM
参考文献 
•日本語入力を支える技術 
•StanfordのNLPの授業 
–https://class.coursera.org/nlp/lecture 
–http://nlp.stanford.edu/~wcmac/papers/2005...
付録:SRILMのコマンド 
•# build a 5-gram model 
•ngram-count -order 5 -text hogehoge.txt - unk -lm hogehoge_lm 
•# calculate perpl...
Upcoming SlideShare
Loading in …5
×

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

5,711 views

Published on

Introduction to language models in Japanese

Published in: Technology
  • Be the first to comment

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

  1. 1. 言語モデル入門 (第二版) 2014年10月19日 @akkikiki
  2. 2. 免責事項 •この発表は個人のものであり、会社とは 関係ありません
  3. 3. 目次 •はじめに –言語モデルとは?何に使うの? •基礎編 –スムージング –言語モデルの評価 •応用編:言語モデルの最近の研究 •ツールキットのお話
  4. 4. 今回メインで使用した資料 •Coursera •IME本
  5. 5. 言語モデルって何? •人間が用いるであろう言葉らしさ、を確率とし てモデル化する •例:P(<BOS>我輩は猫である<EOS>) > P(<BOS>は猫である<EOS>) IME本210ページより
  6. 6. モデル化するデータは? •コーパスが整備されている。 •Brownコーパス •新聞コーパス(読売、毎日、日経等々) •Google 日本語 n-gramコーパス •日本語書き言葉均衡コーパス(BCCWJ) •…
  7. 7. 言語モデルは何に使うの? •例:基本タスク –機械翻訳 •翻訳した日本語は日本語らしいか。 –かな漢字変換 •変換候補はよく使われる漢字(+送り仮名等)か。 •例:変化球系タスク –翻字(マイケル=Michael)検出(Li+ ACL 2004) –Twitter上のTopic tracking(Lin+ KDD 2011) –ユーザのオンラインコミュニティの退会予測 (Danescu-Niculescu-Mizil+ WWW 2013)
  8. 8. •基礎編: 言語モデルとスムージング
  9. 9. シャノンゲーム •次の単語はなにがくる? •I want to go to ______ •P(w | I want to go to)でモデル化しよう!
  10. 10. 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> | ある)
  11. 11. スムージング •コーパスに登場する単語は有限である。 •例:<BOS>/俺/は/猫/で/あ/る/<EOS> •P(俺 | <BOS>) = 0 •コーパスに登場していない単語にどう対応す るか?(=ゼロ頻度問題) •⇒解決策:スムージング
  12. 12. スムージングの種類 •加算スムージング ⇒ 不十分 •n-1, n-2, …と低次のn-gramを用いよう! •バックオフ型 –高次のngramが存在しない場合、低次を考慮 –Good Turingによる推定値で低次をDiscount •補完(interpolated)型 –常に低次を考慮 –Interpolated Kneser-neyスムージング
  13. 13. 加算スムージング •一番単純:定数を頻度に加算する •n(w):コーパス中の単語の出現回数 •C:コーパス中の全単語の出現回数 •k:加算する定数 •P(w) = (n(w) + k) / (C + kV)
  14. 14. Good Turing 推定:バックオフ型 •頻度の頻度を用いた、頻度の補正 •N_c: 頻度の頻度 •コーパス例: –マグロ:2,鮭:3,こはだ:1, 玉子:1, いか:1 –合計8単語 •N_1 = 3, N_2 = 1, N_3 = 1 •1回しか観測されていない単語を「未知の単 語が観測される確率」と扱う
  15. 15. 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
  16. 16. 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
  17. 17. Kneser-neyスムージング: overview •実験的に一番良いスムージング •いくつかバリエーションがある –Interpolated Kneser-ney (Kneser & Ney 1995) •今回はこっちを説明 –Modified Kneser-ney(Chen & Goodman 1999) •アイディアは: –直前の単語の種類数を重視
  18. 18. 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は直前の単語の種類は 豊富か?
  19. 19. Kneser-neyスムージングによるバ イグラム確率
  20. 20. Kneser-neyスムージングによるバ イグラム確率 w_iの直前に現れる単語の 種類数
  21. 21. Kneser-neyスムージングによるバ イグラム確率 w_iの直前に現れる単語の 種類数 全ての単語の直前に現れ る単語の種類数
  22. 22. •言語モデルの評価
  23. 23. パープレキシティ •情報理論的距離 •低いほど言語モデルに近く、高いほどモデル から遠い •D: テスト文書 •N: 単語数 •長さNで正規化しているイメージ
  24. 24. •応用編
  25. 25. 発展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も使用している
  26. 26. 発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) •Stupid back off –文字通りstupidだが、意外とうまくいく –Discoutingなし •確率ではなくスコア –α = 0.4 •Unigramは
  27. 27. 発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) BLEU scoreは stupid backoff の方が 上!
  28. 28. 発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) BLEU scoreは stupid backoff の方が 上! コーパスのサイズが大きくなると スムージングの性能差がなくなる
  29. 29. •ツールキットのお話
  30. 30. 主な言語モデルツール •CMU-Cambridge language model toolkit –Kneser-neyがないのであまりおすすめしない •SRI language model toolkit (SRILM) –Kneser-neyはある –Bengioらもこれを使った。多分これが一番使わ れている? –早い!
  31. 31. まとめ •N-gram言語モデルが主に用いられる •Kneser-neyが経験的に良いスムージング •スムージングの性能差はコーパスを大きくす ればなくなる •おすすめツールはSRILM
  32. 32. 参考文献 •日本語入力を支える技術 •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
  33. 33. 付録: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

×