第一章:NLP 导论
什么是自然语言处理
自然语言处理(Natural Language Processing,简称 NLP)是人工智能(AI)领域的一个重要分支,它研究的是如何让计算机理解、生成和处理人类日常使用的自然语言(如中文、英文、法语等)。
核心目标
NLP 的终极目标是弥合人类语言与计算机理解之间的鸿沟——让机器能够像人一样"读懂"文字、"听懂"话,并做出有意义的回应。
为什么 NLP 很难?
人类语言具有高度的歧义性、多样性和隐含性。让我们通过几个例子来理解:
歧义性:同一个句子在不同语境下含义完全不同:
"他在银行工作"
这里的"银行"是指金融机构(bank)还是河岸(river bank)?人类可以依靠常识判断,但计算机需要额外的上下文信息。
多样性:同一个意思可以用无数种方式表达:
- "今天天气真好" → 正面情感
- "今天的阳光让人心情愉悦" → 正面情感
- "Nice weather today!" → 正面情感(不同语言)
隐含性:语言中充满隐喻、反讽和文化背景:
- "这个餐厅的菜真是'好吃'得让人想哭"(反讽)
- "他终于把作业写完了,太阳从西边出来了"(夸张)
NLP 的常见任务
自然语言处理包含多个典型任务,可分为以下几大类:
1. 文本分类(Text Classification)
对整段文本进行判断或归类。
| 应用场景 | 说明 | 示例 |
|---|---|---|
| 情感分析 | 判断评价是正面还是负面 | "这家餐厅太棒了!" → 正面 |
| 垃圾邮件识别 | 判断邮件是否为垃圾邮件 | "恭喜你中奖了!" → 垃圾邮件 |
| 新闻分类 | 将新闻归入不同主题 | "股市大涨" → 财经 |
| 意图识别 | 识别用户说话的目的 | "帮我订一张机票" → 预订服务 |
2. 序列标注(Sequence Labeling)
对文本中的每个词或字打上标签。
| 应用场景 | 说明 | 示例 |
|---|---|---|
| 命名实体识别(NER) | 找出人名、地名、机构名等 | "张三在北京大学读书" |
| 词性标注(POS) | 标注每个词的词性 | "我/代词 爱/动词 自然语言/名词" |
| 分词 | 将连续文本切分为词语 | "我爱NLP" → ["我", "爱", "NLP"] |
3. 文本生成(Text Generation)
根据已有内容生成新的自然语言文本。
| 应用场景 | 说明 |
|---|---|
| 自动写作 | 根据大纲或提示自动生成文章 |
| 摘要生成 | 将长文本压缩为简短摘要 |
| 智能回复 | 根据收到的消息自动生成回复 |
| 对话系统 | 与用户进行多轮自然语言对话 |
4. 信息抽取(Information Extraction)
从文本中提取出结构化的信息。
| 应用场景 | 说明 |
|---|---|
| 阅读理解 | 给出一段文本和一个问题,从中抽取答案 |
| 关系抽取 | 从文本中提取实体之间的关系 |
| 事件抽取 | 识别文本中描述的事件及其参与者 |
5. 文本转换(Text Transformation)
将一种文本转换为另一种形式。
| 应用场景 | 说明 |
|---|---|
| 机器翻译 | 将一种语言翻译为另一种语言 |
| 文本纠错 | 自动检测并纠正文本中的错误 |
| 风格转换 | 改变文本的写作风格 |
6. 文本相似度与检索
衡量两段文本之间的语义相似程度。
| 应用场景 | 说明 |
|---|---|
| 语义搜索 | 根据语义而非关键词匹配来搜索 |
| 问答系统 | 在知识库中找到与问题最匹配的答案 |
| 重复检测 | 识别内容重复或高度相似的文本 |
NLP 的技术栈概览
一个完整的 NLP 系统通常包含以下技术层次:
┌─────────────────────────────────────┐
│ 应用层 │
│ 聊天机器人 | 搜索引擎 | 翻译系统 │
├─────────────────────────────────────┤
│ 模型层 │
│ BERT | GPT | T5 | LLaMA │
├─────────────────────────────────────┤
│ 算法层 │
│ Transformer | 注意力机制 | RNN │
├─────────────────────────────────────┤
│ 表示层 │
│ Word2Vec | BPE | One-hot │
├─────────────────────────────────────┤
│ 预处理层 │
│ 分词 | 清洗 | 标注 │
├─────────────────────────────────────┤
│ 数据层 │
│ 语料库 | 知识图谱 | 标注数据 │
└─────────────────────────────────────┘本教程将从最底层的数据层开始,逐层向上讲解,最终到达应用层。
本教程的学习路线
本教程分为 8 大部分,28 个章节:
| 部分 | 内容 | 章节 |
|---|---|---|
| 第一部分 | NLP 基础与历史 | 第 1-3 章 |
| 第二部分 | 文本预处理 | 第 4-6 章 |
| 第三部分 | 文本表示 | 第 7-10 章 |
| 第四部分 | 传统序列模型 | 第 11-13 章 |
| 第五部分 | 注意力机制与 Transformer | 第 14-17 章 |
| 第六部分 | 预训练语言模型 | 第 18-22 章 |
| 第七部分 | 现代 NLP 与大语言模型 | 第 23-25 章 |
| 第八部分 | 工程实践 | 第 26-28 章 |
建议按照顺序学习,每一章都建立在前面章节的基础之上。
环境准备
在开始学习之前,建议准备以下环境:
Python 环境
bash
# 创建虚拟环境
conda create -n nlp python=3.12
conda activate nlp核心依赖
bash
# PyTorch:深度学习框架
pip3 install torch --index-url https://download.pytorch.org/whl/cu128
# NLP 工具库
pip install jieba gensim transformers datasets tensorboard tqdm jupyter| 库 | 用途 |
|---|---|
torch | 深度学习框架,用于模型构建与训练 |
jieba | 中文分词工具 |
gensim | 训练 Word2Vec 等词向量模型 |
transformers | HuggingFace 预训练模型库 |
datasets | HuggingFace 数据处理库 |
tensorboard | 训练过程可视化 |
tqdm | 进度条显示 |
jupyter | 交互式开发环境 |
小结
本章介绍了 NLP 的定义、常见任务和技术栈概览。从下一章开始,我们将沿着 NLP 的发展历史,从最早的规则系统一直讲到现代的大语言模型,帮助你建立完整的技术演进认知。