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

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

相关文章

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核