Re4:读论文 CGSum: Enhancing Scientific Papers Summarization with Citation Graph

该博客介绍了AAAI2021会议上的一篇论文,研究如何利用GNN改进科学论文摘要生成。CGSum模型结合了文献内容和引用关系,通过BiLSTM和GAT构建encoder-decoder框架,处理文献引用图。实验表明,考虑引用关系能提升摘要质量。此外,文章还提供了公开数据集SSN和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

诸神缄默不语-个人优快云博文目录

论文下载地址:2104.03057.pdf

代码:ChenxinAn-fdu/CGSum: code and dataset for AAAI 2021 paper: Enhancing Scientific Papers Summarization with Citation Graph

这篇是发在AAAI2021上的NLP领域的文章,使用了GNN的方法。因为我之前是学GNN的,所以这篇论文其实没太看懂,仅此记载概述。

1. 模型构造思路

本文的两大贡献在于:第一,发表了一个公开的文献引用数据集SSN,这个事情以后再说;第二,提出了一个结合引用与文本信息的文献摘要生成模型CGSum (citation graph-based summarization model),本文仅简单介绍一下这个。
传统document summarization方法往往将任务构建为sequence-to-sequence problem,即通过文本生成摘要。
但实际上,文献之间的引用关系也对摘要生成任务有价值:文献的相关research community能帮助我们理解文献中的domain-specific terms。如下图举例,在原论文中只出现了专业术语,但在其引用的文献中出现了对术语的解释和类似语句的不同表示方式:
在这里插入图片描述
这个research community可以通过抽样出一个有source paper的subgraph得到。
模型将source paper的内容和subgraph的information分别encode,通过decoder得到abstract。神经网络模型使用的是BiLSTM和GNN。
评估指标用的是ROUGE credit method。

在本文中分别试验了transductive和inductive两种实验模式:
在这里插入图片描述
注意实验是将引用关系视为无向图进行的,但是抽取子图的时候是有边方向的(见模型介绍部分)。

2. Notation与模型介绍

2.1 Notation

略,待补。

2.2 CGSum

在理论上讲,作者要写摘要的时候,他肯定只能参考他引用的文章而非引用他的文章,所以在生成摘要任务中,要使用文献引用关系,也只能使用其reference而非citation。
所以在首先我们通过抽取子图生成一篇文献的research community(citation graph)时,对于某一节点(文献),我们生成一个它引用文献、引用文献再引用文献的图出来(这个图我一开始以为是树,后来想了一下,每一篇文献可能不只被research community中的一篇文献引用,所以不一定是树,反正就是一张有向图)。
建立citation graph的算法:
在这里插入图片描述
对每一个节点,我们利用其body text和citation graph中文献(不包括它自己)的abstract生成节点的abstract。

模型示意图如下:
在这里插入图片描述
source paper的body text和reference paper的abstract传入document encoder(BiLSTM),通过池化隐藏层表示向量初始化节点特征,根据节点之间的salience score对邻居进行抽样
在这里插入图片描述
由于什么直接抽样会打断 f f f 中参数的训练的原因(为啥?因为没梯度可算了吗?)所以参考 Knowledge Graph-Augmented Abstractive Summarization with Semantic-Driven Cloze Reward.,将 s s s 视为information gate):

在这里插入图片描述
将图输入graph encoder(2层GAT,并在层间添加residual connections)。

将encoder得到的表示向量通过decoder(single-layer unidirectional LSTM)得到结果,两个encoder都对decoder有attention机制。
模型结果用ROUGE credit method进行评估。

其他略,有缘补。

3. 详细的数学推导和证明

略,待补。

4. 实验结果

4.1 baseline

略,待补。

4.2 数据集

略,待补。

4.3 实验设置

略,待补。

4.4 实验结果

略,待补。

5. 代码实现和复现

5.1 论文官方实现

虽然使用的DGL和FastNLP等包我没用过,但是看起来还是意外比较清晰的一个代码结构。学了之后应该可以过来看一下。

