言語モデル入門
2014年4月18日
藤沼祥成
Overview
• Introduction
– 言語モデルとは?
• 基礎編
– スムージング
– 言語モデルの評価
• 応用編:言語モデルの最近の研究
• ツールキットのお話
今回メインで使用した資料
• 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)
Noisy Channel Model
(Bayes Rule applied)
• O: output, I: input
• かな漢字変換
– O: 変換候補, I: ひらがな列
– P(I|O): かな漢字モデル
• 機械翻訳:
– O: 日本語, I: 英語
– P(I|O): 翻訳モデル(言語間の対応)
言語モデル!
• 基礎編:言語モデルとスムー
ジング
シャノンゲーム
• 次の単語はなにがくる?
• I want to go to ______
• P(w | I want to go to)でモデル化しよう!
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> | ある)
スムージング
• コーパスに登場する単語は有限である。
• 例:<BOS>/我輩/は/猫/で/あ/る/<EOS>
• P(私 | <BOS>) = 0
• コーパスに登場していない単語にどう対応す
るか?(=ゼロ頻度問題)
• ⇒解決策:スムージング
スムージングの種類
• 加算スムージング ⇒ 不十分
• n-1, n-2, …と低次のn-gramを用いよう!
• 補完(interpolated)型
– 常に低次を考慮
– Interpolated Kneser-neyスムージング
• バックオフ型
– 高次の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_3 = 1
• 1回しか観測されていない単語を「未知の単
語が観測される確率」と扱う
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
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)
• アイディアは:
– 学習データで観測したn-gramは学習データ外の
未知データとくらべて頻度が高いのでDiscount
– 直前の単語の種類数を重視
• 例:bigramにおけるKneser-ney
Kneser-neyスムージング:例
• I want to go to ______
– Toyama? Fransisco?
– Fransiscoは頻度が高いが、ほぼSanの後に続く
• 通常の場合:unigramの頻度
– 単語wは現れている頻度は?
• Kneser-neyのアイディア:
– P_continuation: 単語wは直前の単語toの後に
続く単語として、未知の例かどうか?
Kneser-neyスムージングによるバ
イグラム確率
w_i-1の直後に現れる単語
の種類数
Interpolation
weight
全ての単語の直前にくる単
語の種類数
• 言語モデルの評価
パープレキシティ
• 情報理論的距離
• 低いほど言語モデルに近く、高いほどモデル
から遠い
• D: テスト文書
• N: 単語数
• 長さNで正規化しているイメージ
クロスエントロピー
• 実質パープレキシティと同じ
• PP(D) = 2^H(D)
• D_i: 文書Dに含まれる単語
•応用編
発展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の
方が上!
発展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)
• ツールキットのお話
主な言語モデルツール
• CMU-Cambridge language model toolkit
– 自分が使ったやつ
– Kneser-neyがないのであまりおすすめしない
• SRI language model toolkit
– Kneser-neyはある
– Bengioらもこれを使った。多分これが一番使わ
れている?
CMU(と多分他のツールもある)
オプション
• 段落や文章の終わりはどう扱う?
• Force back-off
– P(おはよー| <BOS>, <EOS>,!,おはよう) =
P(おはよー | <BOS>)
<BOS> おはよう ! <EOS>
<BOS> おはよー ! <EOS>
実際のコマンド (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>…)
参考文献
• 日本語入力を支える技術
• 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

言語モデル入門