自然语言处理(NLP)入门学习资源清单
Melanie Tosik目前就职于旅游搜索公司WayBlazer,她的工作内容是通过自然语言请求来生产个性化旅游推荐路线。回顾她的学习历程,她为期望入门自然语言处理的初学者列出了一份学习资源清单。

displaCy网站上的可视化依赖解析树
记得我曾经读到过这样一段话,如果你觉得有必要回答两次同样的问题,那就把答案发到博客上,这可能是一个好主意。根据这一原则,也为了节省回答问题的时间,我在这里给出该问题的标准问法:“我的背景是研究**科学,我对学习NLP很有兴趣。应该从哪说起呢?”
在您一头扎进去阅读本文之前,请注意,下面列表只是提供了非常通用的入门清单(有可能不完整)。 为了帮助读者更好地阅读,我在括号内添加了简短的描述并对难度做了估计。最好具备基本的编程技能(例如Python)。
在线课程
• Dan Jurafsky 和 Chris Manning:自然语言处理[非常棒的视频介绍系列]
https://www.youtube.com/watch?v=nfoudtpBV68&list=PL6397E4B26D00A269
• 斯坦福CS224d:自然语言处理的深度学习[更高级的机器学习算法、深度学习和NLP的神经网络架构]
http://cs224d.stanford.edu/syllabus.html
• Coursera:自然语言处理简介[由密西根大学提供的NLP课程]
https://www.coursera.org/learn/natural-language-processing
图书馆和开放资源
• spaCy(网站,博客)[Python; 新兴的开放源码库并自带炫酷的用法示例、API文档和演示应用程序]
网站网址:https://spacy.io/
博客网址:https://explosion.ai/blog/
演示应用网址: https://spacy.io/docs/usage/showcase
• 自然语言工具包(NLTK)(网站,图书)[Python; NLP实用编程介绍,主要用于教学目的]
网站网址:http://www.nltk.org
图书网址: http://www.nltk.org/book/
• 斯坦福CoreNLP(网站)[由Java开发的高质量的自然语言分析工具包]
网站网址: https://stanfordnlp.github.io/CoreNLP/
活跃的博客
• 自然语言处理博客(HalDaumé)
博客网址:https://nlpers.blogspot.com/
• Google研究博客
博客网址:https://research.googleblog.com/
• 语言日志博客(Mark Liberman)
博客网址:http://languagelog.ldc.upenn.edu/nll/
书籍
• 言语和语言处理(Daniel Jurafsky和James H. Martin)[经典的NLP教科书,涵盖了所有NLP的基础知识,第3版即将出版]
https://web.stanford.edu/~jurafsky/slp3/
• 统计自然语言处理的基础(Chris Manning和HinrichSchütze)[更高级的统计NLP方法]
https://nlp.stanford.edu/fsnlp/
• 信息检索简介(Chris Manning,Prabhakar Raghavan和HinrichSchütze)[关于排名/搜索的优秀参考书]
https://nlp.stanford.edu/IR-book/
• 自然语言处理中的神经网络方法(Yoav Goldberg)[深入介绍NLP的NN方法,和相对应的入门书籍]
https://www.amazon.com/Network-Methods-Natural-Language-Processing/dp/1627052984
入门书籍: http://u.cs.biu.ac.il/~yogo/nnlp.pdf
其它杂项
• 如何在TensorFlow中构建word2vec模型[学习指南]
https://www.tensorflow.org/versions/master/tutorials/word2vec/index.html
• NLP深度学习的资源[按主题分类的关于深度学习的顶尖资源的概述]
https://github.com/andrewt3000/dl4nlp
• 最后一句话:计算语言学和深度学习——论自然语言处理的重要性。(Chris Manning)[文章]
http://mitp.nautil.us/article/170/last-words-computational-linguistics-and-deep-learning
• 对分布式表征的自然语言的理解(Kyunghyun Cho)[关于NLU的ML / NN方法的独立讲义]
https://github.com/nyu-dl/NLP_DL_Lecture_Note/blob/master/lecture_note.pdf
• 带泪水的贝叶斯推论(Kevin Knight)[教程工作簿]
http://www.isi.edu/natural-language/people/bayes-with-tears.pdf
• 国际计算语言学协会(ACL)[期刊选集]
• 果壳问答网站(Quora):我是如何学习自然语言处理的?
https://www.quora.com/How-do-I-learn-Natural-Language-Processing
DIY项目和数据集

