fbpx
  • TransCoder: нейросеть переводит код программы на другой язык

    TransCoder — это нейросеть, которая переводит код программы с одного языка на другой. Модель не нуждается в размеченных параллельных данных для обучения. На данный момент TransCoder успешно переносит функции на C++, Java и Python 3. Нейросеть обходит существующие открытые и коммерческие программы по переводу кодовой базы. 

    Описание проблемы

    Перенос кодовой базы с устаревшего языка, как COBOL, на альтернативные современные языки, как Java или C++, является ресурсоемкой задачей. Процесс предполагает наличие экспертизы в обоих языках: исходном и целевом. 

    Что внутри TransCoder

    TransCoder позволяет облегчить процесс переноса кодовой базы на другой язык. Предыдущие подходы упирались в необходимость наличия параллельного корпуса данных для обучения. TransCoder обходит это ограничение. Модель опирается на исходный код на одном языке. При этом масштабируется на другие языки. Кроме того, исследователи ввели новую метрику для оценки корректности переведенного кода.

    В качестве архитектуры модели в TransCoder использовали XLM. Для всех языков использовалась одна общая модель. Исследователи обучали TransCoder, учитывая best practices из unsupervised машинного перевода.

    Оценка работы модели

    По результатам экспериментов, модель верно переносит более 90% Java функций на C++, 74.8% С++ функций — на Java и 68.7% Java функций — на Python. Для сравнения, платный инструмент корректно переводит 61% функций из C++ на Java. При этом опенсорсное решение справляется с задачей перевода Java функций на C++ с точностью в 38.3%.