中文

UniXcoder:面向代码表示的统一跨模态预训练模型

计算与语言 2022-03-09 v1 编程语言 软件工程

摘要

编程语言的预训练模型近期在代码智能上取得了巨大成功。为同时支持代码相关的理解与生成任务,近期工作尝试预训练统一的编码器-解码器模型。然而,此类编码器-解码器框架对于自回归任务并非最优,尤其是需要仅解码器方式以实现高效推理的代码补全。本文提出 UniXcoder,一种用于编程语言的统一跨模态预训练模型。该模型利用带前缀适配器的掩码注意力矩阵来控制模型行为,并借助 AST 与代码注释等跨模态内容来增强代码表示。为并行编码以树形式表示的 AST,我们提出一种一对一映射方法,将 AST 转换为保留树中所有结构信息的序列结构。此外,我们提出利用多模态内容通过对比学习来学习代码片段的表示,随后使用跨模态生成任务对齐编程语言间的表示。我们在九个数据集上的五个代码相关任务上评估了 UniXcoder。为进一步评估代码片段表示性能,我们还构建了一个新任务的数据集,称为零样本代码到代码检索。结果表明,我们的模型在大多数任务上达到了 SOTA 性能,且分析揭示注释与 AST 均能增强 UniXcoder。

关键词

引用

@article{arxiv.2203.03850,
  title  = {UniXcoder: Unified Cross-Modal Pre-training for Code Representation},
  author = {Daya Guo and Shuai Lu and Nan Duan and Yanlin Wang and Ming Zhou and Jian Yin},
  journal= {arXiv preprint arXiv:2203.03850},
  year   = {2022}
}

备注

Published in ACL 2022