文档排序模型--查询似然Query Likelihood
在概率模型中,我們定義排序函數是基于文檔與查詢之間的相關度、可能性來做的。f(d,q) = p(R=1|d,q), R ∈ {0,1}。概率模型有幾個小分類:
經典概率模型——>BM25
語言模型Language Model —–>Query Likelihood
Divergence from randomness—–>PL2
1 查詢似然算法
語言模型的假設是:p(R=1|q,d)≈p(q|d,R=1),文檔與查詢相關的概率約等于 在文檔相關的前提下,用戶輸入q的概率。
1.1 概率模型的基本概念
給定下面這個表格,收集了不同用戶基于不同query,認為文檔是否相似。
f(q,d)=p(R=1|q,d)=count(q,d,R=1)count(q,d)
例如p(R=1|q1,d1) = 1/2;p(R=1|q1,d2)=2/2….
這里的問題是對于不在表格中的查詢,不在表格中的文檔怎么處理?
1.2 查詢似然算法
解決上述問題,我們換個角度計算一下上面那個表格中,在文檔d1相關的前提下,用戶輸入q1的概率是多少。如果概率越高則q1與d1的相關度就越高。
需要提出一個假設:用戶輸入的查詢詞是基于想象的相關文檔。
2 統計語言模型LM
2.1 LM的概念
語言模型LM是一個基于單詞序列的概率分布。
p(“Today is Wednesday”) ≈ 0.001
p(“Today Wednesday is”) ≈ 0.0000000000001
同樣的3個詞,概率相差很大。這說明語言模型是基于上下文的。這個模型也可以理解為生成一個文本的概率。所以又被稱為生成模型generating model。這是一種可以生成單詞的隨機系統。
2.2 LM為什么有效
1 LM量化了自然語言的不確定性。
2 能夠解決以下問題
speech recognition:已經看到單詞“John” , “feels”,那繼續看到的單詞更可能是“happy”而不是”habit”。
text categorization, information retrieval:一篇新聞文章中提到三次”baseball”,一次”game”,這篇文章是新聞的概率。
information retrieval:已知一個用戶喜歡體育,那他輸入”baseball”的概率是多大。
2.3 最簡單的語言模型:一元模型
一元模型在生成文本的時候詞與詞之間是獨立的:p(w1,w2...,wn)=p(w1)p(w2)...p(wn)。這里有n個參數p(w1)、p(w2)…。生成的文本就是簡單的從詞的概率分布中抽取詞匯。例如p("TodayisWend")=p("Today")p("is")p("Wend")。
我們可以使用Topic1的詞分布產生一篇 關于Text mining的文章。我們可以使用Topic2的詞分布產生一篇關于 Food nurtrition的文章。當然我們也可以用Topic1的詞分布產生一篇關于 Food nurtrition的文章,但這樣的事情概率很低。這是依據詞分布生成文章。
接著我們換個角度。如果現在有一篇文檔(已知文章的詞的總量,每個詞的詞頻),現在推測哪種詞模型可能產生這樣一篇文檔,假設文章是由分布中的詞匯組裝而成的。
p(text)=? p(mining)=?…..
一種很直接的想法是用詞頻/詞的總數:p(text)=10100,p(mining)=5100…..
這種方法被稱為極大似然估計(Maximum Likelyhood Estimator ):p(w|θ)=p(w|d)=c(w,d)|d|
對于沒有出現在文檔中的詞,p(w|d)=0。
一元模型的用途。
用途1:表示不同的主題。這里涉及到通用模型,集合模型,文檔模型。
用途2:做詞的關聯分析。從語義上來講,哪些詞和”computer”最接近?第一步,我們從包含”computer”的文檔中得到每次的極大似然估計概率,將概率從大到小排序;第二步,我們找到這些詞中有很多是通用詞庫的詞,與”computer”無關,我們可以使用通用詞庫,得到通用詞庫每個詞的極大似然估計概率。第三步,使用者兩個模型,得到的詞就是與”computer”相關的詞。例如我們可以使用通用模型詞的概率將第一步得到的概率normalize(規則化):p(w|"computer")p(w|B)
3 極大似然函數與一元模型
3.1 基本模型
在統計語言模型中,我們提出:如果用戶想要查找的是文檔d,那用戶有多大可能性提出這個特殊的查詢
例如文檔d=”… news of presidential campaign … presidential candidate …”
p(q=“presidentialcampaign”|d)=?
現在,我們假設用戶以此文檔為基準,來提出一個查詢,并且查詢該文檔。使用一元模型的極大似然思想:p(q=“presidentialcampaign”|d)=p("presidential"|d)?p("campaign"|d)=c("presidential",d)|d|?c("campaign",d)|d| (一元模型,就假設了查詢中每個單詞的產生是相互獨立的)
3.2 升級版模型
如果q = “presidential campaign update”,每個文檔中都沒有”update”這個詞,概率p=0,這個時候就出現問題了。
問題出在,如果假設用戶查詢的詞都出在某一個文檔(a document),但實際上用戶是看過很多文檔,他查詢的詞更可能出在于一個文檔模型(a document model)。
從圖中可以看出從文檔模型產生文檔,從文檔模型產生查詢。
這樣的模型該怎么計算呢?分兩個步驟:1、計算文檔模型(Document Language Model);2、計算每個詞在文檔模型中概率的乘積。
q=w1w2...wn
p(q|d)=p(w1|d)?p(w2|d)....?p(wn|d)
f(q,d)=logp(q|d)=∑ni=1logp(wi|d)=∑W∈Vlogp(w|d)
我的問題:增強版與簡單版本的思想從字面上的區別看從“文檔” 變成了“文檔語言模型”。我最開始的想法是“文檔語言模型”是由很多文檔組成的一個文檔集,但是看老師的ppt又認為不是這么回事。我需要再找資料查明什么是文檔語言模型。
3.3 p(w|d)=?
對于p(w|d)不同的估計方法會形成不同的不同的排序函數。
第一種估計方法是極大似然估計。pML(w|d)=c(w,d)|d|
對于沒有出現在文旦中的詞,我們需要平滑技術,為那些沒有出現在文檔中的詞給一個概率。
一種解決方法是從一個引用語言模型查詢出一個概率。這個引用語言模型可以是Collection Language Model.
最后得到的排序函數是:
f(q,d)=log(p|d)=∑wi∈q,wi∈d[c(wi,q)?logpseen(wi|d)αdp(wi,C)]+nlogαd+∑ni=1logp(wi|C)
這是公式是經過變形的,為了方便計算得到的。同時,這個公式也更像TF-IDF得到的計算公式。
pseen(wi|d)扮演了類似TF的角色。
p(wi,C),在分母上,更像是IDF。
αd類似于文檔長度因子。它表示究竟想給未見過的單詞多大的概率。如果文檔本身很長,可能給的概率就會小一些;如果文檔本身很短,給的概率就會大一些。
3.4 平滑方法
pseen(wi|d)=?
αd=?
上面的公式留下了兩個問題。
3.4.1 線性插入法
Linear Interpolation (Jelinek-Mercer) Smoothing:固定系數
結合極大似然算法:
p(w|d)=(1?λ)c(w,d)|d|+\lambdap(w|C),λ∈[0,1]
αd=λ
fJM(q,d)=∑W∈q,W∈dc(w,q)log[1+1?λλc(w,d)|d|p(w|C)]
3.4.2 狄利克雷
Dirichlet Prior (Bayesian) Smoothing 動態系數修改,添加偽計數
αd=μ|d|+μ
fDIR(q,d)=[∑W∈q,W∈dc(w,q)log[1+c(w,d)μp(w|C)]]+nlogμμ+|d|
按照查詢似然的方式得到了和VSM類似的結果。不同的解決思路,過程中需要增加填補的方式也不同。
查詢似然->一元語言模型->文檔語言模型->平滑
位向量->詞頻->TF-IDF->TF變形->懲罰長文檔
總結
以上是生活随笔為你收集整理的文档排序模型--查询似然Query Likelihood的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis错误之配置文件属性配置问题
- 下一篇: 九九乘法表的C语言实现