数据挖掘、机器学习、自然语言处理这三者是什么关系?这几个怎么入门啊?

本题已收录至知乎圆桌:机器之能 X 语言之美,更多「人工智能」相关话题欢迎关注讨论。
本人菜鸟一枚,本科学机器学习、数据挖掘、自然语言处理零基础,目前正在学统计学习方法,由于英语比较差,吴恩达的课听不下去,所以有点无从下手,希望有经验的大牛们给指点迷津,指导下这些怎么学习。ps:本人对算法和数据分析比较感兴趣,机器学习、数据挖掘、自然语言处理哪一个更适合?这三个哪一个更有发展潜力?
收藏者
0
被浏览
96

5 个回答

木木 LV

发表于 7 天前

前面几位答主已经回答了数据挖掘、机器学习、自然语言这三者的关系。下面我就回答一下NLP如何入门吧。
自然语言处理入门该上什么课,看什么书,有哪些工具可用?Medium作者Melanie Tosik汇总了一份资源,量子位节选了其中的课程、库、教材部分,并进行了简单的说明。
前面的答主已经说了,英文是学好机器学习、自然语言处理的基础,所以下面的资料全是英文。其中斯坦福的NLP课程非常有名,是该领域的大牛Chris Manning亲自讲授,而且课程每年都会与时俱进做出更新。
在线课程

斯坦福大学自然语言处理入门课程
教师:Dan Jurafsky & Chris Manning
https://www.youtube.com/watch?v=nfoudtpBV68&list=PL6397E4B26D00A269
斯坦福CS224d:用深度学习做自然语言处理
教师:Richard Socher
http://cs224d.stanford.edu/syllabus.html
与Manning的入门课程相比,这门课讲解了更高级的机器学习算法,以及用于NLP的深度学习和神经网络架构。
Coursera公开课:自然语言处理入门
https://www.coursera.org/learn/natural-language-processing
密歇根大学提供的NLP入门课程
库和开源工具

spaCy
网站 https://spacy.io/
博客 https://explosion.ai/blog/
demo https://spacy.io/docs/usage/showcase
一个开源Python库,有很好的用例、API文档和demo应用。
自然语言工具包 (NLTK)
网站 http://www.nltk.org/
教程 http://www.nltk.org/book/
Python NLP编程的实用入门工具,主要用于教学。
斯坦福CoreNLP
网站 https://stanfordnlp.github.io/CoreNLP/
一个高质量Java分析工具包
教材



数据挖掘、机器学习、自然语言处理这三者是什么关系?这几个怎么入门啊?-1.jpg


Speech and Language Processing
第二版:http://www.cs.colorado.edu/~martin/slp2.html
第三版:https://web.stanford.edu/~jurafsky/slp3/
作者:Daniel Jurafsky & James H. Martin
自然语言处理经典教科书,覆盖了这一领域的所有基础知识。第二版可以购买纸质版,也可以在线阅读作者发布的电子版;第三版尚未出版,作者目前发布了部分章节。
本书在国内有中译本《自然语言处理综论》https://book.douban.com/subject/1390499/ 和影印版《语音与语言处理》https://book.douban.com/subject/5373023/ ,可能已断货。


数据挖掘、机器学习、自然语言处理这三者是什么关系?这几个怎么入门啊?-2.jpg


Foundations of Statistical Natural Language Processing
https://nlp.stanford.edu/fsnlp/
作者:Chris Manning & Hinrich Schütze 比上一本书略高阶,主要讲NLP中的统计学方法。
中译本《统计自然语言处理基础》https://book.douban.com/subject/1224802/ ,可能已断货。


数据挖掘、机器学习、自然语言处理这三者是什么关系?这几个怎么入门啊?-3.jpg


Introduction to Information Retrieval
https://nlp.stanford.edu/IR-book/
作者:Chris Manning、Prabhakar Raghavan & Hinrich Schütze
排名/搜索领域的一本好书。
中译本《信息检索导论》https://book.douban.com/subject/5252170/ 。


数据挖掘、机器学习、自然语言处理这三者是什么关系?这几个怎么入门啊?-4.jpg


