图书前言

推荐序

自然语言处理(Natural Language Processing, NLP)作为人工智能领域的重要分支,近年来取得了突飞猛进的发展。从早期的规则驱动到如今的深度学习与大规模预训练模型,NLP 技术已经深刻改变了人机交互的方式,并在机器翻译、智能客服、情感分析、信息检索等领域展现出巨大的应用潜力。随着 DeepSeek、ChatGPT 等生成式人工智能(GenAI)的崛起,NLP 更是成为推动人工智能普及的核心技术。在这一背景下,亟需一本能够系统介绍 NLP 基础理论并辅以实践操作的专业教材。《动手学自然语言处理:Python实现(第2版)》正是这样一本理论与实践并重的优秀教材,它将为读者打开 NLP 的大门,帮助他们在这一充满机遇的领域中打下坚实的基础。

本书的作者 Raymond Lee 教授在人工智能和自然语言处理领域拥有丰富的教学与研究经验。他巧妙地将 NLP 的核心概念与 Python 编程实践相结合,通过清晰的逻辑结构和循序渐进的实验设计,为读者提供了一条高效的学习路径。全书内容分为两大部分:第 I 部分系统讲解了 NLP 的基本概念与技术,包括 N-gram 语言模型、词性标注、句法分析、语义表示、语义分析、语用分析、迁移学习与 Transformer 技术等;第 II 部分则通过 14 小时、7 个自然语言处理动手实验,带领读者动手实现 NLP 工具,如 NLTK、spaCy、TensorFlow、Keras 以及 BERT 技术。这种“理论+实践”的双轨模式,不仅能够帮助读者理解抽象的概念,还能让他们通过实际操作掌握 NLP 技术的实现方法。

本书的独特之处在于其强调动手实践。NLP 是一门高度依赖实践的学科,仅仅理解理论而不动手实现,很难真正掌握其精髓。书中的每个实验都设计为 2 小时的课程,从基础的文本处理工具 NLTK 开始,逐步过渡到复杂的 Transformer 和 BERT 模型,最终完成一个电影领域的聊天机器人系统。这种渐进式的学习方式,既照顾了初学者的入门需求,也为进阶学习者提供了足够的挑战。例如,读者可以通过实验学习如何构建词向量、实现情感分析、进行文本分类,甚至利用 Transformer 技术搭建一个完整的问答系统。这些实验不仅覆盖了 NLP 的核心技术,还紧跟行业前沿,为读者未来的研究或职业发展奠定了坚实的基础。

此外,本书的内容编排极具逻辑性。作者从语言模型的基本概念入手,逐步深入到句法分析、语义理解等高级主题,最后探讨了 NLP 的主要应用场景,如信息检索、文本摘要和问答系统。每一章都配有丰富的示例和清晰的解释,使得复杂的理论变得易于理解。例如,在讲解 N-gram 模型时,作者通过《福尔摩斯探案集》中的文本示例,生动展示了如何计算条件概率和生成文本;在介绍 Transformer 技术时,则结合 BERT 模型的实际应用,帮助读者理解其背后的原理与实现方法。这种理论与实践紧密结合的方式,使得读者能够从多个维度掌握 NLP 的核心技术。

从行业发展的角度来看,本书的出版恰逢其时。当前,NLP 技术正从传统的基于规则和统计的方法转向以深度学习为主导的新范式。Transformer 架构的兴起彻底改变了 NLP 的研究方向,而 BERT、GPT 等预训练模型的出现更是将 NLP 的应用推向了新的高度。然而,这些技术的快速发展也带来了新的挑战:如何理解模型的内部机制?如何在小规模数据上实现高效训练?如何解决模型的可解释性问题?本书不仅介绍了这些前沿技术,还通过实验引导读者动手实现,从而帮助他们深入理解其工作原理。例如,书中详细讲解了如何利用 spaCy 和 TensorFlow 技术实现 Transformer 架构,以及如何通过微调 BERT 完成特定任务。这些内容对于希望进入 NLP 领域的学生和研究者来说,无疑是一笔宝贵的财富。

对于高校学生而言,本书是一本理想的教材。它不仅涵盖了 NLP 的基础知识,还提供了丰富的代码示例和实验指导,非常适合作为本科生或研究生的课程教材。书中的每个实验都配有详细的步骤说明和代码解析,读者可以通过 GitHub 获取相关的 Jupyter Notebook 文件和数据,从而快速上手实践。此外,作者还贴心地为每个实验设计了“迷你项目”,鼓励读者在掌握基础知识后进一步探索。这种“学以致用”的设计理念,能够有效激发学生的学习兴趣和创新思维。

