Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚH ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Ηλεκτρονικής και Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών (ΕΠΥ) Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Διπλωματική εργασία του Γεώργιου Αντωνίου Α.Ε.Μ υπό την επίβλεψη του Καθηγητή κ. Περικλή Α. Μήτκα Θεσσαλονίκη, Μάρτιος 2012

2 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 2

3 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 3 Αντωνίου Χ. Γεώργιος Τελειόφοιτος Διπλωματούχος Ηλεκτρολόγος Μηχανικός και Μηχανικός Η/Υ Α.Π Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό χωρίς την έγκριση του συγγραφέα. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερμηνευθεί ότι αντιπροσωπεύουν τις επίσημες θέσεις του Τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ του Α.Π.Θ..

4 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 4 ΕΥΧΑΡΙΣΤΙΕΣ Η παρούσα εργασία αποτελεί τη Διπλωματική μου Εργασία στα πλαίσια των σπουδών μου στο τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ του Α.Π.Θ. υπό την επίβλεψη του καθηγητή του τομέα Ηλεκτρονικής και Η/Υ Περικλή Μήτκα, στον οποίο οφείλω ιδιαίτερες ευχαριστίες τόσο για την ανάθεση της εργασίας όσο και για τη γενικότερη συμβολή του στη μελλοντική μου επαγγελματική σταδιοδρομία. Με την ευκαιρία αυτή θα ήθελα να ευχαριστήσω θερμά τον Κυριάκο Χατζηδημητρίου και τον Κωνσταντίνο Βαβλιάκη, για τη βοήθεια, τις πολύτιμες συμβουλές, την υποστήριξη και την καθοδήγηση που μου παρείχαν καθ όλη τη διάρκεια εκπόνησης της εργασίας. Τέλος, θα ήθελα να ευχαριστήσω τους γονείς μου, τα αδέλφια μου και τους φίλους μου, που με στήριζαν και με συμβούλευαν σε κάθε βήμα της φοιτητικής μου ζωής. Θεσσαλονίκη, Μάρτιος 2012

5 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 5 Σύνοψη Διανύουμε την εποχή της πληροφορίας, όπου κατακλυζόμαστε καθημερινά από μηνύματα κάθε μορφής. Από τις ειδήσεις, τα feeds και τα διάφορα μέσα ενημέρωσης, όσο πιο πρόσφατα από τα διάφορα κοινωνικά δίκτυα, όπως το Twitter, το Facebook και το LinkedIn. Είναι εύκολο λοιπόν κανείς να έρθει αντιμέτωπος με το φαινόμενο της υπερπληροφόρησης. Στο πλαίσιο της παρούσας διπλωματικής παρουσιάζουμε την εφαρμογή Tweet for me!, η οποία έρχεται να δώσει μία λύση στο πρόβλημα της υπερπληροφόρησης στο Twitter. Στόχος της η διευκόλυνση των χρηστών του Twitter, ώστε να βρίσκουν ευκολότερα tweets που τους ενδιαφέρουν, προερχόμενα από τη home-timeline τους. Κάνοντας χρήση της πλατφόρμας Django, της γλώσσας προγραμματισμού Python, της SQLlite, του Twitter API, καθώς και του αλγορίθμου μηχανικής μάθησης Fisher η εφαρμογή μας είναι σε θέση να αντλεί καθημερινώς tweets, να τα αξιολογεί ανάλογα με το τι προτιμά ο εκάστοτε χρήστης της εφαρμογής και να προβάλλει τα καλύτερα από αυτά. Ο χρήστης έχει τη δυνατότητα να αξιολογεί θετικά ή αρνητικά όποια από τα tweets επιθυμεί, εκπαιδεύοντας με αυτόν τον τρόπο την εφαρμογή μέσω του αλγορίθμου μηχανικής μάθησης. Έμφαση δόθηκε στα tweets που περιέχουν urls καθώς περιέχουν έμμεσα περισσότερη πληροφορία προς αξιοποίηση Ο Αντωνίου Γεώργιος είναι προπτυχιακός φοιτητής του τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών της Πολυτεχνικής Σχολής του Α.Π.Θ.. Έχει επιλέξει τον τομέα Ηλεκτρονικής και Υπολογιστών. Α.Ε.Μ.(Αριθμός Ειδικού Μητρώου): gantonio@auth.gr, antoniougeorgios@hotmail.com

6 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 6 Abstract We are living in the information age, where a daily flood of messages of any kind takes place. From news, feeds and various media, to the more recent various social networks like Twitter, Facebook and LinkedIn. Therefore it is very easy for someone to confront the phenomenon of information overload. In this diploma thesis we present an application, named "Tweet for me!", which comes to give a solution to the problem of information overload on Twitter. Its' aim is helping the users of Twitter, to find easier tweets that actually interest them, from their Home-timeline. Using the Django platform, the programming language Python, SQLlite, the Twitter API, and a machine learning algorithm called Fisher Method our application is able daily to harvest tweets, to evaluate them depending on each user's preferences and to display the best of them. The user is able to evaluate any tweets he wants as positive or negative, training this way the application with the help of the machine learning algorithm. Emphasis was given to tweets containing urls, as they contain more information for use Antoniou Georgios is an undergraduate student in the Department of Electrical and Computer Engineering of the Aristotle University of Thessaloniki. He has chosen the field of Computer and Electronics. gantonio@auth.gr, antoniougeorgios@hotmail.com

7 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 7 Στοιχεία Συγγραφέα Ο Αντωνίου Γεώργιος είναι προπτυχιακός φοιτητής του τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών της Πολυτεχνικής Σχολής του Α.Π.Θ.. Έχει επιλέξει τον τομέα Ηλεκτρονικής και Υπολογιστών. Α.Ε.Μ.(Αριθμός Ειδικού Μητρώου): 6324 Διεύθυνση: Υπατίας 39, Θεσσαλονίκη (Ελλάδα) gantonio@auth.gr, antoniougeorgios@hotmail.com

8 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 8 Περιεχόμενα ΕΥΧΑΡΙΣΤΙΕΣ... 4 Σύνοψη... 5 Abstract... 6 Στοιχεία Συγγραφέα... 7 Περιεχόμενα... 8 Λίστα Εικόνων-Σχημάτων Λίστα Διαγραμμάτων Λίστα Πινάκων Λεξικό Όρων ΚΕΦΑΛΑΙΟ 1. Εισαγωγή Περιγραφή του προβλήματος Στόχος της διπλωματικής εργασίας Συνοπτική Παρουσίαση του Συστήματος Οργάνωση Κεφαλαίων ΚΕΦΑΛΑΙΟ 2. Υπόβαθρο και Βιβλιογραφική Έρευνα Υπάρχοντα Συστήματα - Παρόμοιες Εφαρμογές Μηχανική Εκμάθηση Αλγόριθμος μηχ. μάθησης (Naive Bayes και Fisher Method) Naive Bayes Fisher Method Συστήματα συστάσεων (Recommender Systems) Εξόρυξη και ανάλυση δεδομένων από το Twitter ΚΕΦΑΛΑΙΟ 3. Τεχνολογίες Γενικά για το Twitter Twitter API Έλεγχος ταυτότητας & Εξουσιοδότηση(Authentication & Authorization) Python Django Πρότυπο MTV... 42

9 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Django και βάσεις δεδομένων ΚΕΦΑΛΑΙΟ 4. Απαιτήσεις της Εφαρμογής Απαιτήσεις Εφαρμογής Απαιτήσεις Χρήστη και Συστήματος Λειτουργικές Απαιτήσεις Χρήστη Μη Λειτουργικές Απαιτήσεις Χρήστη Λειτουργικές Απαιτήσεις Συστήματος Μη Λειτουργικές Απαιτήσεις Συστήματος Σενάρια Χρήσης (Use Case) Σενάριο χρήσης login Τι περιέχει η κάθε σελίδα της εφαρμογής Ενέργειες που πραγματοποιεί το σύστημα μας Screenshots Homepage Main Page Authorization Page Administrator Page ΚΕΦΑΛΑΙΟ 5. Σχεδιασμός Συστήματος και Προδιαγραφές Αρχιτεκτονική του Συστήματος Υποεφαρμογές (Applications) που συνθέτουν το Project μας Παραδείγματα μοντέλων Εξωτερικά modules/packages που χρησιμοποιήθηκαν Βάση Δεδομένων Κατηγορίες χρηστών και οι απαιτήσεις τους για πρόσβαση στη βάση και είσοδο και έξοδο δεδομένων ΚΕΦΑΛΑΙΟ 6. Πειραματικό Μέρος Κυρίως Πειραματικό Μέρος Προσθήκη νέων λογαριασμών σε αυτούς που ήδη ακολουθούνται Εξειδίκευση των ενδιαφερόντων ενός χρήστη Προσθήκη θεματικών ενδιαφερόντων ενός χρήστη ΚΕΦΑΛΑΙΟ 7. Συμπεράσματα και μελλοντική εργασία Παράρτημα Ι Εγκατάσταση Python Εγκατάσταση modules ή ολοκληρωμένων packages

10 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 10 Απευθείας με χρήση easy_install ή pip install Χωρίς χρήση easy_install ή pip install Εγκατάσταση Django Δημιουργία Καινούριου Project Ρύθμιση της Database Εγκατάσταση μηχανισμού αυθεντικοποίησης/εξουσιοδότησης Παράρτημα ΙΙ Βιβλιογραφία

11 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 11 Λίστα Εικόνων-Σχημάτων Εικόνα 1 - logo της εφαρμογής "Tweet for me!" Εικόνα 2 - Εφαρμογή Summify Εικόνα 3 - Εφαρμογή Paper.li Εικόνα 4 - Εφαρμογή Twalala Εικόνα 5 - Εφαρμογή Tweetvisor Εικόνα 6 - Εφαρμογή Green Tweets Εικόνα 7 - Σύγκριση προτύπων MVC και ΜΤV Εικόνα 8 - απλοϊκή αναπαράσταση του συστήματος Εικόνα 9 - Συνοπτική λειτουργία Συστήματος Εικόνα 10 Screenshot αρχικής σελίδας Εικόνα 11 - Screenshot κεντρικής σελίδας Εικόνα 12 - Screenshot σελίδας εξουσιοδότησης Εικόνα 13 - Screenshot σελίδας διαχείρισης Εικόνα 14 - Αρχιτεκτονική Εφαρμογής Εικόνα 15 - Διάγραμμα Ακολουθιών, είσοδος στην εφαρμογή και βαθμολόγηση tweets Εικόνα 16 - Ορατά στοιχεία μοντέλου User στη σελίδα διαχείρισης Εικόνα 17 Μοντέλο User Εικόνα 18 - Μοντέλο Classifier Category Εικόνα 19 - Μοντέλο Classifier Feature Εικόνα 20 - Μοντέλο User Social Auth Εικόνα 21 - Μοντέλο Tweeet Εικόνα 22 - Μοντέλο BestTweeet Εικόνα 23 - Μοντέλο Votes Since_ID... 86

12 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 12 Λίστα Διαγραμμάτων Διάγραμμα 1 - Ποσοστά ενδιαφερόντων και αδιάφορων tweets για το χρήστη AntoniouGeorge Διάγραμμα 2 - Ποσοστά ενδιαφερόντων tweets για το χρήστη Kolokythas Διάγραμμα 3 - Ποσοστά ενδιαφερόντων tweets για το χρήστη antoniou_g... 96

13 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 13 Λίστα Πινάκων Πίνακας 1 - Ενδιαφέροντα χρήστη AntoniouGeorge Πίνακας 2 - Ενδιαφέροντα χρήστη Kolokythas Πίνακας 3 - Ενδιαφέροντα χρήστη antoniou_g... 93

14 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 14 Λεξικό Όρων Όρος applications controller database debugger documentation editor experimentation features framework free G.U.I. - Graphical User Interface hits home-timeline information overload modules packages project shared-nothing shell sites social network specifications template topics tweet view Μετάφραση/Σύντομη Περιγραφή εφαρμογές ελεγκτής βάση δεδομένων εργαλείο εντοπισμού σφαλμάτων τεκμηρίωση, εγχειρίδιο συντάκτης πειραματισμός χαρακτηριστικά πλατφόρμα σχεδίασης ελεύθερο, δωρεάν γραφικό περιβάλλον εργασίας χτυπήματα, κλικ αρχικό χρονολόγιο υπερπληροφόρηση ενότητες συναρτήσεων πακέτα σχέδιο που δε μοιράζεται πόρους γραμμή εντολών γλώσσας προγραμματισμού ιστότοποι κοινωνικό δίκτυο προδιαγραφές πρότυπο θέματα τιτίβισμα, μήνυμα στο Twitter όψη

15 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 15 ΚΕΦΑΛΑΙΟ 1. Εισαγωγή Το Twitter, το Facebook, το LinkedIn και γενικώς τα κοινωνικά δίκτυα παράγουν μια τεράστια ποσότητα δεδομένων. Το Facebook, για παράδειγμα, αποτελείται από 400 εκατομμύρια χρήστες, οι οποίοι παράγουν 5 δισεκατομμύρια κομμάτια πληροφορίας κάθε μήνα. Οι χρήστες του Twitter ξεπερνάν τα 300 εκατομμύρια και γράφουν καθημερινά πάνω από 90 εκατομμύρια tweets. Όταν πρέπει να διαχειριστούμε τέτοια μεγέθη, ερχόμαστε αντιμέτωποι με αυτό που ονομάζεται φαινόμενο της υπερπληροφόρησης(information overload). Αυτομάτως καταλαβαίνει κανείς ότι τα κοινωνικά δίκτυα αποτελούν μια πρόκληση για ερευνητές και αναλυτές, που θέλουν να φιλτράρουν με διάφορες μεθόδους τα αμέτρητα κομμάτια πληροφορίας που βρίσκονται σε αυτά, προσπαθώντας να αντιμετωπίσουν την υπερπληροφόρηση. Η εξατομίκευση του παγκόσμιου ιστού ορίζεται απλά ως η διαδικασία προσαρμογής του στις ανάγκες των χρηστών των πληροφοριακών συστημάτων που βασίζονται σε αυτόν. Τυπικά, αυτό συνίσταται στη συλλογή και ανάλυση στοιχείων σχετικών µε τους χρήστες και ανάκτηση των κατάλληλων δεδομένων για συγκεκριμένους χρήστες την κατάλληλη στιγμή.

16 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Περιγραφή του προβλήματος Στο internet γενικότερα μπορεί κανείς να συναντήσει κάθε λογής πληροφορία σε διάφορους ιστότοπους, ιστοσελίδες ή ιστολόγια, κάθε ένα από τα οποία μπορεί να είναι λιγότερο ή περισσότερο αξιόπιστο. Ο χρήστης πρέπει να μάθει σε αυτή την περίπτωση να ψάχνει για την εγκυρότερη πληροφόρηση. Πρέπει να μάθει να αξιολογεί και να συγκρίνει τις πηγές του. Τα παραπάνω προϋποθέτουν φυσικά ότι ο χρήστης έχει βρει την πληροφορία που τον ενδιαφέρει. Σε ό,τι αφορά το Twitter, κάτι ανάλογο συμβαίνει. Ο χρήστης καλείται να αποφασίσει ποιους άλλους χρήστες προτιμά να ακολουθεί. Ακολουθώντας κάποιον χρήστη, επιλέγει ουσιαστικά να του προβάλλονται όλα τα tweets που ποστάρει ο συγκεκριμένος χρήστης. Τα tweets αυτά από όλους τους χρήστες που ακολουθεί κάποιος εμφανίζονται στη home-timeline του ταξινομημένα χρονικά από το πιο πρόσφατο προς το παλαιότερο. Όπως εύκολα μπορεί να φανταστεί κανείς, η hometimeline ενός χρήστη μπορεί να αυξάνεται με αρκετά μεγάλους ρυθμούς. Μπορεί να αυξάνεται ημερησίως από μερικές δεκάδες έως αρκετές εκατοντάδες tweets. Ο ρυθμός αύξησης αυτών των tweets εξαρτάται κυρίως από τον αριθμό των τρίτων χρηστών που ακολουθεί κάποιος, αλλά εξαρτάται επίσης και από το μέσο ρυθμό με τον οποίο γράφουν tweets οι χρήστες αυτοί. Το πρόβλημα έγκειται στο γεγονός ότι, παρόλο που κάποιος έχει επιλέξει ποιους θέλει να ακολουθεί (άρα ενδιαφέρεται για αυτά που γράφουν σε πρωταρχικό επίπεδο), δεν μπορεί να τον ενδιαφέρουν εξίσου όλα όσα οι συγκεκριμένοι χρήστες ποστάρουν. Αξίζει να αναφερθεί ότι σύμφωνα με μια έρευνα της εταιρίας Pear Analytics τον Αύγουστο του 2009 το 40,1% όλων των tweets είναι ατάκες (πολλές φορές μέρος συνομιλιών) χωρίς ιδιαίτερο νόημα. Όταν ο ρυθμός με τον οποίο αυξάνεται η home-timeline ενός χρήστη είναι μικρός ή αν ο χρήστης έχει την πολυτέλεια χρόνου να ελέγχει τα νέα tweets τακτικά, τότε το πρόβλημα είναι υπό έλεγχο. Ο χρήστης σε αυτή τη περίπτωση ελέγχει όλα τα tweets και επιλέγει να διαβάσει τα links από τα tweets που τον ενδιαφέρουν περισσότερο.

17 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 17 Το πρόβλημα όμως μπορεί να πάρει ανεξέλεγκτες διαστάσεις όταν δεν ισχύει κάποια από τις δύο παραπάνω συνθήκες. Σε περίπτωση δηλαδή που η hometimeline αυξάνεται με ρυθμούς που ο χρήστης μας δε μπορεί να ακολουθήσει. Ας πάρουμε υποθετικά το παράδειγμα ενός χρήστη ο οποίος ακολουθεί 750 ανθρώπους. Κάποιοι από αυτούς ποστάρουν tweets σπάνια, κάποιοι καθόλου, κάποιοι αρκετά. Ας θεωρήσουμε ένα μέσο όρο γύρω στα 5-7 tweets/ημέρα. Αυτό σημαίνει ότι ο χρήστης μας θα έχει να διαβάσει περίπου tweets την ημέρα. Πώς όμως είναι δυνατόν αυτό να στεφθεί με επιτυχία; Η απάντηση έγκειται στο γεγονός ότι ο χρήστης δεν πρέπει σε καμία περίπτωση να διαβάσει όλα αυτά τα tweets, καθώς πολλά από αυτά είναι ανούσια ή απλά άσχετα με το τι αρέσει στο χρήστη μας. Πώς όμως θα επιλέξει ο χρήστης τι θα διαβάσει; Η απάντηση στο πρόβλημα είναι αυτό που ονομάζουμε κοινωνικό φιλτράρισμα (social filtering). Κάνοντας χρήση συγκεκριμένων τεχνικών και αλγορίθμων μπορούμε πάντα με τη βοήθεια της τεχνολογίας να φιλτράρουμε τι θέλουμε ή καλύτερα τι θα θέλαμε να διαβάσουμε. Η παρούσα διπλωματική εργασία έρχεται να δώσει μια λύση στο πρόβλημα της υπερπληροφόρησης στο Twitter. 1.2 Στόχος της διπλωματικής εργασίας Στόχος της παρούσας διπλωματικής εργασίας είναι να δημιουργήσει ένα διαδικτυακό σύστημα το οποίο θα γλυτώνει στο χρήστη πολύτιμο χρόνο από την ανάγνωση πολλών ανούσιων tweets, ώστε να διαβάσει τα n tweets που τελικά τον ενδιαφέρουν (όπου n=5, 10, 20 ). Επιχειρείται η δημιουργία μιας διαδικτυακής εφαρμογής, η οποία θα προτείνει στο χρήστη έναν αριθμό ενδιαφερουσών ιστοσελίδων τις οποίες αντλεί από τα tweets που βρίσκονται στη home-timeline του χρήστη (tweets που έχουν ποστάρει αυτοί που ακολουθεί). Ποιες όμως θα είναι αυτές οι ενδιαφέρουσες ιστοσελίδες θα εξαρτάται αποκλειστικά από το τι αρέσει σε κάθε χρήστη; Αυτό που κάποιος θεωρεί ανούσιο tweet μπορεί για τον άλλον να είναι πολύτιμο. Για την καθημερινή επιλογή των ιστοσελίδων αυτών θα χρησιμοποιείται ένας αλγόριθμος μηχανικής μάθησης, ο οποίος θα ανιχνεύει τα ενδιαφέροντα κάθε χρήστη. Δόθηκε έμφαση στα tweets που

18 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 18 περιέχουν urls, καθώς περιέχουν έμμεσα περισσότερη πληροφορία προς αξιοποίηση. Το συγκεκριμένο σύστημα θα μπορεί να χρησιμοποιηθεί τόσο από κάποιον χρήστη που χρησιμοποιεί το Twitter και την εφαρμογή μας καθημερινά (ακόμα και αρκετές φορές ημερησίως), όσο και από κάποιον χρήστη που δεν έχει κάνει login στο λογαριασμό του Twitter του για μεγάλο χρονικό διάστημα(π.χ. μια εβδομάδα) και δε θέλει να χάσει πολύτιμο χρόνο ψάχνοντας ενδιαφέροντα για αυτόν tweets. 1.3 Συνοπτική Παρουσίαση του Συστήματος Το σύστημα Tweet for me!, Α Twitter web-application, που αναπτύχθηκε, εκτελεί τις παρακάτω εργασίες: Αντλεί όλα τα tweets από τη home-timeline ενός χρήστη. Ελέγχει ποια από αυτά τα tweets περιέχουν κάποιο url. Εξάγει όλες τις λέξεις από τα url. Βαθμολογεί το κάθε tweet ανάλογα με το περιεχόμενο του url που αυτό περιέχει. Προβάλλει στον χρήστη μία φορά την ημέρα τα καλύτερα για αυτόν tweets που περιείχαν κάποιο url. Δίνει τη δυνατότητα στο χρήστη να αξιολογήσει τα παραπάνω tweets θετικά ή αρνητικά. Όσα tweets αξιολογηθούν χρησιμοποιούνται για την εκμάθηση του αλγορίθμου μηχανικής μάθησης που χρησιμοποιήθηκε. Η εκμάθηση του αλγορίθμου προϋποθέτει την ύπαρξη μιας βάσης δεδομένων που κρατάει τις λέξεις που περιέχονταν στις ιστοσελίδες που αξιολογήθηκαν.

19 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 19 Εικόνα 1 - logo της εφαρμογής "Tweet for me!" 1.4 Οργάνωση Κεφαλαίων Η δομή που ακολουθείται στο παρόν κείμενο έχει ως εξής: Κεφάλαιο 1- Εισαγωγή. Στο κεφάλαιο αυτό περιγράφεται αναλυτικά το πρόβλημα που καλείται να λύσει η παρούσα διπλωματική εργασία. Και δίνεται μια ιδέα για το πώς πρόκειται να λυθεί το πρόβλημα και τι θα επακολουθήσει στη συνέχεια της Διπλωματικής. Κεφάλαιο 2- Υπόβαθρο και Βιβλιογραφική Έρευνα. Στο κεφάλαιο αυτό αναφέρεται τι υπάρχει ήδη στην αγορά παραπλήσιων διαδικτυακών εφαρμογών που ασχολούνται με το Twitter. Επιπλέον αναλύονται οι αλγόριθμοι που χρησιμοποιήθηκαν, τόσο σε θεωρητικό επίπεδο, όσο και πιο συγκεκριμένα στα πλαίσια της εργασίας. Κεφάλαιο 3- Τεχνολογίες. Αναφέρονται οι τεχνολογίες που χρησιμοποιήθηκαν για την υλοποίηση της διαδικτυακής εφαρμογής. Βλέπουμε λίγα παραπάνω για το Twitter και το API του, για τη γλώσσα προγραμματισμού Python που χρησιμοποιήθηκε και για το Django framework. Κεφάλαιο 4- Απαιτήσεις του συστήματος. Αναλύονται λεπτομερώς οι λειτουργικές και μη λειτουργικές απαιτήσεις του συστήματος. Ακολουθούν κάποια σενάρια χρήσης καθώς και κάποια screenshots από την εφαρμογή μας. Κεφάλαιο 5- Σχεδίαση συστήματος και Specifications. Στο κεφάλαιο αυτό παρουσιάζεται με λεπτομέρειες το σύστημα που αναπτύχθηκε στα πλαίσια της διπλωματικής. Παρουσιάζεται η αρχιτεκτονική του και περιγράφονται τα

