Skip to main content
QUICK REVIEW

[论文解读] AVATAR: A Parallel Corpus for Java-Python Program Translation

Wasi Uddin Ahmad, Golam Rahman Tushar|arXiv (Cornell University)|Aug 26, 2021
Natural Language Processing Techniques参考文献 14被引用 14
一句话总结

本文介绍了Avatar,一个包含9,515个编程问题及其对应Java和Python解决方案的并行语料库,数据来源于编程竞赛网站和开源代码仓库。该数据集包含250个带单元测试的示例,可用于功能正确性评估,并支持预训练代码语言模型的微调,但实验表明,尽管模型在词汇层面表现良好,现有模型在功能正确性方面仍存在困难。

ABSTRACT

Program translation refers to migrating source code from one programming language to another. It has tremendous practical value in software development, as porting software across languages is time-consuming and costly. Automating program translation is of paramount importance in software migration, and recently researchers explored unsupervised approaches due to the unavailability of parallel corpora. However, the availability of pre-trained language models for programming languages enables supervised fine-tuning with a small number of labeled examples. Therefore, we present AVATAR, a collection of 9,515 programming problems and their solutions written in two popular languages, Java and Python. AVATAR is collected from competitive programming sites, online platforms, and open-source repositories. Furthermore, AVATAR includes unit tests for 250 examples to facilitate functional correctness evaluation. We benchmark several pre-trained language models fine-tuned on AVATAR. Experiment results show that the models lack in generating functionally accurate code.

研究动机与目标

  • 为解决Java-Python程序翻译缺乏大规模、高质量并行语料库的问题。
  • 支持预训练代码语言模型(PLMs)的监督微调,以提升翻译性能。
  • 提供带单元测试的基准,用于评估翻译代码的功能正确性。
  • 探究当前神经网络模型在生成功能正确代码方面的局限性。
  • 通过发布一个多样化、公开可用的数据集,支持未来在自动化程序翻译方面的研究。

提出的方法

  • 从编程竞赛平台(AtCoder、Codeforces、AIZU、Code Jam、LeetCode、Project Euler)和在线代码仓库(GeeksforGeeks、GitHub)收集解决方案。
  • 对代码进行分词并过滤,移除注释和文档字符串,并应用长度阈值(≤464个标记)以确保一致性。
  • 每道题目最多保留五个不同的解决方案,以保证多样性并避免冗余。
  • 将数据集按75%训练集、5%验证集和20%测试集进行划分,验证集和测试集包含多个真实答案。
  • 提供250个带单元测试的示例,以支持超越语法和词汇匹配的功能正确性评估。
  • 在Avatar数据集上对多种预训练代码语言模型(如CodeBERT、GraphCodeBERT、TransCoder-ST、PLBART)进行微调,以完成翻译任务。

实验结果

研究问题

  • RQ1当在新的大规模并行语料库上微调时,预训练代码语言模型在Java-Python翻译任务中的有效性如何?
  • RQ2当前模型在单元测试验证下生成功能正确代码的程度如何?
  • RQ3在程序翻译中,词汇准确率与功能正确性之间差距的成因是什么?
  • RQ4训练数据的多样性和质量如何影响模型的泛化能力与功能正确性?
  • RQ5经过筛选的并行语料库能否提升在未见问题上的零样本或少样本翻译性能?

主要发现

  • Avatar数据集包含9,515个编程问题,其中250个示例带有单元测试,支持功能正确性评估。
  • 微调后的模型在词汇和句法指标上表现优异,但在通过单元测试执行评估的功能正确性指标上表现显著较低。
  • 在评估的模型中,微调后的TransCoder-ST在词汇和功能指标上均表现最佳,紧随其后的是PLBART。
  • 尽管词汇匹配度高,模型仍频繁生成功能不正确的代码,表明在语义理解方面存在关键差距。
  • 数据集显示,模型常生成语法正确但逻辑错误的代码,尤其在处理数据结构和控制流时更为明显。
  • 由于仅在中等规模数据集上进行了有限的模型微调,训练的碳足迹较低(7.5kg CO2当量)。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。