前 言
✤ 寫作本書的動機
自然語言處理(Natural Language Processing,NLP)是人工智慧和語言學領域的分支學科,主要研究如何讓電腦處理和運用自然語言。自然語言處理廣義上分為兩大部分,第一部分為自然語言了解,是指讓電腦「懂」人類的語言;第二部分為自然語言產生,是指把電腦資料轉化為自然語言。本書重點說明中文自然語言處理方面的最新理論、技術和進展。
自然語言處理作為一個獨立的學科誕生至今,已經半個多世紀了。與絕大多數傳統學科的最大不同是,在這半個世紀中,它始終離問題的終結遙遙無期,當人們千辛萬苦地獲得一次又一次的突破後,又會被新出現的問題無情地阻攔,而再次陷入迷惘之中。在NLP中,問題好像沒有最後解決方案,甚至連最佳做法也沒有,而只有最新現狀(State of art)。而近些年,那些歷史上的State of art 正被不斷地更新、不斷地超越。
就在十多年前,商業化的人機互動都是人們可望而不可即的目標,但現在智慧型機器人正逐漸走入市場,走入人們的生活。雖然這些技術還不夠成熟,還要解決諸多問題,即使普通大眾也能意識到,我們離人工智慧的終極目標越來越近了。
面對市場上諸多的人工智慧系統,以及背後的各種演算法理論,使我想起了一部獲獎的英國電影《模仿遊戲》。這不是一部藝術上的State of art ,卻贏得了第87 屆奧斯卡金像獎最佳改編劇本獎。在一定這部作品的諸多因素中,我認為最重要的是,它宣誓了現階段人工智慧的本質:模仿。這也是本書自始至終貫穿的主題:模仿→相似性→演算法理論。
但從另一個角度,我們希望能夠終結一些問題,即使這些問題還未獲得百分之百的解決(當然,從機率論的角度而言,沒有百分之百),不然我們很難進入以下階段的研究,整個學科只會停滯不前。幸運的是,近些年,在序列標記上的全面突破,使我們有幸將目光放到了句子的範圍,最近提出的語義依存理論,更使中文自然語言處理,無論理論還是實作都迎來了新的曙光。中文的句子分析,終於跨越了句法的錯誤,走向了語義解析的道路。相信不久的將來,在語義解析的道路上,中文NLP 將獲得更大的突破。
✤ 本書的受眾與特色
本書是一本研究中文自然語言處理方面的基礎性、綜合性書籍,有關NLP 的語言理論、演算法和工程實作的各方面,內容繁雜。為此,我們設定本書的讀者為以下幾種:
具有一定電腦程式設計基礎,對自然語言處理有興趣的非專業人員。
希望建置完整的NLP應用系統的專業工程技術人員。
大專院校電腦專業和自然語言處理專業的大學生、所究所學生。
大專院校自然語言處理專業的教師。
需要指出的是,本書是一本系統介紹認知語言學和演算法設計相結合的中文NLP 書籍,並從認知語言學的角度重新認識和分析了NLP 的句法和語義相結合的資料結構。這也是本書的創新之處。
✤ 內容及系統結構
為兼顧各方面的需求,我們對全書各部分做了精心的安排。從結構上,全書分為以下三大部分。
(1)語言理論部分:有關4個章節,第2章為中文的發展歷史;第6章為傳統的句法理論;第7章為語料庫和知識函數庫的建置理論;第8章為認知語言學理論。
(2)演算法部分:有關4個章節,第3章為中文分詞演算法;第4章為NLP中的機率圖模型演算法系統;第6章為句法的自動分析演算法,包含轉換產生語法的演算法原理,以及依存句法的應用;第9章系統介紹了神經網路到深度學習演算法系統,以及使用LSTM 實現序列標記和依存句法。本書介紹的演算法都提供開放原始碼的程式,實際下載網址已在每章介紹演算法的時候指出,讀者可參考書籍和網址的說明內容進行偵錯,快速應用於實作中。
(3)案例部分:有關4個章節,第1章為開放原始碼NLP 系統概覽及入門程式;第5章為使用機率圖模型演算法進行詞性標記、語義組塊、命名實體識別等序列標記;第9章為使用Word2Vec 的訓練詞向量模型;第10章為使用SVM 進行長句切分、使用語義角色標記分析中文敘述子等。
基本上每段理論說明之後都闢出專門的案例說明,以加深理論認識。對於重要的理論,甚至開闢專門的章節說明其實現。案例分為兩大部分,一部分是程式碼,讀者可以參考書中的程式,將其直接應用到實作中;另一部分是語料,讀者可以按書中指定的網路連結下載。