结合执行的从自然语言到代码的翻译
计算与语言
2022-11-02 v2 软件工程
摘要
在大规模程序语料库上预训练的代码生成模型在自然语言到代码翻译中已展现出巨大成功(Chen et al., 2021; Austin et al., 2021; Li et al., 2022 等)。尽管这些模型在训练时未显式纳入程序语义(即执行结果),它们仍能为许多问题生成正确解。然而,从生成的集合中为每个问题挑选单一正确程序仍然具有挑战性。本工作中,我们引入基于执行结果的最小贝叶斯风险解码(MBR-EXEC)用于程序选择,并表明其提升了预训练代码模型在自然语言到代码任务上的少样本性能。我们通过对边际化共享相同语义的程序实现,从生成的候选集中选择输出程序。由于精确等价不可行,我们在少量测试输入上执行每个程序以近似语义等价。跨数据集来看,执行或模拟执行显著优于不涉及程序语义的方法。我们发现 MBR-EXEC 持续优于所有无执行感知的选择方法,表明其作为一种自然语言到代码翻译的有效途径。我们在 github.com/facebookresearch/mbr-exec 开源代码,数据见 dl.fbaipublicfiles.com/mbr-exec/mbr-exec-release.zip。
引用
@article{arxiv.2204.11454,
title = {Natural Language to Code Translation with Execution},
author = {Freda Shi and Daniel Fried and Marjan Ghazvininejad and Luke Zettlemoyer and Sida I. Wang},
journal= {arXiv preprint arXiv:2204.11454},
year = {2022}
}
备注
EMNLP 2022