Successfully reported this slideshow.
Your SlideShare is downloading. ×

Theofilos Georgiadis: Library recommendation system for the reuse of software parts

Theofilos Georgiadis: Library recommendation system for the reuse of software parts

Download to read offline

This system helps developers when searching for python libraries. The developer constructs the query in natural language and the system returns the 10 most relevant libraries. It is based on a graph, its nodes are constructed by keywords and libraries that was extracted from a set of open source projects. For every keyword that is present with a library we connect the two nodes with an edge. For every time that a keyword is present with a library, the weight of the edge is increased by one. Using this graph we extract representations of the graph's nodes. Lastly using these representations and a method for calculating the similarity, we calculate the similarity of each library with each keyword and we extract a recommendation for the 10 libraries with the highest value of similarity.

This system helps developers when searching for python libraries. The developer constructs the query in natural language and the system returns the 10 most relevant libraries. It is based on a graph, its nodes are constructed by keywords and libraries that was extracted from a set of open source projects. For every keyword that is present with a library we connect the two nodes with an edge. For every time that a keyword is present with a library, the weight of the edge is increased by one. Using this graph we extract representations of the graph's nodes. Lastly using these representations and a method for calculating the similarity, we calculate the similarity of each library with each keyword and we extract a recommendation for the 10 libraries with the highest value of similarity.

More Related Content

Slideshows for you

Related Books

Free with a 30 day trial from Scribd

See all