Neural Network Methods in Natural Language Processing
https://www.amazon.com/Network-Methods-Natural-Language-Processing/dp/1627052984
作者:Yoav Goldberg
对NLP领域神经网络应用的深入介绍。
电子版:http://u.cs.biu.ac.il/~yogo/nnlp.pdf

数据集

见Nicolas Iderhoff在GitHub上发布的NlP资源汇总:
https://github.com/niderhoff/nlp-datasets 。

niming LV

发表于 7 天前

已经有几个关于如何入门的回答,补充一下这三者的关系。数据挖掘和机器学习都是基于数据的科学。数据挖掘侧重于从数据中获取知识来供人类决策。知识来自与数据,结果往往是抽象的知识,大多数情况下并不直接进行决策。这是其主要特征。例如我们可以从大量春运数据中发现哪些站点人流量大从而调整运行图。获取人流量知识的过程,就是数据挖掘的一种简单应用。

机器学习则不同,它代表着一类技术。如果机器能够通过观测数据使得其处理某一任务的性能有所提升,那么它可以称为机器学习。例如,一个统计机器翻译系统或者神经网络机器翻译系统在初始状态下并不会翻译。当其处理了大量训练数据(训练过程)之后,其翻译性能就能得到提高,因此我们可以说这两种方法是机器学习。反之,如果我们面对的是一个通过手写规则生成的基于规则的机器翻译系统,则它并不能通过观测更多数据获得任何提升。那么它就不是一个机器学习系统。一个机器学习技术必须有五个组成部分:模型,数据,学习算法,推导算法和评测准则。模型在学习算法观测数据的过程中得到优化,推导算法对新的数据进行推导,评测准则告诉我们任务性能是否提高。

机器学习是解决问题的一种方法,但未必是唯一的方法,也未必是最优的方法。例如,如果我们要做的不是汉语到英语的翻译,而是C语言到机器代码的翻译,那么手写规则的编译器要远远强于机器学习做出来的编译器 (尽管基于机器学习编译器也是有可能实现的)。

自然语言处理则是一个很宽泛的概念,绝大多数与自然语言相关的技术都可以被归类为自然语言处理,包括解析、翻译、语音识别、摘要、自动修改、对话等等。根据所要完成的任务不同,可能需要融合大量不同的技术。例如,如果我们的任务是从大量文本语料中找出关于某个商品的评论,那么我们需要信息获取技术。如果进一步地我们需要判断商品的评价是正面还是负面,我们就需要Sentiment Analysis技术。许多自然语言技术都有机器学习实现(并且机器学习效果最好),但并不代表机器学习就是自然语言处理的全部(如传统的搜索技术就往往不用机器学习)。

叶弟 LV

发表于 7 天前

题主的问题太多了,每个展开都可以讲很多~
作为自然语言处理(NLP)方向的研究生,我来回答一下题主关于自然语言处理如何入门的问题吧,最后再YY一下自然语言处理的前途~
有点话我想说在前头:
不管学什么东西,都要跟大牛去学,真正的大牛可以把一件事解释的清清楚楚。
If you can't explain it simply, you don't understand it well enough.
跟大牛学东西,你不会觉得难,一切都觉得很自然,顺利成章的就掌握了整套的知识。
不过很遗憾,大牛毕竟是少数,愿意教别人的大牛更少,所以如果遇到,就不要强求语言了吧~
开始进入正题,我将介绍如何从零基础入门到基本达到NLP前沿:
----------NLP零基础入门----------
首推资料以及唯一的资料:
Columbia University, Micheal Collins教授的自然语言课程
链接>>
Michael Collins
Michael Collins,绝对的大牛,我心目中的偶像,这门课是我见过讲NLP最最最清楚的!尤其是他的讲义!
Collins的讲义,没有跳步,每一步逻辑都无比自然,所有的缩写在第一次出现时都有全拼,公式角标是我见过的最顺眼的(不像有的论文公式角标反人类啊),而且公式角标完全正确(太多论文的公式角标有这样那样的错标,这种时候真是坑死人了,读个论文跟破译密码似的),而且几乎不涉及矩阵表示……(初学者可能不习惯矩阵表示吧)。
最关键的是,Collins的语言措辞真是超级顺畅,没有长难句,没有装逼句,没有语法错误以及偏难怪的表示(学术圈大都是死理工科宅,语文能这么好真实太难得了)。《数学之美》的作者吴军博士在书中评价Collins的博士论文语言如小说般流畅,其写作功底可见一般。
举两个例子,如果有时间,不妨亲自体验下,静下心来读一读,我相信即使是零基础的人也是能感受到大师的魅力的。
1.语言模型(Language Model)
http://www.cs.columbia.edu/~mcollins/lm-spring2013.pdf2.隐马尔可夫模型与序列标注问题(Tagging Problems and Hidden Markov Models)
http://www.cs.columbia.edu/~mcollins/hmms-spring2013.pdf