20 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 20 υποσυστήματα από τα οποία αποτελείται. Επίσης αναφέρονται οι βιβλιοθήκες και το έτοιμο λογισμικό που χρησιμοποιείται από το σύστημα. Κεφάλαιο 6- Experimentation. Στο κεφάλαιο αυτό παρουσιάζονται τα πειράματα που έγιναν με σκοπό την αξιολόγηση και την επίδειξη καλής λειτουργίας του συστήματος. Επίσης δίνονται τα αποτελέσματα που προέκυψαν και κάποιες μετρήσεις της αποτελεσματικότητας του συστήματος. Κεφάλαιο 7- Συμπεράσματα και μελλοντική εργασία. Στο τελευταίο κεφάλαιο αξιολογούνται τα αποτελέσματα και προτείνονται βελτιώσεις και μελλοντικές επεκτάσεις. Παράρτημα Ι. Στο παράρτημα περιέχονται οδηγίες για την εγκατάσταση: o της Python, o διάφορων modules και packages σε αυτήν, o του Django, o διάφορων εξωτερικών εφαρμογών σε ένα Django project.

21 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 21 ΚΕΦΑΛΑΙΟ 2. Υπόβαθρο και Βιβλιογραφική Έρευνα 2.1 Υπάρχοντα Συστήματα - Παρόμοιες Εφαρμογές Οι περισσότερες από τις εφαρμογές που υπάρχουν σήμερα δηλωμένες στο Twitter υλοποιούν clients για διάφορες πλατφόρμες (π.χ. Windows, Linux, Mac) είτε έχουν μηχανισμούς για να ακολουθούν αυτόματα φίλους και να ποστάρουν tweets σε προκαθορισμένες στιγμές. Δεν υπάρχει κάποια εφαρμογή όμως, η οποία να υλοποιεί ακριβώς ότι υλοποιεί και η εφαρμογή της συγκεκριμένης εργασίας. Παρακάτω παρατίθενται κάποιες εφαρμογές παρόμοιας φιλοσοφίας με τη δική μας, οι οποίες προσπαθούν να εμφανίσουν στο χρήστη πληροφορίες από το Twitter σύμφωνα με τις προτιμήσεις του. Εφαρμογές δηλαδή που προσπαθούν να μάθουν τα ενδιαφέροντα του χρήστη και όχι απλά να προτείνουν στο χρήστη ποιους θα μπορούσε να ακολουθήσει απλά ελέγχοντας τα tags του, ποιους ακολουθεί ο ίδιος και ποιους εκείνοι με τη σειρά τους ακολουθούν Summify Πρόκειται για μια διαδικτυακή εφαρμογή στην οποία μπορεί κανείς να συνδέσει ταυτόχρονα τους λογαριασμούς του από το Twitter, το Facebook και το Google. Η εφαρμογή βρίσκει τις πιο ενδιαφέρουσες ιστορίες από τα τρία (3) κοινωνικά δίκτυα

22 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 22 και παρουσιάζει τις περιλήψεις τους στο χρήστη. Ο αλγόριθμος που χρησιμοποιείται από την εφαρμογή εκπαιδεύεται από τα εξής: 1. αν οι ιστορίες που επιλέγονται να διαβαστούν συνήθως προέρχονται από έναν συγκεκριμένο χρήστη 2. αν οι ιστορίες που επιλέγονται να διαβαστούν συνήθως προέρχονται από ένα συγκεκριμένο domain ή αν περιέχουν συνήθως κάποιες λέξεις κλειδιά. 3. Αν ο χρήστης προτιμάει για παράδειγμα τις ιστορίες από το Twitter αντίο εκείνων του Facebook. Εικόνα 2 - Εφαρμογή Summify Επιπλέον κάποιος μπορεί να επιλέξει να μην του ξαναεμφανιστούν ιστορίες προερχόμενες από κάποιον συγκεκριμένο χρήστη. Πρόκειται για την εφαρμογή που είναι πιο κοντά στη δικιά μας εφαρμογή Tweet for me! σε σχέση με τις υπόλοιπες εφαρμογές που παρατίθενται. Περισσότερα για αυτήν μπορεί να βρει κανείς στο [20].

23 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Paper.li Πρόκειται για μία διαδικτυακή εφαρμογή στην οποία ο χρήστης μπορεί να φτιάξει τη δική του ιστοσελίδα, χρησιμοποιώντας ως άρθρα, άρθρα που προέρχονται από urls από tweets της home-timeline του χρήστη. Τα άρθρα αυτά ταξινομούνται σε μία ομάδα προκαθορισμένων topics, όπως Τεχνολογία, Αθλητικά, Διασκέδαση κ.α. Ο χρήστης μπορεί να χαρακτηρίζει κάποια άρθρα ως ενδιαφέροντα ή μη και η εφαρμογή διαθέτει τον κατάλληλο μηχανισμό εκμάθησης. Ο χρήστης στη συνέχεια μπορεί να δημοσιεύει τη δική του εφημερίδα, ώστε να μπορούν να τη διαβάσουν και άλλοι χρήστες. Εικόνα 3 - Εφαρμογή Paper.li Για τη δημιουργία χρησιμοποιήθηκε Ruby, HTML/CSS, και Javascript. Αντιπροσωπευτικό του μεγέθους της εφαρμογής είναι ότι η ομάδα δημιουργίας και συντήρησης του site αποτελείται από ανθρώπους 10 εθνικοτήτων και έχει γραφεία διάσπαρτα σε Ευρώπη, Αμερική και Ασία. Περισσότερα για αυτήν μπορεί να βρει κανείς στο [21].

24 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Twalala Πρόκειται για μια free διαδικτυακή εφαρμογή, η οποία δίνει τη δυνατότητα στο χρήστη να «φιμώνει» ανθρώπους που ακολουθούν ή να επιλέγει να μη του εμφανίζονται tweets που περιέχουν κάποιες συγκεκριμένες λέξεις ή φράσεις. Εικόνα 4 - Εφαρμογή Twalala Περισσότερα για αυτήν μπορεί να βρει κανείς στο [22] Tweetvisor Πρόκειται για μια δωρεάν διαδικτυακή εφαρμογή η οποία μεταξύ άλλων δίνει την επιλογή στο χρήστη να βρίσκει ανθρώπους ή tags χρησιμοποιώντας και πάλι συγκεκριμένες λέξεις ή φράσεις. Χρησιμοποιείται AJAX (Asynchronous JavaScript and XML) για τη δημιουργία του client.

25 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 25 Εικόνα 5 - Εφαρμογή Tweetvisor Περισσότερα για αυτήν μπορεί να βρει κανείς στο [23] Green Tweets Πρόκειται για μία μηχανή αναζήτησης ουσιαστικά, η οποία ψάχνει ανάμεσα σε όλα τα δημόσια tweets για να βρει tweets που έχουν σχέση με περιβάλλον και πράσινη ανάπτυξη. Βασίζεται μόνο στο περιεχόμενο των tweets και πραγματοποιεί μια σημασιολογική ανάλυση φυσικής γλώσσας (semantic natural language analysis), αντί να ψάχνει απλά για λέξεις κλειδιά.

26 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 26 Εικόνα 6 - Εφαρμογή Green Tweets Περισσότερα για αυτήν μπορεί να βρει κανείς στο [24]. 2.2 Μηχανική Εκμάθηση Η μηχανική μάθηση (Machine learning) είναι μια υποπεριοχή της τεχνητής νοημοσύνης και αφορά αλγορίθμους και μεθόδους, οι οποίες επιτρέπουν στους υπολογιστές/μηχανές να «μαθαίνουν». Με τη μηχανική μάθηση καθίσταται εφικτή η κατασκευή προσαρμόσιμων (adaptable) προγραμμάτων υπολογιστών, τα οποία λειτουργούν με βάση την αυτοματοποιημένη ανάλυση συνόλων δεδομένων και όχι τη διαίσθηση των μηχανικών που τα προγραμμάτισαν. Ο όρος μάθηση αναφέρεται στην ικανότητα του υπολογιστή να επιλύει πιο αποτελεσματικά το ίδιο ή κάποιο παρόμοιο πρόβλημα κάθε επόμενη φορά που θα του τεθεί προς επίλυση. Η μηχανική μάθηση επικαλύπτεται σημαντικά με τη στατιστική, αφού και τα δύο πεδία μελετούν την ανάλυση δεδομένων.

27 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 27 Οι αλγόριθμοι μηχανικής μάθησης κατηγοριοποιούνται ανάλογα με το επιθυμητό αποτέλεσμα του αλγορίθμου ή καλύτερα την ανάδραση του συστήματος. Οι συνηθέστερες κατηγορίες είναι οι εξής: Επιτηρούμενη μάθηση (ή επιβλεπόμενη μάθηση ή μάθηση με επίβλεψη ή supervised learning). Ο αλγόριθμος κατασκευάζει μια συνάρτηση που απεικονίζει δεδομένες εισόδους σε γνωστές, επιθυμητές εξόδους (σύνολο εκπαίδευσης), με απώτερο στόχο τη γενίκευση της συνάρτησης αυτής και για εισόδους με άγνωστη έξοδο (σύνολο ελέγχου). Συνήθως επιλύουν προβλήματα κατηγοριοποίησης. Μη επιτηρούμενη μάθηση (ή ανεπίβλεπτη μάθηση ή μάθηση χωρίς επίβλεψη ή unsupervised learning). Εδώ ο αλγόριθμος κατασκευάζει ένα μοντέλο για κάποιο σύνολο εισόδων χωρίς να γνωρίζει επιθυμητές εξόδους για το σύνολο εκπαίδευσης. Συνήθως χρησιμοποιούνται στην ομαδοποίηση δεδομένων. Ενισχυτική μάθηση (reinforcement learning), όπου ο αλγόριθμος μαθαίνει μια στρατηγική ενεργειών για μια δεδομένη παρατήρηση. Τέτοιοι αλγόριθμοι βρίσκουν εφαρμογή στη θεωρία παιγνίων ή προβλήματα οικονομικής φύσης. Η ανάλυση των αλγόριθμων μηχανικής μάθησης είναι ένας κλάδος της στατιστικής που ονομάζεται θεωρία μάθησης. 2.3 Αλγόριθμος μηχ. μάθησης (Naive Bayes και Fisher Method) Η ανάλυση του αλγόριθμου μηχανικής μάθησης που ακολουθεί είναι προσανατολισμένη στην υλοποίηση του στα πλαίσια της εφαρμογής Tweet for me!. Η ακριβής υλοποίηση του αλγορίθμου, γραμμένη σε Python και προορισμένη για τη πλατφόρμα σχεδίασης Django φαίνεται στο κεφάλαιο 5. Στα πλαίσια δημιουργίας της συγκεκριμένης εφαρμογής δοκιμάσθηκαν δύο αλγόριθμοι. Στόχος και των δύο είναι ο υπολογισμός του κατά πόσο μια ιστοσελίδα είναι ενδιαφέρουσα για το χρήστη ή διαφορετικά, αν ανήκει στη κατηγορία good.

28 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 28 Οι αλγόριθμοι μαθαίνουν τι θεωρεί ο χρήστης ενδιαφέρον και τι όχι με τη πάροδο του χρόνου, καθώς ο χρήστης χαρακτηρίζει ιστοσελίδες που του υποδεικνύονται από την εφαρμογή ως ενδιαφέρουσες ή αδιάφορες. Ο classifier είναι έτσι σχεδιασμένος, ώστε να ξεκινάει κάνοντας πολύ αβέβαιες εκτιμήσεις και να αυξάνεται η σιγουριά του καθώς εκπαιδεύεται για το ποια features είναι ενδιαφέροντα. Δημιουργούνται ξεχωριστά datasets δεδομένων για κάθε χρήστη. Με αυτό τον τρόπο ουσιαστικά ο κάθε χρήστης έχει το δικό του classifier. O classifier που χρησιμοποιείται χρειάζεται να χρησιμοποιήσει κάποια features (=χαρακτηριστικά) για να μπορεί να υπολογίζει κατά πόσο μια ιστοσελίδα είναι ενδιαφέρουσα. Τα features αυτά στην υλοποίηση μας είναι οι λέξεις που αντλούνται από μια σελίδα ή την περίληψη της. Εναλλακτικά τα features αυτά θα μπορούσαν να είναι παραδείγματος χάρη ολόκληρες φράσεις. Έπειτα από ένα χρονικό διάστημα ο αλγόριθμος είναι σε θέση να μάθει ότι κάποιες λέξεις είναι πιθανότερο να εμφανιστούν σε κάποια ενδιαφέρουσα ιστοσελίδα από ό,τι σε κάποια μη ενδιαφέρουσα. Για κάθε χρήστη αποθηκεύεται το πόσες φορές εμφανίστηκε ένα feature σε μία συγκεκριμένη κατηγορία(good/bad) καθώς και το πλήθος των ιστοσελίδων που χαρακτηρίστηκαν ως good ή bad. Όπως γνωρίζουμε μια πιθανότητα εκφράζεται με έναν αριθμό μεταξύ 0 και 1. Μπορούμε να υπολογίσουμε την πιθανότητα ότι μία λέξη εμπίπτει σε μία συγκεκριμένη κατηγορία απλά διαιρώντας το πλήθος των φορών που εμφανίστηκε το συγκεκριμένο feature στη συγκεκριμένη κατηγορία με το πλήθος των ιστοσελίδων που χαρακτηρίστηκαν ότι ανήκουν στη συγκεκριμένη κατηγορία. Αυτή είναι η λεγόμενη δεσμευμένη πιθανότητα και γράφεται Pr(A B). Προκειμένου να αποφύγουμε τα προβλήματα που δημιουργούνται από το γεγονός ότι ο αλγόριθμος, στην αρχή της εκπαίδευσης του, είναι υπερβολικά ευαίσθητος, χρησιμοποιούμε μια υποθετική πιθανότητα ap (assumed probability). Έστω ότι επιλέγαμε ap=0.5. Με τη χρήση της όλες οι λέξεις ξεκινάνε με μια πιθανότητα 0.5 να

29 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 29 ανήκουν σε κάθε μια από τις κατηγορίες. Παραδείγματος χάρη, αν πάρουμε μόνο μια ιστοσελίδα, που περιέχει τη λέξη python και αυτή η ιστοσελίδα χαρακτηριστεί από το χρήστη ως bad, τότε η πιθανότητα της λέξης python γίνεται 0.75 για bad και όχι 1(δεδομένου ότι δεν είχαμε συναντήσει προηγουμένως τη λέξη σε κάποια ενδιαφέρουσα ιστοσελίδα). Στην υλοποίηση του αλγορίθμου που χρησιμοποιήθηκε η υποθετική πιθανότητα λήφθηκε ίση με 0,38 μετά από διάφορες δοκιμές. Με τον τρόπο αυτό ο αλγόριθμος γίνεται ακόμα πιο επιφυλακτικός όσο αφορά τον χαρακτηρισμό μίας ιστοσελίδας. Χρειαζόμαστε τώρα έναν τρόπο με τον οποίο θα μπορέσουμε, μέσα από το συνδυασμό πιθανοτήτων που αφορούν μεμονωμένες λέξεις, να οδηγηθούμε στην πιθανότητα ένταξης μιας ιστοσελίδας σε μια συγκεκριμένη κατηγορία. Για το σκοπό αυτό δοκιμάσθηκαν 2 διαφορετικοί τρόποι ταξινόμησης. Η περιγραφή των δύο παρακάτω αλγορίθμων ταξινόμησης βασίζεται σε μεγάλο βαθμό στην ανάλυση του κεφαλαίου 6 του βιβλίου Collective Intelligence Naive Bayes Αυτή η μέθοδος υποθέτει ότι οι πιθανότητες που συνδυάζονται είναι ανεξάρτητες μεταξύ τους. Υποθέτει δηλαδή ότι η πιθανότητα μιας λέξης που εμφανίζεται σε μια ιστοσελίδα να ανήκει σε μία συγκεκριμένη κατηγορία δε σχετίζεται με τη πιθανότητα των υπολοίπων λέξεων να ανήκουν στην ίδια κατηγορία. Αν και αυτό μπορεί να μην ισχύει ακριβώς, στην πραγματική ζωή η συγκεκριμένη μέθοδος έχει αποδειχθεί πολύ αποτελεσματική στην ταξινόμηση εγγράφων (ιστοσελίδων στη συγκεκριμένη περίπτωση). Η υπόθεση ότι οι πιθανότητες είναι ανεξάρτητες μας επιτρέπει να υπολογίσουμε τη συνολική πιθανότητα μιας ιστοσελίδας πολλαπλασιάζοντας όλες τις επί μέρους πιθανότητες μαζί. Για παράδειγμα, ας υποθέσουμε ότι η λέξη Python εμφανίζεται στο 20% των αδιάφορων ιστοσελίδων Pr(Python bad )= και η λέξη casino εμφανίζεται στο 80% των αδιάφορων ιστοσελίδων Pr(casino bad )=0.8. Η ανεξάρτητη

30 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 30 πιθανότητα των 2 λέξεων να εμφανίζονται σε μια αδιάφορη ιστοσελίδα είναι 0.8*0.2=0.16. Υπολογίσαμε με αυτόν τον τρόπο την πιθανότητα. Χρειαζόμαστε την, δηλαδή, σε μια υπάρχουσα ιστοσελίδα, ποια είναι πιθανότητα να ανήκει αυτή σε μια συγκεκριμένη κατηγορία; Για την απάντηση στο παραπάνω ερώτημα χρησιμοποιούμε το θεώρημα Bayes, όπως αυτό διατυπώνεται παρακάτω: Στην περίπτωση μας: Όπου είναι η πιθανότητα μια τυχαία επιλεγμένη ιστοσελίδα να ανήκει στην κατηγορία, δηλαδή το πλήθος των ιστοσελίδων που χαρακτηρίστηκαν ως ενδιαφέρουσες ή αδιάφορες προς το συνολικό αριθμό των ιστοσελίδων που χαρακτηρίστηκαν ως οτιδήποτε. Θα μπορούσαμε να υπολογίσουμε την πιθανότητα, αλλά δε μας ενδιαφέρει να υπολογίσουμε μια πραγματική πιθανότητα καθώς η πιθανότητα είναι η ίδια ανεξαρτήτως της κατηγορίας για την οποία γίνεται ο υπολογισμός. Επομένως μπορούμε να αγνοήσουμε τον όρο και να υπολογίσουμε μόνο το γινόμενο Pr(Ιστοσελίδα good )* Pr(Category) Fisher Method Πρόκειται για μία μέθοδο παρόμοιας φιλοσοφίας με αυτή του Naïve Bayes, αρκετά πιο πολύπλοκης, αλλά με καλύτερα αποτελέσματα. Η μέθοδος Fisher υπολογίζει την πιθανότητα μίας κατηγορίας για κάθε feature μιας ιστοσελίδας. Στη συνέχεια συνδυάζει τις πιθανότητες και εξετάζει αν το set των πιθανοτήτων είναι περισσότερο ή λιγότερο πιθανό από ένα τυχαίο set. Η μέθοδος επιστρέφει μία πιθανότητα για κάθε κατηγορία. Είναι σαφώς πιο πολύπλοκη, αλλά επιτρέπει μεγαλύτερη ευελιξία και καλύτερα αποτελέσματα σε πολλές περιπτώσεις.

31 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 31 Για να εξηγήσουμε πώς λειτουργεί πρακτικά η συγκεκριμένη μέθοδος, θα ξεκινήσουμε υπολογίζοντας πόσο πιθανό είναι μία ιστοσελίδα να ταιριάζει σε μία κατηγορία, δεδομένου ότι ένα συγκεκριμένο feature βρίσκεται σε αυτή. Υπολογίζουμε δηλαδή τη. Αν η λέξη casino εμφανίζεται σε 500 ιστοσελίδες και οι 498 από αυτές τοποθετούνται στην κατηγορία bad, τότε η λέξη casino θα πάρει μια βαθμολογία πολύ κοντά στο 1. Ο τρόπος υπολογισμού της προαναφερθείσας πιθανότητας είναι: ό ά έ ί ό ό ό ό ά ό ό Αξίζει να αναφερθεί ότι ο συγκεκριμένος υπολογισμός δε λαμβάνει υπόψη το ενδεχόμενο να έχει εντάξει κανείς πολύ περισσότερες ιστοσελίδες στη μία κατηγορία σε σχέση με την άλλη. Αν για παράδειγμα πολύ λίγες ιστοσελίδες χαρακτηριστούν ως bad και μία λέξη εμφανίζεται σχεδόν σε όλες τις «κακές» ιστοσελίδες, αυτή θα έχει μια αρκετά υψηλή πιθανότητα χαρακτηρισμού ως «κακή», παρόλο που μπορεί να είναι εξίσου «καλή». Άρα η μέθοδος έχει καλύτερα αποτελέσματα αν υποθέσουμε ότι ο χρήστης θα αξιολογεί περίπου ίδιο αριθμό ιστοσελίδων σε κάθε κατηγορία. Για να επιτευχθεί η ζητούμενη κανονικοποίηση, η μέθοδος fisher υπολογίζει 3 πράγματα: 1. για την κατηγορία 2. Freqsum = το άθροισμα των Pr(feature category) για όλες τις κατηγορίες 3. Με τη υπολογίζεται η πιθανότητα ότι ένα έγγραφο με ένα συγκεκριμένο χαρακτηριστικό ανήκει σε μία συγκεκριμένη κατηγορία, υποθέτοντας ότι θα υπάρχει ένας παρόμοιος αριθμός εγγράφων σε κάθε κατηγορία. Έχει αποδειχτεί ότι είναι καλύτερο να χρησιμοποιείται μια «ζυγισμένη» υποθετική πιθανότητα ap.

32 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 32 Αφού υπολογίστηκε με αυτόν τον τρόπο η πιθανότητα για κάθε ένα feature ξεχωριστά, πρέπει τώρα να συνδυαστούν οι πιθανότητες όλων των ανεξάρτητων χαρακτηριστικών ώστε να καταλήξουμε σε μία συνολική πιθανότητα για το έγγραφο. Μπορούμε να πολλαπλασιάσουμε όλες τις επιμέρους πιθανότητες μαζί, παίρνοντας ως αποτέλεσμα μία συνολική πιθανότητα. Αυτή η πιθανότητα δε θα είναι η πραγματική πιθανότητα, δεδομένου ότι τα χαρακτηριστικά δεν είναι ανεξάρτητα, αλλά μας αρκεί ώστε να κάνουμε μια εκτίμηση του πόσο ενδιαφέρουσα είναι μία ιστοσελίδα. Σύμφωνα με τη Fisher Method αφού πολλαπλασιάσουμε όλες τις πιθανότητες μαζί, υπολογίζουμε το φυσικό λογάριθμο του αποτελέσματος και στη συνέχεια πολλαπλασιάζουμε ό,τι προκύψει με -2. Ο Fisher απέδειξε ότι αν οι πιθανότητες ήταν τυχαίες και ανεξάρτητες, τότε το αποτέλεσμα του υπολογισμού θα ταίριαζε με μία κατανομή χ 2. Όπως θα περίμενε κανείς, μια ιστοσελίδα, που ανήκει σε μία κατηγορία, έχει πολλά features με υψηλές πιθανότητες. Εισάγοντας το αποτέλεσμα του υπολογισμού fisher στην αντίστροφη χ 2 συνάρτηση παίρνουμε την πιθανότητα ότι ένα τυχαίο σετ πιθανοτήτων επιστρέφει έναν υψηλό αριθμό χαρακτηριστικών. Τα αποτελέσματα που προκύπτουν είναι ενδεικτικά του βαθμού στον οποίο ταιριάζει ένα έγγραφο σε μία κατηγορία, δεν αποτελούν όμως σε καμία περίπτωση πραγματικές πιθανότητες. Όσο αφορά τη χρήση της υποθετικής πιθανότητας, να αναφερθεί ότι όσο αυτή αυξάνεται, αυξάνεται και το αποτέλεσμα της τελικής αξιολόγησης. Πάντα όμως το αποτέλεσμα παραμένει ανάμεσα στα επίπεδα του 0 και 1. Η χρήση υποθετικής πιθανότητας ίσης με 0.38 βοηθάει στο να έχουμε λιγότερες αξιολογήσεις θετικών ιστοσελίδων ίσες με 1. Περισσότερα για τη μέθοδο Fisher μπορεί κανείς να δει στην αντίστοιχη παράγραφο του κεφαλαίου 5, όπου υπάρχει ο ακριβής αλγόριθμος υλοποίησης της. 2.4 Συστήματα συστάσεων (Recommender Systems) Με τον όρο Recommender System (στη βιβλιογραφία εμφανίζεται και ως recommendation systems, recommendation engines, recommendation frameworks ή recommendation platforms) εννοούμε ένα σύστημα που στόχο έχει να προτείνει

