得益于 ChatGPT 和 Llama 等大语言模型 (LLM) ,自然语言处理 (NLP) 的能力实现了飞跃式提升。我们经常看到这些模型写诗、写代码或轻松总结邮件。然而,当我们将其应用于严谨的信息抽取 (IE) 任务时,缺陷便开始显现。

NLP 中最具欺骗性的挑战之一是命名实体识别 (NER) 。 虽然识别一个人名或地名听起来很简单,但语言很少是扁平的。它是分层的、递归的,更是嵌套的。

今天,我们将深入探讨一篇引人入胜的研究论文,题为 《探索大语言模型的嵌套命名实体识别: 方法、挑战与见解》 (“Exploring Nested Named Entity Recognition with Large Language Models”) 。研究人员调查了现代 LLM 是否能够处理隐藏在其他实体内部的实体的复杂性。他们探索了各种提示策略、微调方法,并最终通过与传统监督模型的对比,认清了 LLM 的真实现状。

问题所在: 实体中的实体

要理解这一挑战,我们首先需要区分扁平 NER (Flat NER)嵌套 NER (Nested NER)

在扁平 NER 中,我们可能会看这个句子: “Elon Musk works at Tesla。”

  • Elon Musk \(\rightarrow\) 人物
  • Tesla \(\rightarrow\) 组织

这很直观,因为实体不重叠。但请考虑这个短语:

“University of California student” (加利福尼亚大学学生)

这里,我们遇到了一个分层问题:

  1. “University of California” 是一个组织。
  2. “University of California student” 可能被归类为人物 (或特定角色) 。

在生物医学文本中,这种情况更为常见且关键。一个蛋白质名称可能包含一个 DNA 序列名称,而该序列名称内又包含一个细胞类型。传统模型在这里往往表现挣扎,因为它们通常将文本视为线性序列,其中一个 token 只能属于一个实体。

本文作者旨在回答一个关键问题: 我们是通过提示或微调让 LLM “看到”这些层级,还是它们只能看到表面?

方法论: 教 LLM 进行推理

研究人员不只是让 ChatGPT 去“找实体”。他们系统地解构了 LLM 处理该问题的方式。他们测试了几种推理框架,从简单的提取到复杂的递归逻辑。

1. 输出格式的重要性

在涉及推理之前,作者发现如何要求模型回答至关重要。他们测试了四种输出格式:

  1. 片段抽取 (Span Extraction) : 要求提供索引 (例如 Start: 0, End: 4) 。
  2. 区分标记 (Distinguishable Tokens) : 在文本中插入标签 (例如 <Entity>) 。
  3. 嵌套层级 BIO (Nested Level BIO) : 一种标记层级深度的复杂标签方案。
  4. 实体-类别字典 (Entity-Category Dictionary) : 类似 JSON 的结构 (例如 {'Entity': 'Label'}) 。

研究人员测试的不同输出格式示例。

图 4 所示,这些格式的复杂度各不相同。令人惊讶的是,尽管 LLM 擅长数学,但在片段抽取 (识别字符索引) 方面却彻底失败了。 实体-类别字典是明显的赢家。看来,生成基于自然文本的字典比计算数值跨度或管理复杂的标签模式更符合生成模型的预训练习惯。

2. 提示策略: 该怎么问?

一旦确定了输出格式,研究人员就开始探索推理技巧。论文在此处对应用于嵌套结构的现有“思维链” (Chain of Thought) 方法进行了精彩的批判。

他们将几种现有技术与自己提出的方法进行了比较。

推理技术的比较: 递归、先抽取后分类、基于结构的分解问答以及嵌套 NER 定制指令。

失败的尝试:

  • 分解问答 (Decomposed-QA) : 这种方法涉及针对每种实体类型向模型提出单独的问题 (例如,“找出所有地点”,然后“找出所有人物”) 。虽然这在扁平 NER 中效果极佳,但在嵌套 NER 中却降低了性能。为什么?因为嵌套实体通常共享上下文,一旦隔离问题,这些上下文就会丢失。
  • 递归 (Recursive) : 这种方法 (要求模型先找到最外层的实体,然后再找内部实体) 也难以达到简单方法的效果。

解决方案: 嵌套 NER 定制指令 作者提出了一种侧重于指令微调的新方法。他们没有依赖复杂的算法提示 (如递归) ,而是专注于语义

他们为 LLM 提供了:

  1. 标签信息: 在此语境下“蛋白质”或“DNA”具体含义的明确定义。
  2. 嵌套案例描述: 他们明确向 LLM 解释了嵌套是如何发生的 (例如,“考虑一个实体可能包含另一个实体……”) 。

这种语义方法——教模型定义而不是仅仅教任务——被证明是最有效的零样本和少样本策略。

指令微调: 超越单纯的提示

提示工程的作用是有限的。为了真正使模型专业化,研究人员使用了基于 PEFT (参数高效微调) , 特别是 QLoRA指令微调

这使他们能够适配大型模型 (如 Llama-2 13B) 而无需重新训练所有参数。

数学基础

微调的目标是在给定指令和输入 \(X\) 的情况下,最大化生成正确答案序列 \(Y\) 的概率。概率计算如下:

生成下一个 token 的概率公式。

