- 简介代码翻译工具是为了进行自动源代码翻译而开发的。虽然基于学习的翻译器在任务特定的大量单语语料库上进行预训练后,与基于规则的翻译器相比已经显示出令人印象深刻的改进。但它们目前的性能仍然不足以实现实际部署,相关的训练资源也过于昂贵。预训练在大量人类编写的代码/文本上的LLMs由于其强大的普适性,在许多代码智能任务中表现出了卓越的性能,即使没有任务特定的训练。因此,LLMs可能可以绕过上述限制,但它们尚未得到充分探索。本文研究了各种LLMs和基于学习的翻译器,用于自动代码翻译任务,并发现:尽管某些LLMs已经超越了当前的翻译器,但它们仍然存在一些准确性问题,其中大部分失败是由于缺乏对源程序的理解(38.51%),缺少明确的I/O类型翻译说明(14.94%),以及忽略源程序和目标程序之间的差异(41.38%)。在上述发现的启示下,我们提出了UniTrans,一个统一的代码翻译框架,适用于各种LLMs,以发挥它们在这个领域的潜力。具体而言,UniTrans首先借助源程序创建一系列针对目标程序的测试用例。接下来,它利用上述自动生成的测试用例来增强代码翻译,并通过执行评估它们的正确性。然后,UniTrans进一步(迭代地)修复由测试用例执行结果提示的错误翻译程序。在Python、Java和C ++之间的六个翻译数据集上进行了大量实验。使用UniTrans测试了三种不同大小的最新LLMs,所有LLMs都取得了实质性的改进。
- 图表
- 解决问题自动代码翻译的精度和训练资源仍然不足,如何提高自动代码翻译的精度和效率?
- 关键思路使用大规模人工编写的代码/文本进行预训练的LLMs可以提高自动代码翻译的精度和效率,UniTrans是一种统一的代码翻译框架,可应用于各种LLMs,通过测试用例的迭代修复来提高翻译的准确性。
- 其它亮点使用大规模人工编写的代码/文本进行预训练的LLMs可以提高自动代码翻译的精度和效率,UniTrans是一种统一的代码翻译框架,可应用于各种LLMs,通过测试用例的迭代修复来提高翻译的准确性。在Python、Java和C++之间进行了六个翻译数据集的广泛实验,测试了三个不同大小的LLMs,所有实验均取得了显著的改进。
- 相关研究包括基于规则的自动代码翻译和基于学习的自动代码翻译,以及使用大规模数据集进行预训练的LLMs在自然语言处理和代码智能方面的应用。
沙发等你来抢
去评论
评论
沙发等你来抢