现在Michael Collins在coursera上也开了公开课,视频免费看
链接>>
Coursera比看讲义更清晰,虽然没有字幕,但是不妨一试,因为讲的真的好清楚。
其在句法分析与机器翻译部分的讲解是绝对的经典。
如果能把Collins的课跟下来,讲义看下来,那么你已经掌握了NLP的主要技术与现状了。
应该可以看懂部分论文了,你已经入门了。
----------NLP进阶----------
Collins的NLP课程虽然讲的清晰,不过有些比较重要的前沿的内容没有涉及(应该是为了突出重点做了取舍),比如语言模型的KN平滑算法等。
此外,Collins的课程更注重于NLP所依赖的基础算法,而对于这些算法的某些重要应用并没涉及,比如虽然讲了序列标注的算法隐马尔可夫模型,条件随机场模型,最大熵模型,但是并没有讲如何用这些算法来做命名实体识别、语义标注等。
Stanford NLP组在coursera的这个课程很好的对Collins的课进行了补充。
链接>>
Coursera
本课程偏算法的应用,算法的实现过的很快,不过上完Collins的课后再上感觉刚刚好~
(这两门课是Coursera上仅有的两门NLP课,不得不佩服Coursera上的课都是精品啊!)
----------进阶前沿----------
上完以上两个课后,NLP的主要技术与实现细节就应该都清楚了, 离前沿已经很近了,读论文已经没问题了。
想要继续进阶前沿,就要读论文了。
NLP比起其它领域的一个最大的好处,此时就显现出来了,NLP领域的所有国际会议期刊论文都是可以免费下载的!而且有专人整理维护,每篇论文的bibtex也是相当清晰详细。
链接>>
ACL Anthology
关于NLP都有哪些研究方向,哪些比较热门,可以参考:
当前国内外在自然语言处理领域的研究热点&难点? - White Pillow 的回答

NLP是会议主导,最前沿的工作都会优先发表在会议上。关于哪个会议档次比较高,可以参考谷歌给出的会议排名:
Top conference页面也可以参考各个会议的录稿率(一般来说越低表示会议档次越高):
Conference acceptance rates基本上大家公认的NLP最顶级的会议为ACL,可以优先看ACL的论文。
-------------------------
最后简单谈一下这三者哪个更有发展潜力……作为一个NLP领域的研究生,当然要说NLP领域有潜力啦!
这里YY几个未来可能会热门的NLP的应用:
语法纠错
目前文档编辑器(比如Word)只能做单词拼写错误识别,语法级别的错误还无能为力。现在学术领域最好的语法纠错系统的正确率已经可以接近50%了,部分细分错误可以做到80%以上,转化成产品的话很有吸引力吧~无论是增强文档编辑器的功能还是作为教学软件更正英语学习者的写作错误。
结构化信息抽取
输入一篇文章,输出的是产品名、售价,或者活动名、时间、地点等结构化的信息。NLP相关的研究很多,不过产品目前看并不多,我也不是研究这个的,不知瓶颈在哪儿。不过想象未来互联网信息大量的结构化、语义化,那时的搜索效率绝对比现在翻番啊~
语义理解
这个目前做的并不好,但已经有siri等一票语音助手了,也有watson这种逆天的专家系统了。继续研究下去,虽然离人工智能还相去甚远,但是离真正好用的智能助手估计也不远了。那时生活方式会再次改变。即使做不到这么玄乎,大大改进搜索体验是肯定能做到的~搜索引擎公司在这方面的投入肯定会是巨大的。
机器翻译
这个不多说了,目前一直在缓慢进步中~我们已经能从中获益,看越南网页,看阿拉伯网页,猜个大概意思没问题了。此外,口语级别的简单句的翻译目前的效果已经很好了,潜在的商业价值也是巨大的。
不过……在可预见的近几年,对于各大公司发展更有帮助的估计还是机器学习与数据挖掘,以上我YY的那些目前大都还在实验室里……目前能给公司带来实际价值的更多还是推荐系统、顾客喜好分析、股票走势预测等机器学习与数据挖掘应用~

