新年送福氣 | 您有一份NLP大禮包免費領取

  • 2019 年 11 月 13 日
  • 筆記

作者 | yuquanle

出品 | AI小白入門

作為一名自然語言初學者,在nlp里摸爬滾打了許久,一些心得,請壯士收下。

談一下自己探索過的摸爬滾打過的方法,大致可以分為二種。

第一種,在實踐中學習,找一個特定的任務,譬如文本分類、情感分析等。然後以做好任務為導向的去挖掘和這一個任務相關的知識點。 由於沒有系統的學習,肯定會遇到各種各樣的攔路虎問題,當遇到不懂的概念時,利用百度/谷歌查閱相關資料去理解學習這個概念,若是概念難懂,就多看不同的人對這些概念的理解,有的時候有些人能深入淺出的講解一些很不錯的資料,個人覺得這種有目的性的實踐學習方式學來的東西更加印象深刻。

這樣也在潛移默化中鍛煉了個人能力(獨立查找資料/文獻是一種極其重要的能力),又能達成某些目的。這樣過了一段時間之後,好像懂很多東西了,但是好像又有很多方面不了解,其實這就是在某個點有點深度了,但是廣度還不夠。

如果此時有大把閑置的時間,就可以去刷刷那些不錯的系統性課程,刷課的時候會發現很多概念理解起來輕鬆多了,或者說似曾相識(理解的知識點又得到了複習並再次確認自己的理解了的知識點和這些老師講的是否一致)。

第二種,就是一上來就是刷課刷書,把理論什麼的都梳理一遍,然後根據課程把課後作業都敲一遍並且理解。

這樣系統的學習雖然會花上很長的時間,但是也會讓你對知識體系有個全面的認識,之後你再進去某個小點(比如文本分類等)的深入探索,會發現很多東西都理解學習過。

其實你已經有了知識的廣度,但是對某個點的知識深度還欠缺,此時就按需深挖即可,當然,這個過程肯定也不輕鬆。

其實這二種學習方法我覺得都挺不錯,根據自身具體情況具體分析,交叉使用,效果應該更佳。現在回過頭來看,我之前的學習方法更像第一種。

最近想從頭開始學一些基礎知識,以查漏補缺,所以收集了一大波不錯的資料,作為新年大禮包送給初學者們,往下看,你想要的都在後面,記得看完免費的來一個喲!!!

關注博主的腳步,手把手帶你學AI

編程語言

初學者推薦python,安裝方法可以選擇純python安裝也可以選擇Anaconda方式安裝。IDE推薦pycharm。

此外,強烈推薦初學者使用jupyter來學習代碼,感覺真的超級贊。

對於新手應該如何學python,個人覺得最重要的是寫,排除那種特別優秀的人,相信大部分人都可以歸入到我亦無他,唯手熟爾。 因此前期的代碼量是必不可少的,即使在不熟悉的語法情況下對着敲也不失為一種不錯的方法,總而言之,要敲,要實踐,從而達到手熟

有人會問,那我一開始敲什麼呢? 初學者建議把python基本語法敲一遍,可以配合jupyter,這樣可以很方便的敲完一個方法就能實時運行展示效果。然後敲一些基礎的python包的基本用法,譬如最基本的numpy、pandas、matlibplot三劍客。

個人建議一開始沒必要對裏面的每個方法都去深究,這樣做會很費時而且可能正反饋也不大,把簡單的基本的用法敲幾遍熟悉,在這個過程中,要慢慢鍛煉一種能力:碰到問題能夠獨立通過百度/谷歌解決。以後會發現這種能力尤為重要。

自然語言處理初學者首先要了解熟悉nlp領域的基本術語、任務定義以及一些基本算法,前期可以結合一些不錯的工具實踐,比如經典的jieba、hanlp、snownlp、stanfordcorenlp、spaCy、pyltp、nltk、textblob、gensim、scikit-learn等,以及最近的pkuseg、flair等等。通過這些熟悉比如任務的輸入輸出、評價指標以及應用場景等等。

書籍推薦

