Новости
IBM разработала датасет Project CodeNet для обучения ИИ программированию
Цель состоит в том, чтобы выработать более серьезное понимание кода машинами по сравнению с простой механической обработкой.
IBM выпустила Project CodeNet — набор данных, предназначенный для обучения искусственного интеллекта и переводу кода с одного языка программирования на другой. Набор данных состоит из 14 миллионов примеров кода, состоящих из примерно 500 миллионов строк кода на 55 языках программирования, от C++, Java, Python и Go до Cobol, Pascal и Fortran.
IBM Research утверждает, что Project CodeNet можно использовать для обучения моделей машинного обучения для преобразования или автодополнения кода. Образцы кода были взяты из открытых соревнований по программированию и IBM заявляет, что более 90% образцов кода содержат описание того, что делает код, включая краткую формулировку проблемы, спецификацию входного формата и выходного формата. .
Разработчики проекта заявляют, что для более чем половины задач они также получили образцы входных и выходных данных из описания проблемы, что, по их словам, является ключом к определению эквивалентности двух образцов кода на разных языках и может стимулировать методы обучения с подкреплением для перевода кода. Образцы также включают такую информацию, как размер кода, объем памяти, время работы ЦП и состояние, которые указывают на приемлемость или типы ошибок.
По оценкам команды IBM, автоматизированные системы, основанные на правилах, могут успешно переводить от 50 до 60% программы на другой язык, оставляя остаток на ручной перевод с использованием сложных правил.
Есть надежда, что Project CodeNet сможет «стимулировать алгоритмические инновации» для создания более сложного кода с использованием sequence-to-sequence моделей аналогично тому, как сейчас используют языковые переводчики для человеческих языков. Цель состоит в том, чтобы выработать более серьезное понимание кода машинами по сравнению с простой механической обработкой.
Проект включает инструменты для преобразования образцов кода в представление, которое может быть использовано алгоритмами ИИ, в том числе токенизатор, который генерирует поток токенов, синтаксический анализатор, который генерирует упрощенное дерево синтаксического анализа (SPT) для каждой распознанной программы, и инструмент анализа кода, который создает графики управления и потоков данных. Project CodeNet доступен на GitHub.