Please use this identifier to cite or link to this item: http://dspace.lib.uom.gr/handle/2159/24571
Author: Γερογιάννης, Μιχαήλ
Title: Τεχνικές μηχανικής μάθησης για πρόβλεψη εντολών σε περιβάλλοντα προγραμματισμού
Date Issued: 2020
Department: Πρόγραμμα Μεταπτυχιακών Σπουδών Ειδίκευσης στην Εφαρμοσμένη Πληροφορική
Supervisor: Χατζηγεωργίου, Αλέξανδρος
Abstract: Τα εργαλεία αυτόματης συμπλήρωσης κώδικα, που παρέχουν τα περιβάλλοντα προγραμματισμού, είναι πλέον αρκετά χρήσιμα στη σύγχρονη ανάπτυξη λογισμικού. Στην εργασία αυτή γίνεται χρήση νευρωνικών δικτύων, τα οποία αποτελούν μια υποκατηγορία της μηχανικής μάθησης. Συγκεκριμένα, με ένα αναδρομικό νευρωνικό δίκτυο- ανατροφοδοτούμενης μονάδας με πύλη (Recurrent Neural Network-Gated Recurrent Unit) γίνεται μια προσπάθεια πρόβλεψης των επόμενων tokens (λέξεις ή σύμβολα) που ακολουθούν το token που εισάγει αρχικά ένας προγραμματιστής κατα τη συγγραφή κώδικα. Για να γίνει η πρόβλεψη φιλικότερη προς το χρήστη, δημιουργήθηκε ένα εργαλείο που έχει τη μορφή ενός αναδυόμενου παραθύρου. Στο παράθυρο αυτό, ο χρήστης θα είναι σε θέση να εισάγει ένα token και το εργαλείο αυτόματα θα του παρέχει τις προβλέψεις του σχετικά με τα tokens που ακολουθούν το αρχικό που εισήγαγε ο χρήστης. Για να μάθει το νευρωνικό δίκτυο να παράγει ακριβείς προβλέψεις χρησιμοποιήθηκε ως είσοδος ένα σύνολο δεδομένων. Το σύνολο αυτό αποτελείται από ένα αρχείο κειμένου το οποίο συγκεντρώνει projects επιλεγμένα από τα αποθετήρια Github και Kaggle τα οποία περιέχουν κώδικα σε Java προσαρμοσμένο κατάλληλα ώστε να αφαιρεθεί ο στατιστικός θόρυβος που εμπεριείχε. Το δίκτυο που παρουσιάζεται παρακάτω δέχεται tokens και παρέχει προβλέψεις με βάση το συντακτικό της γλώσσας προγραμματισμού Java. Τέλος γίνεται μια σύγκριση των αποτελεσμάτων του εργαλείου αυτού με τα αποτελέσματα που παρέχουν άλλες τεχνικές νευρωνικών δικτύων πέραν των δικτύων ανατροφοδοτούμενης μονάδας με πύλη.
The code autocomplete tools provided by the integrated development environments are now quite useful in modern software development. This research uses neural networks, which are a subcategory of machine learning. To be more specific, a Recurrent Neural Network-Gated Recurrent Unit attempts to predict the next tokens (words or symbols) that follow the initial token entered by a programmer when writing code. To make the prediction more user-friendly, a tool was created in the form of a popup window. In this window, the user will be able to enter a token and the tool will automatically provide him with predictions about the tokens following the first entered by the user. In order the neural network to be trained and produce accurate predictions, it uses a dataset as input. This dataset consists of a text file that gathers projects selected from the Github and Kaggle repositories that contain Java code adapted in such a way, so the statistical noise be removed from it. The network shown below accepts tokens and provides predictions based on the syntax of the Java programming language. Finally, a comparison of the results of this tool with the results provided by neural network techniques other than gated recurrent unit networks is made.
Keywords: Μηχανική μάθηση
Νευρωνικά δίκτυα
Naturalness
Εργαλεία λογισμικού
Συμπλήρωση κώδικα
Machine learning
Neural networks
Software tools
Code completion
Natural Language Processing
NLP
Information: Διπλωματική εργασία--Πανεπιστήμιο Μακεδονίας, Θεσσαλονίκη, 2020.
Rights: Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές
Appears in Collections:Π.Μ.Σ. στην Εφαρμοσμένη Πληροφορική (M)

Files in This Item:
File Description SizeFormat 
GerogiannisMichailMsc2020.pdf1.73 MBAdobe PDFView/Open


This item is licensed under a Creative Commons License Creative Commons