• Nicolas Iderhoff已经创建了一份公开的、详尽的NLP数据集的列表。除了这些,这里还有一些项目,可以推荐给那些想要亲自动手实践的NLP新手们:
数据集:https://github.com/niderhoff/nlp-datasets
• 基于隐马尔可夫模型(HMM)实现词性标注(POS tagging).
https://en.wikipedia.org/wiki/Part-of-speech_tagging
https://en.wikipedia.org/wiki/Hidden_Markov_model
• 使用CYK算法执行上下文无关的语法解析
https://en.wikipedia.org/wiki/CYK_algorithm
https://en.wikipedia.org/wiki/Context-free_grammar
• 在文本集合中,计算给定两个单词之间的语义相似度,例如点互信息(PMI,Pointwise Mutual Information)
https://en.wikipedia.org/wiki/Semantic_similarity
https://en.wikipedia.org/wiki/Pointwise_mutual_information
• 使用朴素贝叶斯分类器来过滤垃圾邮件
https://en.wikipedia.org/wiki/Naive_Bayes_classifier
https://en.wikipedia.org/wiki/Naive_Bayes_spam_filtering
• 根据单词之间的编辑距离执行拼写检查
https://en.wikipedia.org/wiki/Spell_checker
https://en.wikipedia.org/wiki/Edit_distance
• 实现一个马尔科夫链文本生成器
https://en.wikipedia.org/wiki/Markov_chain
• 使用LDA实现主题模型
https://en.wikipedia.org/wiki/Topic_model
https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation
• 使用word2vec从大型文本语料库,例如维基百科,生成单词嵌入。
https://code.google.com/archive/p/word2vec/
https://en.wikipedia.org/wiki/Wikipedia:Database_download
NLP在社交媒体上
• Twitter:#nlproc,NLPers上的文章列表(由Jason Baldrige提供)
https://twitter.com/hashtag/nlproc
https://twitter.com/jasonbaldridge/lists/nlpers
• Reddit 社交新闻站点:/r/LanguageTechnology
https://www.reddit.com/r/LanguageTechnology
• Medium发布平台:Nlp
原文链接:
https://medium.com/towards-data-science/how-to-get-started-in-nlp-6a62aa4eaeff
自然语言处理(NLP)入门学习资源清单的更多相关文章
- 你不可错过的Java学习资源清单(包含社区、大牛、专栏、书籍等)
学习Java和其他技术的资源其实非常多,但是我们需要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难.基于这样的一个标准,我在这里为大家提供一份Java的学习资源清单. 一: ...
- 你不可错过的Java学习资源清单
学习Java和其他技术的资源其实非常多,但是我们需要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难.基于这样的一个标准,我在这里为大家提供一份Java的学习资源清单. Ja ...
- 对JAVA工程师绝对有用的Java学习资源清单
学习Java和其他技术的资源其实非常多,但也不是都是好的有用的,我们要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难.基于这样的一个标准,我在这里为大家提供一份Java的学 ...
- WEB前端学习资源清单
常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...
- [转] WEB前端学习资源清单
常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...
- 《转载》python/人工智能/Tensorflow/自然语言处理/计算机视觉/机器学习学习资源分享
本次分享一部分python/人工智能/Tensorflow/自然语言处理/计算机视觉/机器学习的学习资源,也是一些比较基础的,如果大家有看过网易云课堂的吴恩达的入门课程,在看这些视频还是一个很不错的提 ...
- (转)开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
Github, Soundcloud, FogCreek, Stackoverflow, Foursquare,等公司通过elasticsearch提供搜索或大规模日志分析可视化等服务.博主近4个月搜 ...
- Sublime text 入门学习资源篇及其基本使用方法
Sublime text 学习资源篇 史上最性感的编辑器-sublimetext,插件, 学习资源 官网 http://www.sublimetext.com/ 插件 https://packagec ...
- 开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
from: http://www.w3c.com.cn/%E5%BC%80%E6%BA%90%E5%88%86%E5%B8%83%E5%BC%8F%E6%90%9C%E7%B4%A2%E5%B9%B ...
随机推荐
- call、apply、bind,你有多了解?
call.apply.bind 1.相同也不同 我们先从浅显的部分开始讲, 这三个方法都可以改变this的指向,都可以进行传参,第一个参数都是修改this的指向 call() 和 apply() 改变 ...
- 结对作业——WordCount进阶版
Deadline: 2018-10-7 22:00PM,以博客提交至班级博客时间为准 要求参考来自:https://www.cnblogs.com/xinz/archive/2011/11/27/22 ...
- 使用CURL进行模拟登录
在信息采集的时候,要采集的站点可能需要登录,这样使用简单的采集方式(例如file_get_contents)就无法做到了,我们可以利用PHP的CURL扩展库来进行模拟登录,下面给出代码示例: < ...
- 【转载】Oracle 中count(1) 、count(*) 和count(列名) 函数的区别
1)count(1)与count(*)比较: 1.如果你的数据表没有主键,那么count(1)比count(*)快2.如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快3. ...
- ubuntu14.04安装 Apache2 并配置https
一.安装 Apache2 sudo apt-get update sudo apt-get install apache2 安装完apache2,默认根目录在/var/www/html 下,点击其下的 ...
- Android开发 ---构建对话框Builder对象,消息提示框、列表对话框、单选提示框、多选提示框、日期/时间对话框、进度条对话框、自定义对话框、投影
效果图: 1.activity_main.xml 描述: a.定义了一个消息提示框按钮 点击按钮弹出消息 b.定义了一个选择城市的输入框 点击按钮选择城市 c.定义了一个单选提示框按钮 点击按钮选择某 ...
- JS类小功能
工作中,总是要处理一些前端的小功能.都是网上搜的JS脚本 <script> //防止页面后退 history.pushState(null, null, document.URL); wi ...
- java学习笔记37(sql工具类:JDBCUtils)
在之前的内容中,我们发现,当我们执行一条语句时,每新建一个方法,就要重新连接一次数据库,代码重复率很高,那么能不能把这些重复代码封装成一个类呢,我们学习方法时,就学习到方法就是为了提高代码的利用率,所 ...
- day 07 元组,字典和集合等数据类型介绍
元组:就是一个不可变的列表 1.用途,当我们需要记录多个值,并且没有更改的需求的时候,应该使用元组 2定义方式:使用,在 ( ) 中分隔开多个任意类型的值 注:t=("egg",) ...
- UVA-315 无向图求割点个数
题意抽象: 给定一个无向图,输出割点个数. 割点定义:删除该点后,原图变为多个连通块. 考虑一下怎么利用tarjan判定割点: 对于点u和他相连的当时还未搜到的点v,dfs后如果DFN[u]<= ...