Using Document Similarity Methods to create Parallel Datasets for Code Translation
This work addresses the lack of parallel data for code translation, benefiting developers modernizing legacy applications, but it is incremental as it builds on existing unsupervised and supervised techniques.
The authors tackled the problem of automating code translation between programming languages by using document similarity methods to create noisy parallel datasets, enabling supervised techniques without needing curated parallel data; they showed that models trained on these datasets perform comparably to ground truth models for reasonable noise levels and expanded the set of languages for automated translation.
Translating source code from one programming language to another is a critical, time-consuming task in modernizing legacy applications and codebases. Recent work in this space has drawn inspiration from the software naturalness hypothesis by applying natural language processing techniques towards automating the code translation task. However, due to the paucity of parallel data in this domain, supervised techniques have only been applied to a limited set of popular programming languages. To bypass this limitation, unsupervised neural machine translation techniques have been proposed to learn code translation using only monolingual corpora. In this work, we propose to use document similarity methods to create noisy parallel datasets of code, thus enabling supervised techniques to be applied for automated code translation without having to rely on the availability or expensive curation of parallel code datasets. We explore the noise tolerance of models trained on such automatically-created datasets and show that these models perform comparably to models trained on ground truth for reasonable levels of noise. Finally, we exhibit the practical utility of the proposed method by creating parallel datasets for languages beyond the ones explored in prior work, thus expanding the set of programming languages for automated code translation.