POST TIME:2021-07-12 15:48
大數據文摘出品
來源:airev
編譯:DD、Andy
數年前,當小編剛踏足NLP領域時,還沒有太多相關課程,找學習資料就頗費功夫;如今,當網上充斥著各種良莠不齊公開課時,從中挑選一門適合自己的又成了另一種頗費功夫,特別對于選擇困難綜合癥患者。
該篇作者根據自己多年的實踐經驗,對網上諸多NLP公開課進行了評分與評論,很有參考價值。此外,作為涉足NLP也有數年的小編,也推薦不妨先挑一門Code-first課,強推Fast.AI,之后再用大學公開課繼續深入,比如伯克利的Info256 以及斯坦福有名的cs224n,之后想再深入理論可以試試CMU的cs11-747.
接下來,我們就來看看作者對15節NLP課程的測評~
如果你的標準很高,那么選擇一門符合你需求的網課就會變成了一件很困難的事。因為大部分網課都不全面,并不值得花太多時間在上面。
那么如果有人給你提供了一個關鍵的學習路徑,并告訴你每個模塊講了什么,你該按照什么樣的順序去學習、進階,你會怎么想?那一定是——完美!
這就是為什么我會寫這篇NLP選課指南,利用了我8年的機器學習實踐經驗作為參考。我個人一共完成或瀏覽了15個最有名的課。在下面這份嚴格的評論中,我將重點放在它們提供的實踐以及商業知識上。
無論你是剛開始接觸NLP還是想在業務中實現一個最新算法,這篇文章都將為你提供巨大價值。下面就來看一下這條學習路徑,并挑你最感興趣的課程吧!
我理想中的NLP課程是這樣的:
圍繞著實踐問題展開的;只涵蓋對實踐有用的信息,夾雜一些更深入的理論知識作為補充資料;內容是與時俱進的,至少每次業界有重大新聞,它都能及時更新相應內容;由一群業界經驗豐富的專家編寫的;包含能解決業務實際問題的真實代碼。
但理想很豐滿,現實……很骨感。
代碼至上的網課們
A Code-First Introduction to NLP course
課程鏈接:
https://github.com/fastai/course-nlp
授課人:Fast AI
專業評分:8/10
工具和庫:IPython notebooks, PyTorch, Fast.AI, spacy, sklearn, nltk
我的建議:
我個人很享受這種由上而下的學習方式。這門課內容非常扎實(毫無疑問,這是Jeremy Howard本人創建的課程),它很實用且內容在新算法的更新上很及時(最近更新到2019年夏天)。
缺點:
它缺少一些業界的實操案例,只關心算法的實際用法。
強推這門課!
SpaCy Tutorial
課程鏈接:
https://github.com/yuibi/spacy_tutorial
授課人:Yuibi Fujimoto
專業評分:7/10
工具和庫:spacy,prodigy,sklearn
我的建議:
很完整、實用的指南。它只涉及到了spacy,而這也是很多人的真實需求。這門課對內容細節的把握非常到位。
Natural Language Processing
課程鏈接:
https://github.com/yandexdataschool/nlp_course/tree/master
授課人:Yandex
專業評分:7/10
工具和庫:keras,nltk,gensim,sklearn,bokeh,matplotlib
我的建議:
這是一門很新的實戰課程,它涉及到了最重要的一些領域。但同樣地,它也沒有涉及到現實任務的實戰,只是專注于算法原理和它們直接的應用。
Natural Language Processing
課程鏈接:
https://www.coursera.org/learn/language-processing
授課人:俄羅斯國立高等經濟大學計算機系(HSE Faculty of Computer Science) / Yandex
專業評分:3/10
工具和庫: nltk, sklearn, tensorflow, genism,starspace
我的建議:
這是一門很簡潔、基礎的課程,它只涉及到一些很基礎的理論。
缺點:
這門課不是很全面,也缺乏關于最新算法和實際業務案例內容。而且,它只使用tensorflow,沒有涉及到keras,對于學習深度學習來說,這并不是一個很好的方式。
Advanced NLP with spaCy
課程鏈接:
https://course.spacy.io/en/
授課人:Explosion AI
專業評分:8/10
工具和庫:spacy
我的建議:
這門課也只涉及到spacy,但是范圍更廣。它簡單友好的操作界面深得我心。簡短,但強推的一門課!在評分項目中,也有涉及到業界實操的內容!
Coursera-Natural Language Processing Certification in TensorFlow
課程鏈接:
https://www.coursera.org/learn/natural-language-processing-tensorflow
授課人:Laurence Moroney
專業評分:2/10
工具和庫:Tensorflow
我的建議:
這門簡短的課程介紹了一些基礎知識,比如:分詞、一些基礎的詞嵌入方法和序列模型。授課方式是理論+小測驗。對新手來說,我并不推薦這門課程,因為它缺少太多內容。
Edx-Natural Language Processing Course
課程鏈接:
http://www.edx.org/course/natural-language-processing-nlp-2
授課方:微軟
專業評分:7/10
我的建議:
這門課程介紹了機器學習和NLP領域中可使用的各種方法,你不光能學到經典算法、深度學習算法,還能了解到深度情感相似模型以及在現實工作中如何使用它們。每個模塊都有自己的測驗和代碼作業,可以很好地幫助你理解學到的內容。
Codecademy-Natural Language Processing
課程鏈接:
https://www.codecademy.com/learn/natural-language-processing
專業評分:5/10
工具和庫:nltk, re
我的建議:
這門課時長約10小時,算是NLP入門級別的課程,內容包含:正則表達式、文本處理、詞向量、tf-idf。是一門更適合完全沒有NLP基礎的人的課程。
DataCamp-Natural Language Processing Fundamentals in Python
課程鏈接:
https://www.datacamp.com/courses/natural-language-processing-fundamentals-in-python
授課人:Katharine Jarmul
專業評分:7/10
工具和庫:nltk, re, genism, polyglot, spacy, sklearn
我的建議:
這門課主要講的是如何解決一些小問題。它介紹了一些生成詞向量和預處理的技巧,像tf-idf和spacy。我認為這也是一門比較適合剛入門、需要一些實戰經驗的新手課程。因此我們決定在最后的對比中不把它加入比較。
大學公開課
伯克利 - Applied Natural Language Processing
課程鏈接:
http://people.ischool.berkeley.edu/~dbamman/info256.html
授課人:David Bamman
專業評分:8/10
我的建議:
這門課比較適合有python編程經驗,但不了解nlp的人。在這門課中,你會用到目前流行的python庫,如:sklearn、keras、spacy,去解決分類、回歸問題。我認為,這種強制性的學期制課程比較適合學生黨學習。
華盛頓大學(UW) - Natural Language Processing
課程鏈接:
https://courses.cs.washington.edu/courses/cse517/17wi/
授課人:Yejin Choi
專業評分:6/10
我的建議:
這門課面向的是想學習nlp基礎方法理論的新手。這門網課是在2017年錄制的,所以你無法從里面找到任何現在最新的內容。它涉及到的當時(2017)最新的內容有:序列、語義和深度學習相關內容。但我認為,學這門課的人需要在課后有自己的探索和研究,去鞏固學到的知識。
牛津 - Deep Learning for Natural Language Processing
課程鏈接:
https://www.cs.ox.ac.uk/teaching/courses/2016-2017/dl/
授課人:Phil Blunsom
專業評分:8/10
我的建議:
這門課需要你有機器學習方面的經驗,以及很強的數學背景(包括:概率、線性代數和連續數學)。你將會學到從RNN、BPTT到針對神經網絡優化GPU的很多知識和技能。我建議學完這門課的學生再去學習一下最新的模型和理論,因為它并沒有實時更新相關內容。
以色列特拉維夫大學 - Advanced Methods in Natural Language Processing
課程鏈接:
https://www.cs.tau.ac.il/~joberant/teaching/nlp_spring_2019/index.html
授課人:Jonathan Berant
專業評分:7/10
我的建議:
這門課教授的是NLP領域中最新的一些方法。它只需要你有一定的機器學習背景,nlp背景并不是必須的。而且,授課方準備了很多值得閱讀的報告,這也非常有助于學習。
斯坦福 - From Languages to Information
課程鏈接:
https://web.stanford.edu/class/cs124/
授課人:Dan Jurafsky
專業評分:6/10
我的建議:
雖然這是門NLP課程,但它也涉及到很多機器學習方面的內容。其中,關于社交網絡的內容在其他網課中并沒有很好地展開,可以算是這門課的一個亮點。通過這門課,你可以收獲很廣的知識面,但對于只鉆研nlp的人來說,我并不是很推薦這門課。
斯坦福cs224n - Natural Language Processing with Deep Learning
課程鏈接:
http://web.stanford.edu/class/cs224n/
授課人:Chris Manning, Matthew Lamm
專業評分:8/10
我的建議:
這是面向項目的最新課程,包括這個領域的最新進展。要上這門課,你需要有數學和編程的基礎(Python或強大的C++能力)。我只會推薦有一定經驗的人去上這門課,你會從中學到更深入的知識。
總結
在分析完所有課程后,我得出的結論是:在最新的算法和企業項目實例方面,沒有任何一門課是足夠全面的。它們大部分都缺少實戰練習,而這大大地阻礙了知識的吸收。
現在,讓我們來總結一下工程師在學習一門NLP課程時遇到的主要挑戰:
課程內容很快就會過時,我希望它始終包含最新(不一定是復雜的)知識;沒有或過少的實踐練習來增強在課程中學到的理論知識;如果卡住,沒有人能幫助你進行練習;課程以算法原理為重點,而不是如何解決實際問題。
許多不合標準的課程甚至都已不再更新。人們掉入了坑中并為此付出代價,卻沒有從中收獲太多實際價值。