自然語言處理(Natural Langauge Processing,NLP)是計算機系統理解人類語言的一種能力,它也是人工智能(AI)的子集。NLP在很多商業場景中都有所應用,比如推薦系統、對話機器人等。NLP相關的崗位薪資和前景在機器學習算法崗中也是具有很大的吸引力,很多人轉行從事這方面的研究,大多數人是通過自學來提升自己的能力。

目前,網絡上也有很多多免費資源可以幫助自學者發展NLP方面的專業知識,但資源多且雜,沒有很好的一條線將其串起來,那麼在本文中,我們列出了針對初學者和中級學習者的學習資源。

針對初學者的NLP資源

對於初學者而言,可以採用兩種方法,即傳統的機器學習和深度學習來學習使用NLP,這兩種方法差別很大的,這裏講述了兩者之間的區別。

傳統的機器學習

傳統的機器學習算法一般比較複雜,通常不易被人理解。以下是一些資源,可以幫助讀者開始使用機器學習學習NLP:

Jurafsky和Martin的語音和語言處理是傳統自然語言處理領域中廣受好評的聖經; 更實用的方法是可以嘗試使用 Natural Language Toolkit;深度學習

深度學習是機器學習領域中的一個子領域,由於人工神經網絡的引入,其性能一般遠遠優於傳統的機器學習方法。初學者可以從以下資源開始:

CS 224n:這是斯坦福大學的公開課,也是開始使用深度學習進行NLP的最佳課程;

Yoav Golberg出版的免費和付費書籍也是開始深度學習NLP的重要資源; 所有算法的非常全面的報道都可以在Jacob Einsenstein的NLP課程筆記中找到,該課程幾乎涉及所有NLP方法。

針對從業者的NLP資源

如果你是一名數據科學家,那麼將需要以下三種類型的資源:

1.快速入門指南/瞭解熱門和新的知識;

2.特定問題的方法調查;

3.定期關注博客;

快速入門指南/瞭解熱門和新的知識

可以從Otter等人的深度學習NLP綜述開始; Young等人的綜述,試圖總結基於深度學習的NLP中的所有內容,並建議從業者開始使用NLP。 可以參考這篇文章來了解LSTM和RNN的基礎知識,它們在NLP中經常被使用。LSTMs的另一個更知名的總結可以在此閱讀,這是一篇有趣的論文,用於瞭解RNN隱藏狀態的工作原理,同時推薦以下兩篇有趣的博文:1.http://colah.github.io/posts/2015-08-Understanding-LSTMs2.https://distill.pub/2016/augmented-rnns/ 卷積神經網絡(Convnets)可用於理解自然語言,通過閱讀此文可以幫助你想象在Convnets中處理NLP;Convnets和RNNs之間的相互比較已經在此文中總結出,二者實現的pytorch代碼也公開在此;

特定問題的方法調查

從業者需要的另一類資源是對特定問題的回答:“我必須訓練一個算法來完成某一項任務X,此時我能使用的最有利(也很容易獲得)的東西是什麼呢?”。

以下是你需要的內容:

文本分類

人們解決NLP的第一個問題是什麼呢,主要是文本分類。文本分類可以將文本分類爲不同的類別或檢測文本中的情感。

ParallelDots 博客中描述了關於情感分析的不同調查,雖然該調查是針對情感分析技術的,但可以將其擴展到大多數文本分類問題中。另一項關於情感分析算法的調查(由Linked大學和UIUC的人員進行)可以通過在此閱讀:https://arxiv.org/abs/1801.07883?spm=a2c4e.11153940.blogcont642474.29.18fb6a59FjzYuR&file=1801.07883 遷移學習在深入學習中變得非常熱門,尤其是在圖像處理任務中,只需要針對具體的分類任務進行模型微調就可以獲得比較好的性能,同理,在維基百科上訓練用於語言建模的NLP模型也可以在相對較少量的數據上遷移學習文本分類。以下是來自相關的資源鏈接:1.https://arxiv.org/abs/1801.061462.https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdfFast.ai上有一個關於NLP的學習文檔可供使用,鏈接在此:http://nlp.fast.ai/classification/2018/05/15/introducting-ulmfit.html?spm=a2c4e.11153940.blogcont642474.32.18fb6a59FjzYuR 如果你正在學習兩個不同的任務,而沒有使用遷移學習的話,在此處提到了使用Convnet的技巧。 我們還發布了關於Zero Shot Text分類的工作,該工作在沒有任何數據集培訓的情況下獲得了良好的準確性,並且正在開發下一代。我們構建了自定義文本分類API,讀者可以在其中定義自己的類別。

序列標記

序列標記是一種標記具有不同屬性的單詞的任務,這些任務包括詞性標註、命名實體識別、關鍵字標記等,我們在這裏爲這些任務寫了一個有趣的方法調查。今年COLING的研究論文爲這些問題提供了一個很好的資源,它爲訓練序列標記算法提供了最佳指導。

機器翻譯

最近,NLP最大的進步之一就是發現了可以將文本從一種語言翻譯成另一種語言的算法。谷歌的系統採用的是一個複雜的16層LSTM,並提供最先進的翻譯結果。 此外,部分媒體專家吹噓炒作不成比例,一些誇張的報道聲稱“Facebook必須關閉發明自己語言的人工智能”:1.https://gadgets.ndtv.com/social-networking/news/facebook-shuts-ai-system-after-bots-create-own-language-17313092.https://www.forbes.com/sites/tonybradley/2017/07/31/facebook-ai-creates-its-own-language-in-creepy-preview-of-our-potential-future/#1d1ca041292c 關於機器翻譯的教程,請參閱菲利浦科恩的研究論文。使用深度學習機器翻譯的具體評論在此。以下是本人最喜歡的幾篇論文:谷歌的這篇論文告訴我們如何在有大量資金和數據的情況下端到端地解決問題;Facebook的 Convolutional NMT系統及其代碼在此處作爲庫發佈;https://marian-nmt.github.io/是一個用C ++快速翻譯的框架;http://www.aclweb.org/anthology/P18-4020;http://opennmt.net/使每個人都能夠訓練他們的NMT系統;