33 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 33 πληροφορίες ή κοινωνικά στοιχεία που πιθανότατα ενδιαφέρουν τον χρήστη. Τέτοιου είδους πληροφορίες μπορεί να είναι ταινίες, τηλεοπτικά προγράμματα, βιβλία, μουσική, εικόνες, ιστοσελίδες κ.α. Ενώ, με τον όρο κοινωνικά στοιχεία εννοούμε στοιχεία όπως events, groups, people ή tweets που το recommender system μπορεί να προτείνει. Η εφαρμογή της συγκεκριμένης διπλωματικής εργασίας αποτελεί ένα τέτοιο σύστημα. Αυτό που ουσιαστικά κάνει ένα recommender system είναι να προσπαθεί να μαντέψει πόσο θα άρεσε στο χρήστη μια πληροφορία ή ένα κοινωνικό στοιχείο το οποίο ο ίδιος δεν έχει βαθμολογήσει στο παρελθόν. Για να το επιτύχει αυτό συγκρίνει το προφίλ του χρήστη με κάποια χαρακτηριστικά. Στη συγκεκριμένη εφαρμογή, παραδείγματος χάρη, το σύστημα προσπαθεί να μαντέψει ποια tweets θα προτιμούσε να διαβάσει ο χρήστης σύμφωνα με τις έως τώρα προτιμήσεις του. Η λειτουργία τους βασίζεται στην ιστορία αλληλεπίδρασης του χρήστη αλλά και στην ομοιότητα του χρήστη με άλλους χρήστες. Το πώς το σύστημα θα μάθει τις προτιμήσεις του χρήστη μπορεί να γίνει με πολλούς διαφορετικούς τρόπους. Κάποιοι από τους δυνατούς τρόπους είναι: Να ζητηθεί από το χρήστη για να βαθμολογήσει ένα αντικείμενο με βαθμούς εντός μίας κλίμακας. Να ζητηθεί από το χρήστη να δημιουργήσει μια λίστα από αντικείμενα που του αρέσουν. Να παρουσιάζει στον χρήστη 2 ή 3 αντικείμενα και να του ζητά να επιλέξει το καλύτερο. Να ζητηθεί από το χρήστη να ταξινομήσει μια συλλογή αντικειμένων ανάλογα με το πόσο κοντά βρίσκονται στα ενδιαφέροντά του. Οι παραπάνω τρόποι απαιτούν ενεργή και άμεση συμμετοχή του χρήστη στην «εκμάθηση» του συστήματος. Είναι όμως δυνατό και πολλές φορές προτιμότερο το σύστημα να μπορεί να μαθαίνει τις προτιμήσεις του χρήστη χωρίς να του ζητήσει να χρειαστεί να

34 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 34 παρεκκλίνει στο ελάχιστο από τη κανονική του δραστηριότητα. Τρόποι για την επίτευξη του παραπάνω είναι: Η διατήρηση ενός αρχείου αντικειμένων που αγοράζει ο χρήστης online. Η ανάλυση των στοιχείων ή των χρηστών που βλέπει ο χρήστης, καθώς και η συχνότητα με την οποία βλέπει το καθένα. Η παρατήρηση των αντικειμένων που βλέπει ένας χρήστης σε ένα online κατάστημα. Η απόκτηση μιας λίστας αντικειμένων που ο χρήστης άκουσε, είδε ή παρακολούθησε στον υπολογιστή του. Η ανάλυση του κοινωνικού δικτύου του χρήστη (social network) και η εξερεύνηση παρόμοιων likes/dislikes ή tweets. Τα recommender systems αποτελούν μία χρήσιμη εναλλακτική των αλγορίθμων αναζήτησης εφόσον βοηθούν τους χρήστες να ανακαλύψουν αντικείμενα που πιθανώς δε θα έβρισκαν μόνοι τους ή θα έβρισκαν ξοδεύοντας πολύτιμο χρόνο. Στην εφαρμογή μας Tweet for me! η εκμάθηση των προτιμήσεων του χρήστη έγινε ζητώντας από το χρήστη να χαρακτηρίσει όποιες ιστοσελίδες (από αυτές που του προτείνονται) ως ενδιαφέρουσες ή μη ενδιαφέρουσες. 2.5 Εξόρυξη και ανάλυση δεδομένων από το Twitter Παρακάτω παρατίθενται ενδεικτικά επτά (7) άλλες επιστημονικές δημοσιεύσεις σχετικές με το αντικείμενο της εξόρυξης και ανάλυσης δεδομένων από το Twitter. Και οι επτά είναι δημοσιεύσεις των τελευταίων δύο ετών, πράγμα λογικό αν αναλογιστεί κανείς ότι και το ίδιο το Twitter μετρά μόλις 5 χρόνια ζωής. Mining Twitter in the Cloud: A Case Study Στο [25] εξετάζεται κατά πόσο μπορεί το cloud computing και πιο συγκεκριμένα οι υπηρεσίες cloud του Amazon να βοηθήσουν στην άντληση δεδομένων από το Twitter και πόσο καλά αποτελέσματα μπορεί να παρέχει ο αλγόριθμος PageRank στη αξιολόγηση και κατάταξη χρηστών του Twitter. Για την ανάλυση αυτή χρησιμοποιήθηκαν στο έπακρο οι δυνατότητες του cloud computing αντλώντας δεδομένα για 50 εκατομμύρια χρήστες.

35 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 35 A Study on Detecting Patterns in Twitter Intra-topic User and Message Clustering Το [26] χρησιμοποιεί τα αποτελέσματα και το framework ενός άλλου paper, σχετικό με ανάλυση περιεχομένου. Στόχος του είναι να εξάγει κρυμμένες ιδιότητες που περιέχονται στα tweets. Αυτό που πετυχαίνει στο τέλος είναι η εύρεση των θεμάτων (topics), που ενδιαφέρουν τον χρήστη. Massive Social Network Analysis: Mining Twitter for Social Good Στο [27] με τη βοήθεια ενός εργαλείου γραφικού χαρακτηρισμού (Graph Characterization Toolkit) πραγματοποιείται ανάλυση δημόσιων δεδομένων του Twitter. Ουσιαστικά αναλύεται η αλληλεπίδραση μεταξύ χρηστών. Ποιοι και πόσοι χρήστες χρησιμοποιούν δεδομένα προερχόμενα από άλλους χρήστες. Τα παραπάνω απεικονίζονται γραφικά με μορφή δεντρική. Authorship Attribution for Twitter in 140 characters or less Στόχος του paper [28} είναι η απόδοση πατρότητας σε ένα tweet. Είχε αποδειχτεί στις αρχές του 21 ου αιώνα ότι για να υπολογιστεί με ασφάλεια ο δημιουργός ενός έγγραφου, το τελευταίο θα έπρεπε να αποτελείται από τουλάχιστον 250 λέξεις. Όμως η έξαρση του ηλεκτρονικού εγκλήματος καθώς και το γεγονός ότι ένα μήνυμα στο Twitter περιέχει το πολύ 140 χαρακτήρες κατέστησαν αναγκαία την εύρεση άλλων μεθόδων απόδοσης πατρότητας. Στο paper παρουσιάζεται μια μέθοδος που πετυχαίνει το ζητούμενο αρκεί να έχει τουλάχιστον 120 tweets ανά χρήστη. Mining Pharmaceutical Spam from Twitter Στο paper [29] παρουσιάζεται μια μέθοδος εφαρμογής τεχνικών και εργαλείων εξόρυξης δεδομένων, ώστε να ανιχνεύονται tweets με spam περιεχόμενο σχετικό με φαρμακευτικά προϊόντα. Γίνεται σύγκριση 2 classifiers, του Naïve Bayes και του classifier που κάνει χρήση δέντρων απόφασης J48. Αποδεικνύει ότι ο δεύτερος έχει καλύτερα αποτελέσματα. Πρόκειται για την πιο σχετική βιβλιογραφική αναφορά με την παρούσα διπλωματική εργασία.

36 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 36 Business Intelligence From Twitter For The Television Media: A Case Study Στο paper [30] γίνεται μια ανάλυση δημόσια διαθέσιμων tweets, τα οποία ανέβηκαν την ώρα προβολής του πρώτου επεισοδίου ενός δημοφιλούς show. Χρησιμοποιήθηκαν τεχνικές εξόρυξης κειμένου, ώστε να απαντηθούν ερωτήματα όπως τι οδήγησε στη δημοτικότητα του show και τι είδους ήταν οι θεατές που πόσταραν tweets κατά τη διάρκεια του show. Τα παραπάνω μπορούν να χρησιμοποιηθούν για ακόμα πιο στοχευμένο έμμεσο marketing μέσω των τηλεοπτικών προγραμμάτων. Natural Language Processing to the Rescue?: Extracting Situational Awareness Tweets During Mass Emergency Στα πλαίσια του paper [30] κατασκευάζεται ένας classifier, ο οποίος ανιχνεύει tweets τα οποία μπορούν να προδώσουν μία κατάσταση έκτακτης ανάγκης και να βοηθήσουν έτσι έμμεσα στην καλύτερη αντιμετώπισή της.

37 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 37 ΚΕΦΑΛΑΙΟ 3. Τεχνολογίες 3.1 Γενικά για το Twitter Το Twitter είναι σύμφωνα με τους εμπνευστές του μια κοινωνική microblogging υπηρεσία και όχι ένα κοινωνικό δίκτυο (social network). Ονομάζεται κοινωνική, επειδή επιτρέπει στους χρήστες να έρθουν σε επαφή και να αλληλεπιδράσουν μεταξύ τους. Ονομάζεται microblogging, διότι κανείς μπορεί να γράψει την κατάστασή του μέσα σε 140 χαρακτήρες και χωρίς εικόνες ή άλλα μέσα (βίντεο, ήχος κτλ). Έτσι γίνεται πολύ πιο εύκολο να γράψει κάτι, από το να ετοιμάσει ένα blog post. Το Twitter επιτρέπει στους χρήστες να δημοσιεύουν διάφορα μηνύματα (που ονομάζονται tweets= τιτιβίσματα) και να ακολουθούν αυτά που δημοσιεύουν άλλοι χρήστες. Ξεκίνησε ως πείραμα το 2006 και ιδρύθηκε το Ο αριθμός των χρηστών στο Twitter αυξάνεται συνεχώς από τότε και κορυφώθηκε το Μάρτιο 2009 όταν έφτασε ρυθμό αύξησης νέων χρηστών της τάξης του 13% ανά μήνα. Όπως ήδη αναφέρθηκε στην εισαγωγή ο συνολικός αριθμός των χρηστών τον αυτή τη στιγμή (Μάρτιος του 2012) εκτιμάται ότι είναι πάνω από 300 εκατομμύρια, τα ημερήσια tweets ξεπερνάν τα 90 εκατομμύρια, ενώ καθημερινά το Twitter διαχειρίζεται περίπου 1,6 δισεκατομμύρια αιτήματα αναζήτησης. Αυτή την στιγμή υπάρχουν περίπου Έλληνες Twitterers.

38 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 38 Κάποια βασικά στοιχεία που πρέπει κανείς να γνωρίζει: Tweet ονομάζεται το κείμενο που ανεβάζει κάποιος στο Twitter. Twitterers είναι όλοι όσοι χρησιμοποιούν το Twitter. Followers είναι όσοι μας ακολουθούν (διαβάζουν τα μηνύματα που γράφουμε) Following είναι όσοι ακολουθούμε εμείς (διαβάζουμε στην κεντρική μας σελίδα αυτά που γράφουν) Για να απαντήσουμε σε κάποιον βάζουμε μπροστά από το username του (mention). Βάζουμε #θέμα όταν θέλουμε να πούμε κάτι για ένα συγκεκριμένο θέμα. (hashtag). Όταν θέλουμε να προωθήσουμε κάποιο tweet που μας φαίνεται ενδιαφέρον και πιστεύουμε ότι θα φανεί χρήσιμο στους άλλους κάνουμε ReTweet βάζοντας Twitter API Για την άντληση των tweets των χρηστών χρησιμοποιήθηκε το REST API (Application programming interface) του Twitter. Με τη βοήθεια του REST API η εφαρμογή μας μπορεί να αλληλεπιδρά με το Twitter. Οι προγραμματιστές χρησιμοποιούν το Twitter API για να δημιουργήσουν εφαρμογές, websites, ή άλλα projects τα οποία θα είναι σε θέση να αλληλεπιδρούν με το Twitter. Αναλυτικότερα κάποια εφαρμογή μπορεί μέσω του API να ποστάρει νέα tweets, να σβήνει tweets, να χαρακτηρίσει tweets ως favorite, να δει tweets από οποιαδήποτε timeline (home ή public), να κάνει σύνθετες αναζητήσεις από tweets ή users και πολλά άλλα. Ουσιαστικά μια εφαρμογή χρησιμοποιώντας το API του Twitter να κάνει ότι ακριβώς και ένας χρήστης απλά πιθανότερα γρηγορότερα λόγω του αυτοματοποιημένου τρόπου. Τα προγράμματα επικοινωνούν με το Twitter API μέσω του πρωτοκόλλου HTTP. Στη συγκεκριμένη εργασία χρησιμοποιήθηκε η version 1 του API. Περισσότερα για το REST API μπορεί κανείς να βρει στο:

39 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 39 Η εφαρμογή μας έκανε κυρίως χρήση της εντολής GET statuses/home_timeline του REST API. Με τον τρόπο αυτό αντλούσαμε τα tweets που εμφανιζόταν στη home-timeline κάθε χρήστη. Αξίζει να σημειωθεί ότι το REST API θέτει κάποιους περιορισμούς στην άντληση των tweets. Οι κυριότεροι από αυτούς είναι οι εξής: Ο αριθμός των tweets που μπορούμε να αντλήσουμε κάθε φορά περιορίζεται στα requests ανά ώρα, αν τα αιτήματα αυτά προέρχονται από μη αυθεντικοποιημένη πηγή. Οι κλήσεις αυτές καταμετρώνται με τη βοήθεια της δημόσιας IP του υπολογιστή που κάνει τις κλήσεις. 350 OAuth κλήσεις ανά ώρα, αν τα αιτήματα αυτά προέρχονται από αυθεντικοποιημένη πηγή. Οι κλήσεις αυτές καταμετρώνται με τη βοήθεια του oauth_token. (Σε αυτή τη περίπτωση κατατάσσεται η εφαρμογή μας) Για να μας δοθεί άδεια χρήσης του Twitter API χρειάστηκε να δηλώσουμε την εφαρμογή μας. Στη συνέχεια το Twitter μας έδωσε ένα consumer key και secret. Αυτά χρησιμοποιούνται ως υπογραφή σε κάθε κλήση της εφαρμογής μας προς το API Έλεγχος ταυτότητας & Εξουσιοδότηση(Authentication & Authorization) Το REST API προσφέρει 5 διαφορετικούς τρόπους ελέγχου της ταυτότητας και εξουσιοδότησης σε μια εφαρμογή να αλληλεπιδράσει με το Twitter. Εμείς χρησιμοποιήσαμε τον τρόπο που προορίζεται για χρήση από web applications. Η αυθεντικοποίηση και εξουσιοδότηση σε αυτή τη περίπτωση γίνεται μέσω του πρωτοκόλλου OAuth. Το OAuth είναι ένα ανοιχτό πρότυπο για εξουσιοδότηση. Επιτρέπει στους χρήστες να μοιράζονται προσωπικά τους δεδομένα (φωτογραφίες, βίντεο, tweets, λίστες επαφών κ.α.) που είναι αποθηκευμένα σε ένα site (π.χ. Twitter) με ένα άλλο site (π.χ. η εφαρμογή μας) χωρίς να χρειάζεται να δώσουν στο δεύτερο site τους

40 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 40 κωδικούς τους. Αντί για το password δίνουν κάποια tokens (=κουπόνια, μάρκες). Τα tokens αυτά μπορεί να παρέχουν συγκεκριμένα δικαιώματα πρόσβασης και για περιορισμένη χρονική διάρκεια. Περισσότερα για το πώς θα γίνεται η διαδικασία αυθεντικοποίησης και login στην εφαρμογή μας στο κεφάλαιο Python Η γλώσσα προγραμματισμού που χρησιμοποιήθηκε για τη δημιουργία της εφαρμογής μας είναι η Python. Πρόκειται για μία αντικειμενοστραφή γλώσσα υψηλού επιπέδου, η οποία δημιουργήθηκε το 1990, αλλά άρχισε να χρησιμοποιείται ευρύτατα την τελευταία δεκαετία. Χαρακτηρίζεται για την καλή αναγνωσιμότητα του κώδικά της καθώς και την ευκολία στη χρήση και στην εκμάθηση της. Χαρακτηριστικό της επίσης αποτελούν οι πολλές έτοιμες βιβλιοθήκες που διευκολύνουν ιδιαίτερα αρκετές συνηθισμένες εργασίες. Η διαχείριση της καθώς και η διανομή του κώδικα γίνονται από τον μη κερδοσκοπικό οργανισμό Python Software Foundation. Στα πλαίσια της εργασίας χρησιμοποιήθηκε η έκδοση 2.7 και όχι οι νεότερες 3.0, ώστε να υπάρχει συμβατότητα με το Django framework. Ένα σημαντικό χαρακτηριστικό της γλώσσας είναι η χρήση κενών διαστημάτων (whitespace) για τον διαχωρισμό των συντακτικών δομών που προγράμματος, σε αντίθεση με την πρακτική άλλων γλωσσών όπου για τον ίδιο σκοπό χρησιμοποιούνται ειδικά σύμβολα (πχ αγκύλες). Αυτό, σε συνδυασμό με το ότι χρησιμοποιεί πλήρεις αγγλικές λέξεις στη θέση συμβόλων, καθιστούν τον κώδικα της ευανάγνωστο από όσους έχουν βασική γνώση των αγγλικών. Αν και μπορεί να μην είναι τόσο γρήγορη όσο παραδείγματος χάρη η C ή η C++, o προγραμματιστικός χρόνος που γλυτώνεται την έκανε τη βέλτιστη επιλογή, δεδομένου ότι οι απαιτήσεις της εφαρμογής μας σε ταχύτητα δεν ήταν τόσο υψηλές.

