Προτεινόμενη Διπλωματική εργασία Προπτυχιακού προγράμματος Σπουδών
Στόχος της παρούσας διπλωματικής είναι η επέκταση των βάσεων γραφοδεδομένων (graph databases) με συστάσεις. Συγκεκριμένα, ο χρήστης θα κάνει ένα ερώτημα στη βάση δεδομένων. Με βάση το ερώτημα και την απάντηση σε αυτό το ερώτημα, το σύστημα θα του προτείνει επιπρόσθετα αποτελέσματα τα οποία δεν ανήκουν στο αποτέλεσμα του αρχικού του ερωτήματος αλλά μπορεί επίσης να τον ενδιαφέρουν.
Τα συστήματα γραφοβάσεων διαφέρουν από τα σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων στο ότι το μοντέλο δεδομένων που χρησιμοποιούν δεν είναι το σχεσιακό μοντέλο, αλλά το μοντέλο ενός γράφου με ιδιότητες (property graph). Tα δομικά στοιχεία του μοντέλου είναι (α) κόμβοι που έχουν ιδιότητες και (β) ακμές πουεκφράζουν τις σχέσεις μεταξύ των κόμβων και επίσης έχουν δικές τους ιδιότητες. Η γλώσσα ερωτήσεων CYPHER διαφέρει από την SQL στο ότι επιτρέπει διασχίσεις μονοπατιών και εύρεση συγκεκριμένων προτύπων μέσα στο γράφο. Στα πλαίσια αυτής της διπλωματικής, θα χρησιμοποιηθεί η πιο γνωστή βάση γραφοδεδομένων, ονόματι Neo4j.
Για τη δημιουργία των συστάσεων θα εξετάσουμε αλγορίθμους εύρεσης ομοιότητας σε γράφους. Μεταξύ των αλγορίθμων (Personalized PageRank, Collaborartive Filtering, Pathsim, κτλ.) θα χρησιμοποιηθούν και αλγόριθμοι (Node2vec, Walk2vec, etc.) για την δημιουργία node embeddings, οι οποίοι χρησιμοποιούν μηχανική μάθηση για να απεικονίσουν τους κόμβους ενός δικτύου ως πολύ-διάστατα διανύσματα. Η βασική ιδέα αυτών των απεικονίσεων είναι ότι παρόμοιοι κόμβοι (πχ, κόμβοι με πολλούς κοινούς γείτονες) να απεικονίζονται ως παρόμοια διανύσματα. Έτσι μπορούμε να χρησιμοποιήσουμε τα node embeddings για να αναπαραστήσουμε τα αποτελέσματα της ερώτησης του υπό εξέταση χρήστη. Με βάση αυτήν την αναπαράσταση θα προτείνουμε στο χρήστη δεδομένα των οποίων τα embeddings μοιάζουν με αυτά του αποτελέσματος.
Σημασιολογικός Ιστός
Neo4j και γλώσσα προγραμματισμού Python
[2] Aditya Grover, Jure Leskovec: node2vec: Scalable Feature Learning for Networks. KDD 2016: 855-864 (ένας από τους πολλούς αλγορίθμους για node embeddings) https://snap.stanford.edu/node2vec/