免费资源列表:想学自然语言处理的打包带走!
点击上方关注,All in AI中国
作者:Kimberly Cook
丰富的免费资源列表可以帮助人们学习自然语言处理,其中包括文本分类、序列标注、机器翻译等的解释。
自然语言处理(NLP)是计算机系统理解人类语言的能力,是人工智能(AI)的子集。网上有多种资源可以帮助你开发和学习自然语言处理方面的专业知识。
在这篇博文中,我们列出了为初学者和中级学习者提供的学习资源。
初学者的自然语言资源
初学者可以遵循两种方法,即传统机器学习和深度学习,开始使用自然语言处理。这两种方法彼此非常不同。以下这是两种方法之间的区别。
(1)传统机器学习
传统的机器学习算法很复杂,通常不易理解。以下是一些资源,可帮助你开始使用机器学习来学习自然语言处理(NLP):
·Jurafsky和Martin的语音和语言处理是传统自然语言处理的广受好评的经典。可以在这里进行了解。
https://towardsdatascience.com/why-deep-learning-is-needed-over-traditional-machine-learning-1b6a99177063
·对于更实用的方法,你可以尝试使用Natural Language Toolkit
http://www.nltk.org/book/
(2)深度学习
深度学习是机器学习的一个子领域,由于人工神经网络的引入,它远远优于传统的机器学习。初学者可以从采用这个资源开始学习:
https://web.stanford.edu/~jurafsky/slp3/
•CS 224n:这是开始使用深度学习进行自然语言处理的最佳课程。本课程由斯坦福大学提供,可在此处学习
http://web.stanford.edu/class/cs224n/。
•Yoav Golberg的免费和付费书籍是开始深度学习自然语言处理的重要资源。可在此处访问免费版本,此处提供完整版本。
https://www.amazon.com/Language-Processing-Synthesis-Lectures-Technologies/dp/1627052984
•所有算法的非常全面的描述可以在Jacob Einsenstein的GATECH NLP课程笔记中找到,该课程几乎涉及所有自然语言处理(NLP)方法。你可以在此处访问GitHub上的注释。
https://github.com/jacobeisenstein/gt-nlp-class/blob/master/notes/eisenstein-nlp-notes.pdf
从业者的自然语言资源
如果你是实践数据科学家,将需要三种类型的资源:
- 快速入门指南/了解热门和新趋势
- 特定问题的方法调查
- 定期关注博客文章
快速入门指南/了解热门和新趋势
人们可以从Otter等人的深度学习自然语言处理调查开始。可以在这里学习。
https://arxiv.org/abs/1807.10854
•Young等人的一份调查报告试图总结基于深度学习的自然语言处理的所有内容,并建议从业者开始使用自然语言处理。可以在此处访问该论文。
https://arxiv.org/abs/1708.02709
•你可以参考本文来了解LSTM和循环神经网络(RNN)的基础知识,这些基础知识在自然语言处理中经常使用。LSTMs的另一个引用的调查文章就在这里可以学习:
这是一篇有趣的论文,用于了解RNN隐藏状态的工作原理。可以在这里访问。
我推荐以下两篇你可能没有阅读过的博文:
1. http://colah.github.io/posts/2015-08-Understanding-LSTMs
2. https://distill.pub/2016/augmented-rnns/
•卷积神经网络(Convents)可用于理解自然语言。通过阅读本文,你可以直观地了解Convent如何在自然语言处理(NLP)中工作。
https://arxiv.org/abs/1801.06287
•Bai等人在本文中强调了卷积神经网络(Convents)和循环神经网络(RNN)之间的比较。所有它的pytorch(在很大程度上,阅读深度学习代码不是用pytorch编写的)代码是开源的,就像让你感受到哥斯拉v/s金刚或福特野马与雪佛兰卡玛洛之间的竞赛(如果你喜欢(ed)那种类型的东西),那么谁会赢!
特定问题的方法调查
从业者需要的另一类资源是对这种类型问题的回答:"我必须训练一个算法来做X,我能应用的最酷(也很容易获得)的东西是什么?"。
以下是你需要的内容:
文本分类
人们解决的第一个问题是什么?主要是文本分类。文本分类可以是将文本分类为不同类别或检测文本中的情绪/情感的形式。
我想强调一下这个ParallelDots博客中描述的关于情感分析的不同调查的简单阅读。虽然该调查是针对情感分析技术的,但它可以扩展到大多数文本分类问题。
我们的(ParallelDots)调查技术略逊一筹,旨在引导你使用很好的资源来理解概念。我指出的Arxiv调查论文将非常具有技术性,需要你阅读其他重要论文以深入理解某个主题。建议的方法是使用我们的链接熟悉主题并享受其乐趣,但是请务必阅读我们推荐的详尽指南。(Oakley'博士的课程讲的是关于分块的地方,在你深入学习之前,你首先尝试在这里和那里学习一些知识)。记住,除非你详细了解这些技术,否则很难在新的情况下应用概念。
https://www.coursera.org/learn/learning-how-to-learn
还有另一项关于情感分析算法的调查(由Linked大学和UIUC的人员进行)。
就像在图像中训练ImageNet分类的模型可以针对任何分类任务进行微调一样,在维基百科上训练用于语言建模的自然语言处理(NLP)模型现在可以在相对较少量的数据上传输学习文本分类。以下是来自OpenAI和Ruder的两篇论文,以及如何处理这些技术的介绍。
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有一个更友好的文档来在这里应用这些方法。
http://nlp.fast.ai/classification/2018/05/15/introducting-ulmfit.html
如果你要转移学习两个不同的任务(不是从Wikipedia语言建模任务转移),这里将提到使用Convents的技巧。
https://arxiv.org/abs/1801.06480
恕我直言,这种方法将慢慢涉及所有其他分类方法(从视觉中发生的简单推断)。我们还发布了关于Zero Shot Text分类的工作,该分类在没有任何数据集培训的情况下获得了良好的准确性,并且正在开发下一代产品。我们构建了自定义文本分类API,通常称为自定义分类器,你可以在其中定义自己的类别。你可以在这里免费查看。
https://www.paralleldots.com/custom-classifier
序列标注
序列标注是一种标注具有不同属性的单词的任务。这些包括词性标注、命名实体识别、关键字标注等。
我们在这里为这些任务的方法写了一篇有趣的评论。
https://blog.paralleldots.com/data-science/named-entity-recognition-milestone-models-papers-and-technologies/
今年COLING的研究论文为这些问题提供了一个很好的资源,它为训练序列标记算法提供了最佳指导。你可以在这里访问。
https://arxiv.org/abs/1806.04470
机器翻译
最近几天自然语言处理(NLP)最大的进步之一就是发现了可以将文本从一种语言翻译成另一种语言的算法。谷歌的系统是一个16层LSTM(它不需要dropout,因为他们有大量的数据可供训练),并提供最先进的翻译结果。
一些媒体对此进行了夸张的报道,声称"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
有关机器翻译的详尽教程,请参阅Philip Koehn的研究论文。并查看使用深度学习机器翻译(我们称之为NMT或神经机器翻译)的具体评论。
以下是我最喜欢的几篇论文:
•Google的这篇论文主要内容是如何在有大量资金和数据时端到端地解决问题。
https://arxiv.org/abs/1609.08144
•Facebook的Convolutional NMT system((仅仅因为其很酷的卷积方法),其代码在这里作为库发布。
https://github.com/facebookresearch/fairseq
•http://marian-nmt.github.io/是C ++中快速翻译的框架
•http://opennmt.net/使每个人都能够训练他们的NMT系统。
问题答案
这将是下一个"机器翻译"。有许多不同类型的问答任务。从选项中进行选择,从段落或知识图中选择答案,并基于图像(也称为视觉问题回答)回答问题,并且存在不同的数据集以了解现有方法的状态。
•SQuAD数据集是一个回答数据集的问题,用于测试算法阅读理解和回答问题的能力。微软公司今年早些时候发表了一篇论文,声称他们已达到人类级别的准确性。这篇论文可以在这里找到。另一个重要的算法(我觉得最酷)是Allen AI的BIDAF及其改进。
https://blogs.microsoft.com/ai/microsoft-creates-ai-can-read-document-answer-questions-well-person/
•另一组重要的算法是Visual Question Answering,它可以回答有关图像的问题。Teney等人从VQA 2017挑战的论文是一个很好的入门资源。
•可以使用Tra在大型文档中回答问题(例如,Google精彩集锦在最初的几个结果中如何回答你的查询)
•在现实生活中,对大型文档(比如Google Highlights如何在前几个结果中回答查询)的提取式问题回答可以使用传输学习(因此很少有注释)完成,如本文中所示。有一篇非常好的论文批驳了问题解答算法的"理解"一篇非常好的论文批评了对问答方法的"理解"。
释义、句子相似度或推理
比较句子的任务。自然语言处理(NLP)有三个不同的任务:句子相似性、复述检测和自然语言推理(NLI),每个都需要比上一个更多的语义理解。 MultiNLI及其子集Stanford NLI是NLI最著名的基准数据集,近年来成为研究的焦点。还有MS释义语料库和Quora语料库用于释义检测,以及用于STS的SemEval数据集(语义文本相似性)。可在此处找到此领域中高级模型的良好调查。应用NLI在临床领域非常重要(可以了解正确的医疗程序,副作用和药物的交叉影响等)。如果你希望在特定域中应用该技术,那么在医学领域应用NLI的这个教程是一个很好的参考。
这是我在这个领域最喜欢的论文列表
•相互作用空间的自然语言推理(Natural Language Inference over Interaction Space)它突出了一种非常巧妙的方法,用于将DenseNet(卷积神经网络用于句子表示)。这是实习项目的结果,这使得它更酷!
•Omar Levy小组的研究论文表明,即使是简单的算法也能完成任务。这是因为算法仍然没有学习"推理"。
•BiMPM是预测释义一个很好的模型。
•我们还有一项关于释义检测的新工作,它将句子网络应用于句子表示之上,并已在今年的AINL会议上被接受。
其他领域
以下是一些更详细的调查文件,以获取有关你在制作自然语言处理(NLP)系统时可能遇到的其他任务的研究信息。
•语言建模(LM-语言建模是学习语言的无监督表示的任务。这是通过预测给定前N个单词的句子的第(n+1)个单词来完成的。这些模型具有两个重要的实际用途,即自动完成,并且如上所述作为文本分类的转移学习的基础模型。如果你有兴趣了解如何根据搜索历史自动完成手机/搜索引擎中的LSTM工作,你应该阅读。 •关系提取 - 关系提取是提取句子中存在的实体之间关系的任务。给定的句子"A与r to B相关",给出三元组(A,r,B)。这里有关于该领域研究工作的调查。这是一篇我发现非常有趣的研究论文。它使用BIDAF进行零射击(zero-shot)关系提取(也就是说,它可以识别甚至没有训练识别的关系)。
•对话系统 - 随着聊天机器人革命的开始,对话系统现在开始流行。许多人将对话系统作为意图检测、关键字检测、问答等模型的组合,而其他人则尝试端到端地对其进行建模。 JD.com团队对对话系统模型进行了详细调查。此外还有Parl.ai,这是Facebook AI的一个框架。
•文本摘要 - 文本摘要用于从文档中获取精简文本(段落/新闻文章等)。有两种方法可以做到这一点:提取和抽象摘要。虽然抽取式摘要从文章中提供了具有最高信息内容的句子(以及几十年来可用的内容),但抽象概括的目的是像人类一样编写摘要。Einstein AI的这一演示将抽象的总结带入主流研究。
•自然语言生成(NLG) - 自然语言生成是计算机旨在以人类的方式编写的研究。这可能是故事、诗歌、图像标题等。其中,目前的研究已经能够在图像标题上做得很好,其中LSTM和注意机制相结合,使得输出可用于现实生活中。
需要关注的博客
这是一个博客列表,我们强烈推荐给有兴趣跟踪自然语言处理(NLP)研究新内容的人。
•Einstein AI - https://einstein.ai/research
•Google AI blog - https://ai.googleblog.com/
•WildML - http://www.wildml.com/
•DistillPub - https://distill.pub/
•StudiPub - http://ruder.io/
如果你喜欢这篇文章,请关注我们的博客。我们在这里经常提出资源清单。https://www.paralleldots.com/text-analysis-apis
你还可以尝试基于自然语言处理的文本分析API。可以阅读有关应该了解的机器学习算法,以便成为数据科学家。
https://blog.paralleldots.com/data-science/machine-learning/ten-machine-learning-algorithms-know-become-data-scientist/
你还可以在此处查看ParallelDots AI API的免费演示。
https://www.paralleldots.com/text-analysis-apis