研究人類語言的過程稱為NLP。深入研究語言的人稱為語言學家,而「計算語言學家」這個專有名詞適用於應用計算研究語言處理的人。從本質上講,計算語言學家是深入了解語言的計算機科學家,計算語言學家可以運用計算技能,對語言的不同方面進行建模。計算語言學家解決的是語言理論方面的問題,NLP只不過是計算語言學的應用。
NLP更多探討的是應用計算機,處理不同語言的細微差別,以及使用NLP技術構建現實世界的應用。在實際情景下,NLP類似於教孩子學語言。一些最常見的任務(如理解單詞和句子,形成在語法和結構上正確的句子)對人類而言是很自然。在NLP領域,把這樣的一些任務轉化為標記解析(tokenization)、組塊(chunking)、詞性標註(part of speech tagging)、解析(parsing)、機器翻譯(machine translation)、語音識別(speech recognition),這些任務中的大部分依然是計算機所面臨的最嚴峻的挑戰。
本節從Gartner的技術成熟度曲線開始討論,從這條曲線上,你可以清楚地看到NLP處在技術成熟度曲線的頂部。目前,NLP是行業所需的稀有技能之一。在大數據到來之後,NLP面臨的主要的挑戰是,NLP需要大量不但精通結構化數據而且擅長於處理半結構化或非結構化數據的技術人員。我們正在生成拍字節量級的網絡博客、推特信息、臉書(Facebook)的推送信息、聊天記錄、電子郵件和評論。一些公司正在收集所有這些不同種類的數據,以便更好地為客戶定位,並從中得到有意義的見解。為了處理這些非結構化數據源,我們需要了解NLP的技術人員。
我們身處資訊時代;我們甚至不能想像生活中沒有谷歌。我們使用Siri來處理大多數基本的語音功能。我們使用垃圾郵件過濾器過濾垃圾郵件。在Word文檔中,我們需要拼寫檢查器。在我們周圍,存在許多NLP在現實世界中應用的例子。
(圖片來自gartner網站)
下面也提供一些你能夠使用但是沒有意識它們是建立在NLP上的令人讚嘆的NLP應用的示例。
構建這些應用需要一種非常特殊的技能集,你需要對語言非常了解,並具有可以有效處理語言的工具。因此,讓NLP成為最具優勢的領域之一的原因不是廣告宣傳,而是可以使用NLP創建的這種應用使得NLP成為必備的最獨特技能之一。
為了實現上述的一些應用,以及其他基本的NLP預處理,我們有很多可用的開源工具。在這些工具中,有一些是某些組織為建立自己的NLP應用而開發的,而有一些是開源的。這裡是一張可用的NLP工具列表。
自然語言處理書單
[美] Steven,Bird Ewan,Klein Edward,Loper 著,陳濤,張旭,崔楊,劉海平 譯
這是一本關於自然語言處理的書。所謂「自然語言」,是指人們日常交流使用的語言,如英語、印地語、葡萄牙語等。相對於程式語言和數學符號這樣的人工語言,自然語言隨著一代代的傳遞而不斷演化,因而很難用明確的規則來確定。從廣義上講,「自然語言處理」(Natural Language Processing,NLP)包含所有用計算機對自然語言進行的操作,從最簡單的通過計數詞彙出現的頻率來比較不同的寫作風格,到最複雜的完全「理解」人所說的話,或至少達到能對人的話語作出有效反應的程度。
這本書提供自然語言處理領域的入門指南。它可以用來自學,也可以作為自然語言處理或計算語言學課程的教科書,或是作為人工智慧、文本挖掘、語料庫語言學課程的補充讀物。本書實用性強,包括上百個實例和分級練習。
本書基於Python程式語言及名為自然語言工具包(Natural Language Toolkit, NLTK)的開源庫。NLTK包含大量的軟體、數據和文檔,所有這些都可以從http://www.nltk.org/上免費下載。NLTK的發行版本支持Windows、Macintosh和UNIX平臺。強烈建議你下載Python和NLTk,與我們一起嘗試書中的例子和練習。
[美] 霍布森·萊恩,科爾·霍華德,漢納斯·馬克斯·哈普克 著,史亮,魯驍,唐可欣,王斌 譯
本書是介紹自然語言處理(NLP)和深度學習的實戰書。NLP已成為深度學習的核心應用領域,而深度學習是NLP研究和應用中的必要工具。本書分為3部分:第一部分介紹NLP基礎,包括分詞、TF-IDF向量化以及從詞頻向量到語義向量的轉換;第二部分講述深度學習,包含神經網絡、詞向量、卷積神經網絡(CNN)、循環神經網絡(RNN)、長短期記憶(LSTM)網絡、序列到序列建模和注意力機制等基本的深度學習模型和方法;第三部分介紹實戰方面的內容,包括信息提取、問答系統、人機對話等真實世界系統的模型構建、性能挑戰以及應對方法。
本書面向中高級Python開發人員,兼具基礎理論與編程實戰,是現代NLP領域從業者的實用參考書。
格夫·斯裡尼瓦薩-德西坎(Bhargav Srinivasa-Desikan) 著,何煒 譯
本書介紹了如何應用自然語言處理和計算語言學算法,對現有數據進行推理,並得到一些有趣的分析結果。這些算法基於目前主流的統計機器學習和人工智慧技術,實現工具唾手可得,比如Python社區的Gensim和spaCy之類的工具。
本書從學習數據清洗開始,學習如何執行計算語言學算法,然後使用真實的語言和文本數據、使用Python來探索NLP和深度學習的更高級課題。我們還會學習使用開源工具來標記、解析和建模文本。讀者將掌握優秀框架的實戰知識,以及怎樣為主題模型選擇類似Gensim的工具,怎樣通過Keras進行深度學習。
本書覆蓋理論知識和實例,方便讀者在自己遇到的場景中應用自然語言處理和計算語言學算法。我們將發現可用於執行NLP的Python工具的豐富的生態系統,帶領讀者進入現代文本分析的精彩世界。
[印度] 尼天·哈登尼亞(Nitin Hardeniya),雅各布·帕金斯(Jacob Perkins),迪蒂·喬普拉(Deepti Chopra),尼什·斯喬希 等 著,林賜 譯
模塊1討論文本挖掘/NLP任務中所需的所有預處理步驟。該模塊詳細討論標記化、詞幹提取、停用詞刪除和其他文本清理過程,以及如何在NLTK中輕鬆實現這些操作。
模塊2解釋如何使用語料庫讀取器和創建自定義語料庫。它還介紹如何使用NLTK附帶的一些語料庫。它涵蓋組塊過程(也稱為部分分析),組塊過程可以識別句子中的短語和命名實體。它還解釋如何訓練自己的自定義組塊器並創建特定的命名實體識別器。
模塊3討論如何計算單詞頻率和實現各種語言建模技術。它還討論淺層語義分析(即NER)的概念和應用及使用Wordnet的TSD。
模塊3有助於你理解和應用信息檢索與文本摘要的概念。
Deepti,Chopra,Nisheeth,Joshi,Iti ... 著,王威 譯
本書詳細介紹如何使用Python執行各種自然語言處理(NLP)任務,並幫助讀者掌握利用Python設計和構建基於NLP的應用的實踐。本書引導讀者應用機器學習工具來開發各種各樣的模型。對於訓練數據的創建和主要NLP應用的實現,例如命名實體識別、問答系統、語篇分析、詞義消歧、信息檢索、情感分析、文本摘要以及指代消解等,本書都進行了清晰的介紹。本書有助於讀者使用NLTK創建NLP項目並成為相關領域的專家。
通過閱讀本書,你將能夠:
● 實現字符串匹配算法以及標準化技術;
● 實現統計語言建模技術;
● 深刻理解詞幹提取器、詞形還原器、形態分析器以及形態生成器的開發;
● 開發搜尋引擎並實現詞性標註和統計建模(包含n-gram方法)等相關概念;
● 熟悉諸如樹型庫建設、CFG建設、CYK以及Earley線圖解析算法等相關概念;
● 開發基於NER的系統並理解和應用情感分析的相關概念;
● 理解並實現信息檢索和文本摘要等相關概念;
● 開發語篇分析系統以及基於指代消解的系統。