1. NLP的一些基本概念和問題計算機如何處理自然語言? 理性主義:其實就是純粹使用規(guī)則的方法處理自然語言,并認為這些語言規(guī)則天生就存在人的基因中。在計算機中重現(xiàn)這些規(guī)則,就能學(xué)會人的語言處理能力。 經(jīng)驗主義:認為人有感知和學(xué)習(xí)能力,通過概括、模式識別、聯(lián)想等能力,來學(xué)習(xí)到自然語言的結(jié)構(gòu)。
哲學(xué)上的問題,類似于起源之類,就先別考慮的。
統(tǒng)計方法在NLP中的地位是什么? 統(tǒng)計方法是解決NLP問題的方法之一。
問題: 一個句子是否合乎語法?是或否,這就是句子的二值問題 如何處理語言中的歧義問題?這個是NLP的難點。歧義范圍包括詞義、詞類別、句法結(jié)構(gòu)、語義范疇。
NLP學(xué)習(xí)和練習(xí)的首要條件是什么? 建立起要解決問題和獲取語料庫。 關(guān)于語料庫,《統(tǒng)計NLP基礎(chǔ)》書里給出了幾個重要的語料庫和URL.
NLP在統(tǒng)計上的一些基本問題: 一篇文章中有多少單詞? 有多少個不同的單詞? 每個單詞出現(xiàn)頻率是多少? “詞頻” 這些基本統(tǒng)計方法的意義是什么?
什么是Zipf法則? 最小精力付出原理:用最小的力氣,做最多的事。 詞頻現(xiàn)象符合雙曲分布。而不是線性或者高斯分布 詞頻與詞的長度成反比。(這個可以用huffman編碼原理理解,是歷史演化的規(guī)律) 實詞趨向于在相鄰的位置出現(xiàn),有點聚集的意思。
2. NLP的概率論基礎(chǔ)傳統(tǒng)概率論概念: 概率空間 條件概率、獨立性 乘法定律 貝葉斯定理:這個是很多處理方法的核心。簡單實用 隨機變量、隨機分布、均值(期望)、方差 聯(lián)合分布、條件分布 二項分布(離散的)、正態(tài)分布(連續(xù)的) ----------------------- 貝葉斯統(tǒng)計: 假設(shè)先驗知識不是一成不變的,可以通過不斷的實驗,來尋找證據(jù)來更新這些先驗知識。更新方法就是貝葉斯定理。 如質(zhì)地均勻的硬幣,正面向上的概率是0.5. 即先獲取一個近似的先驗分布,是P(u) = 6m(1-m) 在實驗結(jié)果s的影響和更新下: P(u|s) = p(s|u) * p(u) / p(s) p(s)為先驗概率。若10次實驗、8次正面、2次反面,則更新后的先驗概率就為0.75. 這樣描述太粗糙了,需要仔細地看專業(yè)書來推理。
貝葉斯決策定理: 即MAP,極大后驗概率決策。 由先驗概率、先驗概率條件下各情況發(fā)生的實際情況(如次數(shù)統(tǒng)計),計算出各實際情況下先驗概率的更新。 并選擇最大的MAP的條件進行決策。
概率論部分 是基礎(chǔ),需要精心的學(xué)習(xí)一下相關(guān)概念。
3. NLP的信息論基礎(chǔ)與其緊密相關(guān)的概念有: 概率密度函數(shù) 熵的定義 求和 -p(x) log(p(x)). 它的意義:熵與編碼長度的關(guān)系,用較少比特傳輸頻率高的字符。利用熵理論,來確定 “求解不確定性的問題”所需多少資源。 熵與概率的關(guān)系緊密相連。
聯(lián)合熵、條件熵 互信息:計算兩個隨機變量之間共有信息之間的度量。 噪聲信道模型:信道容量、輸入、輸出、互信息取最大值、系統(tǒng)的概率分布。 香農(nóng)信息論的意義:1. 定義了信息容量,使信道的傳輸速率有了一個上界;2.設(shè)計適當?shù)木幋a能信道的傳輸速率最優(yōu) 基于概率進行傳輸(翻譯)。 K-L距離 交叉熵
2和3的概念在專業(yè)的書里面寫的很詳細,我在另外一篇blog里也總結(jié)過了,這里只列些緊要的東西。 http://blog.csdn.net/viewcode/article/details/8819361 http://blog.csdn.net/viewcode/article/details/8820272 http://blog.csdn.net/viewcode/article/details/9042187
4. 語言學(xué)基礎(chǔ)概念詞性、詞法:名詞、代詞、動詞、形容詞、副詞、連詞...
短語結(jié)構(gòu):名短、動短、介詞短語、副詞短語、形容詞短語
語義、語用
這些個都是比較專業(yè)的語言學(xué)知識。
現(xiàn)在自己能知道的,就是中學(xué)時學(xué)的英語的那點詞法、語法,有的勉強能理解。
5. 如何證實一個二元組是短語搭配?首先是固定短語搭配識別,二元組:
1)最簡單的方法: 統(tǒng)計兩個單詞一起出現(xiàn)的次數(shù)/頻率。這個會有很多功能詞組合(如of the)的干擾,效果并不好。
2)利用詞性過濾器:如形容詞+名詞、名詞+名詞、形容詞+形容詞+名詞等。效果會很好。
觀點:利用簡單的統(tǒng)計技術(shù)+語言學(xué)知識(特征) 是很有用途的。
非固定詞語搭配, 如knock on the door, knock his door, knock on the metal door.
對于這種非固定距離的搭配,采用的方法是 取一個搭配窗口,窗口中每個詞對都作為候選的搭配詞對,然后統(tǒng)計頻率。這樣會稍微擴大了一下計算量。
對于高頻候選對,還可以統(tǒng)計其距離的均值和方差。距離均值和偏差是兩個詞之間的分布的重要特征。
若存在的是高偏差,那么這種搭配距離不固定,可能不是很有吸引力,而低偏差的搭配,說明詞對的距離基本恒定,這個是一個很有意思的特征。
6. 如何對檢測出的“詞對”進行檢驗?問題描述:應(yīng)用5中的方法,檢測出一個高頻詞對,并且是低偏差的。如 new 和companies,這個是可能的,它們并不是詞對,僅僅是偶然同時出現(xiàn)在一個區(qū)域。
如何對這種詞對進行假設(shè)檢驗?
若詞w1,w2是完全獨立產(chǎn)生的,那么P(w1, w2) = P(w1) * P(w2)
一般采用t分布,對均值進行假設(shè)檢驗。
低于a=0.005的置信水平的假設(shè),即t 值小于 2.56,是會被拒絕的。
t分布也可以用來檢測兩個相近意義的詞之間的差別。如strong和powerful的差別
t分布的假設(shè)前提:所有分布都服從正態(tài)分布。
其他檢驗方法:
卡方分布
似然比分布
7. 兩個詞之間的互信息如何度量?兩個詞同時互現(xiàn)的互信息為 I (x, y)= log [ p(x, y) / p(x)p(y) ] = log [p(x|y) / p(x)] = log[p(y|x) / p(y)]
它 表明了兩個詞語之間有多大的聯(lián)系。 若 x, y不相關(guān),則 I(x, y)= log 1 = 0; 若x,y相關(guān),則x,y完全相關(guān)時,p(x)=p(y), 則 I(x,y)= log [1 / p(x)].
8. 什么是shannon游戲? n元語法模型?經(jīng)典的語言建模問題,采用統(tǒng)計的方法,根據(jù)當前詞來預(yù)測下一個詞,可以用來拼寫糾錯,手寫識別,機器翻譯等等,也可以用于語義消岐和概率句法分析。
n元語法模型:
單詞預(yù)測可以用下面的概率方程來表示
P(wn | w1 w2...wn-1),利用前面已經(jīng)出現(xiàn)的n-1個詞,來預(yù)測第n個詞,這個就是n-1階的馬爾可夫模型,或叫n元語法模型。
n元語法模型的數(shù)量:
若一共有N個詞,那么 窮舉n個詞組合的詞表約有 N^(n-1) * (N-1) 個
2階,3階,4階語言模型還是有可能的,目前而言5階的語法模型就太大了。google的機器翻譯語言模型目前應(yīng)該是4階的。
如何減小詞表?
一個方法就是減小n的值,但n減小后,其推斷能力也會受到影響。
另外一個方法就是使用詞干化方法,刪除詞語的變形結(jié)尾,或使用語義類聚類的方法,構(gòu)造等價類,減少詞表的規(guī)模。
除了詞匯,還應(yīng)該考慮句子的結(jié)構(gòu),才能獲取更好的結(jié)果。
9. 如何對n元語法模型進行統(tǒng)計估計?繼續(xù)使用概率的方式,求解P(wn | w1 w2...wn-1)
P(wn | w1 w2...wn-1) = P(w1 w2...wn) / P(w1 w2...wn-1)
1)最大似然估計
P(w1 w2...wn) = C(w1 w2 ... wn) / N, C是n元組出現(xiàn)的頻率,而N是訓(xùn)練實例的個數(shù)。
這個是最大似然估計的推導(dǎo)結(jié)果。
但最大似然估計有時不太適合NLP統(tǒng)計推理,因為數(shù)據(jù)稀疏的原因,數(shù)據(jù)不足就無法獲取完整的概率分布。
采樣訓(xùn)練數(shù)據(jù)不足,也可以用折扣的方法來彌補,即采用平滑的方法,將少量概率分配到?jīng)]有看到的事件上去。
要分配多少概率到?jīng)]有看到的事件上去哪?
2)Laplace法則,又稱加1法
P(w1 w2...wn) = [C(w1 w2 ... wn) + 1] / (N+B)
這個方法的依據(jù)就貝葉斯估計,每個n元組都有相同的可能性,這個是假設(shè)的前提(?這個需要后續(xù)的理解)
方法缺點:依賴于詞表的大小,對于大詞表上的稀疏數(shù)據(jù)集,Laplace法則將太多的數(shù)據(jù)轉(zhuǎn)移到未知事件上。
3)LidStone法則
Laplace平滑法則,缺點比較明顯,其改進就是,將加1改為一個較小的值lamda。
P(w1 w2...wn) = [C(w1 w2 ... wn) + lamda] / (N+B*lamda)
常用的lamda值是0.5. 這個值是可以看做是最大似然估計和統(tǒng)一的先驗概率論之間的線性插值。
這種方法的缺點: 需要猜想一個合理的lamda值,而且在低頻情況下,這種方法在最大似然估計上的概率與經(jīng)驗分布不太相符。
4)什么是留存估計? 就是一個數(shù)據(jù)集,一部分用來訓(xùn)練,另外一部分留存的數(shù)據(jù)用來驗證。 在訓(xùn)練的數(shù)據(jù)上進行驗證是不正確的。 在不同的數(shù)據(jù)集上進行測試是必要的。 在訓(xùn)練數(shù)據(jù)上,交叉熵的值要比真實文本的熵低。
可以使用留存的數(shù)據(jù)來計算 轉(zhuǎn)移的概率有多大。 5)交叉驗證
相對于留存估計法,交叉驗證是更有效率的,即訓(xùn)練數(shù)據(jù)的每一部分既作為訓(xùn)練數(shù)據(jù),又作為留存驗證數(shù)據(jù)。
缺點: 這種方法對低頻仍然不太適用,它在較小語料庫上,會導(dǎo)致對未知事件概率的估計偏高。
6)Good-Turing估計、古德-圖靈估計法(兩個人)
是一種平滑算法:
即將每個類別發(fā)生的頻率r,變?yōu)?r* = (r+1) * n(r+1) / nr, n(r+1)是訓(xùn)練語料中發(fā)生r+1次 N元組的個數(shù),nr是訓(xùn)練語料中發(fā)生r次的N元組的個數(shù)。即調(diào)整后,每個類別的發(fā)生頻率是由相鄰兩個類別決定。
而其概率也變?yōu)?Pr = r* / N, 這里的大N是語料庫中種類個數(shù)。
從1到無窮大,所有發(fā)生的概率之和是小于1的。而剩余這部分概率就 n1 / N, 可以作為分配給未知事件的概率。
7) 常用的組合方法有哪些?
在多種模型獲取不同的結(jié)果時,可以采用組合模型的方法,來獲取更好的結(jié)果。
常用的方法有:
線性插值法
Katz退避法:對于頻度小于某閾值的詞,降低其頻度,頻度越小,下降就越多。這樣未看見的詞也會有一定的頻率
10. 什么是語義消岐?有哪些處理算法?語義有歧義,主要是因為歧義詞在不同的語境有不同的含義。消岐的任務(wù)就是根據(jù)上下文環(huán)境確定一個歧義詞的確切含義。
1)一些常用概念:
語義消岐的方法一般分為兩類:
有監(jiān)督方法: 一般是指分類任務(wù),可以推斷出分類函數(shù)的形態(tài)。但其需要標注好的語料,標注的工作比較麻煩。
無監(jiān)督方法: 一般是指聚類任務(wù)。
偽詞:合并兩個或多個自然詞來創(chuàng)建一個偽詞,用于測試數(shù)據(jù)。人工構(gòu)建含有歧義的文本。
算法的上下界:不同的歧義詞,區(qū)分難度不同,應(yīng)該區(qū)別對待,制定不同的區(qū)分標準。上界一般是指人工的區(qū)分度,而下界是指最簡單算法的區(qū)分度。
2) 有監(jiān)督消岐
有監(jiān)督學(xué)習(xí)算法有很多種,而NLP中最常用的兩個理論是 貝葉斯分類 和 信息論。
貝葉斯分類:
MAP, 最大化后驗概率。計算一個詞的后驗概率時,需要兩個條件:
一是統(tǒng)計出 這個詞在每種語義中出現(xiàn)的概率Sk。
二是統(tǒng)計出 這個詞在每種語義中被正確分類的概率c|Sk
然后就可以計算出 這個詞 是處于哪種語義中的概率。
其算法偽代碼如下:
基于信息論的算法:
Flip-Flop算法,用于處理兩個語義的情況。
待詳細補充。
偽代碼如下:
3)基于詞典或類義辭典的消岐
利用詞典的解釋來確定其語義
4) 無監(jiān)督消岐
采用EM算法將有歧義詞的上下文聚類到很多組中。
這塊需要多熟悉點其他的東西才好消化。
后面對以上概念和算法,可以用natural language processing with python來實踐一下。
http://blog.csdn.net/viewcode/article/details/10542007
|
|