对于行业从业者来说,本书同样具有很高的参考价值。无论是希望了解 NLP 基础知识的工程师,还是需要快速实现 NLP 应用的开发者,都可以从书中找到实用的工具和方法。例如,书中介绍的 NLTK 和 spaCy 是 NLP 领域最常用的 Python 库,而 TensorFlow 和 BERT 则是当前工业界的主流技术。通过本书的学习,读者可以快速掌握这些工具的使用方法,并将其应用到实际项目中。

总之,《动手学自然语言处理:Python实现(第2版)》是一本兼具理论深度和实践价值的优秀教材。它以清晰的结构、丰富的示例和实用的实验,为读者铺就了一条高效清晰的学习进阶之路。无论是高校学生、研究人员,还是行业从业者,都能从本书中获益匪浅。在人工智能技术飞速发展的今天,掌握 NLP 不仅是一项技能,更是一种竞争力。相信本书将成为读者探索自然语言处理世界的重要指南,能够帮助他们在这一充满活力的领域实现自己的理想。

本书的译者毛小岗老师,是一个极勤奋和颇具学习力的学者,自人工智能盛行以来,他一直在潜心研究数据科学方面的理论和实践,其领域涉及数据分析、图像处理、文本挖掘和机器学习等,在学校先后为本科生和研究生开设了“商务数据分析”“Python 文本数据挖掘实战”“机器学习实战和 Kaggle 竞赛实训”等课程。作为首都经济贸易大学中国消费大数据研究院研究员,他也参与过多项研究院工作和课题。

中国消费大数据研究院副院长  陆文婷

译者序

在当今人工智能迅猛发展的时代,自然语言处理(NLP)作为其核心领域之一,受到了学术界和工业界的广泛关注。市面上关于自然语言处理的书籍琳琅满目,这些书大多分为两类:一类是偏重理论,从语言学、统计学或机器学习的角度深入探讨 NLP 的数学模型和算法,多数缺乏实践操作的指导;另一类则是偏重应用,专注于文本分析与挖掘、自然语言处理的运用等具体任务,往往忽略了理论基础的铺垫。这种理论与实践的脱节,使得许多读者在学习过程中感到困惑——要么被复杂的公式吓退,要么在动手实践时无从下手。

而《动手学自然语言处理:Python实现(第2版)》这本书恰恰弥补了这一缺陷。它最大的特点是将理论与实践紧密结合,并且提供了可以直接动手的实践内容。书中不仅详细介绍了 NLP 的核心概念和技术,还通过丰富的 Python 代码示例和项目案例,引导读者从零开始实现各种 NLP 任务。这种“学以致用”的设计理念,使得读者能够快速将理论知识转化为实际能力,非常适合那些既想掌握 NLP 理论基础又想具备实战技能的读者。基于此,我们认为本书是当前 NLP 领域的优秀教材和实用指南,这也是我们决定翻译它的主要原因。

本书结构清晰,内容循序渐进。全书内容分为两大部分:第 I 部分“概念与技术”系统地介绍了 NLP 的基础知识,包括语言模型、词性标注、句法分析、语义表示、语义分析、语用分析等核心内容;第 II 部分“使用 Python 实现的自然语言处理实验教程(14 小时)”则通过 14 小时、7 个动手实验操作,带领读者使用 NLTK、spaCy、TensorFlow 等工具完成从文本处理到构建聊天机器人的完整项目。

从人工智能的发展趋势来看,NLP 技术正从传统的基于规则的方法转向以深度学习为代表的端到端模型。本书紧跟这一趋势,不仅涵盖了经典的 NLP 技术,还深入探讨了 Transformer、BERT、大语言模型(LLM)、生成式人工智能(GenAI)等前沿技术。尤为难得的是,书中对这些复杂技术的讲解并不是停留在理论层面,而是通过具体的代码实现让读者真正理解其工作原理。例如,在介绍词性标注时,书中不仅讲解了规则标注和随机标注的区别,还通过 NLTK 库演示了如何构建自己的标注器;在讲解语义分析时,书中结合 spaCy 库展示了词向量的生成与应用。这种理论与实践并重的风格,使得读者能够快速掌握 NLP 的核心技能。

