1. 模型构造思路
本文的研究任务是维基百科摘要生成(Wikipedia abstract generation),从网上海量文本信息中生成维基百科摘要。
本文将维基百科摘要视为对一个实体(entity)的描述,可以分解为不同的主题(topic)(如animal类实体的描述,可以分解为distribution、taxonomy、description等topic。每个topic对应多个维基百科内容中的小标题(section label)。具体的topic划分和section label与topic的对应关系见后文4.2部分对数据集的描述)。
以Arctic Fox的维基百科举例:
图中左半部分是Arctic Fox的维基百科摘要,包含一个动物的3个正交的主题(颜色对应):Description, Taxonomy and Distribution。
右半部分是Arctic Fox是维基百科section label,分别与topic对应(颜色)。
本文所用的topic是根据实体的domain(Wikipedia categories)得到的。
本文提出的是两阶段的模型TWAG(two-stage Topic-guided Wikipedia Abstract Generation model),使用主题信息指导摘要生成。
第一步topic detection:识别输入原文中每一个自然段属于哪一个主题(这个分类器(classifier-based topic detector)通过已有的Wikipedia文章生成)
第二步:sentence-wise生成摘要:预测摘要每一句的主题分布(topic distribution),以得到对应的topic-aware representation,用Pointer-Generator network1从中生成摘要句子。
本文提出的下一步研究方向是在topic-aware abstract generator模块应用预训练模型,并将topic-aware model应用到其他富含主题信息的领域(如体育比赛报道)。
2. 问题定义与模型介绍
2.1 通用的Wikipedia abstract generation
2.2 基于topic的Wikipedia abstract generation
2.3 TWAG模型
模型示意图:
图中示例的domain有3个主题。
左边部分是topic detector,判断每个输入自然段所属的主题。
右边部分是 topic-aware abstract generator,基于输入自然段(根据检测出的section进行分组为topic-specific text group (TTG) G k 和对应主题逐句生成摘要:先预测该句的topic distribution,将其与全局hidden state融合,得到topic-aware representation,用copy-based decoder生成该句话。
(其实我觉得这个图画得还不够清晰,尤其是sentence decoder部分,感觉画得有些含混。文本说明部分我也有些半看不懂的。感觉可能需要看一下原版PGN和TWAG代码才能彻底搞懂)
2.3.1 topic detector
2.3.2 Topic-aware Abstract Generation
2.3.2.1 Topic Encoder
2.3.2.2 Topic Predictor
预测摘要句的topic distribution,生成topic-aware sentence representation。
2.3.2.3 Sentence Decoder
2.3.3 训练
topic detection和abstract generation的模块是分开训练的。
2.3.3.1 Topic Detector Training
数据集构建见本博文4.2数据集部分介绍。
本文使用negative loglikelihood损失函数。
2.3.3.2 Abstract Generator Training
3. 模型原理
- 为什么不用基于图的表示学习方法做抽取式摘要:因为从各种来源收集到的输入文档往往有噪音,并缺乏内在联系3,因此难以构建relation graph。(introduction)
- 用topic生成摘要的好处:减少冗余,使内容更完整。(introduction)
- 本文的任务是生成紧凑的摘要,因此需要对topic进行fusion、理解topics之间的关联与差异(topic distribution),而非使用独立的topics(见本博文2.3.2.1部分对软主题的介绍)。(Wikiasp: A dataset for multi-domain aspect-based summarization. 则是反例。该文献使用aspect作为术语)(Wikipedia-related Text Generation)
- 识别文本中的主题信息“模仿人类识别实体的方法”(conclusion)
4. 实验
4.1 baseline
- TF-S2S4:用Transformer decoder,用卷积层压缩自注意力机制里的键值对。
- CV-S2D+T5:用一个卷积encoder和2层hierarchical decoder,用LDA建模主题信息。
- HierSumm6:用注意力机制建模自然段间关系,用图加强文档的表示学习。
- BART7:预训练的seq2seq模型。
4.2 数据集
本文使用的数据集是WikiCatSum5。
该数据集是WikiSum的子数据集。含有Wikipedia中的3个域:Company, Film and Animal
每个域的数据集划分比例都是train (90%), validation (5%) and test (5%)
删除了文章中的超链接和图像。用spaCy包划分自然段。经下述处理后最终得到的数据集划分比例是8:1:1。
(不同颜色代表不同n t 时选择的label)
此外,每个域还专门构建了一个NOISE主题,指没用的部分(如scripts或广告),这一部分是通过正则表达式提取的,如含有“cookie”,“href”或看起来像reference。
经处理后得到的最终的数据集信息:
用于摘要生成的数据则是非维基百科数据,以防数据泄露问题。
4.3 实验设置
代码使用PyTorch和transformers库,设备是NVIDIA GeForce RTX 2080。
topic detection阶段使用的预训练模型是transformers库的albert-base-v2,保持原参数,以3e-5为学习率训练了4个epoch。
abstract generation阶段用单层BiGRU将TTGs编码为512维的hidden states。输入文档保存开头400个tokens,转换为300维的GloVe8词向量。词表长度为50000,OOV token用其邻近10个tokens的平均嵌入表示。这个模块训练了10个epoch,第一个epoch的学习率是1e-4,其他的是1e-5。
在评估结果前,删除了所有与其他句重复超过50%的句子以减少冗余9。
需要beam search的模型,beam size都设置为5。
(Appendix B)使用BART-base,因为BART-large效果差(生成文本出现重复,损失函数下降慢),本文怀疑是因为过拟合。
4.4 实验结果
4.4.1 ROUGE10
本文所使用的评估指标是ROUGE F1 指标(原文给出的原因:因为没有限制摘要生成长度,所以用这个combines precision and recall to eliminate the tendency of favoring long or short results的指标)。
TF-S2S和HierSumm使用原文数据集的子集来训练得到的结果小于原文结果,本文作者认为可能因为数据不足,这也证明了TWAG模型的data-efficient。
案例分析:
4.4.2 human evaluation
此外参考10,本文构建了含有2部分内容的human evaluation:
4.4.2.1 QA
question-answering (QA),架构来自11,检查摘要中的factoid信息,根据不同的真实摘要,每个样例创造2-5个问题,问题示例:
(全部的评估集合在论文附带的GitHub项目中,待补)
从每个域抽取了15个样例,共45个来做human evaluation。
选了3名参与人员以自动生成的摘要作为背景知识来回答问题。能回答问题越多的摘要越好。
答案量化打分:正确答案——1,部分正确答案——0.5,错误答案——0.1,无法回答——0。
(对0.1的解释:Notice that we give a score of 0.1 even if the participants answer the question incorrectly, because a wrong answer indicates the summary covers a certain topic and is superior to missing information.)
结果:
(TF-S2S和HierSumm在域Film和Animal上表现很差可能是因为在小数据集上欠拟合)
4.4.4.2 linguistic quality
让参与人员从3个角度来阅读生成摘要并在1-5分间打分(分越高说明质量越高):
- Completeness (does the summary contain sufficient information?)
- Fluency (is the summary fluent and grammatical?)
- Succinctness12 (does the summary avoid redundant sentences?)
结果:
4.5 Ablation Study
4.5.1 Learning Rate of Topic Detector.
1e-7准确率高,但最终rouge值低,因此本文最终选择了3e-5。本文怀疑是因为学习率太低导致了过拟合。
4.5.2 Soft or Hard Topic.
4.5.3 Number of Section Labels.
section labels的频率符合长尾分布。
n t = =20 得到的最终实验结果最好。
5. 代码实现和复现
5.1 论文官方实现
具体内容持续更新。
大略来说,步骤是分类(topic detection)→生成(abstract generation),可以解耦也可以端到端地运行。(我看了一下,这个端到端说的好像是代码一步把分类和生成两步都做完,本质上还是解耦的。但是我还没有仔细看,具体的待补)
5.1.1 分类
5.1.2 生成
TWAG/src/c_generate_soft/model.py:
BiGRUEncoder:论文中的topic encoder,实现了一个BiGRU模型。
5.2 我自己写的复现
没写,待补。