問答系統

市面上有許多不同類型的問答任務,比如從選項中選擇、從段落或知識圖表中選擇答案並根據圖像回答問題,並且有不同的數據集可以瞭解最新技術方法。

* SQuAD數據集是一個問答數據集,它測試算法閱讀理解和回答問題的能力。微軟在今年早些時候發表的一篇論文中聲稱,他們已經達到了人類級別的精度。另一個重要的算法是Allen AI的BIDAF及其改進版;

另一個重要的算法是Visual Question Answering,它可以回答有關圖像的問題。Teney等人的論文是一個很好的入門資源,可以在Github上找到實現代碼;在現實生活中,提取問答對大型文件應答可使用遷移學習來完成,相關的論文可以在此訪問;

改述、句子相似或推理

NLP有三個不同的任務:句子相似性,釋義檢測和自然語言推理(NLI),每個都需要比上一個更多的語義理解。 MultiNLI及其子集Stanford NLI是NLI最有名的基準數據集,並且最近成爲了研究的焦點;此外,還有MS複述語料庫和Quora語料庫用於釋義檢測,以及用於STS的SemEval數據集(語義文本相似性),可在這裏找到此領域中對相關模型的調查綜述。在臨牀領域應用NLI是非常重要的,比如瞭解正確的醫療程序、副作用和藥物的交叉影響等,此教程是醫學領域中應用NLI的一個好資源。

下面是這個領域推薦的論文列表:

交互空間的自然語言推理——它採用了一種非常聰明的方法,使用DenseNet表示句子,你可以在這裏閱讀該論文:

https://arxiv.org/pdf/1709.04348.pdf?spm=a2c4e.11153940.blogcont642474.56.18fb6a59FjzYuR&file=1709.04348.pdf

這篇來自Omar Levy小組的研究論文表明,即使是簡單的算法也能完成任務:https://homes.cs.washington.edu/~roysch/papers/artifacts/artifacts_poster.pdf?spm=a2c4e.11153940.blogcont642474.57.18fb6a59FjzYuR&file=artifacts_poster.pdf BiMPM是預測釋義的一個好模型,可以在這裏訪問:https://arxiv.org/abs/1702.03814?spm=a2c4e.11153940.blogcont642474.58.18fb6a59FjzYuR&file=1702.03814 我們還有一項關於釋義檢測的新工作,它將關係網絡應用於句子表示之上,並已在今年的AINL會議上被接受。

其他領域

以下是一些更詳細的綜述性文章,閱讀這些文章可以幫助你,獲取在製作NLP系統時可能遇到的其他任務的研究信息。

語言建模(LM)——語言建模是學習一個無監督語言表示的任務,這是通過給定前N個單詞的句子來預測第(n + 1)個單詞。這些模型具有兩個重要的實際用途,即自動完成並用作文本分類的轉移學習的基礎模型。詳細的綜述文章在此,如果有興趣瞭解如何根據搜索歷史自動完成手機/搜索引擎中的LSTM工作, 可以閱讀這篇論文:https://arxiv.org/abs/1804.09661?spm=a2c4e.11153940.blogcont642474.61.18fb6a59FjzYuR&file=1804.09661 關係提取——關係提取是提取句子中存在的實體之間關係的任務,給定的句子“A像r一樣與B相關”,那麼得到三元組(A,r,B)。詳細的綜述文章在此,它使用BIDAF進行零射擊關係提取; 對話系統—— 隨着聊天機器人革命的開始,對話系統現在也風靡一時。許多人將對話系統看作成意圖檢測、關鍵字檢測、問答等模型的組合,而其他人則嘗試端到端地對其進行建模。詳細的綜述文章在此,在這裏提下Facebook AI的Parl.ai框架; 文本摘要——文本摘要用於從文檔中獲取精簡文本(段落/新聞文章等)。有兩種方法可以做到這一點:提取和抽象總結。雖然抽取摘要從文章中提供了具有最高信息內容的句子,但抽象概括的目的是像人類一樣編寫摘要。來自愛因斯坦AI的演示將抽象概括帶入了主流研究中,詳細的綜述文章在此:https://arxiv.org/abs/1706.04115?spm=a2c4e.11153940.blogcont642474.62.18fb6a59FjzYuR&file=1706.04115 自然語言生成(NLG)—— 自然語言生成是計算機旨在像人類一樣寫作的研究,可能是寫故事、詩歌、圖像標題等。目前,在生成圖像標題上已經做得很好了,其中將LSTM和注意機制相結合,使得輸出可用於現實生活中,詳細的綜述文章在此:https://arxiv.org/abs/1703.09902?spm=a2c4e.11153940.blogcont642474.66.18fb6a59FjzYuR&file=1703.09902

關注博客

以下是推薦關注的博客列表,對於NLP感興趣的讀者可以時常瀏覽:

愛因斯坦AI : https://einstein.ai/researchGoogle AI:https://ai.googleblog.com/WildML: http://www.wildml.com/DistillPub: https://distill.pub/Sebastian Ruder: http://ruder.io/

作者信息:Muktabh Mayank,數據科學家、企業家、社會學家;文章原標題《Free resources to learn Natural Language Processing》。

成都加米穀大數據培訓,專注於大數據人才培養,大數據開發、數據分析與挖掘新課諮詢中...

查看原文 >>
相關文章