1x2s LV

发表于 7 天前

知乎首答,写个短的。本人现在大三,计算机本科。目前在国立台湾大学做交换生。
第一个和第三个问题我不懂,坐等大牛回答。我只结合自己的情况说一下第二个问题。
NG的课程我以前看过一部分,讲的风格我觉得在干货之前都比较好懂(笑)。但是天朝的学子接受起来可能有困难。台湾大学的林轩田老师的machine learning至少在本科生教育上做的很好。他们有个team经常去各种比赛上刷奖。我目前在修他的机器学习课程,觉得质量不错。现在coursera上也有同步课程。
传送门:
Coursera.org

个人觉得机器学习的很多方法都是从统计学上借鉴过来的,所以现在在补统计学的知识。同时作为一个理论性比较强的领域,线性代数和高等数学的知识起码是要具备的(至少人家用矩阵写个公式再做梯度下降你要看明白是在干嘛)。
我在大陆的mentor是做机器翻译的。我说我感觉这个领域现在是步履维艰,结果被我mentor教育了。现在微博数据好像挺好用的,数据抓过来跑一跑能出点票房预测什么的(其实非常吊了,反正我不会QAQ)。记得有本Python自然语言处理,NLTK还自带语料库,用来入门不错。起码要熟悉正则语言,再学个脚本语言。虽然Python已经很好用了,你要不要考虑下linux shell。以后混不下去了可以去给运维打下手。这东西又不是C语言,入门又没什么用,所以没什么30天精通NLP之类。而且自己研究NLP也面临着许多问题。首先你自己没有可研究的问题,没有动力。其次,研究资料也不算好找(虽然好像有免费的)。去年mentor给了我个5M的树库,还嘱咐我说是有版权的,不能给别人。(笑)
其实我自己都怀疑读研的时候要不要换个方向(请行里行外的师兄来劝我两句,要不要去做别的啊!!QAQ)
最后说一句,机器学习之类我觉得是国内大学所谓计算机专业比较偏向CS而不是CE的部分了。虽然工程性很重要,但是和软件工程什么的比起来Science的成分总要更大一些。我是比较喜欢理学才来学这个东西。当然我的认识可能不对,我姑妄说之。
Talk is cheap, 我还是去code吧...

奕夫 LV

发表于 7 天前

机器学习比较偏底层,也比较偏理论,机器学习本身不够炫酷,结合了具体的自然语言处理以及数据挖掘的问题才能炫酷。
机器学习好像内力一样,是一个武者的基础,而自然语言和数据挖掘的东西都是招式。如果你内功足够深厚,招式对你来说都是小意思。但机器学习同时也要求很高的数学基础,基本上我读到自然语言处理的博士,看机器学习顶会有些论文还是如读天书。而现在如果我们只讲,工程实现,有很多开源工具可以使用,你所需要的只是知道这些工具都是干嘛用的就好~~~
我不知道为什么,很多中国本科生对机器学习特别特别特别的狂热,但对矩阵,概率论又有着老纸早他妈不想念这门课了,终于过了的思想。我一直觉得,如果你真的矩阵,概率,微积分学的不好,早日勤动手,多编程,对日后找工作很有利!!!这三不管你学啥,一定不要舍本逐末的放弃了程序员最基础的编程功夫。
最后:人工智能就是有多少人工就有多少智能。不要被百度,谷歌等吹牛逼的软文迷惑了双眼。。。
我希望每个本科生:会一门脚本语言,熟悉java,了解c++ == 。。。  自己动手做过一个完整的网站,一个完整的移动App。上个OJ,AC上百题~~~    数学之类的不读博士没知乎上吹的这么重要。好好努力,勤动手,还有希望你学好英语,早日放弃百度知道,投奔stackoverflow,这样一定是你挑百度或者阿里~~

您需要登录后才可以回帖 登录 | 立即注册