41 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 41 Να αναφερθεί ότι χρησιμοποιείται από τη NASA ως η κύρια γλώσσα προγραμματισμού για το ολοκληρωμένο σύστημα διαχείρισης της καθώς και για αρκετά από τα συστήματα λογισμικού της. Χρησιμοποιείται από τη Yahoo! (μεταξύ άλλων) για τη διαχείριση των discussion groups και από τη Google στην υλοποίηση πολλών συστατικών του Web crawler της και της μηχανής αναζήτησης της. Χρησιμοποιείται σε χώρους, όπως αυτός της Βιοιατρικής ή των Computer Games. Περισσότερα σχετικά με την εγκατάσταση και τη χρήση της γλώσσας μπορεί να βρει κανείς στο Παράρτημα Ι στην ενότητα Εγκατάσταση Python. 3.3 Django Για να σχεδιάσουμε την εφαρμογή μας έπρεπε να επιλέξουμε τη κατάλληλη πλατφόρμα σχεδίασης (web framework). Οι επιλογές μας ήταν αρκετές και περιοριζόταν μόνο από το γεγονός ότι επιλέξαμε την Python ως γλώσσα προγραμματισμού. Πριν την τελική μας επιλογή εξετάστηκαν τα εξής frameworks: Django ZOPE TurboGears Web2py Pylons Τελικά επιλέχθηκε το Django ( Το Django είναι μια αξιόπιστη πλατφόρμα υψηλού επιπέδου σε Python. Προωθεί τη γρήγορη ανάπτυξη λογισμικού και τον καθαρό, πρακτικό σχεδιασμό. Είναι ανεπτυγμένο και χρησιμοποιημένο για πάνω από τρία χρόνια από ένα ταχύρυθμο οργανισμό online ειδησιογραφίας, ονόματι World Online. Το Django σχεδιάστηκε για να χειρίζεται δύο προκλήσεις: τις έντονες προθεσμίες της δημοσιογραφικής ανταπόκρισης και τις αυστηρές απαιτήσεις των έμπειρων Web developers που το έγραψαν.

42 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 42 Έχει ως στόχο την έντονη αυτοματοποίηση, όπου είναι δυνατόν και την πιστή τήρηση της αρχής «Μην επαναλαμβάνεσαι» [32]. Επιτρέπει τη δημιουργία γρήγορων κομψών ιστοσελίδων υψηλής επίδοσης. Είναι αρκετά σταθερό. Χαρακτηριστικά αναφέρεται ότι τα χρησιμοποιούν μπορούν να έχουν πάνω από ένα εκατομμύριο hits την ώρα. sites που το Αρκετά σημαντική είναι επίσης η δυνατότητα που προσφέρει για διαρκές scaling. Είναι σχεδιασμένο έτσι ώστε να μπορεί να αξιοποιεί όσο hardware μπορεί κανείς να προσφέρει ανά πάσα στιγμή. Το Django χρησιμοποιεί μια shared-nothing αρχιτεκτονική. Αυτό πρακτικά σημαίνει ότι μπορεί κανείς να προσθέσει hardware σε οποιοδήποτε επίπεδο (database servers, caching servers ή Web/application servers). Η πλατφόρμα επιπλέον ξεχωρίζει συστατικά, όπως το database layer and το application layer. Έρχεται μαζί με ένα απλό, αλλά με πολλές δυνατότητες cache framework. Υποστηρίζει το πρότυπο ανάπτυξης εφαρμογών MVC (Model-View-Controller). Ή πιο συγκεκριμένα το πρότυπο MTV ( model, template, view ), που είναι σχεδόν το ίδιο. Περισσότερα για το MTV και την αρχιτεκτονική που χρησιμοποιήθηκε στο κεφάλαιο 5. Μία ιδέα σχετικά με το τι είδους sites μπορεί κανείς δημιουργήσει με το Django μπορεί να πάρει στο [33], οπού υπάρχουν πάνω 4300 sites που δημιουργήθηκαν με το Django Πρότυπο MTV Το Django ακολουθεί το πρότυπο MTV (Model-Template-View), το οποίο είναι παρόμοιο με τον MVC (Model-View-Controller) σχεδιασμό (που πολλοί ήδη γνωρίζουν), αλλά ελαφρώς τροποποιημένο, ώστε να αντιπροσωπεύει καλύτερα τη δομή των διαδικτυακών εφαρμογών. Ο λόγος χρήσης του συγκεκριμένου προτύπου είναι η προτίμησή μας να διαχωρίζεται το περιεχόμενο από τη παρουσίαση. Επιπλέον ακολουθώντας αυτό το πρότυπο δημιουργούμε την εφαρμογή μας με τρόπο τέτοιο, ώστε όποτε παρουσιάζονται νέες ανάγκες να είναι εύκολο αυτή να τροποποιηθεί. Επιπρόσθετα καθίσταται ευκολότερη και η συντήρηση της. Πιο συγκεκριμένα το έργο της συντήρησης μπορεί να διαμοιραστεί ευκολότερα σε μια

43 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 43 ομάδα ανθρώπων, καθένας από τους οποίους θα είναι υπεύθυνος για ένα συγκεκριμένο συστατικό. Ας φανταστούμε όμως όλο το project που αφορά την εφαρμογή μας ως μια στοίβα. Με το MVC πρότυπο αυτή η στοίβα χωρίζεται οριζόντια, όπως φαίνεται στο παρακάτω σχήμα. Με το Django όμως αυτή η στοίβα χωρίζεται πρώτα κάθετα στις επιμέρους υποεφαρμογές που συνθέτουν το όλο project και στη συνέχεια κάθε υποεφαρμογή χωρίζεται οριζόντια στα 3 επίπεδα που προαναφέρθηκαν (Model- Template-View). Αυτός ο κάθετος διαχωρισμός μας επιτρέπει να ομαδοποιούμε όλα τα συστατικά που χρειάζονται για μια λειτουργία σε ένα ενιαίο μέρος κάπου μέσα στο project μας. Εικόνα 7 - Σύγκριση προτύπων MVC και ΜΤV Η ύπαρξη αυτών των υποεφαρμογών που συνθέτουν το όλο project είναι ένα από τα δυνατά σημεία του Django. Οι εφαρμογές αυτές μπορούν να εξαρτώνται η μία από την άλλη και συχνά τα μοντέλα της μίας να χρησιμοποιούν στοιχεία από τα μοντέλα κάποιας άλλης Django και βάσεις δεδομένων Με το Django framework μπορεί κανείς να καθορίσει πλήρως τα μοντέλα για τα δεδομένα του σε Python. Το Django προσφέρει ένα πλούσιο, δυναμικό API για

44 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 44 πρόσβαση στη βάση δεδομένων, καθώς και τη δυνατότητα στο δημιουργό της εφαρμογής να γράψει σε SQL όταν και αν το επιθυμεί. Πιο συγκεκριμένα η Django υποστηρίζει τη χρήση διαφορετικών τύπων βάσεων δεδομένων. Ενδεικτικά αναφέρεται ότι υποστηρίζει: 1. τη χρήση PostgreSQL 8.0 ή οποιαδήποτε νεώτερης έκδοσης, 2. τη χρήση MySQL 3.23, 4.0, 4.1, 5.0, 3. τη χρήση SQLite 4. τη χρήση Oracle Database Server έκδοσης 9i ή νεώτερης Επιπλέον, πέρα από τις 4 αυτές βάσεις δεδομένων, διατίθενται backends από τρίτους που υποστηρίζουν τη χρήση: 1. Sybase SQL Anywhere 2. IBM DB2 3. Microsoft SQL Server Firebird 5. ODBC Χρήση SQLite Στην ανάπτυξη της συγκεκριμένης εφαρμογής χρησιμοποιήθηκε η SQLite η οποία είναι προεγκατεστημένη μαζί με τις νέες εκδόσεις της Python και αρκετά απλή στη χρήση. Ο κύριος λόγος της επιλογής ήταν η απλότητα τόσο στην εγκατάσταση, όσο και στην μετέπειτα χρήση. Η SQLite αποτελεί ένα Σύστημα βάσεων δεδομένων συμβατό με το ISO SQL που δίνει τη δυνατότητα για πολλαπλούς πίνακες, views και triggers. Κάποια από τα χαρακτηριστικά της για τα οποία επιλέχθηκε είναι: Δεν είναι server, δηλαδή εκτελείται μόνο ανά request, οπότε δεν πιάνει χώρο στη μνήμη ούτε καταναλώνει επεξεργαστική ισχύ. Οι ρυθμίσεις που απαιτούνται για τη δημιουργία της είναι ελάχιστες, όπως φαίνεται και στο Παράρτημα.

45 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 45 Είναι ήδη προεγκατεστημένη μαζί με εκδόσεις Python 2.7 ή νεώτερες. Η χρήση της είναι εντελώς δωρεάν. Αποθηκεύει μια βάση σε ένα μόνο αρχείο οπότε είναι πολύ εύκολη η μεταφορά της από υπολογιστή σε υπολογιστή ή γενικότερα από project σε project. Είναι αρκετά γρήγορη Είναι αρκετά καλή για χρήση σε web εφαρμογές με μικρή προς μέτρια επισκεψιμότητα, όπως προφανώς είναι και η δικιά μας εφαρμογή. Τέτοιες εφαρμογές αποτελούν περίπου το 99,9% του συνόλου των διαδικτυακών εφαρμογών! είναι ιδανική για desktop και embedded εφαρμογές, μάλιστα χρησιμοποιείται από το Adobe Air, Firefox, Safari, iphone, Skype κλπ Αξίζει να σημειωθεί ότι η SQLite δε σχεδιάστηκε σε καμία περίπτωση για να ανταγωνιστεί την Oracle ή τη PostgreSQL. Ο βασικός κανόνας για να επιλέξει κάποιος τη SQLite είναι να θεωρεί την απλότητα διαχείρισης, υλοποίησης και διατήρησης της βάσης δεδομένων σημαντικότερη από τα αμέτρητα πολύπλοκα χαρακτηριστικά που προσφέρουν οι επαγγελματικές βάσεις δεδομένων. Αποδεικνύεται ότι οι περιπτώσεις που η απλούστερη λύση αποτελεί και τη βέλτιστη επιλογή είναι συνηθέστερες από φαντάζονται οι περισσότεροι. Η διαδικτυακή κίνηση που η SQLite μπορεί να διαχειριστεί εξαρτάται φυσικά από τη συχνότητα που η εφαρμογή κάνει χρήση της βάσης. Σε γενικές γραμμές, σύμφωνα πάντα με τις προδιαγραφές της SQLite, κάθε site που δέχεται λιγότερα από 100Κ hits/ημέρα μπορεί να δουλέψει πάρα πολύ καλά με την SQLite. Ο αριθμός των 100Κ δεν αποτελεί κάποιο άνω όριο. Έχει αποδειχτεί ότι η SQLite μπορεί να δουλέψει με 10 φορές τέτοια κίνηση. Όσο αφορά το μέγεθος των datasets που μπορεί να διαχειριστεί η SQLite αυτό περιορίζεται στα 2 terabytes = 2 41 bytes (θεωρώντας μέγεθος σελίδας = 1024 bytes). Αξίζει να σημειωθεί πάντως τις περισσότερες φορές δε μπορεί να επιτευχθεί ούτε καν μια βάση μεγέθους 2 terabytes με χρήση SQLite, αφού όπως αναφέρθηκε ήδη αποθηκεύει μια βάση σε ένα μόνο αρχείο και τα περισσότερα συστήματα

46 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 46 περιορίζουν το μέγιστο μέγεθος ενός αρχείου σε κάτι λιγότερο από 2 terabytes. Η δικιά μας εφαρμογή με εκτιμώμενο μέγεθος από μερικά δεκάδες Mbytes έως το πολύ λίγα Gigabytes, ανάλογα με τον αριθμό των χρηστών που θα τη χρησιμοποιούν, αναμένει κανείς ότι δε θα έχει κανένα πρόβλημα με την SQLite.

47 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 47 ΚΕΦΑΛΑΙΟ 4. Απαιτήσεις της Εφαρμογής 4.1 Απαιτήσεις Εφαρμογής Επιχειρείται η δημιουργία μιας διαδικτυακής εφαρμογής, η οποία θα προτείνει στο χρήστη ενδιαφέρουσες ιστοσελίδες τις οποίες αντλεί από τα tweets που βρίσκονται στη home-timeline του χρήστη. Πιο συγκεκριμένα το σύστημα μας θα είναι σε θέση να προβάλλει στο χρήστη καθημερινά αρχικά τα πέντε (5) καλύτερα νέα tweets που προέρχονται από τη home-timeline του, και στη συνέχεια αν το επιθυμεί και άλλα πρόσθετα tweets. Η επιλογή των καλύτερων tweets για κάθε χρήστη θα γίνεται με τη χρήση ενός αλγορίθμου μηχανικής μάθησης, ο οποίος θα μαθαίνει τι αρέσει και τι δεν αρέσει σε κάθε χρήστη. Όπως ήδη έχει αναφερθεί δόθηκε έμφαση στα tweets που περιέχουν urls καθώς περιέχουν έμμεσα περισσότερη πληροφορία προς αξιοποίηση. Μπορεί δηλαδή κανείς να φανταστεί απλοϊκά το όλο σύστημα, ως μία μηχανή που τροφοδοτείται με tweets, κρατάει τα σημαντικά από αυτά (Ενδιαφέροντα Tweets) και πετάει τα άχρηστα.

48 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 48 Εικόνα 8 - απλοϊκή αναπαράσταση του συστήματος Το συγκεκριμένο σύστημα θα μπορεί να χρησιμοποιηθεί τόσο από κάποιον χρήστη που χρησιμοποιεί το Twitter και την εφαρμογή μας καθημερινά (ακόμα και αρκετές φορές ημερησίως), όσο και από κάποιον χρήστη που έχει να κάνει login στο λογαριασμό του Twitter του για μεγάλο χρονικό διάστημα (π.χ. μια εβδομάδα) και δε θέλει να χάσει πολύτιμο χρόνο ψάχνοντας ενδιαφέροντα για αυτόν tweets. Για το σκοπό αυτό δοκιμάστηκαν 2 παρόμοιοι αλγόριθμοι μηχανικής μάθησης, οι οποίοι περιγράφονται στο κεφάλαιο 2. Στην τελική όμως υλοποίηση επιλέχθηκε ο ένας από τους δύο. Ένα τυπικό σενάριο χρήσης: Καθημερινά θα αντλούνται όλα τα tweets από τη home-timeline του χρήστη. Στη συνέχεια θα αντλείται το περιεχόμενο των ιστοσελίδων στις οποίες αυτά δείχνουν. Αμέσως μετά θα γίνεται αξιολόγηση των tweets με βάση το περιεχόμενο των ιστοσελίδων από τον αλγόριθμο Fisher. Μία φορά κάθε μέρα σε προκαθορισμένη στιγμή θα γίνεται ταξινόμηση όλων των tweets από το καλύτερο προς το χειρότερο. Αφού αποθηκευτούν τα καλύτερα tweets θα διαγράφονται όλα τα υπόλοιπα, για να μη πιάνουν περιττό χώρο στη βάση δεδομένων που χρησιμοποιείται. Το επόμενο βήμα της όλης διαδικασίας αφορά την προβολή των καλύτερων tweets στο χρήστη μέσω του interface. Ο χρήστης αφού διαβάσει τα tweets έχει τη

49 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 49 δυνατότητα να αξιολογήσει θετικά ή αρνητικά οποιαδήποτε από τα παραπάνω tweets επιθυμεί. Τα αποτελέσματα αυτής της αξιολόγησης από όλους τους χρήστες αποθηκεύονται στο αντίστοιχο μοντέλο με τα καλύτερα tweets. Επίσης μια φορά κάθε μέρα σε προκαθορισμένη χρονική στιγμή θα γίνεται η εκπαίδευση του αλγορίθμου με βάση τις αξιολογήσεις των χρηστών. Τα παραπάνω απεικονίζονται σχηματικά στην εικόνα της επόμενης σελίδας.

50 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 50 άντληση των tweets από τη hometimeline του χρήστη άντληση του περιεχομένου των ιστοσελίδων αξιολόγηση των tweets από τον αλγόριθμο Fisher. ταξινόμηση των tweets από το καλύτερο προς το χειρότερο προβολή των καλύτερων tweets στο χρήστη μέσω του interface. θετική ή αρνητική αξιολόγηση των tweets που ο χρήστης επιθυμεί εκπαίδευση του αλγορίθμου με βάση τις αξιολογήσεις των χρηστών Εικόνα 9 - Συνοπτική λειτουργία Συστήματος

51 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Απαιτήσεις Χρήστη και Συστήματος Λειτουργικές Απαιτήσεις Χρήστη ΛΑΠ-1: Να προβάλλονται στη κύρια σελίδα οι πέντε (5) καλύτερες ιστοσελίδες από τα tweet της home-timeline του, σύμφωνα με τις προτιμήσεις του. user priority: 5 technical priority: 3 Αιτιολόγηση: Ο χρήστης με αυτόν τον τρόπο επιθυμεί να γλυτώσει τον κόπο και το χρόνο, που θα ξόδευε για να βρει μόνος του τι πραγματικά τον ενδιαφέρει ανάμεσα σε όλα τα tweets που βρίσκονται στη home-timeline του. ΛΑΠ-2 : Να δίνεται η δυνατότητα στο χρήστη να αξιολογεί θετικά ή αρνητικά τις ιστοσελίδες που διαβάζει. user priority: 5 technical priority: 5 Αιτιολόγηση: Ο χρήστης επιθυμεί η εφαρμογή του να μαθαίνει συνεχώς τι του αρέσει και τι όχι, ώστε να του προτείνει ακόμα πιο στοχευμένα ιστοσελίδες. ΛΑΠ-3 : Να δίνεται η δυνατότητα στο χρήστη να δει και άλλες ιστοσελίδες που τον ενδιαφέρουν πέρα των πέντε καλύτερων. user priority: 4 technical priority: 3 Αιτιολόγηση: Οι λόγοι εμφάνισης επιπλέον ενδιαφερουσών ιστοσελίδων μετά από απαίτηση του χρήστη είναι δύο (2). Πρώτον, ο χρήστης έχει χρόνο και επιθυμεί να πλοηγηθεί περισσότερο σε φρέσκιες ιστοσελίδες κοντά στα ενδιαφέροντα του. Δεύτερον, ο χρήστης επιθυμεί να εκπαιδεύσει καλύτερα την εφαρμογή, ώστε μελλοντικά να έχει καλύτερα για εκείνον αποτελέσματα.

52 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 52 ΛΑΠ-4: Να δίνεται η δυνατότητα στο χρήστη να δει και άλλες ιστοσελίδες τυχαία παρμένες από τα tweets της home-timeline του. user priority: 4 technical priority: 1 Αιτιολόγηση: Σκοπός αυτού είναι κυρίως η δυνατότητα που δίνεται στο χρήστη να αρχίσει να βαθμολογεί θετικά κάποιες ιστοσελίδες που μέχρι πρότινος δε θα του εμφανιζόταν ποτέ, γιατί δεν ενέπιπταν στα ενδιαφέροντα του. Με αυτόν τον τρόπο μπορεί να εκπαιδεύσει τον αλγόριθμο σε περίπτωση που τα ενδιαφέροντα του διαφοροποιηθούν. ΛΑΠ-5: Να μη χρειάζεται ο χρήστης να παραχωρήσει επ ουδενί λόγο τα στοιχεία πρόσβασής του στο Twitter (username + password) για να κάνει χρήση των υπηρεσιών της εφαρμογής Tweet for you! user priority: 5 technical priority: 5 Αιτιολόγηση: Ο χρήστης θέλει να παραχωρεί περιορισμένη πρόσβαση στην εφαρμογή. Πιο συγκεκριμένα επιθυμεί να της επιτρέπει να αντλεί δεδομένα σχετικά με το ποιους ακολουθεί και τι tweets αυτοί γράφουν, και όχι να της δίνει τη δυνατότητα να γράφει ή να διαγράφει tweets για λογαριασμό του χρήστη Μη Λειτουργικές Απαιτήσεις Χρήστη ΜΛΑ-1: Το σύστημα πρέπει να μπορεί να αποκρίνεται σε λογικό χρονικό διάστημα ανάλογα με τα ερεθίσματα που δέχεται. User priority: 5 Technical priority: 5 Stability: 4 Αιτιολόγηση: Το σύστημα οφείλει να είναι γρήγορο.

53 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 53 ΜΛΑ-2: Πρέπει να είναι φιλικό προς το χρήστη. Αυτό συνεπάγεται ένα φιλικό προς το χρήστη G.U.I. User priority: 5 Technical priority: 3 Stability: 4 Αιτιολόγηση: Πολλοί από τους χρήστες του συστήματος είναι μη εξειδικευμένοι. Άρα ειδικά λόγω της ευρύτητας του κοινού στο οποίο απευθύνεται το συγκεκριμένο σύστημα, η φιλικότητα προς το χρήστη αναδεικνύεται ως άκρως απαραίτητη. ΜΛΑ-3: Πρέπει να είναι εύκολο στη χρήση και την πιθανή εκπαίδευση ακόμα και για τους χρήστες, οι οποίοι δεν είναι τόσο καλοί γνώστες της τεχνολογίας. User priority: 5 Technical priority: 3 Stability: 4 Αιτιολόγηση: Χρήστες του συστήματος δε θα είναι μόνο επιστήμονες σχετικοί με την τεχνολογία. Όλοι όμως θα πρέπει να χρησιμοποιούν εξίσου καλά τις δυνατότητες του συστήματος. ΜΛΑ-3: Πρέπει να συνοδεύεται από ένα σύντομο εγχειρίδιο χρήσης που θα περιγράφει και θα τεκμηριώνει όλες τις επί μέρους λειτουργίες του συστήματος. User priority: 5 Technical priority: 2 Stability: 5 Αιτιολόγηση: Σκοπός αυτού είναι η διευκόλυνση και εκείνων των χρηστών που δεν είναι τόσο εξοικειωμένοι με ανάλογες εφαρμογές.

54 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Λειτουργικές Απαιτήσεις Συστήματος ΛΑΠ-1: Το σύστημα πρέπει να λειτουργεί για μεγάλο χρονικό διάστημα χωρίς προβλήματα. technical priority: 5 stability: 5 Αιτιολόγηση: Ο όγκος των δεδομένων είναι τέτοιος που η συλλογή τους απαιτεί αρκετό χρόνο. ΛΑΠ-2: Το σύστημα πρέπει να διατηρεί πληροφορίες σχετικά με το ποιες σελίδες χαρακτήρισε ενδιαφέρουσες ο χρήστης και ποιες όχι. technical priority: 3 stability: 3 Αιτιολόγηση: Ο αλγόριθμος μηχανικής μάθησης που χρησιμοποιείται πρέπει να βελτιώνεται συνεχώς σύμφωνα με τις προτιμήσεις του χρήστη. ΛΑΠ-3: Τα δεδομένα που εξάγονται από το Twitter πρέπει να αποθηκεύονται σε μια ΒΔ. technical priority: 3 stability: 5 Αιτιολόγηση: Είναι απαραίτητη η διατήρηση των δεδομένων για περαιτέρω ανάλυση. ΛΑΠ-4: Το σύστημα πρέπει να εξάγει προσωπικές πληροφορίες, όπως το username, το πλήρες όνομα του χρήστη και το του απευθείας κατά την πρώτη είσοδο του χρήστη. Τα δεδομένα αυτά δεν εισάγονται από τον χρήστη, αλλά τα αντλεί απευθείας το σύστημά μας από το Twitter.

55 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 55 technical priority: 3 stability: 5 Αιτιολόγηση: Είναι σημαντικό να γνωρίζουμε ποιοι ακριβώς χρήστες χρησιμοποιούν την εφαρμογή μας. Ο χρήστης διευκολύνεται από το γεγονός ότι δε χρειάζεται να ξαναεισάγει τα δεδομένα του στο Twitter. ΛΑΠ-5 : Το σύστημα μας πρέπει να είναι σε θέση να αυθεντικοποιεί τον εκάστοτε χρήστη που το χρησιμοποιεί. Αυτό γίνεται μέσω του μηχανισμού OAuth που χρησιμοποιεί το Twitter και περιγράφεται στη παράγραφο 3.1. technical priority: 3 stability: 5 Αιτιολόγηση: Η αυθεντικοποίηση των χρηστών σε ένα οποιοδήποτε σύστημα είναι πολύ σημαντική. ΛΑΠ-6: Το σύστημα πρέπει να εντοπίζει urls που πιθανώς υπάρχουν σε περισσότερα του ενός tweets και να φροντίζει αυτά να προταθούν μόνο μια φορά στο χρήστη στη περίπτωση φυσικά που αυτά εμπίπτουν στις προτιμήσεις του χρήστη. user priority: 5 technical priority: 3 stability: 5 Αιτιολόγηση: Είναι πολύ πιθανό να συμβαίνει αυτό, δεδομένου ότι τα περισσότερα από τα urls που εμπεριέχονται σε ένα tweet αφορούν αναδημοσιεύσεις άρθρων που απασχόλησαν τον τύπο πρόσφατα. ΛΑΠ-7 : Πρέπει να αναγνωρίζει τις διάφορες κατηγορίες χρηστών σύμφωνα με την παράγραφο

56 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 56 technical priority: 5 stability: 5 Προδιαγραφές απαίτησης: ΠΑ: Πρέπει να απαγορεύει την είσοδο μη εξουσιοδοτημένων χρηστών στη σελίδα διαχείρισης του συστήματος. Πρέπει να ξεχωρίζει ποιοι χρήστες είναι administrators και ποιοι όχι. Αιτιολόγηση: Λόγοι ασφάλειας και ελέγχου καθιστούν την ύπαρξη μιας ιεραρχίας στα δικαιώματα χρήσης του συστήματος από τους διάφορους χρήστες αναγκαία. ΛΑΠ- 8: Πρέπει να προσφέρει μόνο στον administrator τη δυνατότητα να μπορεί να δημιουργήσει νέα κατηγορία χρηστών καθώς και να «προάγει» κάποιον απλό χρήστη σε administrator. technical priority: 3 stability: 5 Αιτιολόγηση: Με τον τρόπο αυτό εξασφαλίζεται πως το δικαίωμα δημιουργίας νέας κατηγορίας χρηστών ανήκει αποκλειστικά στο άτομο με τη μεγαλύτερη εξουσία στο σύστημα και επομένως κανένας άλλος δε μπορεί να επέμβει σε αυτήν τη διαδικασία. Η ιεράρχηση των κατηγοριών των χρηστών συμβάλλει στη διατήρηση της ομαλής λειτουργίας του συστήματος και στην αποφυγή συγκρούσεων μεταξύ των δικαιωμάτων των χρηστών. Η αξιοπιστία του συστήματος βασίζεται σε μεγάλο ποσοστό από τα δικαιώματα πρόσβασης και την οριοθέτηση των αλλαγών που μπορεί να επιφέρει κάθε κατηγορία χρήστη στο σύστημα. ΛΑΠ-9: Να αντλεί σε τακτά χρονικά διαστήματα (π.χ. κάθε μία ώρα) tweets από τη home-timeline του χρήστη.

57 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 57 user priority: 5 technical priority: 3 stability: 3 Αιτιολόγηση: Με αυτόν τον τρόπο επιτυγχάνουμε δύο (2) πράγματα. Πρώτον συμβαδίζουμε με τον περιορισμό του Twitter-API να αντλούμε έως 200 tweets τη φορά. Δεύτερον διασφαλίζουμε ότι σε περίπτωση που για οποιοδήποτε λόγο το script που είναι υπεύθυνο για τη συλλογή των tweets σταματήσει να δουλεύει (κρασάρει), η άντληση των ημερήσιων tweets θα γίνει κανονικά. ΛΑΠ- 10: Να μην αντλεί το ίδιο tweet δύο (2) φορές και να μην αφήνει tweets που δεν έχει αντλήσει. Αυτό επιτυγχάνεται με τη χρήση της μεταβλητής since_id. user priority: 5 technical priority: 3 stability: Μη Λειτουργικές Απαιτήσεις Συστήματος ΜΛΑ-1: Πρέπει να υποστηρίζει ταυτόχρονη πρόσβαση πολλαπλών χρηστών. User priority: 5 Technical priority: 5 Stability: 4 Αιτιολόγηση: Αυτή η απαίτηση διασφαλίζει την περίπτωση, όπου αρκετοί χρήστες χρησιμοποιούν το σύστημα μας ταυτόχρονα. Το σύστημα δεν επιτρέπεται να καταρρεύσει. ΜΛΑ-2: Πρέπει να επιτρέπει την επεκτασιμότητα του. Καινούριες υποεφαρμογές πρέπει να μπορούν να αναγνωριστούν και να συγχρονιστούν χωρίς να επηρεάζεται το υπόλοιπο σύστημα.

58 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 58 User priority: 4 Technical priority: 5 Stability: 5 Αιτιολόγηση: Θα πρέπει να μπορεί για παράδειγμα να μπορούμε να αλλάξουμε τη βάση δεδομένων ή να αλλάξουμε τον αλγόριθμο μηχανικής μάθησης, που χρησιμοποιείται χωρίς ιδιαίτερα προβλήματα. Ή μπορεί παραδείγματος χάρη να αλλάξει ο τρόπος αυθεντικοποίησης μέσω του Twitter και να χρειαστεί να εγκαταστήσουμε ένα νέο μηχανισμό αυθεντικοποίησης στο σύστημα μας. Για τους λόγους αυτούς κρίνεται απολύτως απαραίτητο το σύστημα να έχει τη δυνατότητα να συνεργαστεί με μελλοντικά υποσυστήματα και λογισμικά (μετά από κατάλληλη αναβάθμιση φυσικά). 4.4 Σενάρια Χρήσης (Use Case) Σενάριο χρήσης login Πιο συγκεκριμένα στην παρούσα εφαρμογή όσο αφορά την είσοδο χρηστών συμβαίνουν τα εξής: Μόλις κάποιος χρήστης θελήσει να κάνει χρήση της εφαρμογής μας για πρώτη φορά, ανακατευθύνεται από την εφαρμογή μας στη σελίδα του Twitter όπου εκεί ενημερώνεται για τη φύση της εφαρμογής μας και τα δικαιώματα που ζητάμε να μας παρέχει (δηλαδή να αντλούμε τα tweets από τη home-timeline του). Στη συνέχεια ο χρήστης δίνει το ok, ώστε η εφαρμογή μας να πάρει την απαραίτητη εξουσιοδότηση από το Twitter. To Twitter στέλνει στην εφαρμογή μας δύο (2) tokens (oauth token, oauth token secret), τα οποία η εφαρμογή Tweet for me! θα χρησιμοποιεί κάθε φορά που θα επιχειρεί να αντλεί τα tweets του συγκεκριμένου χρήστη. Ταυτόχρονα το Twitter ανακατευθύνει το χρήστη πίσω στην εφαρμογή στην υποσελίδα /done/, όπου ο χρήστης είναι πλέον συνδεδεμένος. Αν ο χρήστης χρησιμοποιεί για πρώτη φορά την εφαρμογή, δημιουργείται αυτόματα πριν συνδεθεί.

59 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 59 Κάθε επόμενη φορά που ο χρήστης θα επιθυμεί να εισέλθει στην εφαρμογή πατώντας το κουμπί sign in with Twitter είτε θα εισέρχεται αυτομάτως αν προηγουμένως έχει κάνει είσοδο στο λογαριασμό του στο Twitter, είτε θα ανακατευθύνεται στη σελίδα του Twitter, ώστε να κάνει είσοδο στο λογαριασμό του χρησιμοποιώντας κανονικά το username ή το του και το password του, και στη συνέχεια να επιστρέψει αυτόματα στην εφαρμογή μας. Για το login μέσω Twitter ακολουθείται πιστά το πρωτόκολλο OAuth, που περιγράψαμε στη παράγραφο Τι περιέχει η κάθε σελίδα της εφαρμογής Αρχική σελίδα Home Page (/) Στην κορυφή της αρχικής σελίδας υπάρχει το logo της εφαρμογής Tweet for you. Ακριβώς από κάτω υπάρχει μια σύντομη περιγραφή του τι κάνει η εφαρμογή. Κάτω από αυτό υπάρχει το πλήκτρο για να κάνει κανείς sign in μέσω του Twitter στην εφαρμογή. Στο κάτω μέρος της σελίδας υπάρχει ένα link το οποίο οδηγεί στη σελίδα About Us, ένα εικονίδιο που οδηγεί στη σελίδα της εφαρμογής στο Twitter, ένα εικονίδιο που οδηγεί στη σελίδα της εφαρμογής στο Facebook, καθώς και ένα link το οποίο οδηγεί στη σελίδα του Django. Στις σελίδες της εφαρμογής σε Twitter και Facebook υπάρχουν νέα σχετικά με την εφαρμογή, όπως αναβαθμίσεις κ.α. Κεντρική Σελίδα (/done) Στην κορυφή της αρχικής σελίδας υπάρχει το logo της εφαρμογής Tweet for you. Στο αριστερό μέρος της σελίδας προβάλλονται τα καλύτερα tweets για το χρήστη από το καλύτερο προς το χειρότερο. Για κάθε tweet φαίνονται: 1. το κείμενο (text) του tweet, 2. ένα link που οδηγεί στο url που περιέχει το tweet 3. ποιος Twitterer πόσταρε το tweet

60 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη δύο κουμπιά (ένα θετικό και ένα αρνητικό) για αξιολόγηση του tweet Κάτω από τα tweets υπάρχουν link τα οποία επιτρέπουν στο χρήστη να πλοηγηθεί σε επόμενα ή προηγούμενα tweets. Επιπλέον υπάρχει ένα link, το οποίο αν κάποιος ακολουθήσει του προβάλλονται έως 20 τυχαία tweets, ώστε να κάνει αν θέλει επιπλέον training. Στο δεξιό μέρος της σελίδας, σε μία ξεχωριστή στήλη, υπάρχουν τα στοιχεία του συνδεδεμένου χρήστη και ένα link το οποίο αν πατηθεί αποσυνδέει τον συνδεδεμένο χρήστη. Και εδώ στο κάτω μέρος της σελίδας υπάρχει ένα link το οποίο οδηγεί στη σελίδα About Us, ένα εικονίδιο που οδηγεί στη σελίδα της εφαρμογής στο Twitter, ένα εικονίδιο που οδηγεί στη σελίδα της εφαρμογής στο Facebook, καθώς και ένα link το οποίο οδηγεί στη σελίδα του Django. About Us (/about) Στην κορυφή της αρχικής σελίδας υπάρχει το logo της εφαρμογής Tweet for you. Στο κέντρο της σελίδας υπάρχουν πληροφορίες σχετικά με το δημιουργό της εφαρμογής, όπως στοιχεία επικοινωνίας και σύντομο βιογραφικό σημείωμα. Το κάτω μέρος της σελίδας παραμένει ίδιο με τις προηγούμενες σελίδες Ενέργειες που πραγματοποιεί το σύστημα μας Άντληση των Tweets από τη home-timeline όλων των χρηστών Καθημερινά ανά μισή ώρα θα γίνεται ανάκτηση των τελευταίων tweets της hometimeline κάθε χρήστη. Το Twitter API επιτρέπει την ανάκτηση έως και 200 tweets κάθε φορά. Για την άντληση των tweets η μεταβλητή since_id γίνεται ίση με το id του τελευταίου tweet που αντλήθηκε. Περισσότερα στο επίσημο Documentation του Twitter [34]. Εκπαίδευση του αλγορίθμου Μία φορά την ημέρα στις 23:30 γίνεται η εκπαίδευση του αλγόριθμου (training), σύμφωνα με τους χαρακτηρισμούς που έδωσε ο κάθε χρήστης στα tweets που του

61 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 61 προβλήθηκαν. Εναλλακτικά αυτή η εκπαίδευση θα μπορούσε να γίνεται την ίδια στιγμή που ο χρήστης αξιολογούσε το tweet, αλλά κάτι τέτοιο θα οδηγούσε σε μία καθυστέρηση 2-3 δευτερολέπτων της απόκρισης της εφαρμογής. Κάτι τέτοιο είναι φυσικά ανεπιθύμητο, γι αυτό και η εκπαίδευση του αλγορίθμου γίνεται ανεξάρτητα. Ταξινόμηση των καλύτερων tweets και αποθήκευση κάποιων τυχαίων Κάθε μέρα στις 00:00 γίνεται ranking όλων των tweets του κάθε χρήστη. Κατά τη διαδικασία αυτή διαγράφονται τα δεδομένα των μοντέλων Best_Tweets και Random_Tweets. Στη συνέχεια τα καλύτερα tweets του προηγούμενου εικοσιτετραώρου αποθηκεύονται στον πίνακα Best_Tweets, ώστε να είναι σε θέση να προβληθούν στη σελίδα του χρήστη. Επιπλέον αποθηκεύονται τυχαία 20 από τα tweets στον πίνακα Random_Tweets. Τέλος, διαγράφονται και όλα τα tweets που είχαν αντληθεί έως τώρα, αφού πλέον δε χρειάζονται άλλο.

62 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Screenshots Homepage Στην αρχική σελίδα ο χρήστης μπορεί να διαβάσει κάποιες πληροφορίες σχετικά με το τι κάνει η συγκεκριμένη εφαρμογή. Πατώντας το κουμπί Sign in with Twitter ο χρήστης μπορεί να κάνει είσοδο στην εφαρμογή, αφού πρώτα συνδεθεί στο Twitter και εξουσιοδοτήσει την εφαρμογή Tweet for me. Αυτό γίνεται μέσω της σελίδας Authorization Page. Ακολουθώντας το link About Us/Contact, ανακατευθύνεται στην αντίστοιχη σελίδα, όπου υπάρχουν περισσότερες πληροφορίες σχετικά με τον δημιουργό της εφαρμογής. Τέλος πατώντας τα πλήκτρα t και f o χρήστης μπορεί να οδηγηθεί στα προφίλ της εφαρμογής σε Twitter και Facebook αντίστοιχα. Εικόνα 10 Screenshot αρχικής σελίδας Main Page Στο αριστερό τμήμα της κύριας σελίδας προβάλλονται τα καλύτερα tweets σύμφωνα με τις προτιμήσεις του εκάστοτε συνδεδεμένου χρήστη. Ο χρήστης έχει τη

63 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 63 δυνατότητα ακολουθώντας το link Visit the webpage ενός tweet, να μεταβεί στην ιστοσελίδα στην οποία αναφέρεται. Επιπλέον έχει τη δυνατότητα να αξιολογήσει θετικά ή αρνητικά το κάθε tweet πατώντας αντίστοιχα το πράσινο ή το κόκκινο κουμπί. Αμέσως μετά τη λίστα με τα tweets ο χρήστης μπορεί πατώντας το αντίστοιχο link να δει τα επόμενα ή τα προηγούμενα ενδιαφέροντα tweets. Στο δεξιό τμήμα της σελίδας παρουσιάζεται το username, το και το ονοματεπώνυμο του συνδεδεμένου χρήστη, όπως αυτά καταχωρήθηκαν από τον ίδιο κατά την εγγραφή του στο Twitter. Ακριβώς από κάτω υπάρχουν link για αποσύνδεση του χρήστη ή απευθείας σύνδεση του στην εφαρμογή με χρήση διαφορετικού λογαριασμού στο Twitter μέσω της σελίδας Authorization Page. Τέλος ακολουθώντας το link See up to 20 random tweets for extra training, προβάλλονται στο χρήστη μέχρι είκοσι τυχαία tweets προερχόμενα πάντα από τη home-timeline του, ώστε να έχει τη δυνατότητα να εκπαιδεύσει την εφαρμογή περαιτέρω σχετικά με tweets που μέχρι τη δεδομένη χρονική στιγμή δεν εμπίπτουν στα ενδιαφέροντα του.

64 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 64 Εικόνα 11 - Screenshot κεντρικής σελίδας

65 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Authorization Page Στη σελίδα αυτή ο χρήστης διαβάζει τι δικαιώματα πρόκειται να παρέχει στην εφαρμογή και αφού εισέλθει στο Twitter κάνοντας χρήση του προσωπικού του username και password, επιλέγει αν επιθυμεί να εξουσιοδοτήσει την εφαρμογή μας ή όχι. Επιπλέον υπάρχουν link για ακύρωση της εξουσιοδότησης ή για επιστροφή στη σελίδα της εφαρμογής χωρίς να έχει δοθεί εξουσιοδότηση. Εικόνα 12 - Screenshot σελίδας εξουσιοδότησης

66 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Administrator Page Στη σελίδα αυτή εμφανίζονται όλα τα μοντέλα που επιθυμούμε να έχουμε τη δυνατότητα να βλέπουμε ή να τροποποιούμε ομαδοποιημένα σύμφωνα με την υποεφαρμογή στην οποία ανήκουν, όπως φαίνεται στο κεφάλαιο 5. Εικόνα 13 - Screenshot σελίδας διαχείρισης

67 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 67 ΚΕΦΑΛΑΙΟ 5. Σχεδιασμός Συστήματος και Προδιαγραφές 5.1 Αρχιτεκτονική του Συστήματος Όπως ήδη αναφέραμε το Django ακολουθεί το πρότυπο MTV (Model-Template- View). Στο παρακάτω σχήμα παρουσιάζεται γραφικά η αρχιτεκτονική της εφαρμογής Tweet for me. Φαίνονται οι τέσσερεις υποεφαρμογές που συνθέτουν το όλο project, καθώς και οι αλληλεξαρτήσεις μεταξύ των επιμέρους επιπέδων τους.

68 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 68 Admin Application Main Application Classiffier Django- Social-Auth View Layer View Layer View Layer View Layer Templates Templates Templates Templates Model Layer Model Layer Model Layer Model Layer Urls Urls Urls Urls Εικόνα 14 - Αρχιτεκτονική Εφαρμογής Συνοπτικά τα 3 layers της κάθε υποεφαρμογής κάνουν τα εξής: Το View layer περιλαμβάνει την επιχειρηματική λογική και την διαχείριση των αιτημάτων της εφαρμογής. Στο επίπεδο αυτό καθορίζονται τα urls και οι

69 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 69 views της εφαρμογής. Καθορίζει ποια δεδομένα προβάλλονται σε ποιο url και με ποιον ακριβώς τρόπο. Επιπλέον διαχειρίζεται τις αλλαγές σε αυτά τα δεδομένα. Στο σχεδιασμό MVC θα ονομαζόταν Controller του συστήματος. Τα Templates καθορίζουν την εμφάνιση του website και ως εκ τούτου πως τα δεδομένα της εφαρμογής προβάλλονται στο χρήστη. Είναι περισσότερο προσανατολισμένο σε Web designers από ότι σε προγραμματιστές. Στο σχεδιασμό MVC θα ονομαζόταν View. Το Model και ORM (object relational mapping) layer καθορίζουν τα δεδομένα και τις σχέσεις μεταξύ τους, που αποθηκεύονται στη βάση δεδομένων. Προσφέρει ένα Python interface για τα δεδομένα της εφαρμογής μας. Τα παραπάνω 3 layers (επίπεδα) θα εξηγηθούν αναλυτικά στη συνέχεια του κεφαλαίου. Παρακάτω φαίνεται ενδεικτικά η αλληλεπίδραση μεταξύ των επιπέδων του project μας σε ένα διάγραμμα ακολουθιών. Παρουσιάζονται συνοπτικά οι ενέργειες που απαιτούνται για είσοδο του χρήστη στην εφαρμογή, στη συνέχεια προβολή σε αυτόν των 5 καλύτερων tweets και τέλος αξιολόγηση ενός tweet από αυτά.

70 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 70 Template Layer View Layer DB Twitter Top Package::u ζητά να κάνει sign in μεσω twitter καλείται η αντίστοιχη συνάρτηση ανακατευθυνση σε σελιδα του Twitter ζητειται username, password, και να δοθεί εξουσιοδότηση(τη πρώτη φορά) δινει εγκριση + username, password επιστρεφει tokens τη πρωτη φορα, αλλιώς απλά το ok της αυθεντικοποιησης ζητά τα n καλύτερα tweets του χρήστη προβολή κεντρικής σελίδας χρήστη n καλύτερα tweets χαρακτηρίζει ένα tweet ως θετικό/αρνητικό καλείται η αντίστοιχη συνάρτηση Εικόνα 15 - Διάγραμμα Ακολουθιών, είσοδος στην εφαρμογή και βαθμολόγηση tweets

71 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Υποεφαρμογές (Applications) που συνθέτουν το Project μας 1. Admin Application Το Django χαρακτηρίζεται για την ενσωματωμένη του εφαρμογή διαχείρισης. Για πολλά απλά sites, όπως το δικό μας, ο κώδικας που θα απαιτούνταν για το κομμάτι της διαχείρισης του site μπορεί να ήταν όσος και ο κώδικας για την ανάπτυξη όλης της υπόλοιπης εφαρμογής. Αυτός είναι και ένας από τους λόγους που επιλέχθηκε το Django framework έναντι κάποιου άλλου Python framework. Η εφαρμογή αυτή παρέχει ένα μηχανισμό επιθεώρησης όλων των μοντέλων που χρησιμοποιούνται. Παρέχει ένα interface για προσθήκη, επεξεργασία, ή αφαίρεση στοιχείων οποιουδήποτε μοντέλου. Μπορεί να κατανοήσει τις σχέσεις μεταξύ των μοντέλων και εμπεριέχει φόρμες για τη δημιουργία σχέσεων ένα-προς-πολλά μεταξύ μοντέλων. Στην παρακάτω εικόνα φαίνεται μια επισκόπηση όλων των users που χρησιμοποιούν την εφαρμογή μας. Δίνεται η δυνατότητα για ταξινόμηση σύμφωνα με οποιοδήποτε χαρακτηριστικό ή φιλτράρισμα, ώστε να επιλεχθούν κάποιοι από τους users. Το ποια στοιχεία ενός μοντέλου θα είναι ορατά στην admin page ρυθμίζονται κατά το σχεδιασμό του κάθε μοντέλου στα αντίστοιχα αρχεία models.py και admin.py της κάθε υποεφαρμογής του συνολικού project. Εικόνα 16 - Ορατά στοιχεία μοντέλου User στη σελίδα διαχείρισης 2. Main Application (App) View Layer της κύριας υποεφαρμογής Παρακάτω περιγράφεται συνοπτικά πότε καλείται και τι περίπου κάνει κάθε μια από τις views της κύριας εφαρμογής.

72 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 72 home: Καλείται από τη αρχική σελίδα της εφαρμογής. Ελέγχει αν κάποιος χρήστης είναι συνδεδεμένος. Οι ενέργειες που δρομολογεί είναι: 1. Αν όντως κάποιος χρήστης είναι συνδεδεμένος στην εφαρμογή καλεί τη view done. 2. Σε περίπτωση όμως που δεν έχει εισέλθει κάποιος χρήστης στην εφαρμογή, τότε εμφανίζει στο χρήστη κάποιες γενικές πληροφορίες σχετικά με την εφαρμογή και του δίνει τη δυνατότητα να κάνει login στην εφαρμογή (χρησιμοποιώντας τα στοιχεία του στο Twitter) ακολουθώντας ένα σύνδεσμο. Για τα παραπάνω κάνει χρήση του template home.html. done: Καλείται από την κεντρική σελίδα της εφαρμογής, αφού έχει εισέλθει σε αυτή κάποιος χρήστης. Οι ενέργειες που δρομολογεί είναι: 1. Ελέγχει ποιος χρήστης είναι συνδεδεμένος στην εφαρμογή. 2. Αντλεί για το συγκεκριμένο χρήστη τη λίστα με τα καλύτερα 5 tweets σύμφωνα πάντα με τα ενδιαφέροντα του. 3. Καλεί το template done.html δίνοντας του ως ορίσματα τα προσωπικά στοιχεία του χρήστη που είναι συνδεδεμένος, καθώς και τη λίστα με τα tweets που άντλησε. error: Καλείται σε περίπτωση που προκύψει οποιοδήποτε σφάλμα. Δέχεται τα μηνύματα που δείχνουν το λόγο που οδήγησε στο σφάλμα και στη συνέχεια καλεί το template error.html με όρισμα αυτά τα μηνύματα, ώστε να ενημερωθεί κατάλληλα ο χρήστης της εφαρμογής. logout: Καλείται όταν ο χρήστης επιλέξει να αποσυνδεθεί από την εφαρμογή. Αποσυνδέει το χρήστη και επιστρέφει στην αρχική σελίδα /, δίνοντας τη δυνατότητα στο χρήστη να συνδεθεί στην εφαρμογή χρησιμοποιώντας κάποιον άλλον λογαριασμό. trainbesttweet {i} asgood: Καλείται όταν ο χρήστης χαρακτηρίζει το url i ως θετικό πατώντας το αντίστοιχο πλήκτρο. Οι ενέργειες που δρομολογεί είναι: 1. Ελέγχει ποιος χρήστης είναι συνδεδεμένος στην εφαρμογή.

73 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Εντοπίζει για τον συγκεκριμένο χρήστη το tweet, το οποίο χαρακτηρίστηκε ως θετικό, ανάμεσα στα υπόλοιπα στοιχεία του μοντέλου BestTweet. 3. Μεταβάλλει τη Boolean μεταβλητή is_positive του συγκεκριμένου BestTweet σε true. 4. Αυξάνει το συνολικό αριθμό που έχει ψηφίσει ο χρήστης γενικά και ειδικότερα το συνολικό αριθμό που έχει ψηφίσει θετικά. Για το σκοπό αυτό χρησιμοποιείται το μοντέλο Votes_sinceid. 5. Αφού καταμετρηθεί η ψήφος ανακατευθύνει το χρήστη εκεί που βρισκόταν. Αντί της ενέργειας 3 θα μπορούσε εναλλακτικά η view να καλεί απευθείας τη συνάρτηση που κάνει το training. Αυτός ο τρόπος όμως θα οδηγούσε σε μία καθυστέρηση 2-3 δευτερολέπτων, πράγμα το οποίο θα ερχόταν σε αντίφαση με τις απαιτήσεις του χρήστη. Έτσι στην ουσία προτιμάμε απλώς να σημειώνουμε τη προτίμηση του χρήστη σε πραγματικό χρόνο, μεταθέτοντας ουσιαστικά την εκπαίδευση του αλγορίθμου για αργότερα. trainbesttweet {i} asbad: Εκτελεί ότι ακριβώς και η trainbesttweet {i} asgood, αλλά για τα urls που χαρακτηρίστηκαν αρνητικά. Model και ORM (object relational mapping) Layer της υποεφαρμογής Στο επίπεδο αυτό, στο αρχείο models.py, υπάρχουν οι συναρτήσεις για δημιουργία ενός νέου χρήστη στο σύστημα μας, καθώς και συναρτήσεις για έλεγχο αυθεντικοποίησης ενός χρήστη. Template Layer της υποεφαρμογής Το επίπεδο αυτό περιέχει όλα τα templates που χρησιμοποιούνται, ώστε να αλληλεπιδρά ο χρήστης με την εφαρμογή. Τα templates δηλαδή χρησιμοποιούνται στη δημιουργία του interface της εφαρμογής. Αφορούν μόνο τη παρουσίαση και όχι τη λογική του προγράμματος. Μπορεί να γίνουν εύκολα κατανοητά από οποιοδήποτε γνωρίζει HTML, ενώ για τη συγγραφή τους δεν απαιτείται γνώση Python. Κάνουν χρήση διάφορων μεταβλητών, ώστε να έχουν πρόσβαση στα δεδομένα.

74 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Classifier Η 3 η υποεφαρμογή του project μας περιέχει ουσιαστικά τον αλγόριθμο μηχανικής μάθησης. Είναι υπεύθυνη για την επιλογή των tweets που θα προβληθούν στο χρήστη. Αποτελείται μόνο ένα επίπεδο, το Model και ORM (object relational mapping) Layer. Model και ORM (object relational mapping) Layer της υποεφαρμογής Στο επίπεδο αυτό, στο αρχείο models.py, ορίζονται πλήρως τα μοντέλα ClassifierFeature και ClassifierCategory. Για κάθε ClassifierFeature ορίζεται ότι θα περιέχει τα εξής στοιχεία: text, για να αποθηκεύεται η λέξη μέγιστου μήκους 100 χαρακτήρων category, σε ποια κατηγορία εμφανίστηκε η συγκεκριμένη λέξη (ForeignKey στο μοντέλο 'ClassifierCategory') count, το πλήθος των φορών που εμφανίστηκε η λέξη στη συγκεκριμένη κατηγορία user, ο εκάστοτε χρήστης (ForeignKey στο μοντέλο User ) Created, πότε προστέθηκε η συγκεκριμένη λέξη στον classifier Updated, πότε έγινε τροποποίηση του συγκεκριμένου στοιχείου για τελευταία φορά Για κάθε ClassifierCategory ορίζεται ότι θα περιέχει τα εξής στοιχεία: name, το όνομα της κατηγορίας count, το πλήθος των φορών που κάποιο url ταξινομήθηκε σε αυτή τη κατηγορία από το χρήστη user, ο εκάστοτε χρήστης (ForeignKey στο μοντέλο User ) created, πότε προστέθηκε η συγκεκριμένη κατηγορία στον classifier updated, πότε έγινε τροποποίηση της συγκεκριμένης κατηγορίας για τελευταία φορά

75 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 75 Επιπλέον, στο αρχείο αυτό ορίζεται επακριβώς ποια από τα παραπάνω στοιχεία θα εμφανίζονται στη σελίδα διαχείρισης, με ποια ακριβώς σειρά, καθώς και σύμφωνα με ποια στοιχεία θα υπάρχει δυνατότητα ταξινόμησης από τον administrator. Στο ίδιο επίπεδο, αλλά σε διαφορετικό αρχείο (συγκεκριμένα στο classifier.py ), ορίζονται όλες οι κλάσεις και οι συναρτήσεις που χρειάζονται για τη δημιουργία των Classifiers. Ουσιαστικά υλοποιούνται στη πράξη όλα όσα είδαμε σε πιο θεωρητικό επίπεδο στο κεφάλαιο 2 σχετικά με τους αλγορίθμους μηχανικής μάθησης. Παρακάτω θα εξετάσουμε τη λειτουργία των classifiers με τη βοήθεια τμήματος του κώδικα που χρησιμοποιήθηκε. Σημειώνεται ότι για την υλοποίηση των δύο αλγορίθμων βασιστήκαμε στο βιβλίο [6]. Η συγκεκριμένη υλοποίηση διαφέρει από αυτή του βιβλίου. Οι κύριες διαφορές είναι: κάνει χρήση μιας βάσης δεδομένων, όπου αποθηκεύει τα δεδομένα, έχει υλοποιηθεί για παραπάνω του ενός χρήστη, χρησιμοποιεί άλλη συνάρτηση για εξαγωγή των features από ένα url. Η συνάρτηση που εξάγει τα features από τις ιστοσελίδες ονομάζεται get_words_from_url και κάνει χρήση των πακέτων urllib2 και nltk, τα οποία περιγράφονται στη παράγραφο 5.2. Ουσιαστικά εξάγει όλες τις λέξεις με μήκος λέξης μεγαλύτερο από 2 χαρακτήρες. Θα μπορούσε να μη λαμβάνει υπόψη της μια λίστα από συνδετικές λέξεις, άρθρα ή πολύ συνηθισμένες λέξεις. Κάτι τέτοιο όμως δεν έγινε καθώς η πιθανότητα εμφάνισης αυτών των λέξεων είναι ίδια τόσο σε ενδιαφέρουσες όσο και σε λιγότερο ενδιαφέρουσες ιστοσελίδες. Ο δε χώρος που απαιτείται για την αποθήκευση των συγκεκριμένων λέξεων είναι ελάχιστος. def get_words_from_url(url): tokens = [] page = urllib2.urlopen(url).read() clean_page = clean_html(page) sentences = nltk.sent_tokenize(clean_page) for sentence in sentences: words = nltk.word_tokenize(sentence) for word in words: tokens.append(word) clean_tokens = [] for token in tokens: if len(token) < 3: continue clean_tokens.append(token.lower())

76 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 76 clean_tokens2 = [] for token2 in clean_tokens: if len(token2) < 3: continue clean_tokens2.append(token2.encode("utf-8")) return dict([(w,1) for w in clean_tokens2]) Η συνάρτηση inc_feature αυξάνει το αριθμό των φορών που ένα feature εμφανίστηκε σε μία δεδομένη κατηγορία. def inc_feature(self, f, cat, u): ccat, _ = ClassifierCategory.objects.get_or_create(name = cat, user = u) cf, _ = ClassifierFeature.objects.get_or_create(text = f, category = ccat, user = u) cf.count += 1 cf.save() Η συνάρτηση inc_cat αυξάνει τον αριθμό των φορών που μια ιστοσελίδα εμφανίστηκε σε μία συγκεκριμένη κατηγορία def inc_cat(self, cat, u): ccat, _ = ClassifierCategory.objects.get_or_create(name = cat, user = u) ccat.count += 1 ccat.save() Η συνάρτηση feature_count επιστρέφει τον συνολικό αριθμό των φορών που ένα feature εμφανίστηκε σε μία δεδομένη κατηγορία. def feature_count(self, f, cat, u): ccat, _ = ClassifierCategory.objects.get_or_create(name = cat, user = u ) return float( sum( ccat.classifierfeature_set.filter(text = f ).values_list('count', flat = True ) ) ) Η συνάρτηση cat_count επιστρέφει τον αριθμό των φορών που μια ιστοσελίδα εμφανίστηκε σε μία συγκεκριμένη κατηγορία. def cat_count(self, cat, u): ccat, _ = ClassifierCategory.objects.get_or_create( name = cat, user = u ) return float(ccat.count) Η συνάρτηση total_count επιστρέφει τον συνολικό αριθμό των ιστοσελίδων που αξιολογήθηκαν είτε αρνητικά είτε θετικά. def total_count(self, u): return float (sum (ClassifierCategory.objects.all(). filter(user=u). values_list ('count', flat = True ) ) )

77 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 77 Η συνάρτηση train καλείται για την εκπαίδευση του αλγορίθμου. Δέχεται ως όρισμα μια ιστοσελίδα και αν αυτή αξιολογείται θετικά ή αρνητικά. def train(self, item, cat, u): features = self.get_features(item) # Increment the count for every feature with this category for f in features: self.inc_feature(f, cat, u) # Increment the count for this category self.inc_cat(cat, u) Η συνάρτηση feature_prob δίνει τη βασική πιθανότητα εμφάνισης ενός feature σε μία κατηγορία απλά διαιρώντας το συνολικό αριθμό που ένα feature εμφανίστηκε στη κατηγορία με το συνολικό αριθμό των ιστοσελίδων στη δεδομένη κατηγορία. def feature_prob(self, f, cat, u): if self.cat_count(cat, u) == 0: return 0.0 return self.feature_count(f, cat, u) / self.cat_count(cat, u) Η συνάρτηση weighted_prob υπολογίζει μια ζυγισμένη πιθανότητα. H υποθετική πιθανότητα ap επιλέχθηκε ίση με 0.38 έπειτα από σειρά δοκιμών, δηλαδή όλες οι πιθανότητες θα ξεκινάν από το Με αυτό τον τρόπο αποφεύγεται η εντελώς λανθασμένη εξαγωγή συμπερασμάτων κατά τα πρωταρχικά στάδια της εκμάθησης του αλγορίθμου. def weighted_prob(self, f, cat, prf, u, weight=1.0, ap=0.38): basicprob = prf(f, cat, u) totals = sum([self.feature_count(f, c, u) for c in self.categories(u)]) bp = ((weight * ap) + (totals * basicprob)) / (weight + totals) return bp Η συνάρτηση cprob υπολογίζει μια πιθανότητα διαιρώντας τη συχνότητα εμφάνισης ενός feature σε μία κατηγορία με τη συχνότητα εμφάνισης του ίδιου feature σε όλες τις κατηγορίες. def cprob(self, f, cat, u): clf = self.feature_prob(f, cat, u) if clf == 0: return 0 freqsum = sum([self.feature_prob(f, c, u) for c in self.categories(u)]) p = clf / (freqsum) return p

78 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 78 Η συνάρτηση fisherprob αποτελεί τη συνάρτηση που καλείται για την αξιολόγηση των ιστοσελίδων. Κάνει άμεση ή έμμεση χρήση των υπολοίπων συναρτήσεων που παρουσιάστηκαν. def fisherprob(self, item, cat, u): # Πολλαπλασιάζει όλες τις πιθανότητες μαζί p = 1 features = self.get_features(item) for f in features: p *= (self.weighted_prob(f, cat, self.cprob, u)) # Παίρνει το φυσικό λογάριθμο και πολλαπλασιάζει το αποτέλεσμα με -2 fscore = -2 * math.log(p) # Κάνει χρήση της αντίστροφης συνάρτησης χ 2 και παίρνει με τον τρόπο αυτό το τελικό αποτέλεσμα. return self.invchi2(fscore, len(features) * 2) Η συνάρτηση invchi2 υπολογίζει την αντίστροφη συνάρτηση χ 2. def invchi2(self, chi, df): # inverse chi square for probability distributions m = chi / 2.0 s = term = math.exp(-m) for i in range(1, df // 2): term *= m / i s += term return min(s, 1.0)

79 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Django-Social-Auth Η 4 η υποεφαρμογή του όλου project έρχεται να καλύψει την ανάγκη μας για αυθεντικοποίηση και όχι μόνο. Πρόκειται ουσιαστικά για το package django-socialauth, που κάποιος τρίτος έχει φτιάξει για να επιτελεί κάποιες συγκεκριμένες εργασίες, το οποίο όμως εμείς τροποποιήσαμε σύμφωνα με τις ανάγκες μας. Πρόκειται για ένα μηχανισμό πιστοποίησης και εξουσιοδότησης σχεδιασμένο για τη πλατφόρμα Django. Ουσιαστικά παρέχει στο χρήστη δυνατότητα login και εγγραφής σε ένα site χρησιμοποιώντας κάποιο λογαριασμό του από κάποιο κοινωνικό δίκτυο. Το django-social-auth αναπτύχθηκε χρησιμοποιώντας ως βάση τον κώδικα δύο (2) άλλων packages, των django-twitter-oauth [40] και django-openid-auth [41]. Αξίζει να σημειωθεί ότι για το σκοπό αυτό έχουν δημιουργηθεί δεκάδες διαφορετικά packages. Πριν την επιλογή του συγκεκριμένου package επιχειρήθηκαν να χρησιμοποιηθούν πολλά άλλα. Κάποια από αυτά δε δούλευαν καθόλου λόγω μηδαμινής συντήρησης έπειτα από τη δημιουργία τους. Κάποια δούλευαν σωστά μόνο για κάποια από τα κοινωνικά δίκτυα (π.χ. Facebook) και όχι για το Twitter. Ο κυριότερος λόγος για τη μη σωστή λειτουργία ήταν ότι από τον Αύγουστο του 2010 το Twitter χρησιμοποιεί αποκλειστικά το πρωτόκολλο OAuth και κατήργησε το Basic Auth (περισσότερα για το OAuth στη παράγραφο 3.1.2). Αυτό είχε ως αποτέλεσμα πολλά από τα packages να μην είναι πλέον συμβατά. To django-social-auth παρέχει μηχανισμούς πιστοποίησης από τους ακόλουθους παρόχους: Google OpenID Google OAuth Google OAuth2 Yahoo OpenID OpenId like myopenid Twitter OAuth Facebook OAuth

80 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 80 Για την εγκατάσταση του μπορείτε να συμβουλευτείτε το παράρτημα Ι. Εμείς κρατήσαμε μόνο ότι είχε να κάνει με την αυθεντικοποίηση και τη πιστοποίηση ενός χρήστη μέσω του Twitter. Παρακάτω παρουσιάζονται συνοπτικά τα επίπεδα της συγκεκριμένης εφαρμογής με τις όποιες προσθήκες έγιναν: Model και ORM (object relational mapping) Layer της υποεφαρμογής Στο επίπεδο αυτό, στο αρχείο models.py, υπάρχουν οι συναρτήσεις για δημιουργία ενός νέου χρήστη στο σύστημα μας, καθώς και συναρτήσεις για έλεγχο αυθεντικοποίησης ενός χρήστη. Στο επίπεδο αυτό, στο αρχείο models.py, ορίζονται πλήρως τα μοντέλα UserSocialAuth, Tweeet, BestTweeet και Votes_sinceid. Τα τελευταία τρία μοντέλα (εκτός του UserSocialAuth δηλαδή) δεν ήταν μέρος του έτοιμου package, αλλά δημιουργήθηκαν για την κάλυψη των αναγκών της εφαρμογής μας. Για κάθε UserSocialAuth ορίζεται ότι θα περιέχει τα εξής στοιχεία: user, ο εκάστοτε χρήστης (ForeignKey στο μοντέλο User ). provider, ο πάροχος (σε μας σε όλους τους χρήστες πάροχος είναι το Twitter). uid, ένα μοναδικό id για κάθε χρήστη. extra_data, αποθηκεύονται σε μορφή json τα εξής: 1. oauth_token 2. oauth_token_secret 3. id του χρήστη στο Twitter Τα παραπάνω τρία (3) στοιχεία αντλούνται από το Twitter, τη στιγμή που ο χρήστης θα δώσει την έγκριση του να χρησιμοποιεί η εφαρμογή μας τον λογαριασμό του. Τα oauth token και oauth token secret αχρηστεύονται αν ο χρήστης απαγορεύσει κάποια στιγμή στη πορεία να έχει πρόσβαση στο λογαριασμό του. Για κάθε Tweet 1 ορίζεται ότι θα περιέχει τα εξής στοιχεία: text, το πλήρες κείμενο ενός tweet url, το url στο οποίο δείχνει το tweet

81 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 81 rating, η βαθμολογία που παίρνει κάθε tweet σύμφωνα με τις προτιμήσεις του χρήστη. t_user, ο εκάστοτε χρήστης (ForeignKey στο μοντέλο User ) tweetid, το μοναδικό id καθενός tweet date, η ημερομηνία δημιουργίας του tweet Twitterer, το όνομα αυτού που πόσταρε το συγκεκριμένο tweet Το μοντέλο BestTweet1 είναι παρόμοιο με το Tweeet με τη διαφορά ότι περιέχει και δύο (2) boolean μεταβλητές τις is_positive και is_negative που χρησιμεύουν στο χαρακτηρισμό ενός tweet σε ενδιαφέρον ή όχι και τη μετέπειτα εκπαίδευση του αλγορίθμου. Το μοντέλο Votes_sinceid έρχεται να συμπληρώσει το μοντέλο user με το id του τελευταίου tweet που αντλήθηκε. Στο ίδιο επίπεδο ορίζεται επακριβώς ποια από τα παραπάνω στοιχεία θα εμφανίζονται στη σελίδα διαχείρισης, με ποια ακριβώς σειρά, καθώς και σύμφωνα με ποια στοιχεία θα υπάρχει δυνατότητα ταξινόμησης από τον administrator. Το ίδιο επίπεδο περιέχει επίσης σε τέσσερα διαφορετικά αρχεία (στα fields.py, signals.py, utils.py ), ορίζονται όλες οι κλάσεις και οι συναρτήσεις που χρειάζονται για την αυθεντικοποίηση ενός χρήστη, τη δημιουργία και τη διαγραφή ενός χρήστη. View Layer της υποεφαρμογής Django-Social-Auth Στο αρχείο views.py βρίσκονται συναρτήσεις οι οποίες επιτελούν τις εξής εργασίες: 1. Έλεγχος των backends, και επιστροφή μηνύματος σε περίπτωση που δε βρεθεί το κατάλληλο backend για το Twitter. 2. Έναρξη των διαδικασιών αυθεντικοποίησης κάνοντας χρήση του κατάλληλου backend. 3. Ανακατεύθυνση του χρήστη στο Twitter

82 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Κατάλληλες ενέργειες για να δεχθούν ένα χρήστη πίσω, αφού αυθεντικοποιηθεί 5. Ενέργειες για αποσύνδεση του συνδεδεμένου χρήστη από το backend Στο αρχείο urls.py καθορίζονται τα urls που χρησιμοποιούνται κατά την κλήση των παραπάνω views Παραδείγματα μοντέλων Παρακάτω φαίνονται τα μοντέλα που έχουμε επιλέξει να υπάρχουν στη σελίδα διαχείρισης της εφαρμογής μας, όπως ακριβώς φαίνονται εκεί. Μοντέλο User Πρόκειται για μοντέλο που δημιουργείται αυτόματα κατά τη δημιουργία του project.

83 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 83 Εικόνα 17 Μοντέλο User Επιπλέον χαρακτηριστικά του πίνακα user είναι: Important Dates

84 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 84 Μοντέλο Classifier Category Αποτελεί μέρος της υποεφαρμογής Classifier. Εικόνα 18 - Μοντέλο Classifier Category Μοντέλο Classifier Feature Αποτελεί μέρος της υποεφαρμογής Classifier. Εικόνα 19 - Μοντέλο Classifier Feature

85 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 85 Μοντέλο User Social Auth Αποτελεί μέρος της υποεφαρμογής Django-Social-Auth, επεκτείνει ουσιαστικά το μοντέλο user. Εικόνα 20 - Μοντέλο User Social Auth Μοντέλο Tweeet Αποτελεί μέρος της υποεφαρμογής Django-Social-Auth. Εικόνα 21 - Μοντέλο Tweeet

86 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 86 Μοντέλο Tweeet (μέρος της υποεφαρμογής Django-Social-Auth) Εικόνα 22 - Μοντέλο BestTweeet Μοντέλο Votes Since_ID Αποτελεί μέρος της υποεφαρμογής Django-Social-Auth. Εικόνα 23 - Μοντέλο Votes Since_ID

87 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Εξωτερικά modules/packages που χρησιμοποιήθηκαν Twitter Το Twitter είναι ένα package, το οποίο μας επιτρέπει να χρησιμοποιήσουμε το API του Twitter. Πρόκειται δηλαδή για έναν απλό wrapper του Twitter api. Χρησιμοποιώντας τις συναρτήσεις του συγκεκριμένου πακέτου κάνουμε χρήση των μεθόδων του Twitter API. Μπορεί κανείς να το κατεβάσει ή να διαβάσει περισσότερα σχετικά στο [35]. Json Το json είναι ένα package, προεγκατεστημένο στις τελευταίες εκδόσεις Python (μετά τη 2.6). Ουσιαστικά μας επιτρέπει να κάνουμε χρήση του φορμάτ ανταλλαγής δεδομένων json (JavaScript Object Notation). Τα tweets που αντλούμε από το Twitter API είναι σε αυτή τη μορφή. Οπότε με τις συναρτήσεις αυτού του πακέτου μπορούμε να τα αντλήσουμε από τη home-timeline του χρήστη(parsing) και εν συνεχεία να τα επεξεργαστούμε. Μπορεί κανείς να το κατεβάσει ή να διαβάσει περισσότερα σχετικά στο [36]. Nltk + BeautifulSoup Το nltk (natural language processing toolkit) και το BeautifulSoup είναι πακέτο για parsing σε python. Τα χρησιμοποιούμε για να εξάγουμε κείμενο από ιστοσελίδες. Περισσότερα για τα πακέτα στα [37] και [38]. Στο σημείο αυτό να σημειωθεί ότι τα tweets από τα οποία έχει τη δυνατότητα να εκπαιδεύεται ο αλγόριθμος μπορούν να περιέχουν urls τα οποία δείχνουν σε ιστοσελίδες με λατινικούς και όχι ελληνικούς χαρακτήρες. Αυτό οφείλεται στη συνάρτηση sent_tokenise του πακέτου nltk που χρησιμοποιήσαμε για να εξάγουμε τις λέξεις από ένα url.

88 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη Βάση Δεδομένων Η διαδικτυακή εφαρμογή μας χρειάζεται προφανώς να αποθηκεύει ότι εκπαίδευση κάνει ο κάθε χρήστης και να επανακτεί τα δεδομένα που χρειάζεται ο χρήστης κάθε φορά που συνδέεται στο σύστημα μας. Όπως ήδη αναφέρθηκε με το Django framework μπορεί κανείς να καθορίσει πλήρως τα μοντέλα για τα δεδομένα του σε Python. H Django προσφέρει ένα πλούσιο, δυναμικό API για πρόσβαση στη βάση δεδομένων, καθώς και τη δυνατότητα στο δημιουργό της εφαρμογής να γράψει σε SQL όταν και αν το επιθυμεί. Όπως αναφέρθηκε στη παράγραφο 2.4 ενώ το Django υποστηρίζει τη χρήση διαφορετικών τύπων βάσεων δεδομένων, στη συγκεκριμένη εφαρμογή χρησιμοποιήθηκε η SQLite. Τι δεδομένα περιλαμβάνει η Βάση στο σύνολό της Η βάση περιλαμβάνει συνοπτικά τα παρακάτω δεδομένα: Όλα τα προσωπικά στοιχεία που αφορούν τους χρήστες που χρησιμοποιούν την εφαρμογή. Αυτά είναι: 1. όνομα, 2. επώνυμο, 3. username, 4. password, 5. id, 6. τα δικαιώματα χρήσης της εφαρμογής, 7. ημερομηνία δημιουργίας του χρήστη, 8. ημερομηνία τελευταίας τροποποίησης και προσπέλασης στο σύστημα. Για κάθε χρήστη αποθηκεύονται επιπλέον τα: 1. oauth token, 2. oauth token secret και

89 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη user id (διαφορετικό από το εσωτερικό id που έχει ο χρήστης και αναφέρθηκε παραπάνω), τα οποία χρησιμοποιούνται για την αυθεντικοποίηση του χρήστη μέσω του Twitter(βλ. παράγραφο 3.1). Για κάθε χρήστη αποθηκεύεται: 1. ένα since_id, το οποίου η τιμή είναι ίδια με το id του τελευταίου tweet που έχει αντληθεί από τη home-timeline του χρήστη. 2. Πόσες φορές έχει ψηφίσει συνολικά ο κάθε χρήστης, καθώς και πόσες από αυτές ήταν θετικές και πόσες αρνητικές ψήφοι. Έναν πίνακας που περιλαμβάνει όλα τα ημερήσια tweets (<=2000), που υπάρχουν στη home-timeline του χρήστη. Πιο συγκεκριμένα αποθηκεύονται τα εξής στοιχεία ενός tweet: 1. Text, το κείμενο αυτό κάθε αυτό (<140 χαρακτήρες). 2. Url, το url στο οποίο δείχνει το tweet. 3. Ratting, η βαθμολογία του tweet, όπως προκύπτει από τον αλγόριθμο μηχανικής μάθησης σύμφωνα με τις προτιμήσεις του χρήστη. 4. ID, το id του tweet 5. User, ο χρήστης στου οποίου τη home-timeline βρέθηκε το tweet. 6. Date, η ημερομηνία δημιουργίας του Tweet 7. Twitterer, το όνομα του χρήστη που έγραψε το tweet Ο πίνακας αυτός αδειάζει από δεδομένα μία φορά την ημέρα. Ο συνολικός αριθμός ιστοσελίδων που βαθμολογήθηκαν θετικά από έναν χρήστη, καθώς και ο συνολικός αριθμός ιστοσελίδων που βαθμολογήθηκαν αρνητικά. Όλες οι λέξεις που εμφανίστηκαν στις ιστοσελίδες που βαθμολόγησαν οι χρήστες, καθώς και ο αριθμός των φορών που εμφανίστηκαν σε ιστοσελίδες που αξιολογήθηκαν θετικά και ο αριθμός των φορών που εμφανίστηκαν σε ιστοσελίδες που αξιολογήθηκαν αρνητικά.

90 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 90 Όλα τα δεδομένα της βάσης είναι μεταξύ τους συσχετισμένα είτε άμεσα είτε έμμεσα δίνοντας τη δυνατότητα στο χρήστη να επεξεργαστεί με όποιον τρόπο αυτός θέλει τα δεδομένα και να εξάγει όποιες ακριβώς πληροφορίες επιθυμεί. 5.4 Κατηγορίες χρηστών και οι απαιτήσεις τους για πρόσβαση στη βάση και είσοδο και έξοδο δεδομένων Οι χρήστες που χρησιμοποιούν την εφαρμογή εμπίπτουν στις παρακάτω 2 κατηγορίες: Administrators, (Οι Διαχειριστές της Βάσης Δεδομένων - ΔΒΔ). Οι ΔΒΔ έχουν πλήρη πρόσβαση στη βάση και ως εκ τούτου μπορούν να εκτελούν όλες τις λειτουργίες SELECT, INSERT, DELETE, UPDATE στα πεδία των πινάκων της. Επιπρόσθετα, είναι υπεύθυνοι για τη διαχείριση, συντήρηση και επέκταση της βάσης δεδομένων(π.χ. προσθήκη, διαγραφή ολόκληρου πίνακα). Ακόμη, εξουσιοδοτούν την προσπέλαση και τα δικαιώματα που προκύπτουν στη βάση, όπως επίσης συντονίζουν και παρακολουθούν τη χρήση της. Τέλος, είναι υπεύθυνοι για προβλήματα όπως παραβιάσεις ασφάλειας ή χαμηλή απόδοση του συστήματος(π.χ. μεγάλοι χρόνοι απόκρισης). Simple Users, μπορούν να χρησιμοποιούν την εφαρμογή, έχοντας κάνει login μέσω του λογαριασμού τους στο Twitter. Δεν έχουν όμως κανένα δικαίωμα επεξεργασίας για καμία πληροφορία στη βάση δεδομένων.

91 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 91 ΚΕΦΑΛΑΙΟ 6. Πειραματικό Μέρος Για την αξιολόγηση της εφαρμογής αρχικά ελέγχθηκε ότι πράγματι ένας χρήστης μπορεί να κάνει εγγραφή στην εφαρμογή μέσω του Twitter χωρίς όμως σε καμία περίπτωση να δίνει το συνδυασμό username και password. Εν συνεχεία ελέγξαμε αν μπορούμε να αντλήσουμε τα tweets από τη home-timeline του χρήστη και να τα αποθηκεύσουμε στη βάση δεδομένων του συστήματος για περαιτέρω χρήση και επεξεργασία. Στη συνέχεια σειρά είχε η αξιολόγηση των αποτελεσμάτων που παρέχει η εφαρμογή στον εκάστοτε χρήστη. Για την αξιολόγηση των αποτελεσμάτων αυτών δημιουργήθηκαν συνολικά 7 χρήστες Twitter, καθένας από τους οποίους είχε διαφορετικά ενδιαφέροντα. Οι Twitterers που ακολουθούσαν ενδεικτικά τρεις από τους παραπάνω χρήστες φαίνονται στο παράρτημα ΙΙ. Να σημειωθεί ότι για όλους τους χρήστες που χρησιμοποιήθηκαν επιλέχθηκε σκοπίμως να ακολουθούνται αρκετοί λογαριασμοί περιοδικών, εφημερίδων και τηλεοπτικών μέσων. Οι λογαριασμοί αυτοί ανεβάζουν συνήθως δεκάδες νέα tweets ημερησίως με αποτέλεσμα να έχουμε μια πληθώρα tweets από τα οποία μπορούμε να βγάλουμε ασφαλέστερα συμπεράσματα. Επιπρόσθετα οι λογαριασμοί αυτοί τις περισσότερες φορές ποστάρουν tweets, τα οποία περιέχουν urls, τα οποία εμείς χρειαζόμαστε για την ανάλυση μας. Επιπλέον αρκετά από τα μέσα που ακολουθήσαμε παρέχουν ειδήσεις γενικού περιεχομένου, πράγμα το οποίο εμείς

92 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 92 επιδιώκουμε. Επιθυμούμε tweets διαφορετικού περιεχομένου, γι αυτό και γενικά προσπαθήσαμε να ακολουθήσουμε Twitterers από διαφορετικά θεματικά πεδία, ώστε να ελεγχτεί καλύτερα η αποτελεσματικότητα της εφαρμογής μας. Η εφαρμογή Tweet for Me σκοπίμως δε λαμβάνει υπ όψη της ποιος Twitterer πόσταρε το κάθε tweet. Με τον τρόπο αυτό διασφαλίζουμε ότι όλα τα tweets, που βρίσκονται στη home-timeline θεωρούνται ίσης σημασίας προτού βαθμολογηθούν. Αυτό γίνεται διότι θέλουμε ο αλγόριθμος να μπορεί να χρησιμοποιηθεί εξίσου και από χρήστες που δεν ακολουθούν Twitterers που συνήθως γράφουν γύρω από ένα συγκεκριμένο θέμα. Αν λαμβάναμε υπόψη μας ποιος γράφει τι, τότε θα μπορούσαμε να κάνουμε κάτι τέτοιο: Μετά από μια αρχική εκπαίδευση του αλγορίθμου, και αφού καταλαβαίναμε τι περίπου topics αρέσουν περίπου στον καθένα, θα ενισχύαμε βαθμολογικά τα tweets εκείνων των χρηστών που γνωρίζουμε ότι γράφουν σχετικά με τα συγκεκριμένα topics. Κάτι τέτοιο όμως θα ήταν άδικο για τα tweets χρηστών, οι οποίοι κάνουν αναφορές σε ιστοσελίδες που ανήκουν σε διάφορες θεματικές ενότητες. 6.1 Κυρίως Πειραματικό Μέρος Ως μέτρο της αποτελεσματικότητας της εφαρμογής χρησιμοποιήθηκε το ποσοστό των σχετικών με τα ενδιαφέροντα του χρήστη tweets, που βρέθηκαν στην πρώτη εικοσάδα των tweets που προτάθηκαν στον χρήστη. Να σημειωθεί ότι αναφερόμαστε στα καλύτερα 20 tweets που μπορεί να προκύψουν ανάμεσα σε 300, 500, 700 ή ακόμα και παραπάνω tweets που μπορεί να αντληθούν κατά τη διάρκεια μιας ημέρας από τη home-timeline ενός χρήστη. Ο χαρακτηρισμός των 20 προτεινόμενων από την εφαρμογή tweets ως σχετικά ή μη με τα ενδιαφέρονταπροτιμήσεις του χρήστη έγινε από τους ίδιους τους χρήστες. Γι αυτό το λόγο και προσπαθήσαμε να είμαστε όσο το δυνατόν πιο αντικειμενικοί γίνεται. Όταν παρακάτω αναφερόμαστε σε εβδομάδες εννοούμε ένα διάστημα κατά το οποίο ο χρήστης αξιολόγησε περίπου 45 ιστοσελίδες, αφήνοντας πολλές ιστοσελίδες που του προτάθηκαν χωρίς χαρακτηρισμό. Μπορεί δηλαδή κάποιος αν έχει το χρόνο και τη διάθεση να φτάσει τα αποτελέσματα μιας εβδομάδας σε μόλις

93 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 93 δύο ημέρες βαθμολογώντας tweets/ημέρα. Αυτό που έχει σημασία είναι ο χρήστης να αξιολογεί περίπου ίδιο αριθμό θετικών και αρνητικών ιστοσελίδων. Παρακάτω παρουσιάζονται τα αποτελέσματα από τη χρήση της εφαρμογής για τρεις χρήστες, τους AntoniouGeorge, Kolokythas1 και antoniou_g. Στο παράρτημα ΙΙ εμφανίζονται σε μορφή πίνακα και οι Twitteteres τους οποίους οι τρεις αυτοί χρήστες ακολουθούν. Τα ενδιαφέροντα των παραπάνω χρηστών φαίνονται στους παρακάτω πίνακες. Πίνακας 1 - Ενδιαφέροντα χρήστη AntoniouGeorge AntoniouGeorge 1. Άρθρα αθλητικού περιεχομένου 2. Άρθρα τεχνολογικού περιεχομένου 3. Ορισμένα άρθρα γενικού επιστημονικού περιεχομένου (λιγότερο) Πίνακας 2 - Ενδιαφέροντα χρήστη Kolokythas1 Kolokythas1 1. Άρθρα σχετικά με Πολιτική (εξειδίκευση σε αμερικανική πολιτική) 2. Αστυνομικό ρεπορτάζ 3. Πολεμικό ρεπορτάζ 4. Αθλητικά (εξειδίκευση σε θέματα ποδοσφαίρου) 5. Άρθρα σχετικά με Υγεία Πίνακας 3 - Ενδιαφέροντα χρήστη antoniou_g antoniou_g 1. Τεχνολογικά Θέματα (εξειδίκευση σε Apple, Google) Για τον AntoniouGeorge τα αποτελέσματα από τη χρήση του αλγορίθμου ήταν ενθαρρυντικά από τις πρώτες κιόλας μέρες χρήσης του αλγορίθμου. Τα ποσοστά των ενδιαφερόντων tweets ξεκίνησαν από 60% μετά από τη βαθμολόγηση περίπου

94 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη ιστοσελίδων και σταδιακά αυξήθηκαν περίπου στο 95% μετά από τη βαθμολόγηση περίπου 180 ιστοσελίδων (υπήρχαν μέρες που και τα 20 πρώτα tweets εμπίπταν σε κάποια από τα ενδιαφέροντά του). Η βαθμολόγηση αυτών των ιστοσελίδων έγινε από τη πλευρά του χρήστη σε διάστημα περίπου 5 εβδομάδων. Τα ποσοστά ενδιαφερόντων tweets παρέμειναν περίπου σε αυτά τα επίπεδα ασχέτως με τη βαθμολόγηση επιπλέον ιστοσελίδων (υποθέτοντας φυσικά ότι ο χρήστης εξακολουθεί να έχει τα ίδια ακριβώς ενδιαφέροντα) χρήστης AntoniouGeorge 0 1η βδομάδα 2η βδομάδα 3η βδομάδα 4η βδομάδα 5η βδομάδα ενδιαφέροντα tweets αδιάφορα tweets Διάγραμμα 1 - Ποσοστά ενδιαφερόντων και αδιάφορων tweets για το χρήστη AntoniouGeorge Ο χρήστης Kolokythas1, όπως φαίνεται και από τον πίνακα 2, ενδιαφερόταν για πολλές διαφορετικές κατηγορίες. Αν και ίσως περίμενε κανείς να είναι ευκολότερο να βρεθούν 20 ενδιαφέροντα tweets σχετικά με τα ενδιαφέροντα του, τα αποτελέσματα έδειξαν ότι ειδικά τις 2 πρώτες εβδομάδες χρήσης ο αλγόριθμος μπερδευόταν αρκετά στην αξιολόγηση των tweets. Μετά από τις 2 αυτές εβδομάδες όμως και αφού άρθρα όλων των υπόλοιπων κατηγοριών αξιολογούταν αρνητικά, ο αλγόριθμος άρχισε να έχει τα επιθυμητά αποτελέσματα. Πιο συγκεκριμένα: τα ποσοστά των ενδιαφερόντων tweets ξεκίνησαν από το χαμηλό 50% μετά από τη βαθμολόγηση περίπου 40 ιστοσελίδων και σταδιακά

95 Δημιουργία συστήματος υπόδειξης tweets με βάση τις προτιμήσεις του χρήστη 95 αυξήθηκαν περίπου στο 95% μετά από τη βαθμολόγηση περίπου 170 ιστοσελίδων. Και σε αυτή τη περίπτωση η βαθμολόγηση των ιστοσελίδων έγινε από τη πλευρά του χρήστη σε διάστημα περίπου 5 εβδομάδων. Τα ποσοστά ενδιαφερόντων tweets παρέμειναν επίσης περίπου σε αυτά τα επίπεδα ασχέτως με τη βαθμολόγηση επιπλέον ιστοσελίδων (υποθέτοντας φυσικά ότι ο χρήστης εξακολουθεί να έχει τα ίδια ακριβώς ενδιαφέροντα) χρήστης Kolokythas1 0 1η βδομάδα 2η βδομάδα 3η βδομάδα 4η βδομάδα 5η βδομάδα ενδιαφέροντα tweets αδιάφορα tweets Διάγραμμα 2 - Ποσοστά ενδιαφερόντων tweets για το χρήστη Kolokythas1 Όπως βλέπουμε και από τον πίνακα 3 ο χρήστης antoniou_g ενδιαφερόταν αποκλειστικά και μόνο για θέματα σχετικά με Τεχνολογικά Θέματα. Τα αποτελέσματα από τη χρήση του αλγορίθμου ήταν ακόμα πιο ενθαρρυντικά τις πρώτες μέρες χρήσης της εφαρμογής σε σύγκριση με εκείνα των υπολοίπων χρηστών. Και εδώ ως μέτρο της αποτελεσματικότητας του αλγορίθμου χρησιμοποιήθηκε το ποσοστό των σχετικών με τα ενδιαφέροντα του χρήστη tweets, που βρέθηκαν στην πρώτη εικοσάδα των tweets που προτάθηκαν στον χρήστη. Για τον antoniou_g τα ποσοστά των ενδιαφερόντων tweets ξεκίνησαν από 65% μετά από τη βαθμολόγηση περίπου 40 ιστοσελίδων και γρήγορα αυξήθηκαν περίπου στο

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Όνοµα: Νικολαΐδης Αντώνιος Επιβλέπων: Τ. Σελλής Περίληψη ιπλωµατικής Εργασίας Συνεπιβλέποντες: Θ. αλαµάγκας, Γ. Γιαννόπουλος

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018 Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα

Διαβάστε περισσότερα

Twitter και Εφαρμογές

Twitter και Εφαρμογές Twitter και Εφαρμογές Konstantinos Semertzidis ksemer@cs.uoi.gr Γενικά για το Twitter Το Twitter είναι μια δωρεάν social network και microblogging υπηρεσία. Δημιουργήθηκε το Μάρτιο του 2006 και λειτούργησε

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Facebook (1 ο Μέρος) Ερατώ Κουστουμπάρδη ΤΕΙ Ιονίων Νήσων Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Σκοπός του Εργαστηρίου Να εισάγει τους φοιτητές στον κόσμο των μέσων

Διαβάστε περισσότερα

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ Περιγραφή Αυτό το πρόγραμμα έχει σχεδιαστεί για να βοηθήσει τους μαθητές να γνωρίσουν τις υπηρεσίες και τις εφαρμογές του διαδικτύου καθώς και τους

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Twitter Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Δομή Εργαστηρίου Εισαγωγή Facebook (Χ2) Twitter Pinterest YouTube Instagram Wordpress Google + LinkedIn Hootsuite Επανάληψη

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Facebook (1 ο Μέρος) Ερατώ Κουστουμπάρδη Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Σκοπός του Εργαστηρίου Να εισάγει τους φοιτητές στον κόσμο των μέσων κοινωνικής δικτύωσης

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία AtYourService CY : Create a REST API Δημήτρης Χριστοδούλου Λεμεσός 2016 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ

Διαβάστε περισσότερα

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Μεταπτυχιακό Δίπλωμα Ειδίκευσης Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Δρ. Κακαρόντζας Γεώργιος Επίκουρος Καθηγητής Τμ. Μηχανικών Πληροφορικής Τ.Ε. Μηχανική Λογισμικού για Διαδικτυακές

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας) Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016 Γεωργία Καπιτσάκη (Λέκτορας) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα συλλογής

