譯者序
當次閱讀本書的時候,我深感它就是目前尋求自然語言處理和深度學習入門及進階方法的讀者所需要的。
眼下自然語言處理在人工智能世界大放異彩,渴望徜徉其中的讀者眾多。我在自然語言處理方面有研究基礎,此前也翻譯過一些該領域的前沿文章,希望這份譯本能幫助想通過Python工具深入鑽研自然語言處理的讀者。
本書是利用Python語言解決自然語言處理多種任務的應用指南,旨在幫助讀者快速瀏覽自然語言處理的全貌,進而掌握自然語言處理各項任務的基本原理,終快速踏入實踐階段。Python編程語言以其清晰簡潔的語法、易用性和可擴展性以及豐富龐大的庫深受廣大開發者的喜愛。Python內置了非常強大的機器學習代碼庫和數學庫,使它理所當然地成為自然語言處理的開發利器。而其中的NLTK是使用Python處理自然語言數據的領先平臺。它為各種語言資源(比如WordNet)提供了簡便易用的界面,它還能用於高效完成文本預處理、詞性標注、信息抽取和文本分類等多種自然語言處理任務。
值得一提的是,本書特別涵蓋了自然語言處理的高階任務,比如主題識別、指代消解和創建聊天機器人等。本書後兩章介紹了深度學習在自然語言處理中的應用。每一節都大致包含三個部分:準備工作、如何實現和工作原理,對自然語言處理各種任務的方方面面都有所涉及。這意味著,如果讀者能夠踏實地完成本書中給出的所有實例,就能切實掌握自然語言處理各種任務的基礎技術和原理方法,為進一步學習和研究奠定基礎。換言之,深入閱讀本書,對讀者探索深度學習技術在自然語言處理中的應用會有極大幫助。
後,感謝機械工業出版社華章公司的編輯,是他們的鼓勵和支持使得本書中文版能夠與讀者見面。感謝武文雅和李興亞等多位研究生的輔助和校對,感謝我的家人的支持。盡管我們努力準確地表達出作者介紹的思想和方法,但仍難免有不當之處。若發現譯文中的錯誤,敬請指出,我們將非常感激,請將相關意見發往chenyf@bjtu.edu.cn。
陳鈺楓
2018年11月
親愛的讀者,感謝你選擇本書來開啟你的自然語言處理(Natural Language Processing, NLP)之路。本書將從實用的角度帶領你由淺入深逐步理解並實現NLP解決方案。我們將從訪問內置數據源和創建自己的數據源開始指引你踏上這段旅程。之後你將可以編寫復雜的NLP解決方案,包括文本規範化、預處理、詞性標注、句法分析等。
在本書中,我們將介紹在自然語言處理中應用深度學習所必需的各種基本原理,它們是目前的技術。我們將使用Keras軟件來討論深度學習的應用。
本書的出發點如下:
內容設計上旨在通過細節分析來幫助新手迅速掌握基本原理。並且,對有經驗的專業人員來說,它將更新各種概念,以便更清晰地應用算法來選擇數據。
介紹了在NLP中深度學習應用的新趨勢。
本書的組織結構
第1章教你使用內置的NLTK語料庫和頻率分布。我們還將學習什麼是WordNet,並探索其特點和用法。
第2章演示如何從各種格式的數據源中提取文本。我們還將學習如何從網絡源提取原始文本。後,我們將從這些異構數據源中對原始文本進行規範並構建語料庫。
第3章介紹一些關鍵的預處理步驟,如分詞、詞干提取、詞形還原和編輯距離。
第4章介紹正則表達式,它是基本、簡單、重要和強大的工具之一。在本章中,你將學習模式匹配的概念,它是文本分析的一種方式,基於此概念,沒有比正則表達式更方便的工具了。
第5章將學習如何使用和編寫自己的詞性標注器和文法規則。詞性標注是進一步句法分析的基礎,而通過使用詞性標記和組塊標記可以產生或改進文法規則。
第6章幫助你了解如何使用內置分塊器以及訓練或編寫自己的分塊器,即依存句法分析器。在本章中,你將學習評估自己訓練的模型。
第7章介紹信息抽取和文本分類,告訴你關於命名實體識別的更多信息。我們將使用內置的命名實體識別工具,並使用字典創建自己的命名實體。我們將學會使用內置的文本分類算法和一些簡單的應用實例。
第8章介紹高階自然語言處理方法,該方法將目前為止你所學的所有課程結合到一起,並創建應對你現實生活中各種問題的適用方法。我們將介紹諸如文本相似度、摘要、情感分析、回指消解等任務。
第9章介紹深度學習應用於自然語言處理所必需的各種基本原理,例如利用卷積神經網絡(CNN)和長短型記憶網絡(LSTM)進行郵件分類、情感分類等,後在低維空間中可視化高維詞彙。
第10章描述如何利用深度學習解決前沿的問題,包括文本自動生成、情景數據問答,預測下一個詞的語言模型以及生成式聊天機器人的開發。
本書需要你做什麼
為了成功完成本書的實例,你需要在Windows或Unix操作繫統上安裝Python
3.x及以上版本,硬件要求:CPU
2.0GHz以上,內存4GB以上。就Python開發的IDE而言,市場上有許多可用的IDE,但我喜歡的是PyCharm社區版。它是一款由JetBrains開發的免費開源工具,它的技術支持很強大,會定期發布該工具的升級和修正版本,你隻要熟悉IntelliJ就能保持學習進度順暢。
本書假設你已經了解Keras的基本知識和如何安裝庫。我們並不要求讀者已經具備深度學習的知識和數學知識,比如線性代數等。
在本書中,我們使用了以下版本的軟件,它們在的版本下都能很好地運行:
Anaconda 34.3.1 (Anaconda 中包括所有Python及相關包, Python 3.6.1, NumPy
1.12.1, pandas0.19.2)
Theano0.9.0
Keras2.0.2
feedparser5.2.1
bs44.6.0
gensim3.0.1
本書的讀者對像
本書適用於想利用NLP提升現有技能來實現高階文本分析的數據科學家、數據分析師和數據科學專業人員,建議讀者具備自然語言處理的一些基本知識。
本書也適用於對自然語言處理知識毫無了解的新手,或是希望將自己的知識從傳統的NLP技術擴展到的深度學習應用技術的有經驗的專業人士。
小節
在本書中,有幾個標題經常出現(準備工作、如何實現、工作原理、更多、參見)。為了明確說明如何完成一個實例,本書使用了如下內容排布:
準備工作
本節介紹完成實例的預期結果,並說明如何安裝所需的軟件或初步設置。
如何實現
本節包含完成實例所需遵循的步驟。
工作原理
本節通常對上一節的操作進行詳細的解釋。
更多
本節包含實例的補充信息,以便讀者對實例的實現方法有更多的了解。
參見
本節為實例的其他有用信息提供有效的鏈接。
約定
在本書中,你會發現許多不同類型信息的文本格式。下面是這些格式的一些範例和它們的含義解釋。
讀者反饋
歡迎讀者的反饋。讓我們知道你對本書的看法,哪些部分喜歡還是不喜歡。讀者反饋對我們來說很重要,因為它有助於我們了解讀者真正能從中獲益多的地方。將你的反饋發送到郵箱feedback@packtpub.com即可,並且在你的郵箱標題中提到本書的書名。如果你有一個擅長或是比較感興趣的話題,可以撰寫或投稿書刊,請在www.packtpub.com/authors網站上查看作者指南。
客戶支持
既然你是一本Packt書的擁有者,在購買時能夠獲得很多額外的資源。
示例代碼下載
你可以從http://www.packtpub.com通過個人賬號下載本書的示例代碼文件。如果你在別處購買了本書,可以訪問http://
www. packtpub.com/support並進行注冊,就可以直接通過郵件方式獲得相關文件。你可以按照以下步驟下載代碼文件:
1.使用你的電子郵件地址和密碼登錄或注冊到我們的網站;
2.將鼠標指針置於頂部的SUPPORT選項卡上;
3.點擊Code Downloads & Errata;
4.在Search框中輸入圖書的名稱;
5.選擇你要下載的代碼文件的相應圖書;
6.從你購買本書的下拉菜單中選擇;
7.點擊Code Download。
你也可以在Packt出版社網站關於本書的網頁上通過點擊Code Files按鈕來下載代碼文件。通過在Search框中輸入圖書的名稱來訪問該頁面。請注意,你需要登錄到你的Packt賬戶。一旦文件被下載,請確保你使用的是版本的工具解壓文件夾:
WinRAR/7-Zip for Windows
Zipeg/iZip/UnRarX for Mac
7-Zip/PeaZip for Linux
本書的代碼可從GitHub下載,托管在https://github.com/PacktPublishing/Natural-Language-Processing-with-Python-Cookbook上。其餘代碼包可以從https://github.com/PacktPublishing/上豐富的圖書和視頻目錄中獲取。請檢驗測試!