個人覺得從頭到尾的看書對於初學者來說不太友好,但是必備的工具書放在手邊經常查閱是必不可少的。比如周志華老師的西瓜書《機器學習》、李航的《統計學習方法》、宗成慶的《統計自然語言處理》以及花書《Deep Learning》等等。另外一些比較有意思的書譬如《數學之美》也可以讀讀,通俗易懂的語言會讓你對這個領域產生興趣,最後推薦一本培養機器學習思維的書《Machine Learning Yearning》。

就此打住,對於初學者這幾本工具書我覺得夠了。不想買書的童鞋也沒關係,可以直接看pdf電子檔,網上資料很多,找不到的童鞋也沒關係,請在以下鏈接自取。

鏈接: https://pan.baidu.com/s/1k2NNIdmayS0K7K68wfThgQ

提取碼:tfhl

此外,當你們發現手頭的資料不夠的時候,相信你已經擁有了自我搜索尋找更好更進階資料的能力了,所以我這裡也不多說了,授人以魚不如授人以漁。

搜索資料一般最簡單的就是百度、谷歌,相同的關鍵詞在這二種搜索引擎上得到的結果可能也大相徑庭,所以在不能找到滿意的結果時不妨二者都嘗試下。另一方面,一些開放了github的項目也可以去github上提問,當然github也是搜代碼的好平台。初學者可以慢慢嘗試,總結經驗,以便培養自己的解決問題的能力。

當你能力再提升到一個階段時,可能現階段的東西都不能滿足你,此時,可以鍛煉直接看官方API了,第一手資源當然是最好的選擇,一些前沿的東西可以直接看相關paper。關於如何尋找相關文獻我後面會給出自己的一些經驗。

視頻課程

時間充裕的朋友還是推薦有選擇性的看一下不錯的課程,這裡收集了一大波優秀的免費課程,請收下這個大禮包。

  • 吳恩達的機器學習:https://0x9.me/m8J6G 這是機器學習的經典視頻。
  • 網易雲課堂有吳恩達的名為深度學習工程師免費微專業 :https://0x9.me/bnMf9 一共包括四周課程,分別為: 1. 神經網絡和深度學習 2. 改善深層神經網絡:超參數調試、正則化以及優化 3. 結構化機器學習項目 4. 卷積神經網絡 5. 序列模型
  • 李宏毅老師的系列課程: http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 沒梯子可以在B站看:https://0x9.me/zd052
  • CS224n: http://web.stanford.edu/class/cs224n/ 斯坦福的深度學習的自然語言處理,包括視頻、PPT講義。
  • Oxford Course on Deep Learning for Natural Language Processing: https://machinelearningmastery.com/oxford-course-deep-learning-natural-language-processing/
  • 林軒田老師的課程,機器學習基石和機器學習技法。 主頁:https://www.csie.ntu.edu.tw/~htlin/mooc/ 主頁可以找到課程資料以及視頻鏈接。沒梯子也可以B站看。 1.機器學習基石:https://0x9.me/t6rIR 2.機器學習技法:https://0x9.me/OcZep 教程習題解答:https://github.com/Doraemonzzz/Learning-from-data

我相信以上大家肯定都或多或少聽過,應該都屬於經典教程了,所以有大量時間的初學者可以花時間鑽研學習,看不懂的地方多看幾篇,再看不懂就網上查閱各種資料包括別人的學習筆記繼續研究,相信經歷過之後肯定是豁然開朗並且功力大為長進。

推薦黃海廣博士的筆記,作為參考:

  • 吳恩達機器學習筆記: https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes
  • 吳恩達深度學習課程筆記:https://github.com/fengdu78/deeplearning_ai_books

學術論文

當知識貯備到一定量的時候,自身的能力也提升上來了,此時就可以直接看第一手資源了:官方API和論文。

關於論文,如果是研究生的話基本上都繞不過去,所以問題來了,我們應該看什麼樣的文章?答案自然是看高質量的文章啦~ 這不是廢話么,那高質量的文章應該如何去找呢?

國內有一個關於計算機的排名叫

CCF推薦排名:https://www.ccf.org.cn/xspj/gyml/ 裏面保羅了計算機各大領域的會議期刊排名,比如計算機體系結構、計算機網絡、人工智能、數據挖掘等等。CCF推薦排名把會議和期刊被分成A,B,C三類。但是這個國內人搞的,國外基本不看這個。不過被推到這裡的會議/期刊質量都還算不錯。

