一份不可多得的自然语言处理资源清单

2023-12-24 22:50

本文主要是介绍一份不可多得的自然语言处理资源清单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1


自然语言处理(Natural Langauge Processing,NLP)是计算机系统理解人类语言的一种能力,它也是人工智能(AI)的子集。NLP在很多商业场景中都有所应用,比如推荐系统、对话机器人等。NLP相关的岗位薪资和前景在机器学习算法岗中也是具有很大的吸引力,很多人转行从事这方面的研究,大多数人是通过自学来提升自己的能力。目前,网络上也有很多多免费资源可以帮助自学者发展NLP方面的专业知识,但资源多且杂,没有很好的一条线将其串起来,那么在本文中,我们列出了针对初学者和中级学习者的学习资源。

针对初学者的NLP资源

2


对于初学者而言,可以采用两种方法,即传统的机器学习和深度学习来学习使用NLP,这两种方法差别很大的, 这里讲述了两者之间的区别。

传统的机器学习

传统的机器学习算法一般比较复杂,通常不易被人理解。以下是一些资源,可以帮助读者开始使用机器学习学习NLP:

  • Jurafsky和Martin的语音和语言处理是传统自然语言处理领域中广受好评的圣经;
  • 更实用的方法是可以尝试使用 Natural Language Toolkit;

深度学习

深度学习是机器学习领域中的一个子领域,由于人工神经网络的引入,其性能一般远远优于传统的机器学习方法。初学者可以从以下资源开始:

  • CS 224n:这是斯坦福大学的公开课,也是开始使用深度学习进行NLP的最佳课程;
  • Yoav Golberg出版的免费和付费书籍也是开始深度学习NLP的重要资源;
  • 所有算法的非常全面的报道都可以在Jacob Einsenstein的NLP课程笔记中找到,该课程几乎涉及所有NLP方法。

针对从业者的NLP资源

3


如果你是一名数据科学家,那么将需要以下三种类型的资源:
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),每个都需要比上一个更多的语义理解。 MultiNLI及其子集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/
  • Sebastian Ruder: http://ruder.io/

作者信息

Muktabh Mayank,数据科学家、企业家、社会学家
个人主页:https://twitter.com/muktabh
文章原标题《Free resources to learn Natural Language Processing》,译者:Uncle_LLD。
文章为简译,更为详细的内容,请查看原文。

这篇关于一份不可多得的自然语言处理资源清单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/533389

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

49个权威的网上学习资源网站

艺术与音乐 Dave Conservatoire — 一个完全免费的音乐学习网站,口号是“让每一个人都可以接受世界级的音乐教育”,有视频,有练习。 Drawspace — 如果你想学习绘画,或者提高自己的绘画技能,就来Drawspace吧。 Justin Guitar — 超过800节免费的吉他课程,有自己的app,还有电子书、DVD等实用内容。 数学,数据科学与工程 Codecad

明明的随机数处理问题分析与解决方案

明明的随机数处理问题分析与解决方案 引言问题描述解决方案数据结构设计具体步骤伪代码C语言实现详细解释读取输入去重操作排序操作输出结果复杂度分析 引言 明明生成了N个1到500之间的随机整数,我们需要对这些整数进行处理,删去重复的数字,然后进行排序并输出结果。本文将详细讲解如何通过算法、数据结构以及C语言来解决这个问题。我们将会使用数组和哈希表来实现去重操作,再利用排序算法对结果

8. 自然语言处理中的深度学习:从词向量到BERT

引言 深度学习在自然语言处理(NLP)领域的应用极大地推动了语言理解和生成技术的发展。通过从词向量到预训练模型(如BERT)的演进,NLP技术在机器翻译、情感分析、问答系统等任务中取得了显著成果。本篇博文将探讨深度学习在NLP中的核心技术,包括词向量、序列模型(如RNN、LSTM),以及BERT等预训练模型的崛起及其实际应用。 1. 词向量的生成与应用 词向量(Word Embedding)

使用协程实现高并发的I/O处理

文章目录 1. 协程简介1.1 什么是协程?1.2 协程的特点1.3 Python 中的协程 2. 协程的基本概念2.1 事件循环2.2 协程函数2.3 Future 对象 3. 使用协程实现高并发的 I/O 处理3.1 网络请求3.2 文件读写 4. 实际应用场景4.1 网络爬虫4.2 文件处理 5. 性能分析5.1 上下文切换开销5.2 I/O 等待时间 6. 最佳实践6.1 使用 as

Level3 — PART 3 — 自然语言处理与文本分析

目录 自然语言处理概要 分词与词性标注 N-Gram 分词 分词及词性标注的难点 法则式分词法 全切分 FMM和BMM Bi-direction MM 优缺点 统计式分词法 N-Gram概率模型 HMM概率模型 词性标注(Part-of-Speech Tagging) HMM 文本挖掘概要 信息检索(Information Retrieval) 全文扫描 关键词

PHP7扩展开发之数组处理

前言 这次,我们将演示如何在PHP扩展中如何对数组进行处理。要实现的PHP代码如下: <?phpfunction array_concat ($arr, $prefix) {foreach($arr as $key => $val) {if (isset($prefix[$key]) && is_string($val) && is_string($prefix[$key])) {$arr[