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