國外把ACL、EMNLP、NAACL、COLING被稱為NLP四大頂會,其中唯獨ACL在CCF裏面是A類,可見在ACL中一篇文章是很難的(ps:這也是作為nlper的我以後的目標之一)。ACL學會在北美和歐洲召開分年會,分別稱為NAACL和EACL。ACL學會下設多個特殊興趣小組,其中比較有名的諸如SIGDAT、SIGNLL等。而EMNLP則是SIGDAT組織的國際會議。比較有名的還有SIGNLL組織的CoNLL。

NLP/CL也有自己的旗艦學術期刊Computational Linguistics和ACL創辦的期刊TACL,雖然TACL目前沒有被推入CCF,但是TACL真的超級難感覺。

作為交叉學科,也有很多相關領域值得關注。主要包括:信息檢索和數據挖掘領域:SIGIR、WWW、KDD、WSDM等和人工智能領域: AAAI、IJCAI等。

對於期刊和會議,建議大家直接看會議文章,因為會議文章都比較實時,而且大多數人會把直接的最新研究發到會議上,中了會議之後再去做進一步完善補充擴展成期刊。所以對於目的為發文章的研究生,首先看會議文章即可,當發現此文值得深入研究的時候,可以去嘗試尋找期刊版(當然也不一定有)。

那麼應該如何下載文章呢?

對於會議文章直接去主頁搜索接收文章列表,很多不會提供下載鏈接,那就把需要的文章名複製粘貼到百度學術/谷歌學術裏面去搜索下載。

深度學習框架

深度學習如此火熱,當然在自然語言處理也激起了不小的浪花,比如從2013年的word2vec到現在的BERT,都是很不錯的工作,初學者肯定也是要接觸深度學習框架的,那面對眾多的框架應該如何選擇呢?

深度學習框架很多,包括TensorFlow、Keras、Caffe、CNTK、PyTorch、MXnet、DeepLearning4J、Theano、PaddlePaddle、Chainer、Lasagne等等。推薦初學者keras,Keras是一個高層神經網絡API,它由純Python編寫而成,並基於Tensorflow、Theano以及CNTK作為後端。

當然,寫工程更多的是用Tensorflow,搞學術的人可能更喜好Pytorch。所以這裡也收集了一些不錯的資料。 Keras

  • 官方文檔: https://github.com/keras-team/keras
  • 中文文檔: https://keras-cn.readthedocs.io/en/latest/
  • 例子: https://github.com/keras-team/keras/tree/master/examples

Tensorflow

  • 官方文檔: https://github.com/tensorflow/tensorflow
  • 中文文檔: http://www.tensorfly.cn/
  • 中文教程: https://github.com/CreatCodeBuild/TensorFlow-and-DeepLearning-Tutorial
  • 例子: https://github.com/aymericdamien/TensorFlow-Examples

Pytorch

  • 官方文檔: https://github.com/pytorch/pytorch
  • 中文文檔: https://pytorch.apachecn.org/#/
  • 例子: https://github.com/yunjey/pytorch-tutorial
  • 超全資源: https://github.com/bharathgs/Awesome-pytorch-list

項目實踐

如果組裏面有相關項目,好好做,跟着師兄師姐,能學到不少東西。

如果有大廠的實習機會,爭取去,工業界能學到更多與以後工作息息相關的東西。

如果沒有實習機會,也沒有項目做,那可以關注下比賽,找一下相關的比賽,下載數據集,排行榜可以實時看到你寫的模型的性能。初學者可以去github找相關的開源模型,先跑起來,再想着如何去改進,以此鍛煉自己的工程能力。 之前有人私信問我,這些比賽的信息去哪裡找? 一般一些比賽在放出來之前,會做一些推廣,在一些公眾號或者群里能看到軟文。但是這些信息不一定能被我們及時看到,但是比賽一般都會放到平台上,最出名的平台之一當屬kaggle,其它的還有天池、CCF、AI Challenger、DF、DC、biendata等等。

據我所知,自然語言處理相關的比賽一般可分為二類,一類是學術型的評測,一類是工業界舉辦的比賽。