Διαβάστε περισσότερα

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ -Για τους Φοιτητές- Έκδοση 1.2 Οκτώβριος 2015 Υπεύθυνος Σύνταξης: Χρήστος Λάζαρης (lazaris@aueb.gr) Πίνακας Περιεχομένων Εισαγωγή...

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Data Mining - Classification

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Data Mining - Classification ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ Data Mining - Classification Data Mining Ανακάλυψη προτύπων σε μεγάλο όγκο δεδομένων. Σαν πεδίο περιλαμβάνει κλάσεις εργασιών: Anomaly Detection:

Διαβάστε περισσότερα

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence Έκδοση 1.3 Ιούνιος 2014 Περιεχόμενα Εφαρμογή Διαχείρισης Τηλεδιασκέψεων... 2 Προβολή τηλεδιασκέψεων... 3 Προσθήκη τηλεδιάσκεψης... 4 Τροποποίηση

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

Π3.11 Εκπαιδευτικό Υλικό. (Υπηρεσία Ενημέρωσης για Εκπαιδευτικές και Πολιτισμικές Δράσεις)

Π3.11 Εκπαιδευτικό Υλικό. (Υπηρεσία Ενημέρωσης για Εκπαιδευτικές και Πολιτισμικές Δράσεις) Π3.11 Εκπαιδευτικό Υλικό (Υπηρεσία Ενημέρωσης για Εκπαιδευτικές και Πολιτισμικές Δράσεις) Για το Έργο «Πληροφοριακό Σύστημα Εξωστρεφών Δράσεων» Π3.11 Εκπαιδευτικό Υλικό «Πληροφοριακό Σύστημα Εξωστρεφών

