学习利用草图补全代码
机器学习
2022-01-25 v2 软件工程
摘要
代码补全通常被视作语言建模问题,即从左至右延续输入。然而在实践中,补全的某些部分(例如字符串字面量)可能极难预测,而后续部分可直接由上下文推出。为此,我们考虑在模型不确定的位置插入“空洞”来生成代码补全的场景。我们开发了 Grammformer,一种基于 Transformer 的模型,通过编程语言语法引导代码生成,并将其与多种更标准的序列模型进行比较。我们在给定部分代码上下文的 C# 和 Python 代码补全任务上训练这些模型。为评估模型,我们同时考虑 ROUGE 以及一种新的度量 RegexAcc,该度量用于衡量以尽可能少的空洞生成匹配长输出的补全的成功率。在我们的实验中,与传统的生成模型相比,Grammformer 生成的补全准确率高出 10-50%,而与采用类似技术训练的草图生成基线相比,生成的草图长 37-50%。
引用
@article{arxiv.2106.10158,
title = {Learning to Complete Code with Sketches},
author = {Daya Guo and Alexey Svyatkovskiy and Jian Yin and Nan Duan and Marc Brockschmidt and Miltiadis Allamanis},
journal= {arXiv preprint arXiv:2106.10158},
year = {2022}
}
备注
Published in ICLR 2022