自然语言处理入门项目 硕士期间攻读深度学习还是自然语言处理好?
硕士期间攻读深度学习还是自然语言处理好?
感觉作者应该问的问题是应该攻读图像处理好还是自然语言处理好(目前深度学习的两大分支)。当然深度学习也不完全包含这两个,比如自然语言处理(NLP)在之前都是用统计学方法处理的,这两年才流行起来用了深度学习。我的研究方向和NLP相关,就重点说说NLP吧。
首先目前深度学习领域有两个最主流的模型CNN和RNN。CNN就是卷积神经网络,通常用在图像处理上,RNN是循环神经网络,自然语言领域用的比较多。作者说攻读深度学习,通常也需要找个小的点来攻读。比方NLP,也是个非常大的概念,在NLP这个大概念下,又有很小的一些方向,比方说问答系统(类似于聊天机器人),文档主题抽取,语音识别,机器翻译等等。还可以应用到其他领域,比如我的方向是利用NLP做安全领域的一些事情,如bug定位,summarize code,漏洞检测等(代码本身也是一种语言)。
接下来说说入门的难度吧,无论自然语言处理也好,图像处理也好,本质上都是把图片或者语句转换成向量,然后对向量做一些处理。既然是转换成向量,就得提到特征提取。个人觉得自然语言处理的提取难度是大于图片的,毕竟语言这种东西还是比较抽象的东西。提取的方法比如说按照词频,高端点的有基于语义的word2vec,但是这种特征再怎么表示,也没有图片的像素点,或者图片二值化以后的特征来的直观明了。
但是NLP无疑是很容易入门的,为什么这么说呢,因为nlp现在有太多太多容易又好用的工具了。比方说word2vec,可以用的工具太多太多,我最常用的就是gensim,基本上所有自然语言处理的算法都有api。如果想要解析语法树,可以用stanford corenlp。其他的很多就是简单的字符串处理。入门可以说很容易,你理解完概念之后就可以上手了。记得我刚入坑的时候,第一个任务是实现14年一篇软工领域顶会的论文,完全是当做字符串处理,看懂论文就直接上手写代码了,都没用api(当然因为代码基础还可以,哈哈,吹个牛)。
但是想深入的话,无论是图像处理还是NLP都是非常难的,但是我觉得,NLP更难。图像处理其实是个比较直观的东西,比如人脸识别,各种识别,很少涉及逻辑理解,但是NLP不一样,很多领域的任务都是基于理解,而且结果也很难评判,比方机器翻译,你生成一句句子,虽说有BLEU这种指标,但是具体好坏,我觉得还是需要人阅读后来衡量的。
比方说上图,是最近研究的一个通过自然语言自动生成代码的一个基于Python ast的RNN(ACL 2017的论文的图),就是根据一句描述,生成代码,没错,我研究的就是那些传说中能取代程序猿的东西(瞎扯淡),生成的东西,根本没有一个评判标准,不像图像,有一个确定的标签,这是个非常主观的东西。
另外通过这张图再说一点,上面这张图看起来很,什么attention Bi-directional LSTM RNN(注意力机制双向长短时记忆循环神经网络),什么基于Python AST(抽象语法树)的生成和应用规则,本质上都是一个RNN,做了一些不同的变种而已
第一次打那么多文字。。。希望能有帮助
有哪些常用的自然语言处理库?
主要有以下六种可以参考:
1、NLTK(自然语言工具包)用于分词、词形还原、词干提取、解析、句法分析、词性标注等任务。该库具备可用于几乎所有 NLP 任务的工具。
2、spaCy 是 NLTK 的主要竞争者。这两个库可用于同样的任务。
3、scikit-learn 提供一个用于机器学习的大型库,包含用于文本预处理的工具。
4、gensim 是用于话题空间建模、向量空间建模和文档相似度的工具包。
5、Pattern 库是作为 web 挖掘模块提供服务的,因此,它也支持 NLP 任务。
6、polyglot 是另一个用于 NLP 的 Python 包。它不是很流行,但也可以用于大量 NLP 任务。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。