Разработка программных средств для улучшения работы механизма автодополнения кода с использованием алгоритмов машинного обучения в интегрированной среде разработки для языка Python

Матвеев Андрей Олегович
1. Новосибирский государственный университет
andrey.matveev@jetbrains.com
Быстров Александр Васильевич
1. Новосибирский государственный университет
avb@iis.nsk.su
Бибаев Виталий Игоревич
1. ООО «Интеллиджей Лабе»
vitaly.bibaev@jetbrains.com
Материал поступил в редколлегию 21.04.2020
Автоматическое дополнение кода является важной функцией интегрированной среды разработки. Оно позволяет пользователям упростить набор длинных выражений в процессе программирования. Методы автоматического дополнения кода, как рассматриваемые в научных работах, так и реализованные в коммерческих продуктах, варьируются от применения эвристик для конкретных случаев до машинного обучения. При этом такие методы обычно опираются на статистические данные и не учитывают поведение пользователей. В статье предлагается подход к улучшению механизма автоматического дополнения кода для языка Python на основе сбора данных о работе этого механизма у реальных пользователей. Эти данные используются для обучения модели с целью последующего ранжирования вариантов автодополнения с помощью алгоритмов машинного обучения. Для обучения модели используются два типа признаков: контекстные и элементные. Контекстные признаки описывают информацию о коде рядом с позицией курсора в текстовом редакторе. Элементные признаки описывают характеристики предлагаемого варианта дополнения кода, например длину совпадающего префикса или тип варианта. Отмечается зависимость модели от ограничений на время ее срабатывания и размер. В работе также рассматриваются различные подходы к оценке качества полученной модели.
Выходные данные: A. О. Матвеев, А. В. Быстров, В. И. Бибаев, Н. И. Поваров Разработка программных средств для улучшения работы механизма автодополнения кода с использованием алгоритмов машинного обучения в интегрированной среде разработки для языка Python. Вестник НГУ. Серия: Информационные технологии. 2020. Т.18, №2. C. 62–75. DOI: 10.25205/1818-7900-2020-18-2-62-75