在数字信息的浩瀚海洋中,找到你确切需要的内容往往依赖于寥寥数语: 关键短语 (Keyphrases)

关键短语生成 (Keyphrase Generation, KPG) 的任务是自动阅读文档并生成一份简洁的短语列表,以概括其核心概念。理想情况下,这些关键短语就像索引一样,有助于信息检索、文本摘要和分类。

然而,KPG 任务看似简单,实则困难重重。它需要两种相互竞争的能力:

  1. 召回率 (Recall) : 找到每一个重要概念的能力 (广撒网) 。
  2. 精确率 (Precision) : 确保选出的概念准确且不冗余的能力 (筛选渔获) 。

多年来,研究人员一直致力于构建一个能在两方面都表现出色的单一模型,但这十分困难。如果你优化召回率,通常会得到很多噪音;如果你优化精确率,又会遗漏重要细节。

在这篇文章中,我们将深入探讨一篇题为 “ONE2SET + Large Language Model: Best Partners for Keyphrase Generation” 的论文。这项研究提出了一个巧妙的“先生成后选择” (Generate-then-Select) 框架。它主张不要强迫一个模型完成所有工作,而应该分工合作: 使用专门的 生成器 (Generator) 来最大化召回率,并使用 大语言模型 (LLM) 作为 选择器 (Selector) 来确保精确率。

我们将详细拆解他们如何利用最优传输 (Optimal Transport) 理论来训练更好的生成器,以及如何将 LLM 变成一个无情的编辑来过滤结果。


背景: 难以兼得的平衡

在介绍解决方案之前,我们需要了解问题的细微之处。

显性 vs. 隐性关键短语

关键短语主要分为两类:

  • 显性关键短语 (Present Keyphrases) : 它们就像高光笔标出的内容。它们逐字出现在文档文本中 (例如,在一篇关于 AI 的论文中找到“神经网络”这个短语) 。
  • 隐性关键短语 (Absent Keyphrases) : 这需要语义理解。它们是与论文相关但未出现在文本中的概念。例如,一篇论文可能讨论了“对数调整”和“Softmax”,正确的关键短语可能是“概率分布”,即使这四个字从未直接出现,但文本暗示了这个概念。

生成隐性关键短语要难得多,因为模型不能简单地“复制粘贴”。

范式转变: One2Seq vs. One2Set

传统上,模型将 KPG 视为序列生成任务( One2Seq )。想象一下,让模型写一个句子,其中的单词就是关键短语。这里的问题在于顺序。关键短语是一个集合——你说“AI, Data, Tech”还是“Tech, AI, Data”并不重要。在训练过程中强加顺序会让模型感到困惑。

One2Set 范式通过使用“控制代码 (Control Codes) ”解决了这个问题。想象模型有 \(N\) 个槽位 (控制代码) 。它试图并行地用关键短语填满这些槽位。这种方法非常适合提高 召回率 , 因为模型可以同时生成许多选项。

LLM 的登场

最近,像 GPT-4 或 LLaMA 这样的大语言模型 (LLM) 登场了。它们在理解上下文方面表现出色。然而,它们的计算量很大,而且当被要求从头开始生成关键短语时,它们可能不可预测——有时会产生幻觉或过于啰嗦。

这篇论文背后的研究人员提出了一个简单的问题: 如果我们停止尝试让一个模型完成所有工作会怎样?


初步研究: 为什么要拆分任务?

研究人员首先对现有的最先进模型进行了基准测试,看看它们在哪里失败。他们比较了传统模型 (如 SetTrans) 和 LLM (如 LLaMA-2-7B) 。

Figure 1: Performance of various models on the KP20k test set. LLaMAGen is a fine-tuned version of LLaMA-2-7B.

图 1 所示,存在明显的权衡。

  • 图 (a) - 显性关键短语 (Present Keyphrase) : 注意模型的分布。随着精确率 (x轴) 的上升,召回率 (y轴) 往往会下降。
  • 图 (b) - 隐性关键短语 (Absent Keyphrase) : 这一点更加明显。虽然整体数值较低,但权衡依然存在。