这里,模型根据所有先前的 token \(y_{i<}\) 和输入 \([P; X]\) 预测下一个 token \(y_i\)。

为了在不烧毁 GPU 的情况下优化这一点,他们使用了 QLoRA。该方法保持原始大语言模型权重 (\(\Phi_0\)) 冻结,仅训练一小组适配器权重 (\(\Delta \Phi\))。损失函数如下:

最小化数据集误差的损失函数公式。

具体来说,QLoRA 使用低秩矩阵 \(A\) 和 \(B\) 来近似权重更新。他们不是更新巨大的权重矩阵 \(W\),而是更新两个相乘后代表变化的较小矩阵。层的前向传播变为:

展示低秩适应机制的公式。

这使得研究人员能够利用开源模型 (Llama-2, Llama-3, Mistral, Qwen) 并使用他们自定义的“定制指令”使其专门用于复杂的嵌套 NER 任务。

实验结果: 现实检验

研究人员在三个数据集上测试了他们的方法: ACE 2004ACE 2005 (通用领域) 和 GENIA (生物医学,高度嵌套) 。

提示性能 (闭源模型)

首先,让我们看看 ChatGPT (GPT-4) 在不同提示策略下的表现。

展示 ChatGPT 4.0 结果的表格。注意使用标签信息和嵌套案例描述后的提升。

表 1 的主要结论:

  • 标准方法失效: “分解问答 (Decomposed-QA) ”方法在扁平 NER 中是超级明星,但在嵌套设置中崩溃了 (参见极低的“Nesting”分数) 。
  • 定义很重要: “Label Information (ChatGPT)” 所在的行显示了显著的改进。
  • 语境为王: 添加“嵌套案例描述 (Nested Case Description) ” (解释实体可以在彼此内部) 产生了最高的 F1 分数,特别是在单样本 (One-Shot) 和五样本 (Five-Shot) 设置中。

微调性能 (开源模型)

接下来,他们查看了使用 QLoRA 微调的开源模型。

展示各种模型指令微调结果的表格。

表 2 的主要结论:

  • 越大不一定越好: 虽然 Llama-2 13B 是强有力的竞争者,但像 Mistral-7B 这样较小的模型往往表现得超出预期,特别是在通用领域 (ACE 数据集) 中。
  • 与 “SOTA” 的差距: 看最下面一行: “BERT fine-tuned”
  • 尽管有各种花哨的提示和 QLoRA 微调, 基于 BERT 的模型仍然优于 LLM
  • 在 GENIA 上,SOTA BERT 模型在扁平实体上达到了 81.20 的 F1 分数,而最佳 LLM 设置仅在 76-78 左右徘徊。

这是一个至关重要的见解。LLM 是通才。而在特定的 NER 架构上经过完全监督微调的 BERT 模型是专才。LLM 的海量参数并不能自动赋予其处理复杂结构提取所需的精度。

详细分析: LLM 哪里失败了?

为了理解 为什么 LLM 落后,作者对错误进行了细分。

内部与外部实体

嵌套 NER 需要找到“外部”实体 (整个短语) 和“内部”实体 (子短语) 。

分析内部与外部实体的错误率和召回率的条形图。

图 2 揭示了一个差异。在 GENIA 数据集 (蓝色柱状) 上,模型在内部实体 (低召回率) 上的挣扎明显多于外部实体。 错误类型误差 (例如将蛋白质归类为 DNA) 相对较低。

这表明 LLM 擅长语义分类 (知道某物是什么) ,但在结构边界检测 (知道内部实体在哪里结束) 方面表现不佳。

嵌套深度

作者还分析了基于嵌套深度 (Level 1 = 最内层,Level 2 = 包含 Level 1,以此类推) 的性能。

展示随着嵌套层级增加性能下降的折线图。

图 3 展示了“随嵌套层级变化的性能”。

  • GENIA (深蓝色) : 随着嵌套变得更深/更复杂,性能下降。
  • SOTA (橙色/浅蓝色) : 与 LLM 相比,专门的 BERT 模型 (SOTA) 在各个层级上保持了高得多的一致性。

LLM 表现出“U 型”或不一致的性能曲线。它们有时能捕捉到深层嵌套但错过浅层的,或者反之,缺乏专门为此递归任务设计的 BERT 架构所具备的系统稳定性。

结论与启示

这项研究对围绕 LLM 的炒作进行了冷静、基于证据的审视。虽然强大,但它们并不是解决所有 NLP 任务的魔法棒。

给学生的主要启示:

  1. 提示工程也是工程: 你不能只问“找实体”。你必须定义模式,提供定义,并向模型解释结构约束 (嵌套) 。
  2. 输出格式是一个超参数: 要求 JSON、索引还是标签,会极大地改变性能。
  3. 专业化胜过通用化 (暂时) : 对于像生物医学嵌套 NER 这样特定的高精度任务,一个较小的、架构专门化的模型 (如 BERT-CRF) 仍然胜过一个巨大的通用 LLM。

嵌套 NER 的未来很可能在于混合方法——使用 LLM 生成标记数据或定义,以帮助训练更小、更敏锐的专用模型。随着 LLM 的不断发展,它们处理递归逻辑的能力可能会提高,但就目前而言,嵌套 NER 这个“洋葱”仍然很难剥开。