翻译本书的过程既充满挑战,也让我们受益匪浅。首先,技术类书籍的翻译需要极高的准确性,尤其是涉及专业术语和代码示例时,稍有不慎就可能误导读者。例如,书中提到的“context-free grammar”(上下文无关文法)、“word sense disambiguation”(词义消歧)等术语,在中文语境中已有固定译法,必须严格遵循。又如,“token” 一词翻译起来容易让读者感到生疏,其在中文的释义无法让读者直观理解或联想出原文的真正含义,并且该词频繁出现使得句子翻译出来佶屈聱牙,从而过分损失真正含义。针对这种情况,译者从多维度对语境展开解释与情景知识补充,让读者在具体场景中自然而然地理解语义。

其次,本书的实践性特点对翻译提出了更高的要求。为了让读者能够顺利复现书中极具实操性的代码,翻译时必须确保所有示例和环境配置说明清晰无误。对于书中实验章节的每一关键细节,我们都需要反复核对并在本地复现检查。任何一处信息的缺失或稍有偏差,都可能给读者的实操带来阻碍,读者很可能因此而与探索自然语言处理真实魅力的契机擦肩而过。

最后,在翻译过程中,我们深刻感受到本书作者李树德(Raymond Lee)教授的用心。书中不仅技术内容扎实,语言也简洁明了,甚至在一些复杂概念的讲解中用直观的比喻替代复杂公式的阐述,让抽象概念可感知。将 Brill 标注器的转换学习类比为油画的“分层与细化”;用一袋绿豆估计红豆出现的概率来展示古德-图灵平滑技术估计未知事件概率的操作逻辑……每当遇到此类直观幽默的表述时,我们都会反复推敲,做到既保留原意的准确性,又不失其在中文语境下的生动与形象。这种深入浅出的风格,让我们在翻译时常常会心一笑,也激励我们尽力在译文中保留原书的魅力。

由于本书具有理论与实践相结合的特点,非常适合高校学生作为接触 NLP 的入门指南。例如,学生可以通过书中的 N-gram 模型实践理解概率语言模型的基本原理,再通过构建聊天机器人项目掌握 NLP 技术的综合应用。这种从理论到实践的学习路径,能够助力学生建立完整的知识体系,避免“纸上谈兵”的弊端。对于高校教师而言,本书提供了丰富的教学资源。每一章的实践环节都可以作为课堂练习或课后作业,而书中的代码示例也能直接用于演示。此外,教师可以根据书中的内容设计更复杂的课程项目,例如,让学生基于 BERT 模型实现一个文本分类系统。

对于 NLP 领域的从业者或研究人员,本书同样具有很高的参考价值。书中介绍的 NLTK、spaCy、TensorFlow 等工具是工业界广泛使用的技术栈,而 Transformer、BERT 等模型更是当前 NLP 应用的核心。通过本书的学习,从业者可以快速掌握这些技术的实现方法,并将其应用于实际项目中。例如,在开发智能客服系统时,从业者可以参考书中“构建聊天机器人”的章节,了解如何利用 Transformer 技术实现对话生成;在进行文本分类任务时,书中的情感分析实践可以提供清晰的实现思路。

尽管我们在翻译过程中力求完美,但难免存在疏漏之处。例如,部分技术术语的译法可能仍有争议,某些文献或注释也可能因语言差异而显得不够流畅。我们欢迎读者提出宝贵意见,以便在后续版本中进一步完善。

最后,我们要衷心感谢清华大学出版社的信任和支持,让我们有机会将这本优秀的 NLP 著作介绍给中文读者。同时,也要感谢我们的同事在翻译过程中给予的鼓励和帮助。希望这本书能为中国的 NLP 学习者和从业者带来实实在在的价值,助力大家在人工智能的浪潮中乘风破浪!

译者

谨以此书献给所有读者,以及研读我开设的自然语言处理本科、研究生课程的各位同学。正是大家求知的热忱,激励我完成了本书的写作。

致谢

谨向以下人士与机构致以诚挚的谢意:

感谢我的妻子 Iris,在我投入研究与写作的时光中给予我耐心、鼓励与理解。

感谢 Springer Nature 出版集团的执行编辑郑思琳(Celine Cheng)女士及其专业的编辑与出版团队,感谢他们在书稿出版过程中提供的支持、建议与宝贵意见。

感谢北师港浸大(BNBU)的校长陈志( Zhi Chen)教授,他为本书的研究、教学与写作提供了优越的学术环境。

