这是一篇发表在ACL2021上的一篇文章,作者来自腾讯AI Lab和北京邮电大学。本文主要的研究问题是,在关键词预测任务中,将已现关键词的提取(Present Keyphrase Extraction, PKE)和未现关键词的生成(AKG, Absent Keyphrase Generation)相结合,完成更加全面的关键词预测任务。本文的主要的贡献在于(1)提出了一个端到端的结合PKE和AKG的模型;(2)提出了一个堆叠关系层(SRL)用于捕获PKE和AKG之间的关系;(3)提出了一种词袋约束,用于将已现关键词和未现关键词的全局信息输入模型。论文链接
关键词预测(Keyphrase Prediction, KP)任务是指从文本中预测出几个能够概括文本大意的关键词。关键词预测任务可以用于许多NLP的下游任务,如检索、文本聚类、文本摘要等任务。目前,主流的KP方法可以分为两种,一种从文本中提取提取图额定的短语作为关键词(PKE),另一种生成文档中没有出现过的短语作为关键词。在过去上十年中,学者多在研究PKE的任务,但PKE无法处理未现关键词,有些时候未现的词语中也有能够准确改过文章大意的短语,这些词语被生成出来作为文本的关键词也是很有意义的。
近些年来,学者发现了PKE的局限性,开始研究起了生成式的方法。大多数的生成式方法都是使用seq2seq模型,基于拷贝机制去完成目标序列的标签预测,而目标序列是由已现词和未现词拼接而成的。
作者认为,未现关键词和已现关键词在关键词预测的任务上是有语义上的区别的,已现关键词多是描述特定的技术细节,而未现的关键词多用于描述论文的任务或者研究领域。而目前的生成式模型在对待这两类短语的时候并没有明确的区分。
基于以上的原因,也有学者将两个任务区分开来,分别构建PKE和AKG模型,最终将两个模型的预测结果综合起来,作为输出。这一类的研究有两个局限性:(1)这类方法不是使用端到端的模型,因此在pipeline中的各个模型的误差可能在整个pipeline上累积;(2)这类方法对于PKE和AKG之间的关系捕捉不够充分。
为了解决上述的问题,作者提出了一个端到端的集成模型,UniKeyphrase,其采用了统一的预训练模型,并对PKE和AKG分别作fine-tune。它能够明确地捕捉PKE和AKG之间的关系。PKE为AKG提供文本中的突出信息,而AKG为PKE提供文本全局的主题语义信息。
UniKeyphrase的模型结构主要可以分为三个部分:(1)基于UniLM的抽取器-生成器骨架;(2)堆叠关系层,用于显式地捕捉PKE和AKG之间的关系;(3)词袋约束,用于在训练时提供PKE和AKG的全局信息。下图给出了UniKeyphrase的模型架构。
本文的KP任务定义为,对于文档集合,,获取关键词集合,其中K可以被分为两个部分,即出现在文档中的关键词集合,和未出现在文档中的关键词集合。UniKeyphrase将KP的任务分解成PKE和AKG,并且使用集成的方法端到端的训练这两个任务。
UniKeyphrase将PKE视为一个序列标注任务,而将AKG视为文本生成任务。UniKeyphrase使用了UniLM作为预训练模型。UniLM也是基于Tranformer的预训练模型,被广泛用于端到端的自然语言处理任务中。本文使用的UniLM做了特定的约束,源文档的语义表示可以在左右两个方向传播,而目标序列的语义表示只能在一个方向上传播。换句话说,也就是PKE的语义信息能被AKG捕捉到,而PKE不会使用AKG的语义信息。
基于以上的思想,对于文档X,所有的未现关键词会被拼接成一个文本序列中。模型会随机的选择序列中的词语,并MASK掉一部分的词语,这个序列被记作,在输入UniLM前,模型将原文档序列和生成的未现关键词序列拼接起来,作为输入序列。
此后将这个序列输入到UniLM中,得到序列的语义表示:
其中,可以分别得到各个词语的语义表示,这些语义表示将被用在PKE和AKG中。
SRL的输入分为和,但两个输所使用的语义表示式一致的,即,最终的输出是和,其中L是SRL的层数。SRL能够重复地使用,从而获取一个更好地融合语义表示。
下面说明SRL是怎么运作的。例如,对于第层的SRL,其输入是和,首先SRL使用ReLU激活函数的线性的转换,使得输入与特定的任务更加相关:
其中LN表示层的标准化函数。
接下来,SRL会融合二者的语义表示,从而在不同任务中达到更好的表示。本文使用了互注意力网络来融合二者的表示。互注意力网络是在相关任务中对重要信息进行建模的有效方式。本文所使用的互注意力机制从token角度拓展到了task角度,可以让PKE和AKG中的语义表示关注到互相的信息,从而将重要的信息在二者之间传递。
其中和是经过第层SRL后更新的语义表示。
在获取了SRL的最终输入后,模型使用了不同的decoder来实现PKE和AKG,其输出为:
其中和是预测出的PK和AK的分布。
Unikeyphrase将KP任务分解成PKE和AKG,这两个任务是分别训练的,因此缺乏了一些;矮子总关键词集合的全局信息。这一类全局信息可以通过计算关键词的数量或计算PK和AK之间的常用词语来得到。本文使用词袋模型来描述这一全局信息。模型计算了预测出的关键词的词袋和真实的词袋之间的差距,并将这个差距纳入损失函数之中。因此UniKeyphrase在两个任务训练的时候可以获取来自己关键词分布的全局信息。
首先,从模型中获得PK和AK的词袋。对于PK,PKE是一个序列标注任务,只需要使用所有标记的关键词,就可以获取PK的词袋,对于词袋中的词语,其概率表示为:
其中,是预测出的某个未知的词语为关键词的概率,是词语w出现的所有位置,因此,对于PKE,BWC计算了在整个文本序列中某词语预测为正的最大概率。
而对于AK,使用的是累积式的方法计算:
在获得了预测的词袋之后,可以通过MSE计算其与真实情况之间的损失:
其中V是由真实关键词和预测的关键词所组成的,因此BWC只会对所有词汇的一小部分产生作用。
此外,模型考虑到了BWC损失的权重问题,认为训练刚开始的时候不应注重BWC,而随着训练的推进BWC损失的权重应有所增加。因此,作者设计了一个随着时间不断增加的权重用于BWC loss。
其中为最大的权值,为训练的steps。
在实际训练中PKE的loss设置为
其中为文档长度,为label的总数,是PKEloss的权重,用于控制PKE和AKG的loss在总体loss中的占比。
对于AKG,loss设置为
其中是masked tokens的总数,是词汇的数量。
考虑到BWC之后,整体的Loss Function定义为:
作者使用了KP20K作为主数据集,并在NUS、Inspec、Semeval-2010三个公开数据集上做了测试。使用了F1@5、F1@M(M即全部预测出来的词语)作为评价指标。
本文使用的预训练模型式UniLM,SRL的层数为2,使用来调整BWC的权值。PKE的损失权重。批处理大小(batch_size)为384。作者训练了100个epoch,在8卡V100上每一个epoch的耗时大概为40分钟。
作者与生成式和集成式的模型进行了比较,得到了对比结果如下图。
可见作者提出的模型在F1@5指标上的性能超越了前人所提出的一系列模型,而在F1@M上的表现仍有进步的空间。
本文提出了一个PKE和AKG相结合的统一模型用于关键词预测,取得了不错的效果,本文提出的方法具有普遍性,在其他的NLP任务上也有一定的适用性。阅读论文后我有如下问题: