自然语言处理(Natural Langauge Processing,NLP)是计算机系统理解人类语言的一种能力,它也是人工智能(AI)的子集。NLP在很多商业场景中都有所应用,比如推荐系统、对话机器人等。NLP相关的岗位薪资和前景在机器学习算法岗中也是具有很大的吸引力,很多人转行从事这方面的研究,大多数人是通过自学来提升自己的能力。目前,网络上也有很多多免费资源可以帮助自学者发展NLP方面的专业知识,但资源多且杂,没有很好的一条线将其串起来,那么在本文中,我们列出了针对初学者和中级学习者的学习资源。
针对初学者的NLP资源
对于初学者而言,可以采用两种方法,即传统的机器学习和深度学习来学习使用NLP,这两种方法差别很大的, 这里讲述了两者之间的区别。
传统的机器学习
传统的机器学习算法一般比较复杂,通常不易被人理解。以下是一些资源,可以帮助读者开始使用机器学习学习NLP:
- Jurafsky和Martin的语音和语言处理是传统自然语言处理领域中广受好评的圣经;
- 更实用的方法是可以尝试使用 Natural Language Toolkit;
深度学习
深度学习是机器学习领域中的一个子领域,由于人工神经网络的引入,其性能一般远远优于传统的机器学习方法。初学者可以从以下资源开始:
- CS 224n:这是斯坦福大学的公开课,也是开始使用深度学习进行NLP的最佳课程;
- Yoav Golberg出版的免费和付费书籍也是开始深度学习NLP的重要资源;
- 所有算法的非常全面的报道都可以在Jacob Einsenstein的NLP课程笔记中找到,该课程几乎涉及所有NLP方法。
针对从业者的NLP资源
如果你是一名数据科学家,那么将需要以下三种类型的资源:
1.快速入门指南/了解热门和新的知识;
2.特定问题的方法调查;
3.定期关注博客;
快速入门指南/了解热门和新的知识
- 可以从Otter等人的深度学习NLP综述开始;
- Young等人的综述,试图总结基于深度学习的NLP中的所有内容,并建议从业者开始使用NLP。
- 可以参考这篇文章来了解LSTM和RNN的基础知识,它们在NLP中经常被使用。LSTMs的另一个更知名的总结可以在此阅读,这是一篇有趣的论文,用于了解RNN隐藏状态的工作原理,同时推荐以下两篇有趣的博文:
1.http://colah.github.io/posts/2015-08-Understanding-LSTMs
2.https://distill.pub/2016/augmented-rnns/ - 卷积神经网络(Convnets)可用于理解自然语言,通过阅读此文可以帮助你想象在Convnets中处理NLP;
- Convnets和RNNs之间的相互比较已经在此文中总结出,二者实现的pytorch代码也公开在此;
特定问题的方法调查
从业者需要的另一类资源是对特定问题的回答:“我必须训练一个算法来完成某一项任务X,此时我能使用的最有利(也很容易获得)的东西是什么呢?”。
以下是你需要的内容:
文本分类
人们解决NLP的第一个问题是什么呢,主要是文本分类。文本分类可以将文本分类为不同的类别或检测文本中的情感。
- ParallelDots 博客中描述了关于情感分析的不同调查,虽然该调查是针对情感分析技术的,但可以将其扩展到大多数文本分类问题中。
- 另一项关于情感分析算法的调查(由Linked大学和UIUC的人员进行)可以通过在此阅读。
- 迁移学习在深入学习中变得非常热门,尤其是在图像处理任务中,只需要针对具体的分类任务进行模型微调就可以获得比较好的性能,同理,在维基百科上训练用于语言建模的NLP模型也可以在相对较少量的数据上迁移学习文本分类。以下是来自相关的资源链接:
1.https://arxiv.org/abs/1801.06146
2.https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf - Fast.ai上有一个关于NLP的学习文档可供使用
如果你正在学习两个不同的任务,而没有使用迁移学习的话,在此处提到了使用Convnet的技巧。 - 我们还发布了关于Zero Shot Text分类的工作,该工作在没有任何数据集培训的情况下获得了良好的准确性,并且正在开发下一代。我们构建了自定义文本分类API,读者可以在其中定义自己的类别。
序列标记
- 序列标记是一种标记具有不同属性的单词的任务,这些任务包括词性标注、命名实体识别、关键字标记等,我们在这里为这些任务写了一个有趣的方法调查。
- 今年COLING的研究论文为这些问题提供了一个很好的资源,它为训练序列标记算法提供了最佳指导。
机器翻译
- 最近,NLP最大的进步之一就是发现了可以将文本从一种语言翻译成另一种语言的算法。谷歌的系统采用的是一个复杂的16层LSTM,并提供最先进的翻译结果。
- 此外,部分媒体专家吹嘘炒作不成比例,一些夸张的报道声称“Facebook必须关闭发明自己语言的人工智能”:
1.https://gadgets.ndtv.com/social-networking/news/facebook-shuts-ai-system-after-bots-create-own-language-1731309
2.https://www.forbes.com/sites/tonybradley/2017/07/31/facebook-ai-creates-its-own-language-in-creepy-preview-of-our-potential-future/#1d1ca041292c - 关于机器翻译的教程,请参阅菲利浦科恩的研究论文。使用深度学习机器翻译的具体评论在此。
以下是本人最喜欢的几篇论文: - 谷歌的这篇论文告诉我们如何在有大量资金和数据的情况下端到端地解决问题;
- Facebook的 Convolutional NMT系统及其代码在此处作为库发布;
- https://marian-nmt.github.io/是一个用C ++快速翻译的框架;
- http://www.aclweb.org/anthology/P18-4020;
- http://opennmt.net/使每个人都能够训练他们的NMT系统;
问答系统
市面上有许多不同类型的问答任务,比如从选项中选择、从段落或知识图表中选择答案并根据图像回答问题,并且有不同的数据集可以了解最新技术方法。
* SQuAD数据集是一个问答数据集,它测试算法阅读理解和回答问题的能力。微软在今年早些时候发表的一篇论文中声称,他们已经达到了人类级别的精度。另一个重要的算法是Allen AI的BIDAF及其改进版;
- 另一个重要的算法是Visual Question Answering,它可以回答有关图像的问题。Teney等人的论文是一个很好的入门资源,可以在Github上找到实现代码;
- 在现实生活中,提取问答对大型文件应答可使用迁移学习来完成,相关的论文可以在此访问;
改述、句子相似或推理
NLP有三个不同的任务:句子相似性,释义检测和自然语言推理(NLI),每个都需要比上一个更多的语义理解。及其子集Stanford NLI是NLI最有名的基准数据集,并且最近成为了研究的焦点;此外,还有MS复述语料库和Quora语料库用于释义检测,以及用于STS的SemEval数据集(语义文本相似性),可在这里找到此领域中对相关模型的调查综述。在临床领域应用NLI是非常重要的,比如了解正确的医疗程序、副作用和药物的交叉影响等,此教程是医学领域中应用NLI的一个好资源。
下面是这个领域推荐的论文列表:
- 交互空间的自然语言推理——它采用了一种非常聪明的方法,使用DenseNet表示句子,你可以在这里阅读该论文;
- 这篇来自Omar Levy小组的研究论文表明,即使是简单的算法也能完成任务;
- BiMPM是预测释义的一个好模型,可以在这里访问;
- 我们还有一项关于释义检测的新工作,它将关系网络应用于句子表示之上,并已在今年的AINL会议上被接受。
其他领域
以下是一些更详细的综述性文章,阅读这些文章可以帮助你,获取在制作NLP系统时可能遇到的其他任务的研究信息。
- 语言建模(LM)——语言建模是学习一个无监督语言表示的任务,这是通过给定前N个单词的句子来预测第(n + 1)个单词。这些模型具有两个重要的实际用途,即自动完成并用作文本分类的转移学习的基础模型。详细的综述文章在此,如果有兴趣了解如何根据搜索历史自动完成手机/搜索引擎中的LSTM工作, 可以阅读这篇论文;
- 关系提取——关系提取是提取句子中存在的实体之间关系的任务,给定的句子“A像r一样与B相关”,那么得到三元组(A,r,B)。详细的综述文章在此,它使用BIDAF进行零射击关系提取;
- 对话系统—— 随着聊天机器人革命的开始,对话系统现在也风靡一时。许多人将对话系统看作成意图检测、关键字检测、问答等模型的组合,而其他人则尝试端到端地对其进行建模。详细的综述文章在此,在这里提下Facebook AI的Parl.ai框架;
- 文本摘要——文本摘要用于从文档中获取精简文本(段落/新闻文章等)。有两种方法可以做到这一点:提取和抽象总结。虽然抽取摘要从文章中提供了具有最高信息内容的句子,但抽象概括的目的是像人类一样编写摘要。来自爱因斯坦AI的演示将抽象概括带入了主流研究中,详细的综述文章在此;
- 自然语言生成(NLG)—— 自然语言生成是计算机旨在像人类一样写作的研究,可能是写故事、诗歌、图像标题等。目前,在生成图像标题上已经做得很好了,其中将LSTM和注意机制相结合,使得输出可用于现实生活中,详细的综述文章在此;
关注博客
以下是推荐关注的博客列表,对于NLP感兴趣的读者可以时常浏览:
- 爱因斯坦AI : https://einstein.ai/research
- Google AI:https://ai.googleblog.com/
- WildML: http://www.wildml.com/
- DistillPub: https://distill.pub/
作者信息
Muktabh Mayank,数据科学家、企业家、社会学家
个人主页:https://twitter.com/muktabh
文章原标题《Free resources to learn Natural Language Processing》,译者:Uncle_LLD。
文章为简译,更为详细的内容,请查看原文。