自然語言處理的基本任務(wù)
自然語言(Natural?Language)其實(shí)就是人類語言,自然語言處理(NLP)就是對人類語言的處理,當(dāng)然主要是利用計(jì)算機(jī)。自然語言處理是關(guān)于計(jì)算機(jī)科學(xué)和語言學(xué)的交叉學(xué)科,常見的研究任務(wù)包括:
早期的自然語言處理系統(tǒng)主要是基于人工撰寫的規(guī)則,這種方法費(fèi)時費(fèi)力,且不能覆蓋各種語言現(xiàn)象。上個世紀(jì)80年代后期,機(jī)器學(xué)習(xí)算法被引入到自然語言處理中,這要?dú)w功于不斷提高的計(jì)算能力。研究主要集中在統(tǒng)計(jì)模型上,這種方法采用大規(guī)模的訓(xùn)練語料(corpus)對模型的參數(shù)進(jìn)行自動的學(xué)習(xí),和之前的基于規(guī)則的方法相比,這種方法更具魯棒性。
統(tǒng)計(jì)語言模型
統(tǒng)計(jì)語言模型(Statistical Language Model)就是在這樣的環(huán)境和背景下被提出來的。它廣泛應(yīng)用于各種自然語言處理問題,如語音識別、機(jī)器翻譯、分詞、詞性標(biāo)注,等等。簡單地說,語言模型就是用來計(jì)算一個句子的概率的模型,即![]()
利用語言模型,可以確定哪個詞序列的可能性更大,或者給定若干個詞,可以預(yù)測下一個最可能出現(xiàn)的詞語。舉個音字轉(zhuǎn)換的例子來說,輸入拼音串為nixianzaiganshenme,對應(yīng)的輸出可以有多種形式,如你現(xiàn)在干什么、你西安再趕什么、等等,那么到底哪個才是正確的轉(zhuǎn)換結(jié)果呢,利用語言模型,我們知道前者的概率大于后者,因此轉(zhuǎn)換成前者在多數(shù)情況下比較合理。再舉一個機(jī)器翻譯的例子,給定一個漢語句子為李明正在家里看電視,可以翻譯為Li Ming is watching TV at home、Li Ming at home is watching TV、等等,同樣根據(jù)語言模型,我們知道前者的概率大于后者,所以翻譯成前者比較合理。
由于上式中的參數(shù)過多,因此需要近似的計(jì)算方法。常見的方法有n-gram模型方法、決策樹方法、最大熵模型方法、最大熵馬爾科夫模型方法、條件隨機(jī)域方法、神經(jīng)網(wǎng)絡(luò)方法,等等。
n-gram語言模型
n-gram模型的概念
n-gram模型也稱為n-1階馬爾科夫模型,它有一個有限歷史假設(shè):當(dāng)前詞的出現(xiàn)概率僅僅與前面n-1個詞相關(guān)。因此上面的公式可以近似為:
n-gram模型的解碼算法
為什么n-gram模型需要解碼算法呢?舉個例子來說,對于音字轉(zhuǎn)換問題,輸入拼音nixianzaiganshenme,可能對應(yīng)著很多轉(zhuǎn)換結(jié)果,對于這個例子,可能的轉(zhuǎn)換結(jié)果如下圖所示(只畫出部分的詞語節(jié)點(diǎn)),各節(jié)點(diǎn)之間構(gòu)成了復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),從開始到結(jié)束的任意一條路徑都是可能的轉(zhuǎn)換結(jié)果,從諸多轉(zhuǎn)換結(jié)果中選擇最合適的結(jié)果的過程就需要解碼算法。
常用的解碼算法是viterbi算法,它采用動態(tài)規(guī)劃的原理能夠很快地確定最合適的路徑。這里就不詳細(xì)介紹該算法了。
轉(zhuǎn)載自:http://blog.sciencenet.cn/blog-357889-371189.html