研究人员发现, SetTrans (一种 One2Set 模型) 天生倾向于高召回率。它会抛出很多想法。另一方面, LLaMA 具有更好的语义掌握能力,但在不陷入困境的情况下从头开始生成完整的列表方面表现挣扎。

为了证实这一点,他们进行了一项特定实验,比较了 LLaMA-2-7B 和 SetTrans 在被迫生成相同数量短语时的召回能力。

Figure 2: R@M of LLaMA-2-7B and SETTRANS when generating the same number of keyphrases.

图 2 说明了一个令人信服的事实。蓝色柱状图 (SetTrans) 在召回率 (@M) 上始终高于粉色柱状图 (LLaMA-2-7B) 。这证实了对于寻找候选词 (召回) 这一特定工作,专门的 One2Set 架构优于通用的 LLM。

然而,SetTrans 在生成“宝藏”的同时也产生了很多“垃圾”。这引出了提议的 先生成后选择框架 :

  1. 生成器 (改进版 SetTrans) : 专注于召回率。生成大量的候选池。
  2. 选择器 (LLM) : 专注于精确率。过滤候选池,只保留最好的。

第一部分: 生成器 (利用最优传输改进 One2Set)

团队选择了 One2Set 范式作为生成器,但他们发现了这些模型通常训练方式中的一个缺陷。

分配问题

在 One2Set 模型中,你有 \(N\) 个控制代码 (把它们想象成空桶) 和一列真值关键短语 (你想放入桶中的球) 。在训练期间,你必须告诉模型哪个桶应该预测哪个关键短语。

传统上,这是使用 二分图匹配 (Bipartite Matching) 完成的。你基本上是一对一地将一个桶配对给一个关键短语。

  • 问题所在: 你通常拥有的桶 (\(N=20\)) 比实际的关键短语 (\(M=5\)) 多。这留下了 15 个被分配给“空” (\(\emptyset\)) 的桶。如果一个桶太频繁地被分配给“空”,它就停止学习任何有用的东西了。此外,也许一个特定的关键短语本可以被多个桶预测,但僵化的匹配迫使它只能进入一个桶。

解决方案: 最优传输 (Optimal Transport, OT)

研究人员建议使用 最优传输 理论来分配这些目标。与其说是僵化的“婚姻”匹配,不如把它看作是一个供应链问题。

  • 供应方 (真值 Ground Truths) : 有一定量的“真理”需要分发。
  • 需求方 (控制代码 Control Codes) : 想要学习一个关键短语。
  • 代价 (Cost) : 根据代码当前的预测,将特定的真值分配给特定的代码有多“昂贵” (不准确) 。

Figure 3: The OT-based supervision signal assignment for keyphrase generation.

图 3 可视化了这个流程。我们在顶部有预测,在底部有真值。我们根据预测与真值的相似程度计算一个“匹配分数”矩阵 \(\mu_{ij}\)。

\[ \mu _ { i j } = \frac { \mathcal { C } _ { m a t c h } ( y _ { i } , \hat { y } _ { j } ) ^ { \frac { 1 } { \tau } } } { \displaystyle \sum _ { j = 1 } ^ { N } \mathcal { C } _ { m a t c h } ( y _ { i } , \hat { y } _ { j } ) ^ { \frac { 1 } { \tau } } } , \]

使用这个分数,算法计算分配的“代价”。如果模型的预测非常接近真值,代价就很低 (负分) ,使其成为理想的分配。

