通过代码蒸馏实现程序翻译
软件工程
2023-10-19 v1 机器学习
摘要
软件版本迁移与程序翻译是大型代码库生命周期中重要且昂贵的部分。传统机器翻译依赖平行语料进行监督翻译,但因缺乏对齐数据,程序翻译不可行。近期无监督神经机器翻译技术通过回译与低级编译器中间表示(IR)等方法克服了数据限制。这些方法分别因代码片段对齐中的噪声与IR的多样性面临显著挑战。本文提出一种称为代码蒸馏(CoDist)的新模型,以语言无关的中间表示捕获代码的语义与结构等价性。蒸馏代码作为任意编程语言的翻译枢纽,按构造产生平行语料,仅需应用蒸馏编译器即可扩展到所有可用源代码。我们证明,在CodeXGLUE与TransCoder GeeksForGeeks翻译基准上,我们的方法取得了SOTA性能,相较TransCoder-ST在TransCoder GeeksforGeeks翻译基准上平均绝对提升12.7%。
引用
@article{arxiv.2310.11476,
title = {Program Translation via Code Distillation},
author = {Yufan Huang and Mengnan Qi and Yongqiang Yao and Maoquan Wang and Bin Gu and Colin Clement and Neel Sundaresan},
journal= {arXiv preprint arXiv:2310.11476},
year = {2023}
}