作者:乐雨泉(yuquanle),湖南大学在读硕士,研究方向机器学习与自然语言处理。
欢迎志同道合的朋友和我在公众号
"AI 小白入门"
一起交流学习。
作为一名自然语言初学者,在 NLP 里摸爬滚打了许久,一些心得,请壮士收下。
谈一下自己探索过的摸爬滚打过的方法,大致可以分为二种。
第一种
,在实践中学习,找一个特定的任务,譬如文本分类、情感分析等。然后以做好任务为导向的去挖掘和这一个任务相关的知识点。
由于没有系统的学习,肯定会遇到各种各样的拦路虎问题,当遇到不懂的概念时,利用百度/谷歌查阅相关资料去理解学习这个概念,若是概念难懂,就多看不同的人对这些概念的理解,有的时候有些人能深入浅出的讲解一些很不错的资料,个人觉得这种有目的性的实践学习方式学来的东西更加印象深刻。
这样也在潜移默化中锻炼了个人能力(
独立查找资料/文献是一种极其重要的能力
),又能达成某些目的。这样过了一段时间之后,好像懂很多东西了,但是好像又有很多方面不了解,其实这就是在某个点有点深度了,但是广度还不够。
如果此时有大把闲置的时间,就可以去刷刷那些不错的系统性课程,刷课的时候会发现很多概念理解起来轻松多了,或者说似曾相识(理解的知识点又得到了复习并再次确认自己的理解了的知识点和这些老师讲的是否一致)。
第二种
,就是一上来就是刷课刷书,把理论什么的都梳理一遍,然后根据课程把课后作业都敲一遍并且理解。
这样系统的学习虽然会花上很长的时间,但是也会让你对知识体系有个全面的认识,之后你再进去某个小点(比如文本分类等)的深入探索,会发现很多东西都理解学习过。
其实你已经有了知识的广度,但是对某个点的知识深度还欠缺,此时就按需深挖即可,当然,这个过程肯定也不轻松。
其实这二种学习方法我觉得都挺不错,根据自身具体情况具体分析,交叉使用,效果应该更佳。
现在回过头来看,我之前的学习方法更像第一种。
最近想从头开始学一些基础知识,以查漏补缺,所以整理了一大波不错的资料,作为
开年大礼包
送给初学者们,往下看,你想要的都在后面,记得看完免费的
赞
来一个哟!
编程语言
初学者推荐 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》。
就此打住,对于初学者这几本工具书我觉得够了。
此外,当你们发现手头的资料不够的时候,相信你已经拥有了自我搜索寻找更好更进阶资料的能力了,所以我这里也不多说了,授人以鱼不如授人以渔。
搜索资料一般最简单的就是百度、谷歌,相同的关键词在这二种搜索引擎上得到的结果可能也大相径庭,所以在不能找到满意的结果时不妨二者都尝试下。
另一方面,一些开放了githu b的项目也可以去 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
我相信以上大家肯定都或多或少听过,应该都属于经典教程了,所以有大量时间的初学者可以花时间钻研学习,看不懂的地方多看几篇,再看不懂就网上查阅各种资料包括别人的学习笔记继续研究,相信经历过之后肯定是豁然开朗并且功力大为长进。
推荐
黄海广
博士的笔记,作为参考:
学术论文
当知识贮备到一定量的时候,自身的能力也提升上来了,此时就可以直接看第一手资源了:官方 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 等。
对于期刊和会议,建议大家直接看会议文章,因为会议文章都比较实时,而且大多数人会把直接的最新研究发到会议上,中了会议之后再去做进一步完善补充扩展成期刊。
所以对于目的为发文章的研究生,首先看会议文章即可,当发现此文值得深入研究的时候,可以去尝试寻找期刊版(当然也不一定有)。
那么应该如何下载文章呢?
对于会议文章直接去主页搜索接收文章列表,很多不会提供下载链接,那就把需要的文章名复制粘贴到百度学术/谷歌学术里面去搜索下载。
深度学习框架