堪稱自然語言處理(NLP)的入門經典,也許被你擦肩而過了

今天給大家推薦一本自然語言處理的經典入門書,幾天前小編就想到這本書《Python自然語言處理》,自然語言處理入門或自學都很合適,堪稱NLP的入門經典書。豆瓣評分:8.2。


堪稱自然語言處理(NLP)的入門經典,也許被你擦肩而過了

來自豆瓣截圖

本書基於Python編程語言及名為自然語言工具包(Natural Language Toolkit, NLTK)的開源庫。NLTK包含大量的軟件、數據和文檔,所有這些都可以從http://www.nltk.org/上免費下載。NLTK的發行版本支持Windows、Macintosh和UNIX平臺。強烈建議你下載Python和NLTk,與我們一起嘗試書中的例子和練習。

堪稱自然語言處理(NLP)的入門經典,也許被你擦肩而過了

讀者評論這本書

不管你的編程經驗如何?初學編程?

初學編程?

堪稱自然語言處理(NLP)的入門經典,也許被你擦肩而過了

配圖來自百度

本書的前幾章適合沒有編程經驗的讀者,只要你不怕應對新概念和學習新的計算機技能。書中的例子和數以百計的分級練習,你都可以親自嘗試一下。如果你需要關於Python的更一般的介紹,http://docs.python.org/給出了Python資源列表。

初學Python?

堪稱自然語言處理(NLP)的入門經典,也許被你擦肩而過了

配圖來自百度

有經驗的程序員可以很快掌握書中的Python代碼,而把更多精力專注於自然語言處理。所有涉及的Python功能都經過精心解釋和舉例說明,你很快就會體會到Python在這些應用領域的妙用。書中的語言索引會幫你查找書中的相關論述。

已經精通Python?

你可以瀏覽一下Python的例子並且鑽研從第1章開始就提到的語言分析材料。很快你就能在這個神奇的領域展現你的技能。

堪稱自然語言處理(NLP)的入門經典,也許被你擦肩而過了

《Python自然語言處理》是一本介紹NLP的實用書籍。你將通過例子學習編寫真正的程序,並通過實踐驗證自己想法的價值。如果你沒有學過編程,本書將教你如何編程與其他編程書籍不同的是,我們提供了豐富的NLP實例和練習。我們撰寫本書時講究探究原理,無論是嚴謹的語言學還是計算分析學,我們不迴避所涉及的任何基礎理論。

我們曾經試圖在理論與實踐之間尋求折中,確定它們之間的聯繫與邊界。最終我們認識到如果不能寓教於樂,幾乎無法實現這個目標,所以我們竭盡所能寫入了很多既有益又有趣的應用和例子,有的甚至有些異想天開。

請注意本書並不是一本工具書。本書講述的Python和NLP是精心挑選的,並通過教程的形式展現的。關於參考材料,請查閱http://python.org/和http://www.nltk.org/,那裡有大量可搜索的資源。

本書也不是高深的計算機科學文章。書中的內容屬於入門級和中級,目標讀者是那些想要學習如何使用Python和自然語言分析包來分析文本的人。若想學習NLTK中更高級的算法,你可以查閱http://www.nltk.org/中的Python代碼庫,或查詢在本書中引用的其他文獻。

堪稱自然語言處理(NLP)的入門經典,也許被你擦肩而過了

Edward Loper、Ewan Klein和Steven Bird,斯坦福大學,2007年7月

Steven Bird是墨爾本大學計算機科學和軟件工程系副教授,賓夕法尼亞大學的語言數據聯盟高級副研究員。他於1990年在英國愛丁堡大學完成計算音韻學博士,導師是Ewan Klein。後來到喀麥隆開展夏季語言學研究所主持的Grassfields班圖語語言實地調查。最近,他作為語言數據聯盟副主任帶領研發隊伍花了幾年時間,創建已標註文本的大型數據庫的模型和工具。在墨爾本大學,他建立了一個語言技術研究組,並在各級本科計算機科學課程任教。2009年,史蒂芬成為計算語言學學會主席。

