Тип работы:
Предмет:
Язык работы:


Автодополнение кода с использованием нейросетевых языковых моделей

Работа №125188

Тип работы

Бакалаврская работа

Предмет

программирование

Объем работы35
Год сдачи2021
Стоимость4650 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
12
Не подходит работа?

Узнай цену на написание


Введение 3
Постановка задачи 7
Обзор литературы 8
1. Обзор существующих моделей 9
1.1. Рекуррентные архитектуры 9
1.2. Seq2seq архитектура 12
1.3. Code2seq архитектура 13
1.4. Transformer архитектура 15
1.5. BERT архитектура 18
1.6. BISON архитектура 20
2. Эксперимент 23
2.1. Получение и предобработка данных 23
2.2. Описание Алгоритма 24
2.3. Результаты 26
Выводы 32
Заключение 33
Список литературы 34

Мир и человечество развиваются и не стоят на месте, однако с течением времени растет не только прогресс, но и количество данных. Исследо­вания любой из сфер нашей жизни требуют новых данных, и многие из них хранятся в текстовом формате. В связи с этим появляется большое количество методов обработки и генерирования текстовых данных: на­пример перевод из одного языка в другой, генерирование текста, анализ текста и его распознавание, и многие другие задачи. Для использования любого из этих методов необходимо написать свою соответствующую программу, которая тоже является текстовыми данными.
Современные методы обработки естественного языка обеспечивают нам решение множества задач, связанных с текстом, но несмотря на это многие из таких методов не применялись ранее к техническим языкам, таким как языки программирования
Любая существующая программа написана на особенном языке про­граммирования, который имеет свой собственный синтаксис. Каждый из таких языков можно трактовать как новый иностранный язык. С ними проводятся различные операции: это не только перевод и обра­ботка языка, но и самостоятельное генерирование предложений, тек­стов, прогнозирование фраз по их началу. Похожий подход возможно использовать для того , чтобы облегчить написание кода и сократить время разработки продукта. Такой подход, позволяющий ускорить на­писание программы, называется автодополнением.
Проблема скорости написания кода часто встречается и остро стоит у профессионалов в данной области. Это связано с тем, что им необхо­димо писать похожие части кода из раза в раз. Для специалистов было бы полезно, если бы программа умела предугадывать и подсказывать наиболее подходящие слова, которые программист теоретически мог бы хотеть написать.
Автоматическое дополнение кода - технология,обеспечивающая ин­терактивный ввод кода, предсказывая его по уже введенной части. Она необходима в первую очередь для того, чтобы ускорить написание каких- либо шаблонных и наиболее часто употребляемых частей кода.
В данной дипломной работе будет рассмотрена проблема скорости написания кода. Способы ее решения будут заключаться в поиске специ­альных моделей, различных методов, уместности их применения, спо­собах их улучшения, и сравнении их плюсов и недостатков.
Воплотить это в жизнь можно при помощи машинного обучения. Написание автодополнения — это трудоемкая задача. Каждый язык программирования имеет свою структуру и свои особенности, поэтому нужны особые наборы данных. В настоящей работе был выбран язык Python, который является одним из самых наиболее часто использу­емых языков, так как позволяет решать различные задачи : начиная от разработки программной части , заканчивая проектами по машин­ному обучению. Обучив технологию на одном языке, ее можно будет распространить на другой, заменив обучающее множество данных.
Решить задачу можно различными способами. Один из первых ме­тодов — генерирование последовательностей при помощи seq2seq мо- дели,чья архитектура реализована при помощи рекуррентных нейросе­тей глубинного обучения: на такой их разновидности как LSTM (long- short term memory). С развитием технологий появилась state-of-the-art модель BERT, соединяющая в себе идею маскирования токенов и ар­хитектуру transformer. Она сделала прорыв в обработке естественного языка и показала важность авторегрессионных моделей, совмещающих прямой и обратный ход и учитывание контекста предложения.
Для практического применения в данной работе в основе будет рас­смотрена модель BERT вместе со своими достоинствами и недостатка­ми. Основой является идея маскирования токенов и их предсказывания по контексту, однако она не решает проблему влияния замаскирован­ных токенов друг на друга. В связи с этим будет рассмотрена модель BISon, которая должна решить эту проблему, но эта модель применя­лась только к корпусу текста, не включая корпус кода. В работе будет рассмотрено применение данных архитектур к задаче автодополнения кода.
Актуальность работы
Актуальность работы обусловлена практическим аспектом поднятой проблемы. Сфера it-технологий с развитием мира и машинного обу­чения находится в стадии постоянного совершенствования. Практиче­ски каждый it-продукт связан с программированием и написанием ко­да соответственно. Ускорение написания кода поможет программистам тратить меньшее количество времени на создание продукта.
Автодополнение также помогает начинающим специалистам быст­рее выучить язык, а опытным профессионалам ускорить изучение но­вых библиотек. Это связано с тем, что технология предлагает различ­ные варианты дополнения одной и той же строки. Просматривая их, человек видит и запоминает разнообразие методов, предлагаемых язы­ком. Открывая неизвестные ему методы, узнает новую информацию и улучшает свою квалификацию.
Цель и задачи работы
Цель работы: исследование различных нейросетевых методов для задачи автодополнения кода и генерирование новых методов на основе изученных.
Задачи работы:
• Изучить научную литературу по теме исследования;
• Рассмотреть популярные методы, используемые для генерирова­ния текста;
• Рассмотреть применение существующих методов к задаче автодо­полнения кода;
• Сформулировать собственные идеи, которые можно использовать для автодополнения кода;
• Реализовать наиболее возможные в плане обучения идеи.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