Διαβάστε περισσότερα

Η χρήση του MOODLE από την οπτική γωνία του ιαχειριστή

Η χρήση του MOODLE από την οπτική γωνία του ιαχειριστή Ανοικτή και Εξ Αποστάσεως Εκπαίδευση Χρησιµοποιώντας το Εκπαιδευτικό Περιβάλλον του MOODLE. Open and Distance Learning Using MOODLE Learning Environment Αθανάσιος Ι. Μάργαρης, Ευθύµιος. Κότσιαλος Πανεπιστήµιο

Διαβάστε περισσότερα

Γκέγκα Ευρώπη Κωστοπούλου Ειρήνη

Γκέγκα Ευρώπη Κωστοπούλου Ειρήνη Γκέγκα Ευρώπη egkegka@it.teithe.gr Κωστοπούλου Ειρήνη eirkost@it.teithe.gr 2 ο σε επισκεψιμότητα των χρηστών στο web καθημερινά Κοινωνικό δίκτυο με τους περισσότερους χρήστες 1 ο σε προτίμηση των φοιτητών

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

Διαβάστε περισσότερα

Οδηγός LinkedIn. «10 συμβουλές επέκτασης της επιχείρησης σας, χρησιμοποιώντας το LinkedIn» Provided to you by

Οδηγός LinkedIn. «10 συμβουλές επέκτασης της επιχείρησης σας, χρησιμοποιώντας το LinkedIn» Provided to you by Οδηγός LinkedIn «10 συμβουλές επέκτασης της επιχείρησης σας, χρησιμοποιώντας το LinkedIn» Provided to you by 2 Οδηγός Linkedin, πώς να βοηθήσετε την επιχείρηση σας χρησιμοποιώντας το Ο ποιο κάτω οδηγός

