第 15 章 深度学习NLP情感分析

自然语言处理:应用

本章来源:本文整理自《动手学深度学习》(zh.d2l.ai)第 15 章《自然语言处理:应用》,原书作者 Aston Zhang、李沐、Zachary C. Lipton、Alexander J. Smola。

本章讲什么

上一章讲了词嵌入和 BERT 预训练。这一章把它们用到真实任务上:情感分析(判断一段文本是积极还是消极)和自然语言推断(判断两句话的逻辑关系)。我们会看到同一个问题可以有不同的解法——用 RNN、用 CNN、用注意力,而最省事的是微调 BERT

情感分析

情感分析研究文本(产品评论、博客、论坛)中"隐藏"的情绪,应用于政治、金融、营销。任务本质是文本分类:把可变长度文本序列映射为固定长度的类别(积极/消极)。

常用的数据是斯坦福大型电影评论数据集 IMDb(2.5 万条训练 + 2.5 万条测试,正负平衡)。预处理的关键工程点:词元化、过滤低频词建词表,以及截断 + 填充——评论长度不一,统一截断/填充到固定长度以便小批量训练。

用 RNN 做情感分析

思路是"复用大语料上学到的词表示,避免小数据过拟合":嵌入层装载预训练词向量(训练中冻结不更新),双向 LSTM 编码整个序列,把首尾时间步的隐状态拼接作为整个文本的向量表示,再经全连接层输出积极/消极两类。

关键概念是"用双向网络把整段文本压缩成一个固定长度向量"——把一段话读一遍后总结成一个总印象。这是"序列 → 单个表示 → 类别"的通用范式。

用 CNN 做情感分析

把图像里的卷积搬到文本:把文本序列想象成一维图像,一维卷积就能捕捉 n-gram 这类局部特征(比 RNN 并行性好)。

textCNN 模型三步走:

  1. 多个不同宽度的一维卷积核分别扫过词嵌入序列——不同宽度捕获不同长度的相邻词元特征(如三元、四元、五元语法);
  2. 最大时间池化层把每个通道压成最大值——相当于挑出整条序列里每个特征最强的激活;
  3. 全连接层输出类别。

自然语言推断

情感分析只处理单条文本。自然语言推断(NLI)要判断一对文本之间的逻辑关系:给定前提假设,判别是:

  • 蕴涵:假设可由前提推出。比如"两个女人拥抱 → 两个女人在示爱"。
  • 矛盾:假设的否定可由前提推出。比如"正在运行编码示例 → 该男子在睡觉"。
  • 中性:其他情况。比如"音乐家为我们表演 → 音乐家有名"。

这对信息检索、开放域问答等应用很重要。基准是斯坦福 SNLI 数据集(约 55 万带标签句对)。

用注意力做自然语言推断

针对 NLI 设计的可分解注意力模型不用 RNN/CNN,只用注意力 + MLP,以更少参数达到当时最佳效果。核心思想是"对齐—比较—汇总"三步:

  1. 对齐:把前提与假设的词元两两"软对齐"(用注意力权重做加权平均)。比如"我累"的"累"去对齐"我确实需要睡眠"的"睡眠"。
  2. 比较:用 MLP 比较对齐后的信息。
  3. 汇总:把比较结果汇总成一个向量用于三分类。

这种"软对齐"是注意力在 NLP 的典型应用——机器学会让句子里的对应部分彼此"对上眼"。

微调 BERT:一个模型适配所有任务

为每个 NLP 任务手工设计专用模型不可行。BERT 的价值是"一个预训练模型 + 最小架构改动"适配各类任务:

  • 单文本分类(情感分析、语法可接受性判断):取 <cls> 的 BERT 表示,接一个全连接 MLP 输出类别。
  • 文本对分类/回归(自然语言推断、语义文本相似度):两个序列分别用片段 A/B 嵌入,<cls> 表示接输出层。
  • 文本标注/词性标注(词元级):每个词元的 BERT 表示都送入同一全连接层,为每个词输出标签。
  • 问答(SQuAD):把问题与段落作为两个序列输入,用两个全连接层把每个段落词元的表示转成"起始分数"和"结束分数",取分数最高的文本跨度作为答案。

微调规则统一:额外输出层从头训练,预训练 BERT 全部参数微调。"下载的预训练参数 + 任务专属输出头 + 监督微调"三位一体,只需最少的架构改动即可迁移到具体任务。

小结

  • 情感分析是文本分类,把变长序列映射为积极/消极类别。
  • RNN 用双向网络把整段文本压缩成一个向量;CNN(textCNN)把文本当一维图像捕捉 n-gram 特征。
  • 自然语言推断判断前提和假设是蕴涵、矛盾还是中性。
  • 可分解注意力模型用"对齐—比较—汇总"解决 NLI。
  • 微调 BERT 用最小架构改动适配文本分类、文本对、标注、问答等各类任务。

关键术语

术语 一句话解释
情感分析 判断文本中隐藏的情绪(积极/消极)
文本分类 把文本序列映射为类别
双向 LSTM 同时利用前后文编码整个序列
textCNN 用一维卷积捕捉 n-gram 特征的文本分类模型
最大时间池化 每通道取时间维最大值
自然语言推断(NLI) 判断前提与假设的蕴涵/矛盾/中性关系
可分解注意力 用"对齐—比较—汇总"做文本对推理
软对齐 用注意力权重做加权平均
<cls> 表示 聚合整句信息的 BERT 输出
SQuAD 问答数据集,答案是段落中的文本片段
BERT 微调 预训练参数 + 任务专属输出头 + 监督微调