Ewan Klein是英國愛丁堡大學信息學院語言技術教授。於1978年在劍橋大學完成形式語義學博士學位。在蘇塞克斯和紐卡斯爾大學工作多年後,開始在愛丁堡從事教學工作。於1993年他參與了愛丁堡語言科技集團的建立,並一直與之密切聯繫。從2000年到2002年,他離開大學,在聖克拉拉的埃迪法公司的總部—愛丁堡的自然語言的研究小組擔任研發經理,負責處理口語對話。Ewan是歐洲章計算語言學協會(European Chapter of the Association for Computational Linguistics)前任主席,並且是人類語言技術(ELSNET)歐洲卓越網絡的創始成員和協調員。

Edward Loper最近完成了賓夕法尼亞大學自然語言處理的機器學習博士學位。愛德華是史蒂芬在2000年秋季計算語言學研究生課程的學生,也是教師助手和NLTK開發的成員。除了NLTK,他幫助開發了用於記錄和測試Python軟件的兩個包:epydoc和doctest。

看看這些章節裡的“為什麼”能不能解除你心中的疑惑和你想學的知識。

第1章 語言處理與Python

我們能夠很容易地得到數百萬數量級的文本。假設我們會寫一些簡單的程序,那可以用它來做些什麼?本章將解決以下幾個問題。

(1)通過將技術性較簡單的程序與大規模文本結合起來,我們能實現什麼?

(2)如何自動地提取出關鍵字和詞組,用來總結文本的風格和內容?

(3)Python編程語言為上述工作提供了哪些工具和技術?

(4)自然語言處理中有哪些有趣的挑戰呢?

第2章 獲得文本語料和詞彙資源

在自然語言處理的實際項目中,通常要使用大量的語言數據或者語料庫。本章的目的是要回答下列問題。

(1)什麼是有用的文本語料庫和詞彙資源,如何使用Python獲取它們?

(2)哪些Python結構最適合這項工作?

(3)編寫Python代碼時如何避免重複的工作?

第3章 處理原始文本

文本的最重要來源無疑是網絡。探索現成的文本集合,如我們在前面章節中看到的語料庫,是很方便的。然而,每個人都有自己的文本來源,需要學習如何訪問它們。

本章的目的是要回答下列問題。

(1)怎樣才能編寫程序訪問本地和網絡上的文件,從而獲得無限的語言材料?

(2)如何把文檔分割成單獨的單詞和標點符號,並進行文本語料上分析?

(3)怎樣編寫程序產生格式化的輸出,並把結果保存在文件中?

第4章 編寫結構化程序

現在,對Python編程語言處理自然語言的知識已經有了體會。不過,如果你是Python或者編程新手,你仍然要努力對付Python,並尚未感覺到能完全掌握它。在這一章中,我們將解決以下問題。

(1)怎麼能寫出結構良好、可讀的程序,使你和其他人能夠很容易地重用它?

(2)基本結構塊,如循環、函數及賦值,是如何執行的?

(3)Python編程的陷阱有哪些,你將如何避免它們?

第5章 分類和標註詞彙

我們早在小學就學過名詞、動詞、形容詞和副詞之間的差異。這些“詞類”不是文法家閒的沒事發明的,而是對許多語言處理任務都有幫助的分類。正如我們將看到的,這些分類源於對文本中詞分佈的簡單分析。本章的目標就是要回答下列問題。

(1)什麼是詞彙分類,在自然語言處理中它們如何使用?

(2)對於存儲詞彙和它們的分類來說什麼是好的Python數據結構?

(3)如何自動標註文本中每個詞彙的詞類?

第6章 學習分類文本

