前言
自然语言处理领域有什么前途
自然语言处理是目前人工智能领域中最受人瞩目的研究方向之一,发展非常迅速。自然语言处理又是一个非常开放的领域,每年都有大量的可以免费阅读的论文、可以自由下载和使用的开源代码被发布在互联网上。感谢这些致力于自然语言处理研究,又乐于分享的研究者和开发者,使我们有机会学习这一领域最新的研究成果,理解自然语言处理领域中的精妙原理,并能够在开源代码库的基础上创建一些美妙的应用。
如果没有他们的努力和奉献,无法想象我们仅仅通过两行代码[1],就能在几秒内定义和创建一个包含超过1亿参数的模型,并下载和加载预训练参数(耗时数分钟,具体时间根据网速而定)。这些预训练参数往往是使用性能强大的图形处理单元(Graphics Processing Unit,GPU)在海量的数据中训练数天才能得到的。
[1] 见第12.7节。
即使拥有性能强大的GPU,要获取海量训练数据,或者进行长时间的训练也都是困难的,但是借助公开发布的预训练权重,仅仅需要两行代码就都可以做到。同时还可以在能接受的时间内对模型进行Fine-tuning(微调)训练,加载与训练参数后,再使用目标场景的数据训练,使模型更符合实际的应用场景。
如果你没有 GPU,或者只有一台性能一般的家用计算机,也完全可以比较快速地使用模型去完成一些通用的任务,或者在一定的数据中训练一些不太复杂的模型。
自然语言处理越来越丰富的应用正在改变我们的生活。从语音合成、语音识别、机器翻译,到视觉文本联合,越来越精确的自然语言理解让更多事情成为可能。现在的人工智能技术使计算机可以用越来越接近人类的方式去处理和使用自然语言。
更令人兴奋的是,这些事情我们也可以借助开源代码去实现,并根据大量公开的论文、文档和示例代码去理解代码背后的原理。
本书的特色
自然语言处理是语言学和计算机科学的交叉领域,本书将主要从计算机技术和实践的角度向大家介绍这一领域的一些内容。
本书将介绍使用Python语言和PyTorch深度学习框架实现多种自然语言处理任务的内容。本书的内容对初学者是友好的,但本书并不会详细地介绍语言和框架的每一个细节,希望读者自学以掌握一定的计算机基础。因为Python和PyTorch都是开源工具,它们的官方网站都给出了包括中文、英文的多种语言的文档,从那里初学者可以迅速掌握它们的使用方法。
本书的结构编排像一个学习自然语言处理的路线图,从Python、PyTorch这样的基础工具,机器学习的基本原理,到自然语言处理中常用的模型,再到自然语言处理领域当前最先进的模型结构和最新提出的问题。
几乎本书的每一章都有完整可运行的代码,有的代码是完全从0开始的完整实现,这是为了展示相关技术的原理,让读者通过代码看清技术背后的原理。有的代码则基于开源的库,以精炼的代码实现完整的功能。对于使用到的开源代码书中都将给出地址,以供希望深入研究的读者一探究竟。在最后的“实战篇”,我们分别针对“自然语言理解”和“自然语言生成”两大问题给出任务,并使用多种前面章节介绍的模型,使用同样在本书中介绍的开放的数据集,完成这些任务,还给出从数据下载、预处理、构建和训练模型,到创建简易的用户界面的整个流程。希望读者能在实践中学习自然语言处理。
同样,对于涉及模型原理和理论的部分我们尽力都标注论文出处,全书共引用几十篇论文,且全部可以在arXiv.org等网站免费阅读和下载,供有需要的读者参考。
本书的内容
本书分为4篇:“自然语言处理基础篇”“PyTorch入门篇”“用PyTorch完成自然语言处理任务篇”和“实战篇”。
第1篇包含第1章和第2章,介绍自然语言处理的背景知识、常用的开放资源、搭建Python环境以及使用Python完成自然语言处理的基础任务。这些是本书的基础。
第2篇包含第3章至第5章,介绍PyTorch环境配置和PyTorch的基本使用,以及机器学习的一些基本原理和工作方法。
第3篇包含第6章至第12章,介绍如何使用PyTorch完成自然语言处理任务。第6章至第12章每章各介绍一种模型,包括分词、RNN、词嵌入、Seq2seq、注意力机制、Transformer、预训练语言模型。
第4篇是实战篇,第13章和第14章分别讲解自然语言理解的任务和自然语言生成的任务,即“中文地址解析”和“诗句补充”。这两个任务综合了前面各章的知识,并展示了从数据下载、处理、模型到用户交互界面开发的全部流程。
本书内容简明,包含较多代码,希望读者能通过阅读代码更清晰地了解自然语言处理背后的原理。书中用到的一些数据集、模型预训练权重可在网站https://es2q. com/nlp/中获取,方便读者运行本书中的例子。
本书面向的读者对象
● 有一定程序设计基础的计算机爱好者。
● 希望学习机器学习和自然语言处理的人。
● 计算机及其相关专业的学生。
● 对自然语言处理领域感兴趣的研究者。
● 对自然语言处理感兴趣并乐于实践的人。