SparseCoder:面向文件级代码摘要的标识符感知稀疏Transformer
软件工程
2024-01-29 v1
摘要
代码摘要旨在生成源代码的自然语言描述,帮助程序员快速理解和维护代码。以往的代码摘要工作主要集中在方法级,本文研究文件级代码摘要,这有助于程序员理解和维护大型源代码项目。与方法级代码摘要不同,文件级代码摘要通常涉及单个文件内的长源代码,这使得基于Transformer的模型难以理解代码语义,因为其最大输入长度难以设置为能良好处理长代码输入的大数值,这是由于计算复杂度随输入序列长度呈二次方增长。为应对这一挑战,我们提出了SparseCoder,一种能有效处理长代码序列的标识符感知稀疏Transformer。具体而言,SparseCoder 采用滑动窗口机制进行自注意力以建模短期依赖关系,并通过引入两种名为全局注意力和标识符注意力的稀疏注意力模式,利用代码的结构信息来捕获源代码标识符间的长期依赖关系。为评估 SparseCoder 的性能,我们构建了一个用于 Python 文件级代码摘要的新数据集 FILE-CS。实验结果表明,与其他预训练模型(包括全自注意力和稀疏模型)相比,我们的 SparseCoder 模型达到了最先进的性能。此外,我们的模型内存开销低,且取得了与使用全自注意力机制的模型相当的性能。
引用
@article{arxiv.2401.14727,
title = {SparseCoder: Identifier-Aware Sparse Transformer for File-Level Code Summarization},
author = {Yanlin Wang and Yanxian Huang and Daya Guo and Hongyu Zhang and Zibin Zheng},
journal= {arXiv preprint arXiv:2401.14727},
year = {2024}
}
备注
To appear in SANER'24