感谢 BNBU 副校长(分管科研与发展)潘建新(Jianxin Pan)教授,在 NLP 及相关人工智能项目研发方面给予了大力支持。

感谢 BNBU 理学院代理院长叶华军(Terry Huajun Ye)教授与计算机科学系系主任苏伟峰(Weifeng Su)教授,感谢他们一直以来对人工智能与自然语言处理课程的大力支持。

感谢研究助理黄子豪(Zihao Huang)先生在 NLP 动手实验准备中的协助。

感谢研究生石楚灵(Clarissa Shi)女士以及学生助理刘思琪(Siqi Liu)女士、王英杰(Yingjie Wang)先生、列洁(Jie Lie)女士在主要 NLP 应用与 Transformer 技术文献综述方面的帮助,以及陈卓辉(Zhuohui Chen)先生在动手实验程序调试与版本更新中的支持。

感谢北师港浸大,特别是广东省智能感知与数据分析重点实验室(IRADS, 2022B1212010006)对本书工作的鼎力支持。

北师港浸大理工科技学院

中国珠海

李树德

2026 年 4 月

译者简介

毛小岗,博士,首都经济贸易大学讲师。他是数据科学和人工智能领域的研究者和爱好者,参与过多项企业和政府主导的数据分析课题并做了大量相关工作。毛博士在大学里主讲“Python 文本数据挖掘实战”“商务数据分析”和“机器学习实战与Kaggle竞赛实训”等多门数据分析课程,教学功底扎实。

徐同春,首都经济贸易大学工商管理学院研究生,研究方向为公司治理与公司金融,专注数据科学在企业管理和商业分析中的运用。

前言

本书的写作动机

随着近几十年来人工智能(Artificial Intelligence,AI)的快速发展,自然语言处理(Natural Language Processing,NLP)及其相关应用得以蓬勃兴起。自然语言处理的典型应用包括信息检索(Information Retrieval,IR)系统、文本摘要(Text Summarization,TS)系统、问答聊天机器人(chatbot)系统,以及近年来的大语言模型(Large Language Model,LLM)和生成式人工智能(Generative AI,GenAI)等前沿技术。这些方向在产业界与学术界均有广泛应用,并在多种场景中显著提升了日常服务的智能化水平。

本书旨在通过 14 小时循序渐进式的实验课程教学,系统讲解自然语言处理的基本概念与核心知识。通过这些动手实验,读者将能够实践多种基于 Python 的主流自然语言处理工具与框架,包括 NLTK、spaCy、TensorFlow、Keras、Transformer 与 BERT 技术,并最终掌握构建 Python 驱动的自然语言处理应用的能力。

本书内容的组织结构

本书内容主要分为两部分:第Ⅰ部分——概念与技术,以及第Ⅱ部分——使用 Python 实现的自然语言处理实验教程( 14 小时)。

在第Ⅰ部分中,前 10 章为掌握自然语言处理的基本概念奠定了坚实基础,重点探讨了 N-gram 语言模型、词性标注、句法分析、语义表示,以及迁移学习与 Transformer 技术的最新进展。各章内容循序渐进,逐步引导读者理解主要的自然语言处理应用,以及大语言模型和生成式人工智能的发展演变,并同步关注人工智能领域的伦理问题。

第Ⅱ部分由 7 个动手实验教程组成,旨在提供与第Ⅰ部分概念相对应的Python 实操训练。从自然语言工具包(Natural Language Toolkit,NLTK)的入门开始,逐步引导读者完成 N-gram 建模、情感分析以及基于 Transformer 技术的 BERT 模型应用。每个动手实验均提供分步骤的操作指导,使读者能够将所学知识应用于实际场景中,例如,聊天机器人系统的构建与部署。这种理论与实践相结合的体系结构,有助于读者在掌握基础理论的同时,进一步提升自然语言处理的实操能力。

第 2 版的主要改进

本书第 2 版在以下方面进行了重要更新:

1.第 1 章的 1.5 节“自然语言处理简史”中,增加了对 BERT、Transformer 模型、ChatGPT 以及大语言模型(LLM)自 21 世纪初至今的发展历程的概述。

2.新增第 10 章,专门讨论自然语言处理的最新进展,特别是大语言模型(LLM)和生成式人工智能(GenAI)的发展。

3.对原第 10 ~ 16 章自然语言处理的动手实验进行了修订与更新(现调整为第 11 ~ 17 章),以全面适配最新版本的基于 Python 的自然语言处理库与工具。

本书读者对象

