為什麼要寫這本書
這是一本關於中文自然語言處理(簡稱NLP)的書,NLP是計算機科學領域與人工智能領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。NLP是一門融語言學、計算機科學、數學於一體的科學。本書偏重實戰,不僅繫統介紹了NLP涉及的知識點,同時也教會讀者如何實際應用與開發。圍繞這個主題,本書從章節規劃到具體的講述方式,具有以下兩個特點:
個特點是本書的主要目標讀者定位為高校相關專業的大學生(統計學、計算機技術)、NLP愛好者,以及不具備專業數學知識的人群。NLP是一繫列學科的集合體,其中包含了語言學、機器學習、統計學、大數據以及人工智能等方面,尤其依賴數學知識纔能深入理解其原理。因此本書對專業知識的講述過程必須繞過復雜的數學證明,從問題的前因後果、創造者思考的過程、概率或幾何解釋代替數學解釋等一繫列迂回的路徑去深入模型的本源,這可能多少會犧牲一些嚴謹性,但是卻能換來對大多數人更為友好的閱讀體驗。
第二個特點是本書是一本介紹中文自然語言處理的書,中文分詞相對於英文分詞來說更為復雜,讀者將通過例子來學習,體會到能夠通過實踐驗證自己想法的價值,我們提供了豐富的來自NLP領域的案例。在本書的內容編制上,從知識點背景介紹到原理剖析,輔以實戰案例,所有的代碼會在書中詳細列出或者上傳Github方便讀者下載與調試,幫助讀者快速上手掌握知識點,同時可以應用到後續實際的開發項目中。在實際項目章節中,選取目前在NLP領域中比較熱門的項目,將之前的知識點進行彙總,幫助讀者鞏固與提升。本書難度適中屬於入門和擴展級讀物。
讀者將學到什麼
如何用NLP 與語言學的關鍵概念來描述和分析語言
NLP 中的數據結構和算法是怎樣的
自然語言處理目前主流的技術與方法論
信息檢索技術與大數據應用
讀者對像
1)統計學或相關IT專業學生
本書的初衷是面向相關專業的學生——大量基於理論知識的認知卻缺乏實戰經驗的人員,讓其在理論的基礎上深入了解。通過本書,學生可以跟隨本書的教程一起操作學習,達到對自己使用的人工智能工具、算法和技術知其然亦知其所以然的目的。
2)信息科學和計算機科學愛好者
本書是一部近代科技的歷史書,也是一部科普書,還可以作為一部人工智能思想和技術的教科書去閱讀。通過本書可以了解到行業先驅們在探索人工智能道路上所做出的努力和思考,理解他們不同的觀點和思路,有助於開拓自己的思維和視野。
3)人工智能相關專業的研究人員
本書具體介紹了NLP相關知識。通過本書可以了解理論知識,了解哪些纔是項目所需的內容以及如何在項目中實現,能夠快速上手。
如何閱讀本書
本書內容針對NLP從以下幾個方面進行闡述:
部分的內容包括第1、2、11章,主要介紹了NLP所需要了解的Python科學包、正則表達式以及Solr檢索。
第二部分的內容包括第5~10章的內容,主要是介紹NLP相關的各個知識點。分別是:
第3~5章主要介紹了詞法分析層面的一些技術,這一部分是NLP技術的基礎,需要讀者熟練掌握。
第6章介紹了句法分析技術,該部分目前理論研究較多,工程實踐中使用門檻相對較高,且效果多是依賴結合業務知識進行規則擴展,因此本書未做深入探討,讀者了解即可。
第7章介紹了常用的向量化方法。這些方法常用於各種NLP任務的輸入,讀者需重點掌握。
第8章介紹了情感分析相關的概念、場景以及一般做情感分析的流程,情感分析在很多行業都有應用,所以需要讀者熟練掌握。
第9章介紹了機器學習的一些基本概念,重點突出NLP常用的分類算法、聚類算法,同時還介紹了幾個案例,這章是NLP的基礎內容,需要重點掌握。
第10章介紹了NLP中常用的深度學習算法,這些方法比較復雜,但是非常實用,需要讀者耐心學習。
除了以上內容外,以下信息是在本書中涉及特定內容的解釋和說明:
內容延伸。本書每個章節都有一定的內容延伸章節,其內容是對於有興趣深入研究的讀者推薦的資料或進一步了解的知識點,由於每個主題都涵蓋很多內容,因此本書僅在內容延伸中拋磚引玉,有興趣的讀者可以加以了解和學習。
相關知識點。本書很多章節中都有“相關知識點”的內容介紹,其對特定工具、知識、算法、庫等方面做了較為詳細的介紹,它們是本書的知識堡壘。
本章小結。每章的結尾都有“本章小結”,在小結中包含4部分內容。
內容小結。內容小結是有關本章內容的總結。
重點知識。重點知識是本章重點需要讀者掌握的知識和內容。
外部參考。外部參考是本章提到過但是無法詳細介紹的內容,都在外部參考中列出,有興趣的讀者可以基於比構建自己的知識圖譜。
應用實踐。基於本章內容推薦讀者在實踐中落地的建議。
提示。對於知識點的重要提示和應用技巧,相對“相關知識點”而言,每條提示信息的內容量較少,一般都是經驗類的總結。
注意。特定需要引起注意的知識,這些注意點是應用過程中需要避免的“大坑”。
關於附件的使用方法
除了第1章外,本書的每一章都有對應源數據和完整代碼,該內容可在本書中直接找到,有些代碼需要從Github下載,地址是https://github.com/nlpinaction/learning-nlp。需要注意的是,為了讓讀者更好地了解每行代碼的含義,筆者在注釋信息中使用了中文標注,且每個程序文件的編碼格式都是UTF-8。
勘誤和支持
由於筆者水平有限,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。讀者可通過以下途徑聯繫並反饋建議或意見:
即時通訊。添加個人微信(kennymingtu)反饋問題。
電子郵件。發送E-mail到kenny_tm@hotmail.com。
致謝
在本書的撰寫過程中,得到了來自多方的指導、幫助和支持。
首先要感謝的是機械工業出版社華章公司的楊福川編輯,他在本書出版過程中給予我極大的支持和鼓勵,並為此書的撰寫提供了方向和思路指導。
其次要感謝黃英和周劍老師在自然語言處理項目和工作中提供的寶貴經驗和支持。
再次要感謝全程參與審核、校驗等工作的張錫鵬、孫海亮編輯以及其他背後默默支持的出版工作者,是他們的辛勤付出纔讓本書得以順利面世。
後感謝我的父母、家人和朋友,使得我有精力完成本書的編寫。
謹以此書獻給熱愛數據工作並為之奮鬥的朋友們,願大家身體健康、生活美滿、事業有成!
塗銘
2018年1月於上海
書籍初成,感慨良多。
在接受邀請撰寫本書時,從未想到過程如此艱辛。
感謝我的女友和家人的理解與支持,陪伴我度過寫書的漫長歲月。
感謝我的合著者——塗銘和劉樹春,與他們合作輕松愉快,給予我很多的理解和包容。
感謝參與審閱、校驗等工作的孫海亮老師等出版社工作人員,是他們在幕後的辛勤付出保證了本書的出版成功。
再次感謝一路陪伴的所有人!
劉祥
2018年1月於北京
首先要感謝我的兩位合作者——塗銘和劉祥,能夠相聚在一起寫書是緣分。當初聊到出版NLP入門書籍的想法時我們一拍即合,然而真正開始執筆纔發現困難重重,業餘時間常常被工作擠占,進度一拖再拖,在伙伴們的支持下,克服了拖延癥,順利完成本書。
特別感謝我的愛人和家人的悉心照料和支持。
感謝孫海亮老師、張錫鵬老師等出版社工作人員,沒有他們的辛勞付出就沒有本書保質保量的完成。
後感謝幫我校稿的林博、謝雨飛、陳敏,謝謝他們在生活和工作上給我的支持與幫助。
後,祝大家學習快樂。
劉樹春
2018年1月於上海