本文来源于数据从业者全栈知识库,更多体系化内容请访问知识库。
为什么要学习NLP?
自然语言处理(Natural Language Processing)是AI最重要的应用领域之一。我们每天产生的数据中,80%以上是非结构化的文本数据:
- 聊天记录、邮件、文档
- 社交媒体、新闻、评论
- 客服对话、工单、反馈
一、NLP是什么?
1.1 定义
NLP = 让计算机理解、处理和生成人类语言的技术
graph LR
A[人类语言] --> B[NLP技术]
B --> C[计算机理解]
C --> D[智能应用]
D --> E[搜索引擎]
D --> F[智能客服]
D --> G[机器翻译]
D --> H[内容推荐]
1.2 NLP的难点
1.3 NLP vs 大语言模型
| 对比维度 | 传统NLP | 大语言模型时代 |
|---|---|---|
| 方法 | 针对特定任务设计算法 | 通用模型+提示词 |
| 数据需求 | 需要标注数据 | 少样本甚至零样本 |
| 开发成本 | 每个任务重新开发 | 一个模型多种任务 |
| 效果上限 | 取决于特征工程 | 取决于模型规模 |
| 适用场景 | 资源受限、需要可解释 | 追求效果、快速迭代 |
二、NLP的核心任务
2.1 任务全景图
graph TD
A[NLP核心任务] --> B[理解类]
A --> C[生成类]
A --> D[转换类]
B --> B1[文本分类]
B --> B2[情感分析]
B --> B3[命名实体识别]
B --> B4[关系抽取]
B --> B5[阅读理解]
C --> C1[文本生成]
C --> C2[对话系统]
C --> C3[文本摘要]
D --> D1[机器翻译]
D --> D2[文本纠错]
D --> D3[风格转换]
2.2 理解类任务
文本分类
| 应用场景 | 分类目标 | 业务价值 |
|---|---|---|
| 垃圾邮件过滤 | 垃圾/正常 | 提升用户体验 |
| 新闻分类 | 财经/体育/娱乐… | 内容分发 |
| 工单分类 | 投诉/咨询/建议… | 智能路由 |
| 意图识别 | 查余额/转账/挂失… | 智能客服 |
情感分析
| 粒度 | 分析内容 | 示例 |
|---|---|---|
| 文档级 | 整体情感倾向 | 这篇评论是好评还是差评 |
| 句子级 | 每句话的情感 | 哪些句子在抱怨 |
| 方面级 | 对不同方面的情感 | 对价格满意但对服务不满 |
命名实体识别(NER)
应用场景:
- 知识图谱构建
- 简历解析
- 合同关键信息提取
- 医疗病历结构化
关系抽取
2.3 生成类任务
文本摘要
| 类型 | 方法 | 特点 |
|---|---|---|
| 抽取式 | 从原文选择重要句子 | 保真度高,可能不连贯 |
| 生成式 | 用自己的话改写 | 更流畅,可能有偏差 |
对话系统
graph TD
A[对话系统] --> B[任务型对话]
A --> C[闲聊型对话]
A --> D[知识问答]
B --> B1[订机票、查天气]
C --> C1[情感陪伴、聊天]
D --> D1[基于知识库回答]
2.4 转换类任务
机器翻译
从一种语言转换为另一种语言。
发展历程:
| 阶段 | 方法 | 代表 |
|---|---|---|
| 规则时代 | 人工编写规则 | 早期翻译软件 |
| 统计时代 | 基于统计模型 | Google早期翻译 |
| 神经时代 | Seq2Seq + Attention | Google NMT |
| 大模型时代 | Transformer + 海量数据 | GPT/DeepL |
三、NLP的技术演进
3.1 发展历程
graph LR
A[规则方法<br/>1950s-1980s] --> B[统计方法<br/>1990s-2000s]
B --> C[深度学习<br/>2010s]
C --> D[预训练模型<br/>2018-]
D --> E[大语言模型<br/>2022-]
3.2 各阶段特点
| 阶段 | 核心思想 | 优点 | 缺点 |
|---|---|---|---|
| 规则方法 | 人工编写语法规则 | 可解释、可控 | 难以覆盖所有情况 |
| 统计方法 | 从数据中学习概率分布 | 自动学习 | 特征工程复杂 |
| 深度学习 | 端到端学习表示 | 效果好 | 需要大量标注数据 |
| 预训练模型 | 先预训练再微调 | 少样本也能用 | 计算资源要求高 |
| 大语言模型 | 规模即能力 | 通用能力强 | 成本高、黑盒 |
3.3 关键技术里程碑
| 年份 | 技术 | 意义 |
|---|---|---|
| 2013 | Word2Vec | 词向量开山之作 |
| 2014 | Seq2Seq | 序列到序列模型 |
| 2015 | Attention | 注意力机制 |
| 2017 | Transformer | 革命性架构 → 详见 |
| 2018 | BERT | 预训练模型时代开启 |
| 2020 | GPT-3 | 大模型涌现能力 |
| 2022 | ChatGPT | AI进入大众视野 |
四、文本表示:从字符到向量
4.1 为什么需要文本表示?
计算机只懂数字,不懂文字。需要把文本转换成数字(向量)才能计算。
4.2 文本表示方法演进
graph TD
A[文本表示方法] --> B[离散表示]
A --> C[分布式表示]
B --> B1[One-hot编码]
B --> B2[词袋模型]
B --> B3[TF-IDF]
C --> C1[Word2Vec]
C --> C2[GloVe]
C --> C3[BERT Embedding]
One-hot编码
词袋模型(Bag of Words)
把文本看作词的集合,忽略顺序。
TF-IDF
考虑词的重要性:在本文档中出现频率高 + 在其他文档中出现少 = 更重要
| 指标 | 含义 | 计算 |
|---|---|---|
| TF(词频) | 词在文档中出现的频率 | 出现次数/总词数 |
| IDF(逆文档频率) | 词的稀有程度 | log(总文档数/包含该词的文档数) |
| TF-IDF | 综合重要性 | TF × IDF |
Word2Vec:词向量革命
详细原理见 → 向量数据库与语义搜索
上下文相关的表示(BERT等)
Word2Vec的问题:一个词只有一个向量,无法处理多义词。
五、核心NLP技术详解
5.1 分词(Tokenization)
把连续的文本切分成词或子词。
| 语言 | 难度 | 原因 |
|---|---|---|
| 英文 | 较简单 | 有空格分隔 |
| 中文 | 较难 | 没有天然分隔符 |
中文分词的挑战:
常用分词工具:
| 工具 | 特点 |
|---|---|
| jieba | 中文分词最流行,简单易用 |
| HanLP | 功能全面,工业级 |
| LTP | 哈工大出品,学术界常用 |
| THULAC | 清华出品,准确率高 |
5.2 词性标注(POS Tagging)
给每个词标注词性:名词、动词、形容词…
5.3 句法分析
分析句子的语法结构。
| 类型 | 分析内容 |
|---|---|
| 依存句法 | 词与词之间的依赖关系 |
| 成分句法 | 句子的层级结构(短语、从句) |
5.4 语义理解
| 任务 | 目标 |
|---|---|
| 词义消歧 | 确定多义词的具体含义 |
| 语义角色标注 | 识别谓词的施事、受事等 |
| 共指消解 | 确定代词指代的对象 |
六、预训练语言模型
6.1 什么是预训练?
graph LR
A[海量无标注文本] --> B[预训练]
B --> C[通用语言模型]
C --> D[少量标注数据]
D --> E[微调]
E --> F[特定任务模型]
6.2 主流预训练模型
| 模型 | 类型 | 特点 | 适合任务 |
|---|---|---|---|
| BERT | 编码器 | 双向理解上下文 | 分类、NER、问答 |
| GPT | 解码器 | 自回归生成 | 文本生成、对话 |
| T5 | 编解码 | 统一文本到文本 | 翻译、摘要、问答 |
| RoBERTa | 编码器 | BERT的优化版 | 各种NLU任务 |
| ALBERT | 编码器 | 轻量级BERT | 资源受限场景 |
6.3 中文预训练模型
| 模型 | 来源 | 特点 |
|---|---|---|
| BERT-wwm | 哈工大 | 全词掩码,中文效果好 |
| ERNIE | 百度 | 知识增强 |
| MacBERT | 哈工大 | 改进掩码策略 |
| RoFormer | 追一科技 | 旋转位置编码 |
七、NLP实践应用场景
7.1 智能客服
graph TD
A[用户输入] --> B[意图识别]
B --> C{意图类型}
C -->|查询类| D[知识库检索]
C -->|业务类| E[业务系统对接]
C -->|闲聊类| F[对话生成]
D --> G[答案生成]
E --> G
F --> G
G --> H[用户回复]
核心NLP能力:
- 意图识别(文本分类)
- 槽位填充(NER)
- 知识库问答(RAG)
- 多轮对话管理
7.2 舆情分析
| 分析维度 | NLP技术 | 业务价值 |
|---|---|---|
| 情感倾向 | 情感分析 | 了解用户态度 |
| 热点话题 | 主题模型 | 发现舆论焦点 |
| 传播脉络 | 文本聚类 | 追踪事件发展 |
| 关键人物 | NER | 识别意见领袖 |
7.3 文档智能处理
| 场景 | 技术 | 应用 |
|---|---|---|
| 合同审核 | NER + 关系抽取 | 提取关键条款 |
| 简历解析 | 信息抽取 | 自动填充候选人信息 |
| 发票识别 | OCR + NER | 自动报销 |
| 病历结构化 | 医学NER | 辅助诊断 |
7.4 搜索与推荐
| 功能 | NLP技术 |
|---|---|
| 查询理解 | 意图识别、实体识别 |
| 查询改写 | 同义词扩展、纠错 |
| 相关性排序 | 语义匹配 |
| 内容理解 | 文本分类、标签提取 |
八、NLP与大模型时代
8.1 LLM如何改变NLP?
| 传统做法 | LLM时代做法 |
|---|---|
| 每个任务训练一个模型 | 一个模型搞定多种任务 |
| 需要大量标注数据 | Few-shot甚至Zero-shot |
| 特征工程 + 模型选择 | 提示工程 |
| 开发周期长 | 快速原型验证 |
8.2 哪些场景还需要传统NLP?
| 场景 | 原因 |
|---|---|
| 资源受限 | 边缘设备跑不动大模型 |
| 低延迟要求 | LLM响应太慢 |
| 可解释性要求 | 需要知道为什么这么分类 |
| 成本敏感 | LLM API调用费用高 |
| 数据隐私 | 不能把数据发给外部API |
8.3 NLP工程师的新定位
graph TD
A[NLP工程师新技能树] --> B[传统NLP基础]
A --> C[LLM应用开发]
A --> D[RAG系统构建]
A --> E[提示工程]
B --> B1[文本预处理、特征工程]
C --> C1[模型选型、API调用、微调]
D --> D1[向量化、检索、重排序]
E --> E1[Prompt设计与优化]
九、本章小结
学习路径建议
graph LR
A[本文:NLP基础] --> B[深度学习基础]
B --> C[大语言模型]
C --> D[Prompt工程]
D --> E[RAG实战]
推荐下一步:
- 深度学习基础 - 理解NLP背后的模型
- 大语言模型 - NLP的最新形态
- Prompt工程 - 用LLM做NLP任务
本文节选自数据从业者全栈知识库。知识库包含 2300+ 篇体系化技术文档,覆盖数据分析、数据工程、数据治理、AI 等全栈领域。了解更多 ->