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