15. Μεθοδολογία(6/8)
𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦(𝑑1, 𝑑2) = 𝑐𝑜𝑠 𝜃 =
𝑑1∙𝑑2
𝑑1 ∙ 𝑑2
𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦 𝑋, 𝑌 = 2 ∙
𝐿(𝑋,𝑌)
𝑋 + 𝑌
X Y L(X,Y)
CI_DecimalFormat CI_DecimalFormat CI_DecimalFormat
AM_double AM_double AM_double
FC_void FC_void FC_void
FC_void
Παράδειγμα LCS Score
𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦 𝛸, 𝛶 = 2 ∙
3
4+3
=
6
7
≈ 0,857
Παράδειγμα Cosine Similarity
𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦(𝑑1, 𝑑2) ≈ 0,709
d1 d2
See my question. See my question about Decimal.
Vector Space Model
d1
d2
cosine similarity
see
question
decimal
Μοντέλο ομοιότητας
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 15
16. Μεθοδολογία(7/8)
• Πίνακες απόστασης (distance
matrix) με βάση το μέσο όρο των
βαθμών ομοιότητας
• Ιεραρχική ομαδοποίηση
(Hierarchical Clustering)
• Λογική υπόθεση: Παρόμοιο
σχόλιο ⇒ Παρόμοια τροποποίηση
• Άθροισμα τετραγωνικών
σφαλμάτων (SSE) με βάση τον
πίνακα απόστασης σχολίων
𝑆𝑆𝐸 =
𝑥 𝑖,𝑗∈𝐶
𝑛
𝑑𝑖𝑠𝑡2
(𝑥𝑖, 𝑥𝑗)
𝑛
• Αποτέλεσμα: 390 ομάδες, 5 πιο
αντιπροσωπευτικά σχόλια
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 16
17. Μεθοδολογία(8/8)
Κατηγορίες ομάδων
Changed ArrayList to List
Changed code and added caveat(s),
Changed from ArrayList to List in type
declaration, Changed ArrayList to
HashSet, changed the inventory Items
to List interface, List instead of
ArrayList
Change index loop to forEach
Changed code to use for each loop,
Used for-each loop, Use Arrays.fill
instead of loop., Updated to use
ListIterator, label if panel pressed
StringBuffer to StringBuilder
changed to StringBuilder, changed out
from String to StringBuilder, Replaced
StringBuffer with StringBuilder., use
StringBuilder instead of StringBuffer,
Changed it to StringBuilder form
StringBuffer (see comments)
Add hashCode and equals
properly implement equals, imple-
mentation of hashCode and equals,
corrected equals signature, impl. of
hashCode & equals, generic & sc
Change to check for null/range
Added a check for nullness in Book
constructor., added out of range
check, changed exception types, it’s a
little more intuitive, Added range
check to Constructor., Throw the right
exception type
• Βελτιστοποίηση • Διορθώσεις σφαλμάτων • Προσθήκη λειτουργικότητας
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 17
20. Αποτελέσματα(2/5)
• Ισχυροί δεσμοί (κόκκινα σημεία)
• Πολλές μικρές ομάδες
• Επιβεβαίωση αρχικής ιδέας ομαδοποίησης (clustering)
Χάρτης θερμότητας (Heatmap)
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 20
21. Αποτελέσματα(3/5)
• 1564 τροποποιήσεις
απαντήσεων
• Σχόλιο τροποποίησης
‘format’, ’typo’,
‘rollback’
Εργαλείο σύστασης τροποποίησης (Edit Recommender)
1. Ελάχιστη απόσταση:
Ομάδα με το στοιχείο
που έχει μεγαλύτερη
ομοιότητα
2. Ελάχιστη μέση
απόσταση: Ομάδα με
τη μεγαλύτερη μέση
ομοιότητα
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 21
25. Συμπεράσματα
Συμπεράσματα
• Οι τροποποιήσεις απαντήσεων
ακολουθούν πρότυπα/μοτίβα
• Τα γενικά σχόλια μπορούν να
βελτιωθούν
• Μπορεί να γίνει εντοπισμός
σφαλμάτων
Μελλοντικές επεκτάσεις
• Επανειλημμένη εφαρμογή σύστασης για να
προκύψει σειρά τροποποιήσεων
• Ενσωμάτωση του εργαλείου σύστασης σε
προγραμματιστικό περιβάλλον IDE
• Έρευνα συνεξέλιξης μεταξύ ερωτήσεων και
απαντήσεων του SO
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 25
26. Δημοσιεύσεις
“Toward Mining
Answer Edits to
Extract Evolution
Patterns in Stack
Overflow”
• Themistoklis
Diamantopoulos,
Maria Ioanna Sifaki
and Andreas L.
Symeonidis
• 16th International
Conference on
Mining Software
Repositotiries
• 2019 March
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 26
27. Ευχαριστίες
Θα ήθελα να ευχαριστήσω θερμά:
• Τον Αναπληρωτή Καθηγητή Ανδρέα Συμεωνίδη
• Τον Μεταδιδακτορικό Ερευνητή Θεμιστοκλή Διαμαντόπουλο
Ευχαριστώ για την προσοχή σας!
04.07.2019 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης | 27