
摘要
我们显著提升了代码预测(即下一个标记预测)任务的准确率,该任务是自动补全系统的核心组成部分。首先,我们发现,即使不进行任何调优,仅使用近期提出的Transformer架构,其性能也已超越此前所有基于神经网络与非神经网络的代码预测系统。随后,我们进一步证明,通过使Transformer架构能够感知代码的语法结构,可进一步扩大其相对于以往系统的性能优势。在此基础上,我们的Transformer系统在准确率上相较基于RNN的系统(与Hellendoorn等,2018年提出的系统类似)提升了18.3%,相较Deep3系统(Raychev等,2016年)提升了14.1%,相较对Code2Seq(Alon等,2018年)模型进行代码预测任务适配后的版本提升了14.4%。本文提出了多种向本质上用于处理序列数据的Transformer模型传递代码结构信息的方法。我们在标准Python数据集以及Facebook内部的Python语料库上,对所提方法进行了全面的实验评估,并对比了多种替代设计方案。此外,我们还将公开项目代码及数据预处理流程,以促进后续研究的可复现性与进一步发展。