中文

前驱预测比你所想更重要:一种基于树的有效代码生成方法

软件工程 2023-07-21 v3 人工智能 编程语言

摘要

代码生成关注自然语言(NL)表述到代码片段的自动转换。序列到树(Seq2Tree)方法被提出用于代码生成,其保证生成代码的语法正确性,并通过依赖 AST 节点的前驱预测来生成后续抽象语法树(AST)节点。现有 Seq2Tree 方法倾向于平等对待前驱预测与后续预测。然而,在 AST 约束下,Seq2Tree 模型难以基于错误的前驱预测产生正确的后续预测。因此,前驱预测应比后续预测受到更多关注。为此,本文提出一种名为前驱优先(AP)损失的有效方法,通过利用所生成 AST 节点的位置信息来帮助模型重视前驱预测。我们设计了一种 AST 到向量(AST2Vec)方法,将 AST 节点位置映射为二维向量,以建模 AST 节点的位置信息。为评估所提损失的有效性,我们实现并训练了一个称为 APT 的基于前驱优先树结构的代码生成模型。凭借更好的前驱预测及伴随的后续预测,APT 显著提升了性能。我们在四个基准数据集上进行了充分实验,实验结果证明了所提方法的优越性与通用性。

关键词

引用

@article{arxiv.2208.09998,
  title  = {Antecedent Predictions Are More Important Than You Think: An Effective Method for Tree-Based Code Generation},
  author = {Yihong Dong and Ge Li and Xue Jiang and Zhi Jin},
  journal= {arXiv preprint arXiv:2208.09998},
  year   = {2023}
}

备注

Accepted to ECAI-23