很多企業會舉辦比賽,吸引很多人來參與,特別是一些大企業,宣傳工作會做得很到位,大家稍微注意下,一般都能聽到風聲。

學術型的評測也很多,比如NAACL的評測SemEval( International Workshop on Semantic Evaluation),這種伴隨着會議的評測,一般每年都會開放很多任務,在規定時間內報名參加,得到好的名次還可以寫一篇評測論文。出名的比如CIKM、SIGKDD等等,大家可以關注。國內的話像NLPCC、CCKS等也會開放評測。

關乎代碼,最好的方法就是不斷的練習,對於自然語言處理也不例外,在學習理論的同時,也要積累代碼量。關於這一塊,初學者可以選定研究的小方向之後,嘗試自己寫代碼/或者參考網上代碼去跑一些baseline的demo。

拿文本分類來舉例,最簡單的是one-hot,然後是tf-idf、lda、lsa,到word2vec、glove、fasttext,再到textrnn、textcnn、han等,最後到現在的elmo、bert,這一套過來,關於文本分類這一個自然語言處理下的小方向的流行模型我相信基本上都會清晰很多。

ps:這裡說的雖然簡單,但是要這樣過一遍,就是參考優秀的代碼跑通相信對於大多數人來說也需要花費很多時間,但相信這也是鍛煉成為一位AI算法工程師的必經之路。

重磅乾貨

不要愁找不到免費的優質資料,新年大禮包打包送給您。

  • 100 Days Of ML Code(機器學習100天): 地址: https://github.com/Avik-Jain/100-Days-Of-ML-Code 中文版地址: https://github.com/Avik-Jain/100-Days-of-ML-Code-Chinese-Version
  • Keras之父的Deep Learning with Python: 地址: https://github.com/fchollet/deep-learning-with-python-notebooks 中文版鏈接: https://pan.baidu.com/s/1Fsc1gg8D8E39XhQZ_nRn2Q 提取碼:indz
  • 李沐的動手學深度學習 : 鏈接: https://pan.baidu.com/s/1YNkuTycWWnKy7APbCN9YeA 提取碼:vy7w B站視頻鏈接:http://h5ip.cn/NriF 本書代碼庫: https://github.com/diveintodeeplearning/d2l-zh
  • Python實現統計學習方法一書中所有算法: 代碼庫地址: https://github.com/WenDesi/lihang_book_algorithm
  • Reddit超高贊免費NLP課程: 地址: https://github.com/yandexdataschool/nlp_course
  • 一個提供了很多機器學習問題的當前最優結果的項目: 地址: https://github.com//RedditSota/state-of-the-art-result-for-machine-learning-problems
  • 跟蹤NLP當前最新技術進度的項目: 地址: https://github.com/yuquanle/NLP-progress
  • 川大畢業極客創建項目深度學習500問: 地址: https://github.com/yuquanle/DeepLearning-500-questions
  • 彙集了40個關於中文NLP詞庫項目: 地址: https://github.com/yuquanle/funNLP
  • 機器學習/深度學習/自然語言處理/C/C++/Python/面試筆記: 地址: https://github.com/yuquanle/Algorithm_Interview_Notes-Chinese
  • 清華大學NLP組github,很多paper的整理: https://github.com/thunlp/
  • 深度學習實踐教程,Pytroch實現機器學習/深度學習算法: 地址: https://github.com/GokuMohandas/practicalAI
  • AI Challenger 2018 baseline方法: 地址: https://github.com/AIChallenger/AI_Challenger_2018 比賽主頁:https://challenger.ai/
  • 一份很全面的機器學習算法資料,包括視頻、代碼、Demo: 地址: https://github.com/trekhleb/homemade-machine-learning
  • 模式識別與機器學習(PRML) 下載主頁: https://www.microsoft.com/en-us/research/people/cmbishop/#!prml-book 本書代碼:http://prml.github.io/
  • 200多個最好的機器學習、NLP和Python相關教程: 地址:http://suo.im/5fTvIN
  • 機器學習小抄(像背單詞一樣理解機器學習): 地址: https://pan.baidu.com/s/1eQpA1DknCJCgjMS8QMLOJQ 提取碼:b79u