nlp是什么课,如何体现nlp的价值
作者:俞全乐,湖南大学硕士研究生,机器学习与自然语言处理专业。欢迎志同道合的朋友在微信官方账号‘艾小白简介’与我交流学习。
作为一个自然语言初学者,我在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》。我们到此为止吧。我觉得这些初学者的参考书就够了。
另外,当你发现自己手头资料不够时,我相信你有能力自己去搜索更好更高级的资料,这里就不多说了。授人以鱼不如授人以渔。
一般最简单的信息搜索就是百度和Google,同样的关键词在这两个搜索引擎中得到的结果可能会有很大的不同,所以在找不到满意结果的时候不妨两个都试试。
另一方面,一些开通了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
我相信以上大家肯定都或多或少听过,应该都属于经典教程了,所以有大量时间的初学者可以花时间钻研学习,看不懂的地方多看几篇,再看不懂就网上查阅各种资料包括别人的学习笔记继续研究,相信经历过之后肯定是豁然开朗并且功力大为长进。
推荐黄海广博士的笔记,作为参考:
吴恩达机器学习笔记: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:
地址:
https://github.com/Avik-Jain/100-Days-Of-ML-Code
中文版地址:
https://github.com/Avik-Jain/100-Days-of-ML-Code-Chinese-Version
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
知乎“看山杯” 夺冠记:
地址:http://suo.im/58piBA
"达观杯"季军分享:
地址:“达观杯”文本智能处理挑战赛,季军带你飞
作者简介
乐雨泉 (yuquanle),湖南大学在读硕士,研究方向机器学习与自然语言处理。曾在IJCAI、TASLP等会议/期刊发表文章多篇。欢迎志同道合的朋友和我在公众号"AI小白入门"一起交流学习,探讨成长。
欢迎关注作者的公众号:AI小白入门。
推荐阅读
《Java自然语言处理》
作者:[美]理查德M.里斯
自然语言处理(NLP)是应用程序开发的重要领域,在解决实际问题中起着越来越重要的作用。NLP任务支持的自然语言可访问应用程序需求显著增。本书将探索如何使用诸如全文本搜索、专有名称识别、聚类、标记、信息提取、汇总等方法自主组织文本。书中涵盖了NLP的概念,即使没有统计或自然语言处理背景的人也可以理解它。
什么是横断山?
心情不好时,看这3张图,瞬间豁然开朗
万里挑一!热门机器学习开源资源最强盘点
稻盛和夫:像谈恋爱一样工作,像有钱人一样生活
这个调查刷爆网络:收入越低越爱看电视,收入越高越爱读书!