一份不可多得的自然語言處理資源清單
自然語言處理(Natural Langauge Processing,NLP)是計算機系統理解人類語言的一種能力,它也是人工智慧(AI)的子集。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-LSTMs
2. https://distill.pub/2016/augmented-rnns/
- 卷積神經網路(Convnets)可用於理解自然語言,通過閱讀 此文 可以幫助你想象在Convnets中處理NLP;
- Convnets和RNNs之間的相互比較已經在 此文 中總結出,二者實現的pytorch程式碼也公開 在此 ;
特定問題的方法調查
從業者需要的另一類資源是對特定問題的回答:“我必須訓練一個演算法來完成某一項任務X,此時我能使用的最有利(也很容易獲得)的東西是什麼呢?”。
以下是你需要的內容:
文字分類
人們解決NLP的第一個問題是什麼呢,主要是文字分類。文字分類可以將文字分類為不同的類別或檢測文字中的情感。
ParallelDots 部落格 中描述了關於情感分析的不同調查,雖然該調查是針對情感分析技術的,但可以將其擴充套件到大多數文字分類問題中。
另一項關於情感分析演算法的調查(由Linked大學和UIUC的人員進行)可以通過 在此 閱讀。
遷移學習在深入學習中變得非常熱門,尤其是在影象處理任務中,只需要針對具體的分類任務進行模型微調就可以獲得比較好的效能,同理,在維基百科上訓練用於語言建模的NLP模型也可以在相對較少量的資料上遷移學習文字分類。以下是來自相關的資源連結:
1. https://arxiv.org/abs/1801.06146
Fast.ai上有一個關於NLP的學習文件可供使用, 連結在此 。
如果你正在學習兩個不同的任務,而沒有使用遷移學習的話,在 此處 提到了使用Convnet的技巧。
我們還發布了關於Zero Shot Text分類的工作,該工作在沒有任何資料集培訓的情況下獲得了良好的準確性,並且正在開發下一代。我們構建了自定義文字分類API,讀者可以在其中定義自己的類別。
序列標記
序列標記是一種標記具有不同屬性的單詞的任務,這些任務包括詞性標註、命名實體識別、關鍵字標記等,我們在這裡為這些任務寫了一個有趣的方法 調查 。
今年COLING的 研究論文 為這些問題提供了一個很好的資源,它為訓練序列標記演算法提供了最佳指導。
機器翻譯
-
最近,NLP最大的進步之一就是發現了可以將文字從一種語言翻譯成另一種語言的演算法。谷歌的系統採用的是一個複雜的16層LSTM,並提供最先進的翻譯結果。
此外,部分媒體專家吹噓炒作不成比例,一些誇張的報道聲稱“Facebook必須關閉發明自己語言的人工智慧”:
- 關於機器翻譯的教程,請參閱菲利浦科恩的 研究論文 。使用深度學習機器翻譯的具體評論 在此 。
以下是本人最喜歡的幾篇論文: - 谷歌的 這篇論文 告訴我們如何在有大量資金和資料的情況下端到端地解決問題;
- 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表示句子,你可以在 這裡 閱讀該論文;
- 這篇來自Omar Levy小組的研究 論文 表明,即使是簡單的演算法也能完成任務;
- BiMPM是預測釋義的一個好模型,可以在 這裡 訪問;
- 我們還有一項關於釋義檢測的 新工作 ,它將關係網路應用於句子表示之上,並已在今年的AINL會議上被接受。
其他領域
以下是一些更詳細的綜述性文章,閱讀這些文章可以幫助你,獲取在製作NLP系統時可能遇到的其他任務的研究資訊。
- 語言建模(LM)——語言建模是學習一個無監督語言表示的任務,這是通過給定前N個單詞的句子來預測第(n + 1)個單詞。這些模型具有兩個重要的實際用途,即自動完成並用作文字分類的轉移學習的基礎模型。詳細的綜述文章 在此 ,如果有興趣瞭解如何根據搜尋歷史自動完成手機/搜尋引擎中的LSTM工作, 可以閱讀 這篇論文 ;
- 關係提取——關係提取是提取句子中存在的實體之間關係的任務,給定的句子“A像r一樣與B相關”,那麼得到三元組(A,r,B)。詳細的綜述文章 在此 ,它使用BIDAF進行零射擊關係提取;
- 對話系統—— 隨著聊天機器人革命的開始,對話系統現在也風靡一時。許多人將對話系統看作成意圖檢測、關鍵字檢測、問答等模型的組合,而其他人則嘗試端到端地對其進行建模。詳細的綜述文章 在此 ,在這裡提下Facebook AI的Parl.ai框架;
- 文字摘要——文字摘要用於從文件中獲取精簡文字(段落/新聞文章等)。有兩種方法可以做到這一點:提取和抽象總結。雖然抽取摘要從文章中提供了具有最高資訊內容的句子,但抽象概括的目的是像人類一樣編寫摘要。來自愛因斯坦AI的 演示 將抽象概括帶入了主流研究中,詳細的綜述文章 在此 ;
- 自然語言生成(NLG)—— 自然語言生成是計算機旨在像人類一樣寫作的研究,可能是寫故事、詩歌、影象標題等。目前,在生成影象標題上已經做得很好了,其中將LSTM和注意機制相結合,使得輸出可用於現實生活中,詳細的綜述文章 在此 ;
關注部落格
以下是推薦關注的部落格列表,對於NLP感興趣的讀者可以時常瀏覽:
- 愛因斯坦AI : https://einstein.ai/research
- Google AI: https://ai.googleblog.com/
- WildML: http://www.wildml.com/
- DistillPub: https://distill.pub/
- Sebastian Ruder: http://ruder.io/
數十款阿里雲產品限時折扣中,趕緊點選領劵開始雲上實踐吧!
作者資訊
Muktabh Mayank,資料科學家、企業家、社會學家
個人主頁: https://twitter.com/muktabh
本文由阿里云云棲社群組織翻譯。
文章原標題《Free resources to learn Natural Language Processing》,譯者:海棠,審校:Uncle_LLD。
文章為簡譯,更為詳細的內容,請 檢視原文 。