Διαβάστε περισσότερα

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android Πτυχιακή Εργασία Φοιτητής:

Διαβάστε περισσότερα

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 ELab Π Τ Υ Χ Ι Α

Διαβάστε περισσότερα

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διπλωματική Εργασία με θέμα: Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού Καραγιάννης Ιωάννης Α.Μ.

Διαβάστε περισσότερα

Περιεχόμενα. Visio / White paper 1

Περιεχόμενα. Visio / White paper 1 Περιεχόμενα Τι είναι η πλατφόρμα Visio Αρχιτεκτονική Δουλεύοντας με το Περιεχόμενο Πηγές Περιεχόμενου Διαγραφή Περιεχομένου Βασικές Λειτουργίες Προφίλ Χρήστη Διαχείριση Χρηστών Σύστημα Διαφημίσεων Αποθήκευση

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών 1 Συστήματα Αυτοματισμού Βιβλιοθηκών Τα Συστήματα Αυτοματισμού Βιβλιοθηκών χρησιμοποιούνται για τη διαχείριση καταχωρήσεων βιβλιοθηκών. Τα περιεχόμενα των βιβλιοθηκών αυτών είναι έντυπα έγγραφα, όπως βιβλία

Διαβάστε περισσότερα

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Μάθημα Πρώτο Εισαγωγή στις Υπηρεσίες Ιστού (Web Services) Μοντέλα WS JSON Χρήση (consume) WS μέσω python Πρόσβαση σε WS και άντληση δεδομένων Παραδείγματα

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Εισαγωγικό Φροντιστήριο

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Εισαγωγικό Φροντιστήριο ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ Εισαγωγικό Φροντιστήριο Project του μαθήματος Εργασία 2 ατόμων Προφορική εξέταση για: Project (80%) Θεωρία (20%) Στο φροντιστήριο: Ζητήματα

Διαβάστε περισσότερα

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 6 Μαρτίου 2016 Παναγιώτης Σακαλάκης Αν υπάρχει κάτι που γνωρίζει ο περισσότερος κόσμος για το Facebook, αυτό είναι πως κατέχει την πρώτη θέση

Διαβάστε περισσότερα

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5.1 Εισαγωγή Το πρακτικό κομμάτι της πτυχιακής μας εργασίας αφορά την δημιουργία μιας λειτουργικής ιστοσελίδας με την χρήση της πλατφόρμας του Weebly, που αποτελεί μια σύγχρονη

Διαβάστε περισσότερα

Social Network : Programming on FACEBOOK

Social Network : Programming on FACEBOOK Social Network : Programming on FACEBOOK Συντελεστές: Παύλος Τούλουπος Ευθυμία Παπαδοπούλου Ξάνθη Μάρκου Κοινωνικά Δίκτυα Κοινωνικό δίκτυο προέρχεται από την ψυχολογία αφορά μια κοινωνική δομή ατόμων τα

Διαβάστε περισσότερα

Κοινωνικά Δίκτυα & Καλές Περιβαλλοντικές Πρακτικές

Κοινωνικά Δίκτυα & Καλές Περιβαλλοντικές Πρακτικές Κοινωνικά Δίκτυα & Καλές Περιβαλλοντικές Πρακτικές Αγγελική Καραματσούκη karamaag@gmail.com Πράσινες Ιδέες 22/10/2014 Γνωριμία 2 Αγγελική Καραματσούκη Πτυχίο Νοσηλευτικής, Πτυχίο Πληροφορικής Διδακτορικό

Διαβάστε περισσότερα

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΘΕΣΣΑΛΟΝΙΚΗ, 2016 ΕΙΣΑΓΩΓΗ Μια διαδικτυακή υπηρεσία μπορεί να περιγραφεί απλά σαν μια οποιαδήποτε

Διαβάστε περισσότερα

Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ

Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ 1 Λειτουργικές απαιτήσεις Το σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών στοχεύει στο να επιτρέπει την πλήρως ηλεκτρονική υποβολή αιτήσεων από υποψήφιους

Διαβάστε περισσότερα

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη 01 Εισαγωγή Μια απλή και γρήγορη εισαγωγή Το Splunk > είναι ένα πρόγραμμα το οποίο πρωτοεμφανίστηκε στην αγορά το 2003 και αποτελεί ένα πρόγραμμα εξόρυξης

Διαβάστε περισσότερα

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή Τι είναι ένα CMS CMS ή Σύστημα Διαχείρισης Περιεχομένου (Content Management System) ονομάζουμε ένα λογισμικό που μας βοηθά να ελέγχουμε και να διαχειριζόμαστε έναν ιστότοπο δημόσιας ή περιορισμένης πρόσβασης.

Διαβάστε περισσότερα

Μέσα κοινωνικής δικτύωσης και κοινοποίηση περιεχομένου

Μέσα κοινωνικής δικτύωσης και κοινοποίηση περιεχομένου Μέσα κοινωνικής δικτύωσης και κοινοποίηση περιεχομένου Οι συμμετέχοντες θα σκεφτούν για το απόρρητο όσον αφορά τον τρόπο με τον οποίο κοινοποιούν πληροφορίες και επικοινωνούν με τους άλλους στο διαδίκτυο,

Διαβάστε περισσότερα

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL: στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL:  στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση Αναζήτηση στον Ιστό Χρήση μιας μηχανής αναζήτησης Επιλογή συγκεκριμένης μηχανής αναζήτησης Είναι συχνό το φαινόμενο να θέλει ο χρήστης να εντοπίσει πληροφορίες στο διαδίκτυο και να μην ξέρει που να κοιτάξει.

Διαβάστε περισσότερα

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΥΟΥ Καλαμάτα, 2015 Το Διαδίκτυο Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). Πρόκειται