Было изучено множество различных архитектур для решения постав­ленной задачи. Выбранная для исследования архитектура BiSon содер­жит в себе важные идеи использования замаскированных токенов для выявления дополнительного контекста между ними, улучшающего ре­зультаты генерирования последовательностей.
Интересной также является идея векторного представления кода в виде деревьев, а в дальнейшем и в виде последовательностей, и ее ис­пользование совместно с другими архитектурами для автодополнения кода. Были получены теоретические алгоритмы, позволяющие это сде­лать. В результате проведенного эксперимента были получены положи­тельные результаты, которые могут являться индикатором оправдан­ности использования данной архитектуры.
Проведенные исследования показали, что методы и нейросети, при­меняемые для задач обработки естественного языка, также можно успеш­но перенести и расширить на класс задач, связанный с автодополнением кода.


[1] A Sherstinsky. Fundamentals of Recurrent Neural Network (RNN) and Long Short-Term Memory (LSTM) Network. — Access mode: https: //arxiv.org/abs/1808.03314 (online; accessed: 09.08.2018).
[2] Alammar Jay. Illustrated transformer. — 2018. —Access mode: http:// jalammar.github.io/illustrated-transformer/ (online; accessed: 27.06.2018).
[3] Alon U. Levy O. Brody S. Yahav F. code2seq: Generating Sequences from Structured Representations of Code. — Access mode: https:// arxiv.org/pdf/1808.01400.pdf (online; accessed: 04.08.2018).
[4] Devlin J. Ming-Wei Chang M. Lee K. Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. — Access mode: https://arxiv.org/abs/1810.04805 (online; accessed: 11.10.2018).
[5] Kostadinov Simeon. Understanding encoder decoder sequence-to-sequence model. — 2019. — Access mode: https://towardsdatascience.com/understanding-encoder-decoder-sequence-to-sequence-model-679e04a: (online; accessed: 05.02.2019).
[6] Lawrence C. Kotnis B. Niepert M. Attending to Future Tokens For Bidirectional Sequence Generation. — Access mode: https://arxiv. org/abs/1908.05915 (online; accessed: 16.08.2018).
[7] Mittal Aditi. Understanding encoder decoder sequence-to-sequence model. — 2019. — Access mode: https://aditi-mittal.medium. com/understanding-rnn-and-lstm-f7cdf6dfc14e (online; accessed: 12.06.2019).
[8] Sutskever I. Vinyals O. Le Q.V. Sequence to Sequence Learning with Neural- Networks. — Access mode: https://arxiv.org/abs/1409. 3215 (online; accessed: 10.09.2014).
[9] Vaswani A. Shazeer N. Parmar N. Uszkoreit J. Jones L. Gomez A. Kaiser L. Polosukhin I. Attention Is All You Need. — Access mode: https: //arxiv.org/abs/1706.03762 (online; accessed: 12.06.2017).


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