1、EMNLP-2019-Text Summarization with Pretrained Encoders
论文地址
https://aclanthology.org/D19-1387/
代码地址
pytorch
https://github.com/nlpyang/PreSumm
带有部分注释的pytorch代码
https://github.com/tyistyler/PreSumm_Annotation
注意事项
(1)pyrouge需要正确安装;github中提供了预处理好的数据集,建议下载json数据自己处理一遍。
(2)抽取式摘要:
- 抽取的目标句子需要根据特定的方法预先生成;
- 得到bert每个token的输出后,利用每个句子的cls标签,得到batch个句向量-[batch_size, cls_num, hidden_dim],然后通过一个全连接网络得到输出目标-[batch_size, cls_num],最后与真实标签label计算loss。
- 在验证阶段,使用loss来保存模型(即保存loss最小的模型) 。
- 在预测阶段,选择得分最高的前n个句子即可,n是超参数。
(3)生成式摘要:
- 在训练阶段,对于一句话的前n-1个token,利用Bert和Transformer_Decoder,预测这句话的后n-1个token;
- 在训练阶段,loss使用了平滑技术和KL散度,调用方法为
batch_stats = self.loss.sharded_compute_loss(batch, outputs, self.args.generator_shard_size, normalization)。- 在验证/测试阶段,loss计算调用方法为batch_stats = self.loss.monolithic_compute_loss(batch, outputs)。
- 在验证阶段,使用loss来保存模型(即保存loss最小的模型) 。
- 在测试/预测阶段,使用Beam search来生成结果。
附Beam search例子。

这篇博客探讨了EMNLP-2019年的一篇论文,该论文研究了如何使用预训练编码器进行文本摘要。作者提供了pytorch实现的代码,并区分了抽取式和生成式摘要的训练与预测方法。在抽取式摘要中,通过Bert获取句子向量并计算损失,而在生成式摘要中,利用Bert和Transformer Decoder预测句子,结合平滑技术和KL散度计算损失。验证和测试阶段均以最小化损失为目标选择模型,并在预测时采用Beamsearch生成结果。
690

被折叠的 条评论
为什么被折叠?



