5. NLP 基础
自然语言处理(NLP)研究如何让计算机表示、理解和生成人类语言。大语言模型改变了完成任务的方式,但没有消除文本边界、语料质量、评价指标和语言结构这些基础问题。
5.1 NLP 在处理什么
可以从语言层次理解典型任务:
| 层次 | 典型任务 | 输出示例 |
|---|---|---|
| 词汇 | 分词、词性标注、命名实体识别 | 人名、地点、动词等标签 |
| 句法 | 依存句法、成分句法分析 | 词之间的依存关系 |
| 语义 | 语义角色、文本蕴含、词义消歧 | “谁对谁做了什么” |
| 篇章 | 指代消解、篇章关系 | 跨句实体和逻辑关系 |
| 应用 | 分类、检索、抽取、翻译、问答、摘要 | 任务需要的结构或文本 |
理解任务定义时,要先明确输入单位、输出空间、标注规范和评价方式。同名任务在不同数据集上可能有不同边界。
5.2 中文分词与词性标注
英文文本有显式空格,中文通常没有。中文分词需要决定“研究生命起源”应如何切分,而这种边界可能随任务变化。
序列标注常用 BIO 标记:
王 B-PER
小 I-PER
明 I-PER
在 O
大 B-ORG
连 I-ORG
理 I-ORG
工 I-ORG词性标注为词赋予名词、动词、形容词等类别。它能帮助理解语言结构,也能作为信息抽取等任务的特征或中间结果。
5.3 语料库
语料库不是“很多文本”的同义词,而是为特定目的收集、整理并记录来源和标注的语言数据集合。
评估一个语料库时检查:
- 来源、时间和授权;
- 语言、领域与体裁分布;
- 文档、段落、句子等数据单位;
- 清洗、去重与隐私处理;
- 标注规范与标注一致性;
- 训练、验证、测试划分;
- 与目标使用场景的分布差异。
更大的语料不一定更好。重复、模板文本、错误编码、隐私信息和测试集污染都会影响模型与评估。
5.4 n-gram 语言模型
语言模型为序列赋予概率。根据概率链式法则:
n-gram 使用有限阶 Markov 假设,只保留最近的
例如 bigram 模型使用:
数据稀疏与平滑
未在训练语料出现的 n-gram 会得到零概率,进而使整句概率为零。加一平滑直观但往往过度分配概率;更成熟的方法包括插值、回退和 Kneser–Ney 平滑。
困惑度
长度为
在相同 tokenization 和测试集上,困惑度越低通常表示模型对文本分布预测得越好。不同词表和切分方式下的困惑度不能直接比较。
5.5 文本表示
One-hot 与词袋
One-hot 将词表示为词表维度的稀疏向量,词袋模型统计词频或 TF-IDF。它们简单、可解释,是文本分类和检索的重要基线,但难以表达顺序和语义相似性。
分布式表示
词向量把词映射到低维稠密空间。Word2Vec、GloVe 等方法利用上下文共现学习语义关系,但每个词通常只有一个静态向量,难以处理一词多义。
上下文化表示根据当前句子动态产生向量。“苹果发布产品”和“吃一个苹果”中的“苹果”因此可以得到不同表示。
5.6 神经语言模型
神经语言模型用神经网络估计条件概率。它们共享参数,并通过向量表示缓解 n-gram 的稀疏问题。
基于 RNN 的语言模型
RNN 将历史压缩到隐藏状态:
LSTM 和 GRU 改善了长依赖建模,但顺序计算限制并行效率。
基于 Transformer 的语言模型
Transformer 使用自注意力在位置之间交换信息,成为现代预训练语言模型的主要架构。根据输入和训练目标,可以形成不同模型家族。
5.7 三类常见架构
Encoder-only
代表:BERT 系列。模型可以同时看到左右上下文,常通过遮盖语言建模训练。
适合:文本分类、序列标注、句子匹配和表示学习等理解任务。
Encoder–Decoder
代表:T5、BART 等。Encoder 编码输入,Decoder 根据编码结果自回归生成输出。
适合:翻译、摘要、改写,以及统一为 text-to-text 的条件生成任务。
Decoder-only
代表:GPT 系列。使用因果掩码,只根据当前位置之前的 token 预测下一个 token。
适合:开放式生成,也可通过提示或微调完成分类、抽取、问答等任务。当前许多通用大语言模型采用这一结构。
架构名称不能代替任务分析。同一种架构可能使用不同训练目标、数据和推理方式,最终能力也会显著不同。
5.8 评价 NLP 系统
不同任务需要不同指标:
- 分类与序列标注:Accuracy、Precision、Recall、F1;
- 语言模型:负对数似然、困惑度;
- 生成任务:BLEU、ROUGE、BERTScore、人工评价等;
- 检索:Recall@k、MRR、nDCG。
自动指标只是代理。生成文本还需关注事实性、完整性、可读性、安全性和任务约束。评价集应覆盖真实输入,而不仅是容易获得的样本。
5.9 进入 LLM 前的自检
在继续学习大语言模型前,尝试不看资料解释:
- 语言模型为何学习条件概率;
- n-gram 的稀疏问题来自哪里;
- 词袋、静态词向量与上下文化表示有什么区别;
- RNN 为什么难以充分并行;
- Encoder-only、Encoder–Decoder、Decoder-only 的信息流差异;
- tokenization 为什么会影响序列长度和评价。
本章任务
完成两个小实验:
- 从文本语料训练字符级 bigram 模型,计算测试集困惑度,并实现一种简单平滑;
- 用 TF-IDF + 逻辑回归完成文本分类,分析高权重特征和错误样本。
最后选择 BERT、T5 和 GPT 中各一个模型,画出它们的信息流与训练目标对比图。
推荐阅读
- 宗成庆:《统计自然语言处理》
- 复旦大学 NLP 团队:《自然语言处理导论》与《大规模语言模型:从理论到实践》
- Speech and Language Processing:覆盖统计与神经自然语言处理的系统教材