IIR12章まとめ

12章は言語モデルについて。

言語モデル

言語モデルとは何か?

まず、以下の有限オートマトンを見てみる。

この例だと

I wish I wish...

が生成される。

このように、タームとタームの関係性をモデル化したものが、言語モデルである。

確率的言語モデル

確率的言語モデルとは、言語モデルに、タームの生起確率を与えたものである。

以下の生起確率が与えられているとする。

M1 M2
frog
0.01
0.002
said
0.03
0.03
that
0.04
0.04
toad
0.01
0.0001
likes
0.02
0.04
STOP
0.2
0.2


ここで、"frog said that toad likes frog (STOP)"という文字列をsとすると、

P(s|M1) = 0.01 · 0.03 · 0.04 · 0.01 · 0.02 · 0.01 · 0.2 = 0.0000000000048

P(s|M2) = 0.01 · 0.03 · 0.05 · 0.02 · 0.02 · 0.01 · 0.02 = 0.0000000000120

この場合、P(s|M1) < P(s|M2)より、M1の方がsを生成しやすい(適合している)といえる。


以下、情報探索に言語モデルを用いることを考える。

各ドキュメントを言語モデルとして扱い、P(d|q)でドキュメントのランキングを行う。

ここで、

となるが、P(d)とP(q)は無視できるので、結局P(q|d)でランキングを行うのと同じことになる。

すなわち、クエリが言語モデルから生成される確率でランキングを行う。

では、どのようにP(q|d)を計算するのか?

まず、ナイーブベイズにおいて、条件付き独立と仮定して、以下の式を導く。

これは、以下の式と等しい。

また、 P(t|M_d)は次の式を用いて計算できる。

これで求められるように思うのだが、この求め方には1つ問題点がある。

 P(q|M_d)は積で表されているので、クエリのタームが全て含まれていないものは全て0になる。これは理不尽である。

よって、これを避けるためにスムージング処理を行う。

 M_cをドキュメントセットの言語モデルとして、以下の式を用いる。

これで上記の問題は解決される。

短いクエリの時はλは小さい方がよく、長いクエリの時はλは大きい方がよい。λの決め方が重要になってくる。

以下に例を挙げる。

  • d1 : Xerox reports a profit but revenue is down
  • d2 : Lucene narrows quarter loss but decreases further
  • q : revenue down
  • λ = 1/2

この時、

P(q|d1) = [(1/8 + 2/16)/2] · [(1/8 + 1/16)/2] = 1/8 · 3/32 = 3/256

P(q|d2) = [(1/8 + 2/16)/2] · [(0/8 + 1/16)/2] = 1/8 · 1/32 = 1/256

となり、d2の方がd1よりランキング上位になる。

LMとVSMの違い

共通点

  • tfが直接的に使われている
  • 正規化が行われている(確率は本質的に行われている)
  • cfとdfはidfと同じような効果

相違点

  • LMは確率論に基づいている
  • VSMは類似度などに基づいている
  • LMではcfを用いるが、VSMではdfを用いる