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