12章は言語モデルについて。
言語モデル
言語モデルとは何か?
まず、以下の有限オートマトンを見てみる。
この例だと
I wish I wish...
が生成される。
このように、タームとタームの関係性をモデル化したものが、言語モデルである。
確率的言語モデル
確率的言語モデルとは、言語モデルに、タームの生起確率を与えたものである。
以下の生起確率が与えられているとする。
M1 | M2 | |
---|---|---|
frog | ||
said | ||
that | ||
toad | ||
likes | ||
STOP |
ここで、"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)を計算するのか?
まず、ナイーブベイズにおいて、条件付き独立と仮定して、以下の式を導く。
これで求められるように思うのだが、この求め方には1つ問題点がある。
は積で表されているので、クエリのタームが全て含まれていないものは全て0になる。これは理不尽である。
よって、これを避けるためにスムージング処理を行う。
をドキュメントセットの言語モデルとして、以下の式を用いる。
これで上記の問題は解決される。
短いクエリの時はλは小さい方がよく、長いクエリの時はλは大きい方がよい。λの決め方が重要になってくる。
以下に例を挙げる。
- 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を用いる