Skip to content

5. NLP 基础 ​

自然语言处理(NLP)研究如何让计算机表示、理解和生成人类语言。大语言模型改变了完成任务的方式,但没有消除文本边界、语料质量、评价指标和语言结构这些基础问题。

5.1 NLP 在处理什么 ​

可以从语言层次理解典型任务:

层次典型任务输出示例
词汇分词、词性标注、命名实体识别人名、地点、动词等标签
句法依存句法、成分句法分析词之间的依存关系
语义语义角色、文本蕴含、词义消歧“谁对谁做了什么”
篇章指代消解、篇章关系跨句实体和逻辑关系
应用分类、检索、抽取、翻译、问答、摘要任务需要的结构或文本

理解任务定义时,要先明确输入单位、输出空间、标注规范和评价方式。同名任务在不同数据集上可能有不同边界。

5.2 中文分词与词性标注 ​

英文文本有显式空格,中文通常没有。中文分词需要决定“研究生命起源”应如何切分,而这种边界可能随任务变化。

序列标注常用 BIO 标记:

text
王  B-PER
小  I-PER
明  I-PER
在  O
大  B-ORG
连  I-ORG
理  I-ORG
工  I-ORG

词性标注为词赋予名词、动词、形容词等类别。它能帮助理解语言结构,也能作为信息抽取等任务的特征或中间结果。

5.3 语料库 ​

语料库不是“很多文本”的同义词,而是为特定目的收集、整理并记录来源和标注的语言数据集合。

评估一个语料库时检查:

  • 来源、时间和授权;
  • 语言、领域与体裁分布;
  • 文档、段落、句子等数据单位;
  • 清洗、去重与隐私处理;
  • 标注规范与标注一致性;
  • 训练、验证、测试划分;
  • 与目标使用场景的分布差异。

更大的语料不一定更好。重复、模板文本、错误编码、隐私信息和测试集污染都会影响模型与评估。

5.4 n-gram 语言模型 ​

语言模型为序列赋予概率。根据概率链式法则:

p(w1,…,wT)=∏t=1Tp(wt∣w1,…,wt−1).

n-gram 使用有限阶 Markov 假设,只保留最近的 n−1 个 token:

p(wt∣w1,…,wt−1)≈p(wt∣wt−n+1,…,wt−1).

例如 bigram 模型使用:

p(wt∣wt−1)=C(wt−1,wt)C(wt−1).

数据稀疏与平滑 ​

未在训练语料出现的 n-gram 会得到零概率,进而使整句概率为零。加一平滑直观但往往过度分配概率;更成熟的方法包括插值、回退和 Kneser–Ney 平滑。

困惑度 ​

长度为 T 的序列,其困惑度可写为:

PPL(w1:T)=exp⁡(−1T∑t=1Tlog⁡p(wt∣w<t)).

在相同 tokenization 和测试集上,困惑度越低通常表示模型对文本分布预测得越好。不同词表和切分方式下的困惑度不能直接比较。

5.5 文本表示 ​

One-hot 与词袋 ​

One-hot 将词表示为词表维度的稀疏向量,词袋模型统计词频或 TF-IDF。它们简单、可解释,是文本分类和检索的重要基线,但难以表达顺序和语义相似性。

分布式表示 ​

词向量把词映射到低维稠密空间。Word2Vec、GloVe 等方法利用上下文共现学习语义关系,但每个词通常只有一个静态向量,难以处理一词多义。

上下文化表示根据当前句子动态产生向量。“苹果发布产品”和“吃一个苹果”中的“苹果”因此可以得到不同表示。

5.6 神经语言模型 ​

神经语言模型用神经网络估计条件概率。它们共享参数,并通过向量表示缓解 n-gram 的稀疏问题。

基于 RNN 的语言模型 ​

RNN 将历史压缩到隐藏状态:

ht=f(ht−1,xt),p(wt+1∣w≤t)=softmax(Wht+b).

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 前的自检 ​

在继续学习大语言模型前,尝试不看资料解释:

  1. 语言模型为何学习条件概率;
  2. n-gram 的稀疏问题来自哪里;
  3. 词袋、静态词向量与上下文化表示有什么区别;
  4. RNN 为什么难以充分并行;
  5. Encoder-only、Encoder–Decoder、Decoder-only 的信息流差异;
  6. tokenization 为什么会影响序列长度和评价。

本章任务 ​

完成两个小实验:

  1. 从文本语料训练字符级 bigram 模型,计算测试集困惑度,并实现一种简单平滑;
  2. 用 TF-IDF + 逻辑回归完成文本分类,分析高权重特征和错误样本。

最后选择 BERT、T5 和 GPT 中各一个模型,画出它们的信息流与训练目标对比图。

推荐阅读 ​