4 个月前

上下文代码变更的结构模型

上下文代码变更的结构模型

摘要

我们致力于解决基于学习模型预测编辑完成的问题,该模型是通过过去的编辑数据训练得到的。给定一个部分已编辑的代码片段,我们的目标是预测该片段其余部分的编辑完成。我们将这一任务称为“编辑完成”任务(EditCompletion),并提出了一种新颖的方法来应对它。主要思想是直接表示结构化的编辑操作。这使得我们可以建模编辑本身的概率,而不仅仅是学习被编辑代码的概率。我们将编辑操作表示为程序抽象语法树(Abstract Syntax Tree, AST)中的一条路径,这条路径从编辑源节点到目标节点。我们进行了详尽的评估,将我们的方法与多种由强大模型如长短期记忆网络(LSTMs)、变换器(Transformers)和神经条件随机场(neural CRFs)驱动的表示和建模方法进行了比较。实验结果表明,我们的模型相对于最先进的序列模型实现了28%的相对增益,并且其准确性是那些学习生成被编辑代码而非直接建模编辑操作的句法模型的两倍。我们的代码、数据集和训练好的模型均已公开发布在 https://github.com/tech-srl/c3po/ 。

代码仓库

tech-srl/c3po
官方
pytorch

基准测试

基准方法指标
editcompletion-on-c-editcompletionPath2Tree (Transformer)
Accuracy: 25.5
editcompletion-on-c-editcompletionLaserTagger (LSTM)
Accuracy: 40.9
editcompletion-on-c-editcompletionPath2Tree (LSTM)
Accuracy: 22.5
editcompletion-on-c-editcompletionC3PO
Accuracy: 53.2
editcompletion-on-c-editcompletionSequenceR (Transformer)
Accuracy: 32.6
editcompletion-on-c-editcompletionSequenceR
Accuracy: 30.7
editcompletion-on-c-editcompletionLaserTagger (Transformer)
Accuracy: 41.4

用 AI 构建 AI

从想法到上线——通过免费 AI 协同编程、开箱即用的环境和市场最优价格的 GPU 加速您的 AI 开发

AI 协同编程
即用型 GPU
最优价格
立即开始

Hyper Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供
上下文代码变更的结构模型 | 论文 | HyperAI超神经