Theofilos Georgiadis: Library recommendation system for the reuse of software parts

  1. 1. Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού Θεόφιλος Γεωργιάδης, ΑΕΜ 8124 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης, Τμήμα Ηλεκτρολόγων Μηχανικων Eπιβλέποντας: Ανδρέας Συμεωνίδης Συνεπιβλέποντας: Εμμανουήλ Κρασανάκης 07-10-2020
  2. 2. Σκοπός της διπλωματικής εργασίας  Ανάπτυξη ενός συστήματος το οποίο θα προτείνει έτοιμες βιβλιοθήκες για τη γλώσσα python χρησιμοποιώντας ερωτήματα σε φυσική γλώσσα.  Ένα σύστημα που θα προτείνει όχι μόνο σωστές βιβλιοθήκες αλλά θα προτείνει και πολλές διαφορετικές. Για αυτό θα αξιολογήσουμε το σύστημα με βάση το γινόμενο δυο μετρικών. Το HR@10 (πόσες σωστές βιβλιοθήκες προβλέπονται) και Coverage (πόση διασπορά υπάρχει σε αυτές)  Να γλυτώσουμε το προγραμματιστή από πολύτιμο χρόνο που θα έπρεπε να αφιερώσει για να συγκρίνει αποτελέσματα σε μηχανές αναζήτησης ώστε βρει τη βιβλιοθήκη που τον ενδιαφέρει.  Ανάλυση των παρόμοιων συστημάτων που υπάρχουν στη βιβλιογραφία με σκοπό την ανάδειξη των πλεονεκτημάτων του δικού μας συστήματος. Ιούνιος 2020 Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 2
  3. 3. Γνώσεις που αποκτήθηκαν  Εξοικίωση με τη γλώσσα python  Γνώσεις για την λειτουργία των συστημάτων προτάσεων  Γράφοι και τεχνικές εξαγωγής συμπερασμάτων  Τεχνικές που χρησιμοποιούνται στην επεξεργασία φυσικής γλώσσας και στον τομέα της μηχανικής μάθησης Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 3
  4. 4. Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 4 Λειτουργία συστήματος How to get current time Λέξεις κλειδιά: current, time Τιμές ομοιότητας για κάθε βιβλιοθήκη με τις λέξεις current, time 10 βιβλιοθήκες με τη μεγαλύτερη τιμή ομοιότητας Παράδειγμα χρήσης
  5. 5. Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 5 Εισαγωγή Δεδομένων Εισαγωγή στο γράφο Εξαγωγή λέξεων κλειδιών και βιβλιοθηκών Αρχεία κώδικα Εξαγωγή αναπαράστασης Γράφος Βιβλιοθήκες/ λέξεις κλειδιά αρχείου Υπολογισμός ομοιότητας με κάθε βιβλιοθήκη Λέξεις κλειδιά Πίνακας 16 διαστάσεων για κάθε κόμβο 10 προτεινόμενες βιβλιοθήκες Αρχιτεκτονική μοντέλου πρόβλεψης
  6. 6. Παράδειγμα γράφου Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 6 Ακμές μόνο μεταξύ βιβλιοθηκών-λέξεων κλειδιών. Δεν υπάρχουν ακμές μεταξύ βιβλιοθηκών ή λέξεων κλειδιών. Για κάθε λέξη-κλειδί που συνεμφανίζεται μαζί με μια βιβλιοθήκη σε ένα αρχείο κώδικα η μέθοδο ενός έργου λογισμικού, υπάρχει ακμή. Ως βάρος της ακμής ορίζεται ο αριθμός των αρχείων στα οποία συνεμφανίζονται.
  7. 7. Μεθοδολογία Ιούνιος 2020 Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 7 Αναπαράσταση Γράφου Χρησιμοποιείται η μέθοδος line που χρησιμοποιεί δυο εγγύτητες (1ου , 2ου ) και συνδυασμός αυτών, για την εξαγωγή τους. Μέθοδοι Υπολογισμού Ομοιότητας 3 διαφορετικού μέθοδοι (cosine, dot, learned). Το learned είναι ένα μοντέλο πρόβλεψης που εκπαιδεύσαμε. Χρησιμοποιήθηκε η συχνότητα IDF για τις βιβλιοθήκες και τις λέξεις κλειδιά όπως και λημματοποίηση των λέξεων κλειδιών. Βελτίωση αποτελεσμάτων
  8. 8. Ιούνιος 2020 Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 8 Εκπαίδευση Για κάθε μέθοδο εξήγαμε τις λέξεις κλειδιά και τις βιβλιοθήκες. Για τις λέξεις κλειδιά χρησιμοποιήσαμε την περιγραφή της μεθόδου και για τις βιβλιοθήκες τον σώμα της. Έπειτα, ενώσαμε τις λέξεις κλειδιά με τις βιβλιοθήκες στο γράφο. Έλεγχος Για κάθε έργο εξήγαμε όλες τις λέξεις κλειδιά και τις βιβλιοθήκες του με την ίδια διαδικασία. Έπειτα, χρησιμοποιώντας τις λέξεις κλειδιά του κάθε έργου επιχειρήσαμε να προβλέψουμε τις βιβλιοθήκες. Σετ έργων λογισμικού: 584 έργα λογισμικού τα οποία αποτελούνται από 100000 μεθόδους (80% για εκπαίδευση και 20% για έλεγχο). Πείραμα στα διάφορα έργα λογισμικού Χρήση IDF Χαρακτηριστικά μεθόδου πρόβλεψης Μετρικές Αξιολόγησης Εγγ.1 Εγγ. 2 IDF Ομοιότητα HR@10 AUC NDCG Coverage HR@10*Coverage    cosine .25 .57 .57 .77 .19    dot .25 .57 .57 .77 .19    learned .45 .75 .70 .08 .03   × cosine .22 .58 .55 .80 .18   × dot .22 .58 .55 .80 .18   × learned .21 .66 .52 .38 .10 Χρήση bag of words .32 .78 .71 .005 .002
  9. 9. Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 9 Πείραμα στα διάφορα έργα λογισμικού Διαφορετικές εγγύτητες και ομοιότητες Χρήση IDF: +46% στη μετρική HR@10 Καλύτερη μέθοδος με βάση το HR@10*Coverage: Χρήση IDF, Συνδυασμός εγγυητών (1ου και 2ου), Ομοιότητα dot Χαρακτηριστικά μεθόδου πρόβλεψης Μετρικές Αξιολόγησης Εγγ.1 Εγγ. 2 IDF Ομοιότητα HR@10 AUC NDCG Coverage HR@10*Coverage  ×  cosine .22 .56 .55 .76 .17  ×  dot .22 .56 .55 .76 .17  ×  learned .30 .63 .60 .57 .17 ×   cosine .07 .28 .41 .33 .02 ×   dot .07 .28 .41 .33 .02 ×   learned .44 .73 .70 .11 .05    cosine .25 .57 .57 .77 .19    dot .25 .57 .57 .77 .19    learned .45 .75 .70 .08 .03 Χρήση bag of words .32 .78 .71 .005 .002
  10. 10. Πείραμα keras Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 10 Σετ έργου λογισμικού keras: 64 αρχεία κώδικα (80% για εκπαίδευση και 20% για έλεγχο) Εκπαίδευση-έλεγχος: Ίδια διαδικασία με πριν χωρίς ύπαρξη μεθόδων και έργων Πείραματα Χρήση IDF, 3 μέθοδοι υπολογισμού εγγύτητας και ομοιότητας Χρήση IDF Χαρακτηριστικά μεθόδου πρόβλεψης Μετρικές Αξιολόγησης Εγγ.1 Εγγ. 2 IDF Ομοιότητα HR@10 AUC NDCG Coverage HR@10*Coverage    cosine .30 .47 .62 .39 .12    dot .29 .46 .59 .44 .13    learned .61 .92 .93 .20 .12   × cosine .10 .29 .43 .41 .04   × dot .12 .30 .44 .37 .04   × learned .46 .81 .77 .21 .10 Χρήση bag of words .67 .95 .95 .12 .08
  11. 11. Πείραμα keras Ιούνιος 2020 Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 11 Διαφορετικές εγγύτητες και ομοιότητες Με χρήση IDF +77% στη μετρική HR@10 Καλύτερη μέθοδος με βάση το HR@10*Coverage: Χρήση IDF, Εγγύτητα 1ου βαθμού, Ομοιότητα cosine Χαρακτηριστικά μεθόδου πρόβλεψης Μετρικές Αξιολόγησης Εγγ.1 Εγγ. 2 IDF Ομοιότητα HR@10 AUC NDCG Coverage HR@10*Coverage  ×  cosine .42 .68 .74 .54 .23  ×  dot .43 .69 .74 .40 .17  ×  learned .53 .88 .81 .25 .13 ×   cosine .01 .04 .32 .38 .00 ×   dot .01 .04 .32 .32 .00 ×   learned .62 .95 .92 .22 .14    cosine .30 .47 .62 .39 .12    dot .29 .46 .59 .44 .13    learned .61 .92 .93 .20 .12 Χρήση bag of words .67 .95 .95 .12 .08
  12. 12. Ιούνιος 2020 Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 12 Πείραμα σε δημοφιλή ερωτήματα Σύγκριση απόδοσης συστήματος σε 14 δημοφιλή ερωτήματα του Stack Overflow Στα 10 από τα 14 ερωτήματα το σύστημα προέβλεψε σωστές βιβλιοθήκες και σε κάποιες περιπτώσεις, άλλες χρήσιμες βιβλιοθήκες. (αναλυτικά αποτελέσματα στο τέλος) Αρ. Ερώτημα 1 How to call an external command 2 How to sort a dictionary by value 3 Convert string representation of a list to a list 4 How do I merge two dictionaries into a single expression 5 How to convert string into datetime 6 How to import a module given the full path 7 How to get current time 8 How do I concatenate two lists 9 How to count occurrences of a list item 10 How do I download a file over HTTP 11 How to use threading 12 How to connect to MySQL database 13 How to write JSON data to a file 14 How to get posted JSON in Flask
  13. 13. Συμπεράσματα  Τα καλύτερα αποτελέσματα εμφανίζει η μέθοδος line για υπολογισμό των embeddings, με χρήση του dot similarity ή cosine και του tf-idf.  Το μοντέλο δεν μπορεί να εξάγει ποιοτικά αποτελέσματα μόνο με τη χρήση του γράφου (bag of words) γιατί προβλέπει συνέχεια τις ίδιες βιβλιοθήκες.  Η επιλογή του να μάθουμε την ομοιότητα δεν προσφέρει βελτίωση αποτελεσμάτων στο σύστημα. Θα μπορούσαμε να τη χρησιμοποιήσουμε αν ενδιαφερόμασταν για ένα σύστημα που προβλέπει πολλές σωστές βιβλιοθήκες αλλά έχει μικρή διασπορά.  Ο αλγόριθμος line για τα embeddings δίνει τα καλύτερα αποτελέσματα, δοκιμάστηκε και ο node2vec που έδινε πολύ χαμηλά αποτελέσματα.  Σε dataset με λιγότερες βιβλιοθήκες όπως το keras, το σύστημα δίνει καλύτερα αποτελέσματα.  Οπως έγινε εμφανές στο πείραμα με τα ερωτήματα, το σύστημα συμπεριφέρεται καλά σε πρακτικά προβλήματα που συναντιούνται συχνά. Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 13
  14. 14. Μελλοντική εργασία  Βελτίωση της αναπαράστασης του γράφου  Συνδυασμός διαφορετικών μεθόδων πρόβλεψης  Επέκταση σε άλλες γλώσσες Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 14
  15. 15. Ευχαριστίες Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 15 Θα ήθελα να ευχαριστήσω τον Κ. Συμεωνίδη που με επέλεξε για τη διπλωματική και τον διπλωματικό φοιτητή Μανώλη για την πολύτιμη βοήθεια και την καθοδήγηση του κ άθολη τη διάρκεια της διπλωματικής
  16. 16. Ερωτήσεις Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 16 ?
  17. 17. Πείραμα σε δημοφιλή ερωτήματα Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 17 Αποτελέσματα
  18. 18. Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 18
  19. 19. Ιούνιος 2020Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 19
  20. 20. Ιούνιος 2020 Σύστημα υπόδειξης βιβλιοθηκών με σκοπό την επανάχρηση τμημάτων λογισμικού 20

×