第一章 自然语言处理导论:当机器学会阅读
当机器学会阅读:自然语言处理导论
一、一个清晨的对话:机器真的"听懂"了吗
清晨七点十五分,你对着手机说了一句"Hey Siri,今天天气怎么样"。几秒钟后,一个温和的声音播报了气温、降水概率和穿衣建议。表面看,这是一场普通的人机对话;但若把镜头拉远,你会发现这短短几秒里发生了一件人类历史上从未有过的事:一台硅基设备解析了人类的声音信号,把它转写成文字,理解了"今天"指的是哪一天、"天气怎么样"背后是气象信息需求,然后调取本地数据,再把答案合成为语音输出。这一连串动作的核心,就是自然语言处理(Natural Language Processing,NLP)。
再想象另一个场景:你打开微信,输入"帮我把这段话翻译成英文,再润色一下语法",聊天框另一端的助手在数秒内给出译文。又或者,你在购物网站搜索"适合夏天穿的轻薄透气男鞋",系统不仅返回商品列表,还能理解"夏天""轻薄""透气"这三个修饰词的语义关联,把它们和商品的材质、季节属性匹配起来。再比如,医生在病历系统中输入"患者主诉:反复胸闷气短一周,加重伴夜间不能平卧",后台自动抽取出症状、时间、严重程度等结构化字段,辅助临床决策。
这些场景的共同点是:人类语言是入口,也是出口。机器不再只和数字、图像、坐标打交道,它开始能够阅读、写作、对话、总结、翻译、判断情感。这种能力一旦成熟,渗透的速度和广度都是惊人的。OpenAI 在 2022 年底发布 ChatGPT,五天内注册用户突破一百万,两个月内月活用户超过一亿,成为人类历史上用户增长最快的消费级应用。它的核心,仍然是自然语言处理——只是这一次,处理的不再是简单的命令,而是开放域的长对话、多轮推理、甚至一定程度的创意写作。
但这里必须立刻指出一个容易被忽略的事实:"听懂"是错觉,理解仍未完成。Siri 能告诉你今天会不会下雨,但它并不知道"雨"在你的童年记忆里意味着什么;翻译引擎能把"落霞与孤鹜齐飞,秋水共长天一色"译成 "The evening glow and the lonely wild duck fly together; the autumn water shares the same color with the endless sky",但它未必懂得这句诗的美。NLP 解决的问题是"功能性的语言理解"——让机器在特定任务上表现得像理解了语言——而非"全面的语义意识"。这个区分将贯穿全书:本书讨论的是工程意义上的语言智能,不是哲学意义上的意识问题。
带着这一认识,我们进入本章的核心议题:自然语言处理是什么、为什么重要、走过怎样的历程、又将走向何处。这是全书的第一章,也是为后续十四章铺设地基的一章。
二、什么是自然语言处理:定义、范畴与边界
2.1 一句话定义
自然语言处理,是计算机科学、语言学、人工智能三个学科交叉形成的技术学科,研究如何让计算机理解、生成、分析人类使用的自然语言(包括口语和书面语),并在各种实际任务中加以应用。这里的"自然语言"(Natural Language)是相对于"人工语言"(如编程语言、形式逻辑语言)而言的,指人类在日常生活中自然习得、自发使用的语言系统,如汉语、英语、日语、阿拉伯语。它具有三个让机器头疼的特点:歧义性(ambiguity)、上下文依赖(context-dependence)、开放性(open-endedness)。
歧义性是指同一个句子在不同语境下有不同解释。"我看见了她用望远镜"可以理解为"我通过望远镜看见了她",也可以理解为"我看见了她正在使用望远镜",因为"用望远镜"既可以修饰"看见"(方式状语),也可以修饰"她"(宾语补足语)。上下文依赖是指句子的意义往往依赖于前文、场景、说话者身份。例如"这儿真热"在不同场合可能是陈述、抱怨、暗示开空调、或者仅仅是寒暄的开场白。开放性是指词汇和表达方式不断扩张,新词、俚语、网络用语层出不穷,"栓Q""yyds""摆烂"这些词汇在十年前并不存在。
NLP 的任务,就是在这些不确定性中寻找规律、建立模型、给出有用的输出。它处理的对象可以是一句话、一段话、一篇文章、一组对话、整个语料库;它输出的可以是分类标签、翻译结果、生成文本、结构化数据、甚至可执行的动作。
2.2 与计算语言学、人工智能的关系
NLP 经常和两个邻近概念混用:计算语言学(Computational Linguistics,CL) 和人工智能(Artificial Intelligence,AI)。理解三者的关系有助于把握 NLP 的学科定位。
人工智能 是一个最大的伞概念,目标是用机器模拟、延伸或扩展人类智能。AI 包含很多子领域:机器学习(Machine Learning)、计算机视觉(Computer Vision)、语音识别(Speech Recognition)、机器人学(Robotics)、自然语言处理等。NLP 是 AI 的一个分支,专注于语言维度的智能。
计算语言学 则更多源自语言学传统。它用计算机作为工具来研究语言学问题——比如验证某个语法理论、统计某种语言现象的频次、建模语言习得过程。计算语言学的目标是理解语言,NLP 的目标是让机器使用语言。两者方法高度重叠(都依赖算法和模型),但出发点不同:前者是科学问题驱动,后者是工程问题驱动。一个简单类比:计算语言学像是用望远镜研究天体的天文学家,NLP 像是设计飞行器的航空航天工程师;前者关心"它是什么",后者关心"它能做什么"。
从学科历史看,NLP 在 1990 年代之前几乎等同于计算语言学,因为那时候做语言处理的人几乎都来自语言学阵营,方法以规则和语言学知识为主。1990 年代以后,随着统计方法和机器学习的崛起,大量计算机科学家进入这个领域,NLP 的工程色彩迅速加强。今天,两个社区已经高度融合,几乎所有的 NLP 研究者都需要同时掌握语言学基础和机器学习方法。
2.3 NLP 的研究范畴:理解、生成、分析三大方向
NLP 的研究任务虽然繁多,但可以归入三个高层方向。
第一是语言理解(Language Understanding),目标是让机器从文本中抽取意义。典型任务包括:
- **文本分类(Text Classification)**:判断一封邮件是否是垃圾邮件、一条评论是正面还是负面、一篇新闻属于政治还是体育。情感分析(Sentiment Analysis)是文本分类的经典代表。
- **命名实体识别(Named Entity Recognition,NER)**:从文本中识别人名、地名、机构名、日期、金额等实体。例如从"苹果公司 CEO 蒂姆·库克 2024 年 6 月在北京出席发布会"中抽取"苹果公司"(机构)、"蒂姆·库克"(人名)、"2024 年 6 月"(时间)、"北京"(地点)。
- **关系抽取(Relation Extraction)**:识别实体之间的语义关系。例如从"马云创办了阿里巴巴"中抽取"马云-阿里巴巴-创始人"关系。
- **问答系统(Question Answering,QA)**:给定一个问题和(或)一段背景文本,返回正确答案。形态从简单的关键词匹配(如 IBM 的早期系统)到今天的抽取式 QA(如 SQuAD 数据集上的模型)和生成式 QA(如基于大模型的对话问答)。
- **语义角色标注(Semantic Role Parsing)**:分析"谁对谁做了什么",例如对"小明用锤子砸了窗户"标注"小明=施事,锤子=工具,窗户=受事,砸=动作"。
第二是语言生成(Language Generation),目标是让机器产出自然语言文本。典型任务包括:
- **机器翻译(Machine Translation,MT)**:将一种语言翻译成另一种语言。
- **文本摘要(Text Summarization)**:从长文档生成简短的概括。分为抽取式(直接选原文句子)和生成式(重新组织语言)。
- **对话生成(Dialogue Generation)**:聊天机器人、客服机器人、智能助手都属此类。
- **创意写作(Creative Writing)**:写诗、写故事、写营销文案、写代码注释。
- **数据到文本(Data-to-Text)**:从结构化数据生成自然语言描述,例如从股票数据生成"今日收盘上涨 2.3%,成交量放大"的播报。
第三是语言分析(Language Analysis),目标是揭示语言的结构、规律和属性。典型任务包括:
- **词性标注(Part-of-Speech Tagging)**:标注每个词的语法类别,如名词、动词、形容词。
- **句法分析(Parsing)**:构建句子的句法树,分析主谓宾定状补结构。
- **词义消歧(Word Sense Disambiguation)**:判断多义词在具体语境中的义项,例如"bank"是"银行"还是"河岸"。
- **语篇分析(Discourse Analysis)**:理解段落之间、指代之间、逻辑关系之间的联系。
- **语言模型(Language Modeling)**:估计一个词序列出现的概率,是几乎所有现代 NLP 系统的基础组件。
需要强调的是,这三类任务在工程实践中往往相互交织。一个智能客服系统既需要理解用户问题(理解),也需要生成回答(生成),还可能需要分析对话历史以判断用户情绪(分析)。一个高级的 NLP 系统很少是单一任务,而是多任务的组合。
2.4 NLP 与语音、视觉的关系
最后简单辨析 NLP 与邻近技术的关系。语音识别(Speech Recognition) 把声音变成文字,语音合成(Text-to-Speech,TTS) 把文字变成声音——它们处理的是声学信号,处在 NLP 的上游和下游。而自然语言处理处理的是文字本身。两者结合构成完整的语音对话系统(如 Siri、小爱同学)。计算机视觉处理图像和视频,当图像中包含文字(OCR、场景文字识别)或需要跨模态理解(如看图说话、视觉问答)时,会和 NLP 产生交集。2020 年以后,多模态学习(Multimodal Learning) 成为热点,正是因为现实世界的信息从来不是单一模态的。
三、七十年简史:自然语言处理的三个时代
NLP 的发展可以清晰地划分为三个时代:规则驱动时代(Rule-based Era,约 1950s–1990s)、统计学习时代(Statistical Era,约 1990s–2010s)、深度学习时代(Deep Learning Era,2013 至今)。每一次范式转移,背后都是研究思路、计算资源、数据规模的根本性变革。
```mermaid flowchart LR A[1950s<br/>图灵测试] --> B[1957<br/>Chomsky<br/>生成语法] B --> C[1960s<br/>ELIZA<br/>对话机器人] C --> D[1970s<br/>概念依存理论] D --> E[1980s<br/>专家系统<br/>规则工程] E --> F[1990s<br/>统计革命<br/>HMM/IBM模型] F --> G[2000s<br/>SVM/CRF<br/>机器学习] G --> H[2013<br/>Word2Vec<br/>词向量] H --> I[2014<br/>Seq2Seq<br/>注意力] I --> J[2017<br/>Transformer] J --> K[2018<br/>BERT/GPT] K --> L[2020<br/>GPT-3<br/>大模型] L --> M[2022<br/>ChatGPT<br/>对话爆发] M --> N[2023-2024<br/>GPT-4<br/>Claude/Gemini] ```
3.1 规则驱动时代(1950s–1990s):让机器遵循语言学家
NLP 的起点可以追溯到艾伦·图灵(Alan Turing)。1950 年,他在论文《计算机器与智能》(*Computing Machinery and Intelligence*)中提出了著名的"图灵测试(Turing Test)":如果一台机器通过文本对话让人类无法分辨它是机器还是人,那么就可以认为它具有智能。图灵测试虽然不是 NLP 的具体方法,但它为整个领域设定了雄心——让机器通过语言展现智能。
1957 年,诺姆·乔姆斯基(Noam Chomsky) 出版《句法结构》(*Syntactic Structures*),提出转换生成语法(Transformational Generative Grammar)。这一理论认为,人类的语言能力可以用有限的规则生成无限的句子。这一思想对当时的 NLP 研究影响深远——既然语言是规则的集合,那就让计算机遵循规则来处理语言。
1960 年代诞生了第一批 NLP 系统。ELIZA(1966)由 MIT 的约瑟夫·维森鲍姆(Joseph Weizenbaum)开发,是最早的聊天机器人之一。它用简单的模式匹配和替换规则模拟罗杰斯学派心理治疗师,例如把"我很难过"改写成"你说你很难过,能告诉我更多吗?"。虽然 ELIZA 几乎没有任何真正的"理解",但它让用户产生情感投射的现象,成为后来人机交互研究的重要案例。SHRDLU(1968–1970)由特里·维诺格拉德(Terry Winograd)开发,能在虚拟积木世界中理解指令并执行操作,例如把红色方块放在蓝色盒子上面。它的成功激发了人们对"理解"的乐观。
1970 年代到 1980 年代,规则方法走向精细化。研究者开发了大量语法(如ATN 增广转换网络)、词典、语义框架。概念依存理论(Conceptual Dependency Theory) 由罗杰·尚克(Roger Schank)提出,试图用一组抽象的概念原语表示所有动作和状态的语义。框架语义学(Frame Semantics) 由查尔斯·菲尔莫尔(Charles Fillmore)提出,强调词汇意义需要在语境框架中理解。格语法(Case Grammar) 分析动词与名词之间的深层语义关系。
这一时期还出现了许多基于规则的专家系统(Expert System),例如医疗诊断、矿产勘探、法律咨询等领域的系统。它们的特点是:知识由人类专家手工编码,推理由规则引擎完成。NLP 系统也大致遵循这一模式——语言学家编写语法规则、词典、语义规则,计算机按规则运作。
然而,规则方法存在根本局限。第一,语言现象过于复杂。 自然语言的歧义无处不在,"我看见了她用望远镜"这类例子多到无穷,规则系统无法穷举。第二,规则之间相互矛盾。 一条规则适用的情况,另一条规则可能给出不同结论,导致系统脆弱。第三,构建成本极高。 编写一部覆盖常用语言的语法和词典需要数百名语言学家工作数年。第四,难以跨语言迁移。 一套英语规则无法直接搬到汉语。
规则时代的代表性成就包括:乔姆斯基的形式语言理论、ELIZA、SHRDLU、机器翻译的早期规则系统(如 SYSTRAN)、自然语言接口(如 LUNAR 问答系统,能回答关于阿波罗月球样本的问题)。
3.2 统计学习时代(1990s–2010s):让机器从数据中学习
1990 年代,NLP 经历了一场静悄悄但深刻的革命:统计方法(Statistical Methods) 取代规则方法成为主流。这场革命的标志性事件是机器翻译领域的 IBM 模型。IBM 的彼得·布朗(Peter Brown)等人 1990 年前后发表了一系列论文,提出基于概率的翻译模型——把翻译看作一个概率问题:给定源语言句子 $f$,目标语言句子 $e$ 的概率 $P(e|f)$ 最大的就是最佳译文。这套方法后来被称为基于词的统计机器翻译(Word-based SMT)。
为什么统计方法会突然崛起?三个原因。第一,语料库语言学(Corpus Linguistics)兴起。 大量电子文本被数字化、收集、整理,形成了大规模语料库,为统计学习提供了数据基础。第二,计算能力提升。 个人电脑和工作站的算力足够训练统计模型。第三,学术界认识到规则方法的局限。 在 1988 年的 DARPA 语音识别评测中,统计方法(隐马尔可夫模型,HMM)大幅领先规则方法,这一胜利很快扩展到 NLP 其他领域。
统计时代的核心思想是:任何语言现象都可以用概率分布刻画,参数可以从数据中自动学习。这一时期涌现出一批核心模型:
- **隐马尔可夫模型(Hidden Markov Model,HMM)**:用于词性标注、命名实体识别、语音识别等序列标注任务。
- **n 元语法(n-gram)**:估计词序列概率的语言模型,公式为 $P(w_1, w_2, ..., w_n) \approx \prod_{i=1}^{n} P(w_i | w_{i-(n-1)}, ..., w_{i-1})$。
- **最大熵模型(Maximum Entropy Model,MaxEnt)**:保留所有有用特征,假设熵最大。
- **条件随机场(Conditional Random Field,CRF)**:序列标注的判别式模型,比 HMM 更灵活。
- **支持向量机(Support Vector Machine,SVM)**:分类任务的主力模型。
机器翻译领域也从词对齐模型演进到短语对齐模型(Phrase-based SMT),再到层次短语模型(Hierarchical Phrase-based SMT)。开源工具 Moses(2007)让任何研究者都能训练自己的统计翻译系统。Google Translate 在 2006 年前后从规则方法切换到统计方法,翻译质量显著提升。
统计时代的关键洞察是:语言知识不需要手工编写,而是从数据中自动涌现。但统计方法也有局限。第一,特征工程繁重。 什么样的特征对当前任务有用,需要人类专家设计。第二,数据稀疏问题。 低频词、低频搭配的参数估计不准。第三,长距离依赖难建模。 n-gram 中 n 太大时数据稀疏,n 太小时无法捕捉长距离依赖。
统计时代的代表性成就包括:IBM 翻译模型、谷歌翻译(统计版)、SVM 分类器在文本分类中广泛应用、Moses 翻译工具包、CRF++、Stanford NLP 工具包。
3.3 深度学习时代(2013 至今):让机器自己发现表示
2013 年前后,NLP 迎来了第二次范式转移——深度学习(Deep Learning) 成为主流。