Διαβάστε περισσότερα

Ημερομηνία Παράδοσης: 4/4/2013

Ημερομηνία Παράδοσης: 4/4/2013 Δράση 9.14 / Υπηρεσία εντοπισμού λογοκλοπής Κυρίως Παραδοτέο / Σχεδιασμός και ανάπτυξη λογισμικού (λογοκλοπής) και βάσης δεδομένων (αποθετηρίου) Επιμέρους Παραδοτέο 9.14.1.4 / Πληροφοριακό σύστημα υπηρεσίας

Διαβάστε περισσότερα

Μάθημα 4ο. Προγράμματα

Μάθημα 4ο. Προγράμματα Μάθημα 4ο Προγράμματα Σελίδα 47 από 106 4.1 Εγκατάσταση προγραμμάτων Όπως έχουμε πει στο πρώτο μάθημα (Σημειώσεις 1ου Μαθήματος 1.3.3.Β σελ. 12) τα προγράμματα ή αλλιώς εφαρμογές αποτελούν μέρος του λογισμικού

Διαβάστε περισσότερα

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification Speed-0 Web and Mobile Platform Speed-0 WMP: Web and Mobile Platform Software Requirements Specification Version Revision History Date Version Description People 5/4/2012 Αρχικές Προδιαγραφές

Διαβάστε περισσότερα

Ανάκτηση Πληροφορίας

Ανάκτηση Πληροφορίας Το Πιθανοκρατικό Μοντέλο Κλασικά Μοντέλα Ανάκτησης Τρία είναι τα, λεγόμενα, κλασικά μοντέλα ανάκτησης: Λογικό (Boolean) που βασίζεται στη Θεωρία Συνόλων Διανυσματικό (Vector) που βασίζεται στη Γραμμική

Διαβάστε περισσότερα

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Τεχνολογίες Κοινωνικής Δικτύωσης στην Εκπαίδευση

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Τεχνολογίες Κοινωνικής Δικτύωσης στην Εκπαίδευση ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Τεχνολογίες Κοινωνικής Δικτύωσης στην Εκπαίδευση Ομάδα: Αριστερίδου Δανάη Ελένη (08) Ευαγγελόπουλος Νίκος (670)

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. Οδηγός Διαχειριστή Το m-learning Toolkit είναι μια ολοκληρωμένη πλατφόρμα εξ αποστάσεως εκπαίδευσης που έχει σχεδιαστεί για να υπάρχει η δυνατότητα της πρόσβασης

Διαβάστε περισσότερα

Η ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ

Η ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ Η ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ ΠΑΡΟΥΣΙΑΣΗ II 4/11/2013 Κοινωνικά Δίκτυα [Social Networks] ΔΗΜΟΣΙΑ ΚΕΝΤΡΙΚΗ ΒΙΒΛΙΟΘΗΚΗ ΣΕΡΡΩΝ Το έργο αυτό βρίσκεται υπό άδεια Creative Commons Αναφορά-Μη-Εμπορική 3.0 Ελλάδα

Διαβάστε περισσότερα

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

Διαβάστε περισσότερα

K9 Γονικός έλεγχος. Εισαγωγή

K9 Γονικός έλεγχος. Εισαγωγή Εισαγωγή Το Κ9 αποτελεί ένα εύχρηστο πρόγραμμα γονικού ελέγχου με το οποίο μπορούμε να φιλτράρουμε τις δραστηριότητες του παιδιού μας στο Διαδίκτυο. Το παρόν αποτελεί ένα συνοπτικό οδηγό για την εγκατάσταση

Διαβάστε περισσότερα

Πετράκης Κώστας ΓΤΠ-61 Μάρτιος 2015

Πετράκης Κώστας ΓΤΠ-61 Μάρτιος 2015 Πετράκης Κώστας ΓΤΠ-61 Μάρτιος 2015 Εισαγωγή Πρόβλημα Ορισμός Μέθοδοι πρόβλεψης προτιμήσεων Δημιουργία βέλτιστων προτάσεων Τεκμηρίωση προτάσεων Ενημέρωση και επεκτασιμότητα People read around 10 MB worth

Διαβάστε περισσότερα

Έκδοσης 2005 Π. Κεντερλής

Έκδοσης 2005 Π. Κεντερλής Σύστημα «Ηλέκτρα» Το Σύστημα «Ηλέκτρα» αποτελεί μια ολοκληρωμένη διαδικτυακή εφαρμογή διαχείρισης πληροφοριών μαθημάτων και χρηστών. Αναπτύχθηκε εξολοκλήρου από τον εργαστηριακό συνεργάτη Παναγιώτη Κεντερλή

Διαβάστε περισσότερα

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος Δικτυακοί τόποι Η σχεδίαση ενός δικτυακού τόπου Δρ. Ματθαίος Α. Πατρινόπουλος Πώς χρησιμοποιούμε το διαδίκτυο; ΔΙΑΦΑΝΕΙΕΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΔΙΑΔΙΚΤΥΟΥ. 2 Από το www.smartinsights.

Διαβάστε περισσότερα

Δημιουργία ιστοσελίδας με. Wordpress - Βασικές λειτουργίες

Δημιουργία ιστοσελίδας με. Wordpress - Βασικές λειτουργίες Δημιουργία ιστοσελίδας με Wordpress - Βασικές λειτουργίες Περιεχόμενα Εγγραφή και αρχικές ρυθμίσεις Διαχείριση Ιστοσελίδας Δημιουργία Menu Δημιουργία σελίδας Δημιουργία Άρθρου Αλλαγή Εμφάνισης Εγγραφή

Διαβάστε περισσότερα

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων)

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων) Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων) Τι είναι το Wordpress: To Wordpress είναι ένα δωρεάν ανοικτού κώδικα (open source) λογισμικό (εφαρμογή), με το οποίο μπορεί κάποιος να δημιουργεί

Διαβάστε περισσότερα

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430 Σχεδίαση Εκπαιδευτικού Λογισμικού Εργασία 2 - Α' φάση Σενάριο/Σχέδιο μαθήματος Σταματία Κορρέ Μ1430 2 Περιεχόμενα Τίτλος... 2 Γνωστικό αντικείμενο... 2 Βαθμίδα εκπαίδευσης... 3 Διδακτικοί στόχοι... 3 Αναμενόμενα

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

Διαβάστε περισσότερα

Η διαδικτυακή εφαρμογή ESOG: Εγχειρίδιο χρήσης *

Η διαδικτυακή εφαρμογή ESOG: Εγχειρίδιο χρήσης * Η διαδικτυακή εφαρμογή ESOG: Εγχειρίδιο χρήσης * Σ. Ουγιάρογλου, M.Sc., Καθηγητής Πληροφορικής, Γ.Ε.Λ. Θέρμου Αιτ/νίας stoug@sch.gr ΠΕΡΙΛΗΨΗ Αυτές οι σελίδες συνθέτουν ένα εγχειρίδιο χρήσης της διαδικτυακής

Διαβάστε περισσότερα

Προγραμματίζω παίζοντας: βασικές έννοιες προγραμματισμού με το Scratch

Προγραμματίζω παίζοντας: βασικές έννοιες προγραμματισμού με το Scratch Προγραμματίζω παίζοντας: βασικές έννοιες προγραμματισμού με το Scratch Υποδειγματικό Σενάριο Γνωστικό αντικείμενο: Ερευνητική Εργασία - Project Δημιουργός: ΦΩΤΙΟΣ ΛΑΖΑΡΙΝΗΣ ΙΝΣΤΙΤΟΥΤΟ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΠΟΛΙΤΙΚΗΣ

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Twitter Κουστουμπάρδη Ερατώ ΤΕΙ Ιονίων Νήσων Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Twitter Το Twitter είναι μία micro-blogging υπηρεσία, η οποία επιτρέπει στους

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ανάπτυξη διαδικτυακής εφαρμογής υποστήριξης των δράσεων περιβαλλοντικής διαχείρισης της παράκτιας ζώνης του Θερμαϊκού Κόλπου και διαδραστικής εφαρμογής αναφοράς περιβαλλοντικών προβλημάτων Εγχειρίδιο Χρήσης-Οδηγός

Διαβάστε περισσότερα

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ: http://www.greektuts.net/greek-in-joomla/

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ: http://www.greektuts.net/greek-in-joomla/ 1) Εμφάνιση ιστοσελίδας Ανοίγουμε το πρόγραμμα πλοήγησης (Firefox, Chrome, Internet Explorer κτλ) και στη γραμμή διευθύνσεων πληκτρολογούμε τη διεύθυνση http://localhost ή http://127.0.0.1. Αν δεν βλέπουμε

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Εξαγωγή γεωγραφικής πληροφορίας από δεδομένα παρεχόμενα από χρήστες του

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ Δρ. Κουζαπάς Δημήτριος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Μηχανές Αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες

Διαβάστε περισσότερα

Περιεχόμενα Πώς να χρησιμοποιήσετε το βιβλίο... 7 Αντί προλόγου... 9 Κεφάλαιο 1: Κεφάλαιο 2: Κεφάλαιο 3: Κεφάλαιο 4: Κεφάλαιο 5: Πώς να δημιουργήσω το Προφίλ μου και να γίνω μέλος στο Facebook;... 15 Τι

Διαβάστε περισσότερα

SilverPlatter WebSPIRS 4.1.

SilverPlatter WebSPIRS 4.1. WebSPIRS 4.1. Η υπηρεσία WebSPIRS από τη SilverPlatter αποτελεί ένα φιλικό εργαλείο πρόσβασης και αναζήτησης σε περιεχόμενα βάσεων δεδομένων. Η Βιβλιοθήκη και Κέντρο Πληροφόρησης του Πανεπιστημίου Θεσσαλίας

Διαβάστε περισσότερα

Δημιουργία ιστοσελίδας με Wordpress - Βασικές λειτουργίες

Δημιουργία ιστοσελίδας με Wordpress - Βασικές λειτουργίες Δημιουργία ιστοσελίδας με Wordpress - Βασικές λειτουργίες Περιεχόμενα Εγγραφή και αρχικές ρυθμίσεις Διαχείριση Ιστοσελίδας Δημιουργία Menu Δημιουργία σελίδας Δημιουργία Αρχικής Σελίδας Δημιουργία Άρθρου

Διαβάστε περισσότερα

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

Διαβάστε περισσότερα

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2011-2012 Ημερομηνία Παράδοσης: Στην εξέταση του μαθήματος ΑΣΚΗΣΗ Δημιουργία Ευρετηρίων Συλλογής Κειμένων Σκοπός της άσκησης είναι η υλοποίηση ενός συστήματος επεξεργασίας

Διαβάστε περισσότερα

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

Διαβάστε περισσότερα

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή. Λίστες Τι είναι οι λίστες; Πολλές φορές στην καθημερινή μας ζωή, χωρίς να το συνειδητοποιούμε, χρησιμοποιούμε λίστες. Τέτοια παραδείγματα είναι η λίστα του super market η οποία είναι ένας κατάλογος αντικειμένων

Διαβάστε περισσότερα

Αύξηση πελατών. Λίγα λόγια για Επιτυχημένες προωθήσεις

Αύξηση πελατών. Λίγα λόγια για Επιτυχημένες προωθήσεις Αύξηση πελατών Λίγα λόγια για Επιτυχημένες προωθήσεις Βελτίωση των προωθήσεων σας Εισαγωγή Συγκρίνετε τι σας συμφέρει Αποτέλεσμα και επανάληψη Υπάρχουν δυνατότητες για όλες τις επιχειρήσεις Εισαγωγή πληροφορίες

Διαβάστε περισσότερα

Εισαγωγή στις Τεχνολογίες της

Εισαγωγή στις Τεχνολογίες της Εισαγωγή στις Τεχνολογίες της Πληροφορίας και των Επικοινωνιών Ενότητα 13 : Crowdsourcing, Τεχνητή Νοημοσύνη, Συστήματα σύστασης Διδάσκων: Νικόλαος Τσέλιος Τμήμα Επιστημών της Εκπαίδευσης και της Αγωγής

Διαβάστε περισσότερα

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2010-2011 ΑΣΚΗΣΗ Συγκομιδή και δεικτοδότηση ιστοσελίδων Σκοπός της άσκησης είναι η υλοποίηση ενός ολοκληρωμένου συστήματος συγκομιδής και δεικτοδότησης ιστοσελίδων.

Διαβάστε περισσότερα

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι

Διαβάστε περισσότερα

Στα πλαίσια του Διαδικτύου, ο όρος αναφέρεται σε μία ηλεκτρονική πλατφόρμα

Στα πλαίσια του Διαδικτύου, ο όρος αναφέρεται σε μία ηλεκτρονική πλατφόρμα ΚΕΦΑΛΑΙΟ 15 Κοινωνικά Δίκτυα αποτελούν μία ομάδα ατόμων που αλληλεπιδρούν μεταξύ τους και το σύνολο των σχέσεων που αναπτύσσονται μεταξύ των μελών της ομάδας. Στα πλαίσια του Διαδικτύου, ο όρος αναφέρεται

Διαβάστε περισσότερα

ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ

ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΓΕΝΙΚΗ ΔΙΕΥΘΥΝΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΩΝ ΚΑΙ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ ΤΜΗΜΑ ΤΕΧΝΙΚΗΣ ΣΤΗΡΙΞΗΣ ΕΥΡΩΠΑΙΚΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ ΚΕΝΤΡΑ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΑΠ 7/ΑΠ 8 ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Pinterest Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Δομή Εργαστηρίου Εισαγωγή Facebook (Χ2) Twitter Pinterest Instagram YouTube Wordpress Google + LinkedIn Hootsuite

Διαβάστε περισσότερα

Ο νέος, διαφορετικός τρόπος να βρίσκεις προσωπικό. www.jobmeup.gr

Ο νέος, διαφορετικός τρόπος να βρίσκεις προσωπικό. www.jobmeup.gr Ο νέος, διαφορετικός τρόπος να βρίσκεις προσωπικό. www.jobmeup.gr 2 Είμαστε εσύ. Σκεφτόμαστε και λειτουργούμε με βάση τις δικές σου ανάγκες, τα δικά σου θέλω, τις δικές σου απαιτήσεις. Με το δικό μας τρόπο.

Διαβάστε περισσότερα

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΡΓΑΝΩΣΗΣ. Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ e-university/ classweb

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΡΓΑΝΩΣΗΣ. Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ e-university/ classweb ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΡΓΑΝΩΣΗΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ e-university/ classweb ΞΑΝΘΗ 2011 Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ e-university/ classweb Σύστηµα Υποβοήθησης ιδασκαλίας

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους από τους

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ. Περιεχόμενα

ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ. Περιεχόμενα ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ Περιεχόμενα 1) Εισαγωγή 2) Οδηγός εγγραφής στο site της PCnews 3) Βρείτε τα καλύτερα του site Γίνετε φίλοι μας στο Facebook 4) Σχετικά με τον τύπο αρχείου PDF - 1 - Εισαγωγή Καλωσορίσατε

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ)

Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ) Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ) Γιώργος Μανής Επίκουρος Καθηγητής Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων Τι είναι οι Τεχνολογίες

Διαβάστε περισσότερα

Ηλεκτρονική Διαφήμιση. Αντωνιάδου Όλγα

Ηλεκτρονική Διαφήμιση. Αντωνιάδου Όλγα Ηλεκτρονική Διαφήμιση Αντωνιάδου Όλγα Διαφήμιση στο διαδίκτυο Το διαδίκτυο είναι αναμφισβήτητα ένα τεράστιο πεδίο προώθησης και διαφήμισης υπηρεσιών και προϊόντων. Η ποσότητα της πληροφορίας που διακινείται

Διαβάστε περισσότερα

Διάταξη Προγράμματος Σπουδών KPS / Κοινωνικά Πληροφοριακά Συστήματα

Διάταξη Προγράμματος Σπουδών KPS / Κοινωνικά Πληροφοριακά Συστήματα Διάταξη Προγράμματος Σπουδών KPS / Κοινωνικά Πληροφοριακά Συστήματα Σχολή ΣΑΚΕ ΣΘΕΕ Σχολή Ανθρωπιστικών και Κοινωνικών Επιστημών Σχολή Θετικών και Εφαρμοσμένων Επιστημών Πρόγραμμα Σπουδών KPS Κοινωνικά

Διαβάστε περισσότερα

Eρευνητική εργασία Β Λυκείου με θέμα: Κοινωνικά δίκτυα στην εκπαίδευση, νέα εργαλεία, νέες προοπτικές, νέες προκλήσεις

Eρευνητική εργασία Β Λυκείου με θέμα: Κοινωνικά δίκτυα στην εκπαίδευση, νέα εργαλεία, νέες προοπτικές, νέες προκλήσεις Ομάδα Ο.Π.Α.Π.Σ. Eρευνητική εργασία Β Λυκείου με θέμα: Κοινωνικά δίκτυα στην εκπαίδευση, νέα εργαλεία, νέες προοπτικές, νέες προκλήσεις Βαρσάμης Παναγιώτης, Μπέρμπεης Γιάννης, Πλατής Σωτήρης, Τσαγγαίος

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιο λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους

Διαβάστε περισσότερα

Αντί προλόγου. 1. Τι είναι το Twitter;

Αντί προλόγου. 1. Τι είναι το Twitter; Περιεχόμενα Αντί προλόγου...7 Πώς να χρησιμοποιήσετε το βιβλίο...13 Κεφάλαιο 1: Πώς να δημιουργήσω το Προφίλ μου και να γίνω μέλος στο Twitter;...15 Κεφάλαιο 2: Τι βλέπω στην οθόνη μου όταν ολοκληρώσω

Διαβάστε περισσότερα

Η Μηχανική Μάθηση στο Σχολείο: Μια Προσέγγιση για την Εισαγωγή της Ενισχυτικής Μάθησης στην Τάξη

Η Μηχανική Μάθηση στο Σχολείο: Μια Προσέγγιση για την Εισαγωγή της Ενισχυτικής Μάθησης στην Τάξη 6 ο Πανελλήνιο Συνέδριο «Διδακτική της Πληροφορικής» Φλώρινα, 20-22 Απριλίου 2012 Η Μηχανική Μάθηση στο Σχολείο: Μια Προσέγγιση για την Εισαγωγή της Ενισχυτικής Μάθησης στην Τάξη Σάββας Νικολαΐδης 1 ο

Διαβάστε περισσότερα

3 ο ΓΕΛ Τρικάλων ΟΔΥΣΣΕΑΣ ΕΛΥΤΗΣ. Ιστολόγια και κοινότητες

3 ο ΓΕΛ Τρικάλων ΟΔΥΣΣΕΑΣ ΕΛΥΤΗΣ. Ιστολόγια και κοινότητες 3 ο ΓΕΛ Τρικάλων ΟΔΥΣΣΕΑΣ ΕΛΥΤΗΣ Ιστολόγια και κοινότητες Ιστολόγια (blogs) και εκπαιδευτικές κοινότητες Εισαγωγή Ορισμοί Στόχοι και Όροι χρήσης Στατιστικά Στοιχεία Ιστολόγια Ηλεκτρονικές εκπαιδευτικές

Διαβάστε περισσότερα

Teaching Computer Science

Teaching Computer Science Teaching Computer Science ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ (User Manual) ΘΕΣΣΑΛΟΝΙΚΗ 2016 Teaching Computer Science ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ (User manual) Περιεχόμενα 1. Αρχική οθόνη... 2 2. Δημιουργία λογαριασμού Εγγραφή...

Διαβάστε περισσότερα

Ανάκτηση Πληροφορίας

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #02 Ιστορική αναδρομή Σχετικές επιστημονικές περιοχές 1 Άδεια χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Πληροφορική Γυμνασίου. Δρ. Κοτίνη Ισαβέλλα Σχ. Σύμβουλος Πληροφορικής Πέλλας, Ημαθίας και Πιερίας

Πληροφορική Γυμνασίου. Δρ. Κοτίνη Ισαβέλλα Σχ. Σύμβουλος Πληροφορικής Πέλλας, Ημαθίας και Πιερίας Πληροφορική Γυμνασίου Δρ. Κοτίνη Ισαβέλλα Σχ. Σύμβουλος Πληροφορικής Πέλλας, Ημαθίας και Πιερίας Εκπαιδευτικό υλικό Ο εκπαιδευτικός μπορεί να σχεδιάσει τις δικές του δραστηριότητες, να αξιοποιήσει αξιόλογο

Διαβάστε περισσότερα

ΕΞΟΡΥΞΗ ΔΕΔΟΜΕΝΩΝ. Εισαγωγή

ΕΞΟΡΥΞΗ ΔΕΔΟΜΕΝΩΝ. Εισαγωγή ΕΞΟΡΥΞΗ ΔΕΔΟΜΕΝΩΝ Εισαγωγή Συστάσεις Ι Ποιός είμαι εγώ: Email: tsap@cs.uoi.gr Γραφείο: Β.3 Προτιμώμενες ώρες γραφείου: 11:00-18:00 Ενδιαφέροντα Web mining, Social networks, User Generated Content Mobile

Διαβάστε περισσότερα

Γ Γυμνασίου: Οδηγίες Γραπτής Εργασίας και Σεμιναρίων. Επιμέλεια Καραβλίδης Αλέξανδρος. Πίνακας περιεχομένων

Γ Γυμνασίου: Οδηγίες Γραπτής Εργασίας και Σεμιναρίων. Επιμέλεια Καραβλίδης Αλέξανδρος. Πίνακας περιεχομένων Γ Γυμνασίου: Οδηγίες Γραπτής Εργασίας και Σεμιναρίων. Πίνακας περιεχομένων Τίτλος της έρευνας (title)... 2 Περιγραφή του προβλήματος (Statement of the problem)... 2 Περιγραφή του σκοπού της έρευνας (statement

Διαβάστε περισσότερα

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes Ορισμός ιστοσελίδας Ιστοσελίδα (αγγλικά: web page) είναι ένα είδος εγγράφου του παγκόσμιου ιστού (WWW) που περιλαμβάνει πληροφορίες με την μορφή κειμένου, υπερκειμένου, εικόνας, βίντεο και ήχου. Τα είδη

Διαβάστε περισσότερα

Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ.

Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ. ΚΕΦΑΛΑΙΟ 9 Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ. Το 1966 αρχίζει ο σχεδιασμός του ARPANET, του πρώτου

Διαβάστε περισσότερα

ΟΛΟΚΛΗΡΩΜΕΝΟ ΣΥΣΤΗΜΑ ΤΗΛΕΚΑΤΑΡΤΙΣΗΣ E-AGIOGRAFIA

ΟΛΟΚΛΗΡΩΜΕΝΟ ΣΥΣΤΗΜΑ ΤΗΛΕΚΑΤΑΡΤΙΣΗΣ E-AGIOGRAFIA ΟΛΟΚΛΗΡΩΜΕΝΟ ΣΥΣΤΗΜΑ ΤΗΛΕΚΑΤΑΡΤΙΣΗΣ E-AGIOGRAFIA Καλωσορίσατε στην πλατφόρμα ηλεκτρονικής μάθησης E-Agiografia, Η Media Suite έχει αναπτύξει το Ολοκληρωμένο Σύστημα Τηλεκατάρτισης (e-learning) με την επωνυμία

Διαβάστε περισσότερα

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Πτυχιιακή Εργασίία Φοιτητής: Δημήτριος Παπαοικονόμου ΑΜ: 36712

Διαβάστε περισσότερα

Αλληλεπίδραση Ανθρώπου Μηχανής Σχεδιασμός διεπαφής χρήστη

Αλληλεπίδραση Ανθρώπου Μηχανής Σχεδιασμός διεπαφής χρήστη Αλληλεπίδραση Ανθρώπου Μηχανής Σχεδιασμός διεπαφής χρήστη Σελ. 1 Χ. Σκουρλάς, Μελέτη περίπτωσης - Ιστότοπος ηλεκτρονικού περιοδικού Μελέτη περίπτωσης - Ιστότοπος ηλεκτρονικού περιοδικού Ζητείται ο σχεδιασμός

Διαβάστε περισσότερα