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.

言語モデル入門

15,705 views

Published on

Published in: Technology
  • Be the first to comment

言語モデル入門

  1. 1. 言語モデル入門 2014年4月18日 藤沼祥成
  2. 2. Overview • Introduction – 言語モデルとは? • 基礎編 – スムージング – 言語モデルの評価 • 応用編:言語モデルの最近の研究 • ツールキットのお話
  3. 3. 今回メインで使用した資料 • Coursera • IME本
  4. 4. 言語モデルって何? • 人間が用いるであろう言葉らしさ、を確率とし てモデル化する • 例:P(<BOS>我輩は猫である<EOS>) > P(<BOS>は猫である<EOS>) • IME本210ページより
  5. 5. モデル化するデータは? • コーパスが整備されている。 • Brownコーパス • 新聞コーパス(読売、毎日、日経等々) • Google 日本語 n-gramコーパス • 日本語書き言葉均衡コーパス(BCCWJ) • …
  6. 6. 言語モデルは何に使うの? • 例:基本タスク – 機械翻訳 • 翻訳した日本語は日本語らしいか。 – かな漢字変換 • 変換候補はよく使われる漢字(+送り仮名等)か。 • 例:変化球系タスク – 翻字(マイケル=Michael)検出(Li+ ACL 2004) – Twitter上のTopic tracking(Lin+ KDD 2011) – ユーザのオンラインコミュニティの退会予測 (Danescu-Niculescu-Mizil+ WWW 2013)
  7. 7. Noisy Channel Model (Bayes Rule applied) • O: output, I: input • かな漢字変換 – O: 変換候補, I: ひらがな列 – P(I|O): かな漢字モデル • 機械翻訳: – O: 日本語, I: 英語 – P(I|O): 翻訳モデル(言語間の対応) 言語モデル!
  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、class n-gram • 例: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を用いよう! • 補完(interpolated)型 – 常に低次を考慮 – Interpolated Kneser-neyスムージング • バックオフ型 – 高次のngramが存在しない場合、低次を考慮 – Good Turingによる推定値で低次をDiscount
  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 • 一回だけ観測された単語: – c*(こはだ) =2 * N_2 / N_1 = 2/3 – P_gt(一回だけの単語) = 2/3 / 8 = 1/12 • ゼロ頻度: – P_gt(ゼロ頻度) = 3/8
  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) • アイディアは: – 学習データで観測したn-gramは学習データ外の 未知データとくらべて頻度が高いのでDiscount – 直前の単語の種類数を重視 • 例:bigramにおけるKneser-ney
  18. 18. Kneser-neyスムージング:例 • I want to go to ______ – Toyama? Fransisco? – Fransiscoは頻度が高いが、ほぼSanの後に続く • 通常の場合:unigramの頻度 – 単語wは現れている頻度は? • Kneser-neyのアイディア: – P_continuation: 単語wは直前の単語toの後に 続く単語として、未知の例かどうか?
  19. 19. Kneser-neyスムージングによるバ イグラム確率 w_i-1の直後に現れる単語 の種類数 Interpolation weight 全ての単語の直前にくる単 語の種類数
  20. 20. • 言語モデルの評価
  21. 21. パープレキシティ • 情報理論的距離 • 低いほど言語モデルに近く、高いほどモデル から遠い • D: テスト文書 • N: 単語数 • 長さNで正規化しているイメージ
  22. 22. クロスエントロピー • 実質パープレキシティと同じ • PP(D) = 2^H(D) • D_i: 文書Dに含まれる単語
  23. 23. •応用編
  24. 24. 発展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も使用している
  25. 25. 発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) • Stupid back off – 文字通りstupidだが、意外とうまくいく – Discoutingなし • 確率ではなくスコア – α = 0.4 • Unigramは
  26. 26. 発展2:大規模データによる言語モ デル (Brants+ EMNLP 2007) BLEU scoreは stupid backoffの 方が上!
  27. 27. 発展3:ベイズ階層言語モデル • Hierarchical Dirichlet Language Model (Mackay, NLE 1998) – Kneser-neyにPPで勝てない。。。 • Hierarchical Pitman-Yor Language Model (Teh, ACL 2006) – Priorをディリクレ過程ではなくPitman-Yor過程に変えたら Modified Kneser-neyと同じぐらい! • Nested Pitman-Yor Language Model (持橋+, ACL 2009)
  28. 28. • ツールキットのお話
  29. 29. 主な言語モデルツール • CMU-Cambridge language model toolkit – 自分が使ったやつ – Kneser-neyがないのであまりおすすめしない • SRI language model toolkit – Kneser-neyはある – Bengioらもこれを使った。多分これが一番使わ れている?
  30. 30. CMU(と多分他のツールもある) オプション • 段落や文章の終わりはどう扱う? • Force back-off – P(おはよー| <BOS>, <EOS>,!,おはよう) = P(おはよー | <BOS>) <BOS> おはよう ! <EOS> <BOS> おはよー ! <EOS>
  31. 31. 実際のコマンド (CMU toolkit) • -backoff_from_ccs_inc – Inclusive force back offを指定 – P(おはよー| <BOS>, <EOS>,!,おはよう) • P(おはよー | <BOS>): inclusive • P(おはよー): exclusive • -include_unks – 未知語をPerplexity算出に含めるか – 同じ文字トークン(<unk>)として扱うか – 別々の文字トークン(<unk_1>, <unk_2>…)
  32. 32. 参考文献 • 日本語入力を支える技術 • StanfordのNLPの授業 – https://class.coursera.org/nlp/lecture • 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

×