编程语言的无监督翻译[pdf]

2020-06-10 02:55:38

下载PDF摘要:转译器,也称为源代码到源代码翻译器,是一种将源代码从高级编程语言(如C++或Python)转换为另一种语言的系统。转译器主要用于互操作性,并将用过时或不推荐使用的语言(例如COBOL、Python2)编写的代码库移植到现代语言。它们通常依赖于应用于源代码抽象语法树的手工编写的重写规则。不幸的是,由此产生的翻译往往缺乏可读性,不尊重目标语言的创新,需要人工修改才能正常工作。整个翻译过程是耗时的,需要源语言和目标语言的专业知识,这使得代码翻译项目成本高昂,尽管神经模型在自然语言翻译中的表现明显优于基于规则的模型,但由于该领域并行数据的稀缺,它们在转译方面的应用受到了限制。在这篇文章中,我们建议利用无监督机器翻译的最新方法来训练一个完全无监督的神经转译器。我们在开源GitHub项目的源代码上测试了我们的模型,结果表明该模型可以高精度地在C++、Java和Python之间转换函数,该方法完全依赖于单语言源代码,不需要源语言和目标语言的专业知识,并且可以很容易地推广到其他编程语言。我们还构建并发布了由852个并行函数组成的测试集,以及用于检查翻译正确性的单元测试。我们表明,我们的模型比基于规则的商业基线有很大的优势。