NLP入門系列之自然語言處理
本文轉載自微信公眾號「數(shù)據(jù)與智能」,作者AI Publishing。轉載本文請聯(lián)系數(shù)據(jù)與智能公眾號。
本章為自然語言處理提供了一個高層次的介紹。解釋了自然語言處理是什么,最常見的自然語言處理應用是哪些以及開發(fā)自然語言處理應用程序的基本方法是什么。
1. 理解自然語言處理
人類通過自然語言互動,自然語言包括了許多信息。例如說,通過選擇不同的詞語,語氣和句子的上下文可以被用來揭露一個人的心情,意圖和情感。
此外,諸如書籍,報紙和博客之類的文本文檔中充滿了可用于執(zhí)行各種任務的信息。對于人類來說,理解并且從一個文檔中提取有用的信息以及做出基于來自文檔的這個信息的決定需要花費大量的時間。
而這,就是自然語言處理發(fā)揮作用的地方。
自然語言處理被定義為“一個使計算機能夠閱讀,理解和提取人類所說自然語言含義的人工智能領域。”
有了自然語言處理,計算機不僅能夠理解自然語言,而且還能通過自然語言對人類做出回應。除了用于人機交互目的之外,NLP技術還廣泛用于處理公司的大量數(shù)據(jù),而手動處理則需要數(shù)月甚至數(shù)年的時間。
例如,一個人可能需要花幾周的時間來從一本一千頁的書中人工提取信息進行總結,但有了自然語言處理,類似的文本摘要可以在幾分鐘內完成。同理,聘用人工讀者通讀所有用戶評論,并編寫包含用戶對特定產品的意見的報告是花費成本非常高的,然而有了自然語言處理之后,用戶意見可以被自動從文本中提取,從而使公司能夠制定出組織決策。
2. 自然語言處理的實際應用
從Microsoft的Cortona到Apple的Siri,NLP為各種應用程序提供了支持。本節(jié)簡要介紹了NLP的一些最常見的應用程序。
情感分析
NLP通常被用于執(zhí)行文本情感分析。文字形式的大眾意見,例如有關特定產品或實體的推文,博客和評論都包含了情感。情感分析是指從這些文字中識別情感。自動檢測有關推文的公眾情緒可以幫助公司決定如何改進其產品以及保留或丟棄哪種產品。
垃圾郵件以及非垃圾郵件的分類
Gmail和其他電子郵件服務器使用NLP技術來精確地區(qū)分非垃圾和垃圾郵件。這是文本分類的一個經典應用,其中文本文檔被劃分為預定義類別之一,即非垃圾郵件或垃圾郵件。
語音到文字的轉換
NLP技術被廣泛的使用到語音與文字的自動雙向轉換中。在你說出內容時,你不再需要要求某人代你把你講的內容寫下。谷歌的自動語音識別(https://bit.ly/2N6xYSt) 就是一個很經典的語音文字轉換的例子。
人機交互
需要按鍵盤按鈕并單擊鼠標以向計算機發(fā)出命令的日子已經一去不復返了。NLP 已經能夠使人類和機器人通過自然語言進行互動。機器人在有了NLP的幫助下不僅能夠理解人類的語言而且能夠用自然語言對人類進行回應。Sophia(https://bit.ly/2YLprtx)就是一個經典的通過自然語言處理與人類互動的人形機器人的例子。
增強虛擬助手
正如上面所提到的,NLP技術也被用來開發(fā)包括亞馬遜Alexa, 蘋果的Siri以及微軟的Cortona在內虛擬助手。這些虛擬私人助手依靠NLP方法來理解人類的請求并以自然語言回復。
文字翻譯
自動文本翻譯是NLP最強大的應用程序之一。使用文本翻譯技術,人們只需單擊幾下鼠標,便可以將文檔從一種語言翻譯成另一種語言。Google翻譯就是使用NLP技術進行文字翻譯的最著名例子之一。
文字摘要
并非每個人都有時間來閱讀冗長的文章,內容摘要是需要時間和人力的。有了NLP技術,文字文檔可以被自動地總結摘要,節(jié)省了時間與人力也節(jié)約了成本。
文本生成
基于深度學習的高級NLP技術現(xiàn)在還被用于文本生成。近年來,文本生成技術被用于生成基于(權力的游戲)腳本的詩歌。文本生成技術目前還處于初始階段。
3. 學習NLP的路線圖
掌握NLP需要時間和精力。不能僅通過閱讀兩個博客就聲稱自己是NLP專家。本節(jié)分步介紹怎么學習NLP。
為了成為一個優(yōu)秀的NLP專家,需要按順序按照以下步驟學習。
3.1 了解NLP的全部意義
在開始開發(fā)NLP應用程序之前,你需要知道你實際在做什么。你應該了解NLP的全部含義,為何有用以及最重要的一些NLP應用程序。本書的第一章就是為自然語言處理理論建立基礎。
3.2 學習一門編程語言
如果你希望成為一名NLP專家,你需要學會一點編程,這是無法繞過的現(xiàn)實。你必須學會編程才能開發(fā)NLP應用程序。盡管你可以使用任何一種編程語言來編程自然語言應用程序,但我還是會建議學習Python編程語言。Python是NLP最常用的庫之一,具有無數(shù)的基本和先進的NLP庫。此外,許多NLP應用程序基于機器學習和深度學習。并且Python是一種提供易于使用的深度學習和機器學習庫的語言。簡而言之,學習Python。第2章介紹 了面向初學者的Python入門的速成課程。
3.3 從基礎任務開始
從非?;镜腘LP應用程序開始。建議初學者不要立即開始開發(fā)NLP應用程序,相反,應該首先了解最常見和最基本的NLP任務。例如,學習如何執(zhí)行停用詞刪除、如何將句子劃分為單詞以及如何將段落劃分為句子、知道如何為文本等中的單詞找到一部分語音標簽等等。此外,精通文本清洗和操作技術也是必須的。最后,你需要掌握如何從不同的來源將數(shù)據(jù)導入你的應用以及如何抓取網(wǎng)站上的數(shù)據(jù)以將它導入你的應用程序。基本的NLP任務在第四,第五以及第六章中有詳細解釋。
3.4 了解如何以統(tǒng)計方式表示文本
正如之前提到的,大部分的NLP技術包含了深度學習以及機器學習的概念,而深度學習與機器學習都是統(tǒng)計學方面的技術。為了在NLP中實現(xiàn)這些技術,需要用統(tǒng)計學的方式表達文本。有多種方法可以用來統(tǒng)計地表示文本,關于詳細信息,請參見第7章。
3.5 了解機器學習與深度學習
一旦學習完所有基本的NLP概念后,則需要學習機器學習和深度學習概念,尤其是有監(jiān)督的機器學習算法。在深度學習算法中,應該注重了解稠密連接的神經網(wǎng)絡,遞歸神經網(wǎng)絡(尤其是LSTM)和卷積神經網(wǎng)絡的基本工作原理。這些概念將在第3章中進行解釋。
3.6 開發(fā)高級的NLP應用
熟悉了基本的NLP任務并且對深度學習和機器學習有基本的了解后,就可以準備開發(fā)高級NLP應用程序了。對于NLP應用程序,建議首先使用諸如Logistic回歸,Random Forest等機器學習算法開發(fā)機器學習應用程序(例如文本分類)。一旦開始能熟悉地使用機器學習開發(fā)NLP應用程序,就可以轉向使用基于深度學習的運用各種神經網(wǎng)絡的高級應用程序。本書的第2部分致力于開發(fā)基于深度學習和機器學習NLP應用程序。
3.7 NLP應用部署
基于高級NLP的應用程序與機器學習應用程序非常相似。有幾種部署此類應用程序的方法。可以使用包含REST API的專用服務器,這些服務器可服務于調用NLP應用程序。要部署此類應用程序,需要學習Python Flask,Docker或類似的Web技術。此外,還可以使用Amazon Web Services或任何其他基于云的部署平臺來部署應用程序。
要成為NLP專家,需要不停地按照上述7個步驟練習執(zhí)行。練習得越多,就可以在NLP獲得更好的成就。
4. 主要的自然語言處理方法
自然語言處理的方法分為兩大類:基于規(guī)則的方法和統(tǒng)計方法。
4.1 基于規(guī)則的方法
顧名思義,基于規(guī)則的方法是由人類定義的規(guī)則組成。例如,一個關于情感分類的基于規(guī)則的方法可能包含了這樣一條規(guī)則:如果推文中肯定詞的數(shù)量大于否定詞的數(shù)量,則該推文可以歸類為總體上具有積極情緒。
基于規(guī)則的方法有其的好處也有不足。其最主要的一個好處是它們具有很高的可解釋性。另外,基于規(guī)則的方法不需要大量的數(shù)據(jù)來做訓練。而其最主要的一個不足是,這些基于規(guī)則的方法不能靈活變通,可能無法擴展到不同的數(shù)據(jù)集。
4.2 統(tǒng)計學方法
顧名思義,統(tǒng)計方法涉及到用于開發(fā)自然語言處理技術的統(tǒng)計算法。機器學習和深度學習方法是NLP統(tǒng)計方法的主要示例。與基于規(guī)則的方法相比,統(tǒng)計方法更加靈活和可擴展。使用統(tǒng)計方法的主要缺點是缺乏可解釋性,并且需要大量的數(shù)據(jù)集來訓練NLP算法。