本书既可作为自然语言处理相关课程的教材,也可作为基于 Python 实现的实践指南,适合以下读者群体:

各学科的本科生与研究生,包括人工智能、计算机科学、信息技术、数据科学及相关领域的学生;

从事自然语言处理或人工智能相关课程教学的教师与讲师;

希望系统学习自然语言处理基本概念,并通过基于 Python 的动手实验加以应用的自然语言处理与人工智能领域的科研人员及开发者;

对自然语言处理基础知识和基于 Python 的实现技术感兴趣的读者,尤其是希望使用 NLTK、spaCy、TensorFlow、Keras、BERT、Transformer 技术以及大语言模型与生成式人工智能等工具与方法进行学习与实践的人群。

如何使用本书

本书既可作为本科生与研究生学习自然语言处理课程的教材,也可作为普通读者学习自然语言处理关键技术并利用现代工具(如 NLTK、spaCy、TensorFlow、BERT 与 Transformer 技术)实现自然语言处理应用的参考书。

第Ⅰ部分(第 1~10 章)系统介绍了自然语言处理的基本概念与核心技术,包括 N 元语言模型、词性标注、句法与解析、语义表示、语义分析、语用分析、迁移学习与 Transformer 技术。另外,还讨论了主要的自然语言处理应用,以及 BERT、ChatGPT、大语言模型和生成式人工智能的最新发展。

第Ⅱ部分(第 11~17 章)包含一个总时长约 14 小时的循序渐进式的动手实验,共分为 7 个专题,帮助读者通过实践掌握基于 Python 语言的自然语言处理应用开发。

对于普通读者与人工智能研究人员而言,本书既是学习自然语言处理的参考书籍,也是使用最新自然语言处理工具与平台的实践指南。

在第Ⅱ部分的 7 个自然语言处理动手实验教程(第 11~17 章)中,读者可从作者的 GitHub 资源库免费下载配套的 Jupyter Notebook 文件与数据集,网址为https://github.com/raymondshtlee/nlp/,也可通过扫描本书封底的二维码下载。

在此要说明的是:为了节省篇幅,本书各章后的“参考文献”,我们采用在线方式提供。读者可扫描本书封底的二维码下载。

——李树德

缩写词

AI 人工智能(Artificial Intelligence)

ASR 自动语音识别(Automatic Speech Recognition)

BERT 基于变换器的双向编码器表示(Bidirectional Encoder Representations   

        from Transformers)

BRNN 双向循环神经网络(Bidirectional Recurrent Neural Network)

CDD 概念依赖图(Conceptual Dependency Diagram)

CFG 上下文无关文法(Context-Free Grammar)

CFL 上下文无关语言(Context-Free Language)

CNN 卷积神经网络(Convolutional Neural Network)

CR 指代消解(Coreference Resolution)

DNN 深度神经网络(Deep Neural Network)

DT 限定词(Determiner)

FOPC 一阶谓词逻辑(First-Order Predicate Calculus)

GRU 门控循环单元(Gated Recurrent Unit)

HMM 隐马尔可夫模型(Hidden Markov Model)

IE 信息提取(Information Extraction)

IR 信息检索(Information Retrieval)

KAI 知识获取与推理(Knowledge Acquisition and Inferencing)

LSTM 长短期记忆(Long Short-Term Memory)

MEMM 最大熵马尔可夫模型(Maximum Entropy Markov Model)

MeSH 医学主题词(Medical Subject Heading)

ML 机器学习(Machine Learning)

NER 命名实体识别(Named Entity Recognition)

NLP 自然语言处理(Natural Language Processing)

NLTK 自然语言工具包(Natural Language Toolkit)

NLU 自然语言理解(Natural Language Understanding)

NN 名词(Noun)

NNP 专有名词(Proper Noun)

Nom 名词化(Nominal)

NP 名词短语(Noun Phrase)

PCFG 概率上下文无关文法(Probabilistic Context-Free Grammar)

PMI 点互信息(Pointwise Mutual Information)

POS 词性(Part-Of-Speech)

POST 词性标注(Part-Of-Speech Tagging)

PPMI 正点互信息(Positive Pointwise Mutual Information)

Q&A 问答(Question and Answering)

RNN 循环神经网络(Recurrent Neural Network)

TBL 基于转换的学习(Transformation-Based Learning)

VB 动词(Verb)

VP 动词短语(Verb Phrase)

WSD 词义消歧(Word Sense Disambiguation)