Fine-tune BERT for Extractive Summarization
中文标题:精调BERT做抽取式摘要
论文链接:https://arxiv.org/pdf/1903.10318.pdf
发表:EMNLP 2019
组织:爱丁堡大学
开源链接:GitHub - nlpyang/BertSum: Code for paper Fine-tune BERT for Extractive Summarization
Abstract
本文将BERT用于抽取式摘要,提出了BERT的一个变体:BERTSUM。
1. Introduction
作者在本文主要专注于利用BERT来解决抽取式摘要的问题,作者发现一个扁平的句间Transformer的结构效果最好,在CNN/DM和NYT两个数据集上达到了SOTA。
2. Methodology
抽取式摘要的主要思想是对于一个文档中的句子集合d=(sent_{1},sent_{2},...,sent_{m}),模型预测的目标是为每一个句子sent_{i}预测一个标签y_{i}\in (0, 1),判断句子是否出现在摘要之中。
将BERT用于抽取式摘要,要求BERT输出sentence-level的表示,而原始的BERT是token-level的,且尽管BERT使用NSP任务,但是NSP的标签只有两个句子A和句子B,对于摘要的多句子情况也不适用。因此本文的主要工作是对BERT的输入序列和embedding进行了修改。整体模型的结构如下图所示:

Encoding Multiple Sentences
我们知道BERT中的[CLS]用于代表整个输入文本的语义表示,因为BERT的输入为单句子或者一个句子对,所以[CLS]可以理解为聚合一个句子或者一个句子对的语义信息,即[CLS]是sentence-level的。因此,作者利用了这一点,在每个输入句子前都加上了[CLS]来作为的表征。
Interval Segment Embeddings
本文为使用了interval segment embeddings,每个句子分配的segment embedding取决于其位置的奇偶。举个例子,对于句子序列[sent_{1},sent_{2},sent_{3},sent_{4},sent_{5}],分配的embedding为[E_{A},E_{B},E_{A},E_{B},E_{A}]。
得到sentence-level的表示后,在修改后的BERT接summarization layer(其实就是一个分类器)。作者给出了三种方式:
(1)简单的分类器:直接接一个线性层,然后使用sigmoid激活函数得到结果;
(2)Transformer:使用一个l层的transformer,最后接sigmoid激活的线性层输出结果。作者实验了l=1,2,3三种情况,发现l=2效果最好;
(3)LSTM:使用LSTM后接一个sigmoid激活的线性层输出结果。
3. Experiment
作者在预测中使用了一个重要的机制。
trigram blocking:给定一个摘要S和候选句子c,如果c和S中存在一个重叠的三元组,则跳过c。
实验结果如下:


可以发现,在两个数据集上本文的方法取得了SOTA(可以发现BERT随便配个分类器效果已经很好了,没必要再上Transformer)。下图为作者做的消融实验:

可以发现,实际上还是trigram blocking更有用些,interval segments貌似也没什么太大用。
4. Conclusion
本文提出了BERTSUM模型,通过为每个句子前添加[CLS],使用interval segments embeddings来修改BERT,在预测阶段还使用了trigram blocking提升效果。
