前言

前段时间有朋友询问说NLP领域如何学习,然而一直忙于毕业论文中实在没有时间,两年半真的实在太难受了。昨天刚交了盲审,祈祷顺利毕业呀。

今天刚好有时间讲讲我自己的学习之路,然后谈谈我对自然语言处理领域学习的一些建议。

老宋:从迷茫到入坑

老宋本科在帝都某211,专业自动化,学的东西乱七八糟,因此翘课3年,挂科两门,侥幸毕业,实在不感兴趣。在本科期间,做过一年的嵌入式Linux,然后在大三之后转做Android,并花费半年之久考研(别问为啥考北科,问就是求稳)。说这些表达的意思是,老宋的基础还行,遗憾的是没有大牛带,一个人摸索的确难受,方向的不确定性也让人很迷茫。不过这也养成了我自学,自查,自己搞的习惯,这大学也没白读不是。

我个人觉得我在大学一个重要的收获就是,学会思考,坏处是经常会睡不着觉,乱七八糟一通思考。后来慢慢思考自己的路要怎么走,其实是一个不断探索的过程,中间自己不仅仅编程吧,其他经济学等方面也都有涉及,对吹牛逼大有益处。

到了研究生阶段,第一学期,懵懵懂懂学习机器学习基础知识,然后到第二学期,开始正式进入自然语言处理领域,开始打算做阅读理解方向的内容(事实证明,没有好老师指导,研究生想在阅读理解领域干点事情,基本不可能)。就这样,看论文,写代码,到了研二第二学期,开始找实习。刚开始,觉得刷题对算法岗不咋重要,然而,事实啪啪啪打我的脸,春招的笔试基本都挂,难受的一批。然后就是自己做的方向太窄了,阅读理解有没有商用,懂的面试官贼少,而你又没有顶会之类的硬货,因此,整个春招找实习算是很失败的。

总结下来就是两大原因:

  • 忽略了刷题的重要性,搞得笔试根本过不去,bat连面试资格都没有,难受啊

  • 方向太窄,阅读理解没面试官懂,且你没有硬货。

经过反思之后,我依旧没有把刷题放在首要任务上,这是秋招的一大败笔。

其实还有一点就是,看论文到底有没有用,我个人精读论文不下100,泛读的也不下200篇,可是面试官问不出来呀。很多同学都是看看BERT,Transformer,看看博客,刷刷面经就面过了(刷题需足够多),这也让我本身怀疑看论文的必要性,因为真的没有几个面试官能问出什么高水平的问题,基本就面经上常见的问题。

而今年算法岗还有一个有趣的现象:有的大厂面试官的水平不如应聘者,真实千奇百怪啊。

如何学习自然语言处理领域?

其实,我个人依旧认为学习自然语言处理领域的最好方式就是看论文,虽然今年不少人都是刷面经过的算法岗(有的在5月份连BERT都不知道),但从学习角度来说还是以论文为主,毕竟目前自然语言处理领域处于高速发展中。

如果我是面试官,我就从:你能不能谈谈最近预训练语言模型的发展 这一问题来评估应聘者的水平,要想说清楚这个发展历程,没有个精读10篇预训练语言模型论文是肯定不行的。而这一问题,也只有百度面试官问过,其他很多厂都是最多问问BERT,还有的大厂问各种数学计算公式,在我看来挺无聊的,背个公式这tm能体现出应聘者水平吗。这也从侧面验证百度技术还是厉害的。

因此,我这里并不介绍秋招准备的东西,而是日常学习中,自然语言处理你应该学习哪些东西,当然这是我按照我个人的学习推荐的,如果你要急于准备秋招,建议去牛客刷面经,对面试帮助极大。

如何入门自然语言处理?

首先,你要对自然语言处理领域有大致的了解,自然语言处理领域有哪些子任务,每个子任务都有哪些特点等。我个人认为这是你进入自然语言处理领域要做的第一件事情。

幸运的是,清华2018出了一篇报告讲述自然语言处理领域的现状,名为:《2018自然语言处理研究报告》。可以在文章结尾的百度云自己下载。

在进入自然语言领域之前,依旧需要你对机器学习以及深度学习有一定的基础,因此我个人推荐先学习这两大内容。机器学习对于自然语言处理来说相对并不重要,因此,可以简单过一遍即可。


在这之后,你就应该学习自然语言处理领域的内容了,学习自然语言处理最好的方式是以点带面,从一个实际的上层应用出发,比如推荐,搜索,对话等。分析该上层应用中涉及到哪些自然语言处理方面的内容,然后针对性的学习。

就我个人来说,我依旧推荐文本分类作为入门的第一选择,因为文本分类在业界中应用的确最为广泛。我个人也有两个相关的仓库和文章:

  • 文章模型:几个可作为Baseline的文本分类模型

  • 基于词向量的模型:TextClassification-Pytorch

  • 基于BERT的模型:Bert-TextClassification

由于NLP还在快速发展中,因此还没有那部书能够把内容以往打尽,因为书的周期太长,等出来后,技术都过时了。因此,对于自然语言处理领域来说,最重要的依旧是看论文,我之前写过一篇关于论文大礼包的,你把其中重要的文章看一遍基本就入门了,大概20多篇吧。

  • 听说你急缺论文大礼包?(更新ing)

如何深入自然语言处理领域?

对于自然语言处理领域来说,有很多子任务,大多数人都是专注于有限几个领域。尤其是预训练语言模型诞生后,区别更不大了。在前面已经提到过了,那么你首先应该选择一个你感兴趣的上游任务,上游任务往往都比较复杂,融合了很多子任务。 举例来说:对于任务型对话来说,就涉及到文本分类,序列标注,文本匹配等任务。因此,你入门之后,还需要对应的学习多个子任务的内容。这里我推荐两个内容:

  • NLP-progress - 讲述nlp相关任务最新进展

  • 中文相关进展 -- 中文nlp任务的数据集,论文,进展等

推荐几个知乎大佬

很多学生都是面向博客学习的 ,因此,我个人也推荐一波大佬:

  • 张俊林

  • 深度学习与NLP -- 量大,质量也不错

  • 夕小瑶 -- 百度aig部NLP组大佬

  • 刘知远 -- 清华副教授

  • 呜呜哈 -- 对话做的比较深

  • 习翔宇 -- 清华大佬,博士,起薪百万的那种

其他一些更新不勤快,但文章质量还不错的博主

  • 吴海波 -- 蘑菇街推荐算法工程师

  • JayLou

  • 香侬慧语科技

  • 低级炼丹师

  • 王喆 -- 清华大佬

  • Juliuszh -- 清华大佬

  • 李如

  • AI talk -- 讲落地的一些东西

  • 萧瑟 -- 阿里妈妈大佬

  • Tobias Lee

当你准备面试时

当你准备面试时,一方面是面经,一方面是基础知识。我个人基础还行,秋招期间维护了一个仓库来复习,后续有时间还会不断更新,可以star一下。

  • 面试仓库:NLPer-Interview

最后

时间有限,码字不易,点赞支持,有钱打赏。

资料在这里

链接:pan.baidu.com/s/1dYFki5

提取码:10a5

额,考虑到有可能侵权问题,上面提到的一些其他资料大家还是自己去下载吧。

哦,对了,最近很多人私信我问问题,我就不回复了,咱也没义务不是。还有,千万别加我微信,我微信最近多了老多不认识的人,默默躺在通讯录里。




本文由作者授权AINLP原创发布于公众号平台,点击'阅读原文'直达原文链接,欢迎投稿,AI、NLP均可。





关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


从老宋的角度看,自然语言处理领域如何学习?_java