Please enable JavaScript.
Coggle requires JavaScript to display documents.
Language model for information retrieval - Coggle Diagram
Language model for information retrieval
language modeling
目標:model文字現象
分析文章用字產生language model,將與LM中的term相似的文章set high rank
classic NLP problem
1.用chain rule計算句子中term的機率
2.從歷史資料中預測下一個文字
Markov assumption
只用前幾個term來計算
uni-gram 看1個字
bi-fram 看2個字: P(wn|wn-1)
tri-gram 看3個字:P(wn|wn-1wn-2)
P(w1w2w3w4) = P(w1)P(w2)P(w3)P(w4)
1.uni-gram
2.假設互相獨立
通常會在第一個字前加dummy word用來計算P(w1)
看越少字可能預測出錯
看越多字計算困難
n-gram:P(wn|w1,...,wn-1),怎麼算?
->從text corpus(語料庫)中推論
relative frequency
可選擇dummy:
+句子?
+文章?
+文件?
relative frequency又可稱為
maximum likelihood estimate(MLE):有出現的給你機率值,沒出現的為0
因zip law,大部分的term都不會出現
會有很多sparse data
會使MLE難做 -> 使用discounting(smoothing)
Laplace's law
(adding one smoothing)
B = (文字總量) ^ (a-gram)
分子+1
分母+出現pattern的總量
problem
灌太多票
出現0次與出現1次的機率太近
出現0次的應接近0
出現1次的應接近1
Lidstone's Law
lamda依term出現比例
Jeffreus-Perks Law
lambda通常是0.5
OR
自己調
為了smoothing,有出現的term分出去的機率可能超過一半
但複雜的LM是為了推論正確文法產生的句子
unigram因以每個字預測,所以無法分辨正常的句子
μ=N/(N+Bλ)
結構:
MLE類 + uniform distribution = 1
Good-Turing estimation
PGT(w1…wn) = r* / N
r*指以一個規則調整一下出現機率
從所有出現r+1次的term中借(r+1)倍
平均分配給出現r次的種類
但不可持續沿用
-> 定出現次數門檻值k
須注意Nk計算了幾次
N指NUM of n-grams in the training corpus
LM & Generative Model
Generative model
finite automation
可認得此pattern的集合
當後面的State以出現機率呈現
->可成為LM
unigram model
可計算一個句子出現的機率
是一個bag of word model
無順序性
通常用在翻譯、語音辨識
Query likelihood model
目的:為文件ranking
P(d|q) = P(q|d) P(d) / P(q)
貝氏
1.同一個文章P(q)忽略
2.文章發生機率假設相同 -> P(d)忽略
P(q|Md):從以文件d產生的LM預測query發生的機率
若P(t|Md) = 0,相當於query裡的term以AND運算,所有term都要出現 -> MLE
mixture (doc & collection distribution)
T:所有文件裡總文字量
Cf:term在T裡的數量
如果tfw,d = 0
P(w|d) = (1-λ)Pmle(w|Mc) ≤ cfw/T
problem
僅用unigram,越複雜可行性低
每個term視為獨立
較難用於relevence feedback(使用者幫你)check,因生成LM時是以collection為主,改不到
doc與query的生成的機率像不像?
->前提:doc與query的樣本空間數量相同
Kullback-Leibler divergence (KL divergence)
為asymmetric(非對稱):KL(d||q) != KL(q||d)
doc與query越接近,KL值越接近0