面向函数级代码表示的软标签对比预训练
计算与语言
2022-10-27 v2 编程语言
软件工程
摘要
代码对比预训练近期在代码相关任务上取得了显著进展。本文提出 SCodeR,一种采用两种正样本构造方法的软标签对比预训练框架,用以学习函数级的代码表示(Code Representation)。考虑到大规模代码语料中代码间的相关性,软标签对比预训练可通过迭代对抗方式获得细粒度软标签,并用以学习更好的代码表示。正样本构造是对比预训练的另一关键。已有工作使用变量重命名等基于变换的方法生成语义相等的正代码,但这类方法通常导致生成代码具有高度相似的表层形式,从而误导模型关注浅层代码结构而非代码语义。为促使 SCodeR 从代码中捕获语义信息,我们利用代码注释与代码的抽象语法子树来构建正样本。我们在七个数据集上的四个代码相关任务中开展实验。大量实验结果表明,SCodeR 在所有任务上均达到新的 SOTA 性能,说明了所提预训练方法的有效性。
引用
@article{arxiv.2210.09597,
title = {Soft-Labeled Contrastive Pre-training for Function-level Code Representation},
author = {Xiaonan Li and Daya Guo and Yeyun Gong and Yun Lin and Yelong Shen and Xipeng Qiu and Daxin Jiang and Weizhu Chen and Nan Duan},
journal= {arXiv preprint arXiv:2210.09597},
year = {2022}
}
备注
Accepted to EMNLP 2022 (findings)