模式識別是自然語言處理的一個核心部分。以-ed結尾的詞往往是過去時態動詞(見第5章)。頻繁使用will暗示著這是新聞文本(見第3章)。這些可觀察到的模式——詞的結構和詞頻——恰好與特定方面的含義相關聯,如:時態和主題。但我們怎麼知道從哪裡開始尋找,哪一方面的形式與哪一方面的含義相關聯?

本章的目標是要回答下列問題。

(1)怎樣才能識別出語言數據中明顯用於分類的特徵?

(2)怎樣才能構建用於自動執行語言處理任務的語言模型?

(3)從這些模型中我們可以學到哪些關於語言的知識?

第7章 從文本提取信息

對於任何給定的問題,很可能已經有人把答案寫在某個地方了。以電子化提供的自然語言文本的數量真的驚人,並且與日俱增。然而,自然語言的複雜性使訪問這些文本中的信息非常困難。NLP還需要一定的發展,才能適用於各種複雜的文本。如果我們不將我們的精力集中在一個問題或“實體關係”的有限集合上,例如:“不同的設施位於何處”或“誰被什麼公司僱用”上,我們就能取得重大進展。本章的目的是要回答下列問題。

(1)如何能構建一個系統,以至從非結構化文本中提取結構化數據?

(2)有哪些穩健的方法識別一個文本中描述的實體和關係?

(3)哪些語料庫適合這項工作,如何使用它們來訓練和評估模型?

第8章 分析句子結構

前面的章節重點關注詞:如何識別它們,分析它們的結構,給它們分配詞彙類別,以及獲得它們的含義。我們還學習瞭如何識別詞序列或n-grams的模式。然而,這些方法只是觸碰到了管理句子用到的複雜約束條件的表面。我們需要一種能處理自然語言中顯著歧義的方法。我們還需要應對這樣一個事實:句子有無限的可能,而我們只能寫有限的程序來分析其結構和發現它們的含義。

本章的目的是要回答下列問題。

(1)如何使用形式化語法來描述無限的句子集合的結構?

(2)如何使用句法樹來表示句子結構?

(3)解析器如何分析句子並自動構建語法樹?

第9章 建立基於特徵的文法

自然語言具有廣泛的文法結構,用第8章中所描述的簡單方法很難處理如此廣泛的文法結構。為了獲得更大的靈活性,可改變對待文法類別如S、NP和V的方式。我們將這些原子標籤分解為類似字典的結構,以便可以提取一系列的值作為特徵。

本章的目的是要回答下列問題。

(1)怎樣用特徵擴展無關上下文文法的框架,以獲得對文法類別和產生式的更細粒度的控制?

(2)特徵結構的主要形式化屬性是什麼,如何使用它們來計算?

(3)我們現在用基於特徵的文法能獲得哪些語言模式和文法結構?

第10章 分析語句的含義

我們已經瞭解到利用計算機的能力來處理大規模文本是多麼有用。現在既然已經有了分析機制和基於特徵的文法,那麼能否做一些類似分析語句的含義的事情?本章的目的是要回答下列問題。

(1)如何表示自然語言的含義,並能通過計算機進行處理?

(2)怎樣才能將意思表示與無限制的語句集相關聯?

(3)怎樣才能通過連接意思表示與句子的程序來存儲信息?

第11章 語言數據管理

已標註的語言數據的結構化集合在NLP的大部分領域都是至關重要的;然而,在使用它們的過程中我們仍面臨著許多問題。本章的目的是要回答下列問題。

(1)如何設計一種新的語言資源,並確保它的覆蓋面、平衡及文檔支持廣泛的用途?

(2)現有數據對某些分析工具格式不兼容,如何才能將其轉換成合適的格式?

(3)有什麼好的方法來記錄已經創建的資源,從而使其他人可以很容易地找到它?

如果以上章節可以吸引到你,那麼你可以準備一本《Python自然語言處理》開始你的學習之旅了,小編祝你閱讀愉快!


分享到:


相關文章: