摘要: 本文列出了一些适用于初学者和从业者学习天然语言处理的相关资源。
天然语言处理表示计算机系统理解人类语言的能力,它是人工智能的一部分。网上有不少种资源能够帮助你从零开始学习NLP。本文列出了适用于初学者和从业者的一些相关资源。git
给初学者的天然语言资源github
对于初学者,能够采用两种传统的方法—机器学习和深度学习来开始天然语言处理。这两种方法是不一样的,你能够点击这里来查看它们之间的区别。web
传统机器学习算法
传统的机器学习算法比较复杂,不太容易理解。我的建议使用深度学习来作NLP更快捷。网络
深度学习(Deep Learning)框架
深度学习是机器学习的一个分支领域,因为人工神经网络的引入,深度学习比传统机器学习的表现要好得多。能够经过深度学习来学习NLP,对于初学者能够查看如下的资源:机器学习
• CS224n:这是从零开始经过深度学习来学习NLP的最佳课程。本课程由斯坦福大学主办,能够点击这里访问;学习
• YoavGolberg的免费和付费的书,是在NLP中开始深度学习的好资源。免费书籍能够在这里访问;测试
• 在Jacob Einsenstein的关于GATECH的NLP类的笔记中,覆盖了全部NLP的算法,而NLP类几乎能处理全部的NLP方法,点击这里能够访问他的笔记;网站
给从业者的天然语言处理的学习资源
若是你是一个数据专家,可能须要以下三种类型的资源:
一、快速入门指南
二、特定问题的检查方法
三、时常阅读文章
快速入门指南
• 对于NLP的概述,能够从Daniel W. Otter等人的深度学习报告开始,点击这里访问。
• Tom Young等人的一篇调查报告总结了基于深度学习的NLP中的全部最新内容,建议从业者开始使用NLP,点击这里查看报告。
• 这有一篇不错的论文,让咱们了解了如何隐藏循环神经网络(Recurrent Neural Networks,RNNs)的状态。我还推荐以下两篇博文:
• 了解LSTM(Long Short-Term Memory)网络
• 扩展的递归神经网络
• 卷积神经网络(Convolutional Neural Networks,CNNs/ConvNets)也能够被用来理解天然语言处理。经过阅读这篇论文,你能够想象CNNs如何在NLP中进行应用;
• ShaojieBai等人在一篇论文中强调了如何将CNNs和RNNs进行比较。PyTorch张量库全部的代码是开放的,点击这里能够查看。
特定问题的处理方法
从业者须要的另外一种类型的资源是,若是要选择一个算法来执行任务,那么可以应用的最好的方法有哪些呢?
文本分类
文本分类方面的种类居多,能够是将文本分红不一样的类别或检测文本中的观点/情感的形式。
我想介绍一个容易理解的咱们前些时候在ParallelDots博客上作的情感分析技术的调查报告。虽然这项调查是关于情感分析技术的,可是它包含了大多数的文本分类问题。
咱们的调查技术性没有那么强,但颇有趣,而且可以指导你利用更好的资源来理解概念。有一些Arxiv调查报告技术性很是强,这就须要你阅读其它的一些论文来深刻理解主题。我建议的方法是使用本文中的连接来熟悉,并享受其中的乐趣,但以后建议阅读我提供的指南。记住,虽然兴趣很重要,但技巧有时也很重要,不然很难在新的环境中应用概念。另外一个情感分析算法的调查报告能够在这里访问。
若是你还没据说过迁移学习,其实它正在快速地深刻到深度学习领域之中。就像在图片里利用ImageNet分类来训练模型,还能够针对任何分类任务进行微调,在Wikipedia网站上训练NLP模型,用于语言建模,目前能够在相对较少的数据量上传输学习文本分类。如今咱们尚未关于这个问题的调查报告,可是我能够告诉你在OpenAI上Reuder和Howard的两篇论文,它们涉及下面所提到的技术:
• 面向文本分类的通用语言模型的微调
• 生成性预训练提升语言理解能力
在Fast.ai上有详细的方法使用文档。
若是你正在进行两个不一样任务的迁移学习,这里将介绍使用Convnets的技巧。恕我直言,这些技术将逐渐地采用其它的分类方法。咱们还发布了Zero Shot文本分类上的工做成果,并获得了不错的准确性,没有任何数据集上的训练,并且正在致力于后面深刻的工做。咱们已经建了一个一般称为自定义分类器的文本分类API,你能够在其中定义本身的类别,能够点击查看demo。
序列标注
序列标注是一个给字词加属性的工做,其中包括词性标注、命名的实体识别、关键词标注等。咱们写了一个有趣的任务检验方法,请点击查看这里。
关于这些问题,你能够查看今年COLING大会上的一篇论文,它给出了训练序列标注算法的最优准则,能够点击这里查看。
机器翻译
• 近来NLP最大的进步是提供了将文本从一种语言翻译成另外一种语言的算法。Google的系统是一个16层的LSTM,并给出了最优翻译结果;
• 关于机器翻译的更多教程,你能够参考Philip Koehn的论文。点击这里能够查看有关利用深度学习来进行机器翻译的详细资料。
这里有两篇我很是喜欢的论文:
• 当你有足够多的数据时,Google论文会告诉你如何全面完整地解决问题;
• Facebook的卷积机器翻译系统和相关代码做为一个库发布在这里;
• https://marian-nmt.github.io/...,http://www.aclweb.org/anthology/P18-4020;
• http://opennmt.net/,使每一个人...;
常见问题
• SQuAD数据集是一个问答数据集,它用来测试算法阅读理解和回答问题的能力。微软今年早些时候发布了一篇论文,声称他们在这一领域的NLP成果已经达到了至关于人类水平的准确性,能够在这里查看论文。另外一个重要的算法是Allen AI的BiDAF(Bi-Directional Attention Flow);
• 另外一个重要算法是关于视觉问答的,给出了关于图像问题的答案。在2017年的VQA挑战赛上,Teney等人发表的论文是一个很好的基础入门资料,能够在GITHUB上找到相关的实现代码。
• 在现实生活中,对大型文档的提取式问答能够利用迁移学习来实现,点击这里能够查到相关论文。这里有一篇很是好的论文驳斥了问答算法的“理解”,若是你正从事相关的工做,强烈建议阅读。
释义、语句类似度或推理
语句对比的工做,NLP有三个不一样的任务: 语句类似度, 释义检测和天然语言推理(Natural Language Inference,NLI),为此,每个任务都须要有比之前更多的语义理解。MultiNLI及其子集Stanford NLI是最著名的基准数据集,而且在最近成为了研究的热点。还有用于释义检测的MS Paraphrase Corpus和Quora Corpus以及用于STS(语义文本类似性)的SemEval数据集。在这个领域关于高级模型的调查报告点击这里能够访问到。
在这个领域中,我很是喜欢的论文有如下几篇:
• Omar Levy小组的一篇论文代表了即便是简单的算法也可以执行操做,这是由于算法没有学习“推理”。
• BiMPM(双边多角度句子匹配)是一个预测释义的好模型,能够点击这里查看。
• 还有一项用于释义检测的新工做,它把关系网络应用到语句表示上面了,并在今年的AINL会议上获得了承认,能够点击这里阅读相关信息。
其它领域
• 语言建模(LM)—语言建模是关于学习一种语言的无监督表示的过程,这是经过给出一个语句中前n个词来预测第(n+1)个词完成的。这些模型有两个重要的实际环境应用,一个是自动完成建模,另一个是做为上文中提到的用于文本分类的迁移学习基础模型。点击这里能够查看一个比较长的调查报告。若是你对如何在手机或者搜索引擎中根据搜索历史记录自动完成LSTMs感兴趣,这里推荐一篇很好的论文。
• 关系提取—关系提取是指在一个句子中抽取实体之间关系的行为。所以,所给句子中“A是做为r到B的关联”,你会获得三重关系(A,r,B)。在该领域中研究工做的调查报告能够点击这里查看。我还发现了一篇论文很是不错,是使用BiDAF进行Zero Shot关系提取的。
• 对话系统—随着聊天机器人的出现,对话系统如今很是流行。许多人将对话系统做为意图检测、关键词检测、问题回答等模型的实现,而一些人则试着进行全面建模。我也顺便提一下Parl.ai,这是Facebook AI的一我的工智能对话技术框架。
• 文本摘要—文本摘要是从文档中获取浓缩的文本。有两种方法能够完成这个工做:提取摘要和抽象归纳。提取摘要是从文章中抽取出最具信息含量的句子,而抽象归纳的目的是像人同样写摘要。这个来自Eintein AI的demo将抽象归纳带进了主流研究。
• 天然语言生成(NLG)—天然语言生成是关于计算机旨在像人类同样写做的研究,这能够是写故事、诗歌、图片的标题等等。其中,目前的研究已经可以在图片标题上作的很好,LSTM和注意机制的结合已经给出了能够用在实际生活中的成果。这里是相关技术的调查报告。
本文做者:【方向】
本文为云栖社区原创内容,未经容许不得转载。