5.2 我自己写的复现

还没写,待补。

### NeXtSRGAN 超分辨率 GAN 的实现 NeXtSRGAN 是一种基于 Super-Resolution GAN 的改进模型,其核心在于利用 ConvNeXt 构建判别器网络以提升图像细节的表现力和生成质量。以下是有关其实现的关键部分: #### 判别器设计 ConvNeXt 结构被引入到判别器的设计中,通过分层特征提取来增强对高分辨率图像真实性的判断能力。ConvNeXt 使用深度可分离卷积以及残差连接机制,在保持计算效率的同时提升了性能[^1]。 ```python import tensorflow as tf from tensorflow.keras import layers def convnext_block(input_tensor, filters, kernel_size=7): x = layers.DepthwiseConv2D(kernel_size=kernel_size, padding='same')(input_tensor) x = layers.LayerNormalization(epsilon=1e-6)(x) x = layers.Dense(filters * 4)(x) x = layers.Activation('gelu')(x) x = layers.Dense(filters)(x) return layers.Add()([input_tensor, x]) def build_discriminator(img_shape=(128, 128, 3), num_blocks=3): input_img = layers.Input(shape=img_shape) x = layers.Conv2D(64, kernel_size=3, strides=2, padding="same")(input_img) x = layers.LeakyReLU(alpha=0.2)(x) current_filters = 64 for _ in range(num_blocks): x = convnext_block(x, current_filters) current_filters *= 2 if current_filters > img_shape[-1]: break x = layers.Conv2D(current_filters, kernel_size=3, strides=2, padding="same")(x) x = layers.LeakyReLU(alpha=0.2)(x) x = layers.Flatten()(x) output = layers.Dense(1, activation='sigmoid')(x) model = tf.keras.Model(inputs=input_img, outputs=output, name="convnext_discriminator") return model ``` 上述代码展示了如何构建一个基于 ConvNeXt 的判别器架构。它采用逐步下采样的方式减少空间维度并增加通道数,从而捕获更深层次的语义信息[^2]。 #### 生成器设计 对于生成器而言,可以借鉴已有的超分辨率技术如 EDSR 或 RCAN 来搭建基础框架,并调整参数适配具体应用场景需求[^3]。 ```python def res_block(input_tensor, filters): shortcut = input_tensor x = layers.Conv2D(filters, kernel_size=3, padding='same', use_bias=False)(input_tensor) x = layers.ReLU()(x) x = layers.Conv2D(filters, kernel_size=3, padding='same', use_bias=False)(x) return layers.Add()([shortcut, x]) def upscale_ps(input_tensor, factor=2): return layers.UpSampling2D(size=factor, interpolation='bilinear')(input_tensor) def build_generator(lr_shape=(32, 32, 3)): inputs = layers.Input(shape=lr_shape) x = layers.Conv2D(64, kernel_size=9, padding='same')(inputs) x = layers.ReLU()(x) residual = x for _ in range(16): x = res_block(x, 64) x = layers.Conv2D(64, kernel_size=3, padding='same')(x) x = layers.BatchNormalization()(x) x = layers.Add()([residual, x]) x = upscale_ps(x, factor=4) out = layers.Conv2D(3, kernel_size=9, padding='same', activation='tanh')(x) generator_model = tf.keras.models.Model(inputs=[inputs], outputs=out, name="generator") return generator_model ``` 此段脚本定义了一个典型的残差块堆叠型生成器结构,适用于大多数 SISR(Single Image Super Resolution)任务中的低频重建阶段。 #### 训练过程概述 训练过程中需注意平衡生成器与判别器之间的对抗关系,通常会设置不同的损失函数组合来优化整体表现效果。例如 LSGAN 提倡使用的最小二乘误差替代传统交叉熵作为目标函数之一;而针对特定数据集特性还可能加入感知损失(perceptual loss),风格迁移项(style transfer term)等辅助约束条件进一步改善视觉体验品质。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸神缄默不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值