\[ c _ { i j } = { \left\{ \begin{array} { l l } { - \mu _ { i j } , } & { { \mathrm { i f ~ } } y _ { i } \neq \emptyset . } \\ { 0 , } & { { \mathrm { o t h e r w i s e } } . } \end{array} \right. } \]

这为什么重要?

神奇之处在于他们如何定义“供应量” (\(s_i\)) 。在标准匹配中,每个关键短语的供应量为 1。它只能去一个桶。在这个 OT 方法中,他们使用动态供应量:

\[ s _ { i } = \left\{ \begin{array} { l l } { \displaystyle [ \sum \mathrm { t o p K } ( \{ \mu _ { \mathrm { i j } } \} _ { \mathrm { j = 1 } } ^ { \mathrm { N } } , \mathrm { k } ) ] , } & { \mathrm { i f } y _ { i } \neq \emptyset . } \\ { \displaystyle N - \sum _ { y _ { i ^ { \prime } } \neq \emptyset } s _ { i ^ { \prime } } , } & { \mathrm { o t h e r w i s e } . } \end{array} \right. \]

基本上,如果一个真值关键短语与多个预测匹配良好,算法就会增加它的供应量。 一个真理现在可以教导多个控制代码。 这防止了控制代码“挨饿” (学不到东西) ,并极大地提高了模型后续召回关键短语的能力。

最后,他们求解使总代价最小化的最优方案 \(\pi^*\):

\[ \begin{array} { l } { { \pi ^ { * } = \displaystyle \arg \operatorname* { m i n } _ { \pi } \sum _ { i = 1 } ^ { M } \sum _ { j = 1 } ^ { N } c _ { i j } \pi _ { i j } , \quad \pi \in \mathbb R ^ { M \times N } } } \\ { { \mathrm { s . t . ~ } \displaystyle \sum _ { i = 1 } ^ { M } \pi _ { i j } = d _ { j } , \quad \sum _ { j = 1 } ^ { N } \pi _ { i j } = s _ { i } , } } \\ { { \displaystyle \sum _ { i = 1 } ^ { M } s _ { i } = \sum _ { j = 1 } ^ { N } d _ { j } , \quad \pi _ { i j } \geq 0 . } } \end{array} \]

通过解决这个优化问题,生成器学习得更加稳健,能够产生更多样化的正确候选。


第二部分: 选择器 (LLM 作为序列标注器)

现在我们有了一个生成器,能产生大量的潜在关键短语列表 (有好有坏) ,我们需要过滤它们。团队利用 LLaMA-2-7B 来完成这项工作。

重排序 (Reranking) 的问题

标准的过滤方法是“重排序”。你给 LLM 一个候选列表,让它为每个候选单独打分 (例如,“得分: 0.9”) 。然后你保留前 10 名。

这里的致命缺陷是 语义重复

  • 候选 A: “Safe hazard” (得分 0.8)
  • 候选 B: “Safe problem” (得分 0.79)

这在上下文中可能意味着完全相同的事情。重排序器单独看它们,认为两者都很好,所以它保留了两者。这损害了多样性和精确率。

解决方案: 序列标注

研究人员提出了一种 序列标注 方法。他们将整个候选列表一次性输入给 LLM,并要求它输出一系列决策: True (T)False (F)

Figure 4: The comparison between the reranking methods and our sequence labeling method.

图 4 所示:

  • (a) 传统重排序: 单独为项目评分。它保留了“safe problem”和“safe hazard”,因为两者得分都很高。
  • (b) 序列标注: 模型输出序列“T F T T”。关键在于,因为 LLM 是自回归的 (它一个接一个地生成 token) ,当它决定第二个候选的标签时, 它知道自己刚刚将第一个标记为了 True。

如果模型看到它刚刚选择了“Safe problem” (T) ,而下一个项目是同义词“Safe hazard”,它会识别出冗余并将其标记为 False (F) 。这种动态的上下文感知是一个巨大的优势。

处理不平衡数据

由于生成器产生的糟糕候选比好的多,选择器的训练数据是不平衡的 (很多“F”,很少“T”) 。为了防止 LLM 变得懒惰并每次都猜测“F”,他们使用了平衡损失函数:

\[ \begin{array} { c } { { \displaystyle \mathcal { L } ( \phi ) = \frac { 1 } { N _ { T } } \sum _ { t = 1 } ^ { | Y | } \mathbb { I } _ { \{ Y _ { t } = T \} } \log p _ { \phi } ( Y _ { t } | X , Y _ { < t } ) + } } \\ { { \displaystyle \frac { 1 } { N _ { F } } \sum _ { t = 1 } ^ { | Y | } \mathbb { I } _ { \{ Y _ { t } = F \} } \log p _ { \phi } ( Y _ { t } | X , Y _ { < t } ) , } } \end{array} \]

这个公式有效地分别平均了“True”标签和“False”标签的损失,确保正确的选择与拒绝被赋予同等的权重,无论它们的数量多么少。

R-微调 S-推理策略 (R-tuning S-infer Strategy)

最后一个聪明的技巧: 候选的顺序很重要。

  • 训练 (R-tuning) : 他们以 随机 (Random) 顺序输入候选。这迫使 LLM 真正阅读和理解文本,而不是依赖位置 (例如,“前面的通常是最好的”) 。
  • 推理 (S-infer) : 在实际使用模型时,他们根据生成器的置信度分数对候选进行 排序 (Sort) 。 这将最可能的候选放在前面,帮助 LLM 在序列早期做出高质量的决策。

实验与结果

这套复杂的设置真的有效吗?团队在五个基准数据集 (Inspec, Krapivin, NUS, SemEval, KP20k) 上测试了该框架。

主要性能

结果是压倒性的。

Table 2: Testing results on all datasets.

观察 表 2 , 提出的框架 (“Our generator + Our selector”) 在几乎每个类别中都取得了 最佳性能 (粗体数字) 。

  • 隐性关键短语 (困难部分) : 查看“Abs”列。与之前的最先进模型 (如 SimCKP) 相比,改进是巨大的。这证实了生成器的召回率结合 LLM 的理解能力,使得系统能够找到未写在文本中的概念性关键短语。

可视化改进效果

为了直观地展示新生成器的帮助有多大,研究人员再次绘制了召回率/精确率曲线。

Figure 5: The recall and precision of our generator and other baselines.

图 5 比较了新生成器 (蓝色圆圈) 与标准 SetTrans (灰色三角形) 。

  • 图 (b) 隐性关键短语: 蓝线明显高于其他线。这种差距代表了“最优传输”的优势——模型学会了更有效地预测隐性关键短语,因为训练分配不那么僵化。

减少冗余

最后,序列标注 (T/F) 策略真的解决了冗余问题吗?

Table 4: The diversity of all keyphrases produced by various models.

表 4 衡量了多样性。emb_sim (嵌入相似度) 和 Dup_token_ratio (重复 token 比例) 的数值越低意味着重复越少。

  • 我们的选择器 (Our Selector) : 在 token 重复上得分为 0.222
  • SLM-Scorer (传统重排序器) : 得分为 0.330

这证明,与传统评分相比,要求 LLM 输出 True/False 决策序列显著减少了同义或重复关键短语的数量。


结论

论文 “ONE2SET + Large Language Model” 给我们在现代 AI 系统设计上上了重要一课: 术业有专攻。

这篇论文没有寄希望于单个 LLM 能完成所有工作,也没有死守旧的专用架构,而是将它们结合了起来。

  1. 专用生成器: 使用最优传输来最大化“撒网” (召回率) ,确保不遗漏任何潜在的关键短语。
  2. 通用选择器: 使用 LLM 的语义推理来“筛选渔获” (精确率) ,通过上下文感知的序列标注去除噪音和冗余。

其结果是建立了一个关键短语生成的新标准,特别是对于那些代表文本深层含义的难以捉摸的“隐性”关键短语。对于 NLP 领域的学生和研究人员来说,这凸显了 混合系统 (Hybrid Systems) 的潜力——即小型、专用模型的效率与大语言模型的推理能力相结合。