中文

源代码上下文嵌入的学习与评估

软件工程 2020-08-19 v3 计算与语言 机器学习 编程语言

摘要

近期的研究借助为自然语言开发的机器学习技术,在源代码的理解与改进上取得了令人瞩目的成果。自然语言理解的一项重要进展来自于预训练上下文嵌入(如BERT)的发展,这类嵌入可用较少的标注数据和训练开销进行微调以适配下游任务,同时达到更高的准确率。然而,目前尚未有尝试获取高质量的源代码上下文嵌入,并同时在多个程序理解任务上对其评估;这正是本文旨在弥补的空白。具体而言,首先,我们从GitHub上整理了一个经过去重的海量语料库,包含740万(7.4M)个Python文件,并用以预训练CuBERT——一个开源的代码理解BERT模型;其次,我们创建了一个开源基准,包含五项分类任务与一项程序修复任务,类似于此前文献中提出的代码理解任务。我们在基准任务上对CuBERT进行微调,并将所得模型与Word2Vec词嵌入的不同变体、BiLSTM和Transformer模型,以及已发表的最优(state-of-the-art)模型进行比较,结果表明CuBERT均优于它们,即便训练更短、标注样本更少。未来的源代码嵌入研究可受益于复用我们的基准,并以CuBERT模型作为强基线进行比较。

关键词

引用

@article{arxiv.2001.00059,
  title  = {Learning and Evaluating Contextual Embedding of Source Code},
  author = {Aditya Kanade and Petros Maniatis and Gogul Balakrishnan and Kensen Shi},
  journal= {arXiv preprint arXiv:2001.00059},
  year   = {2020}
}

备注

Published in ICML 2020. This version (v.3) is the final camera-ready version of the paper. It contains the re-computed results, based on the open-sourced datasets