Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Ηλεκτρονικής και Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών (ΕΠΥ)

Venuetrack: Μια έ ξυπνη μηχανη αναζη τησης σημέι ων ένδιαφέ ροντος στη Θέσσαλονι κη μέ δυνατο τητές αξιολο γησης βα σέι αναγνω ρισης συναισθημα των σχολι ων

Διπλωματική Εργασία του: Υπό την έπίβλέψη του καθηγητή: Παρασκευά Λαγάκη Ανδρέα Λ. Συμεωνίδη ΑΕΜ: 7200

Θέσσαλονίκη, Ιούνιος 2016

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ευχαριστίες

Ξεκινώντας, οφείλω να ευχαριστήσω όσους με βοήθησαν και συνετέλεσαν στην εκπόνηση της διπλωματικής μου εργασίας: Ευχαριστώ καταρχήν θερμά τους επιβλέποντες της διπλωματικής μου εργασίας, τον καθηγητή μου κύριο Αντρέα Συμεωνίδη και τον μεταδιδακτορικό φοιτητή Κυριάκο Χατζηδημητρίου, για την συνεχή καθοδήγηση και υποστήριξή τους με γνώσεις, συμβουλές και βοήθεια όποτε χρειάστηκε. Ιδίως τους ευχαριστώ για την υπομονή και εμπιστοσύνη που επέδειξαν καθ’ όλη τη διάρκεια εκπόνησης της διπλωματικής. Ευχαριστώ πολύ τους γονείς μου για την βοήθεια που μου προσέφεραν όλα αυτά τα χρόνια, για τις συμβουλές τους, την αγάπη τους και την πίστη τους σε μένα για την εκπλήρωση των στόχων μου. Ιδίως ευχαριστώ την μικρή μου αδερφή, που στις δύσκολες και κουραστικές ημέρες ήταν εκεί για να μου φτιάξει τη διάθεση και να μου ανεβάσει το ηθικό. Τέλος, ευχαριστώ τους φίλους μου για την συμπαράσταση και τις όμορφες στιγμές που μου προσέφεραν και την υπομονή που έδειξαν.

2 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σύνοψη

Το διαδίκτυο γνωρίζει την τελευταία δεκαετία μια ραγδαία επέκταση, φτάνοντας σήμερα να χρησιμοποιείται καθημερινά από το 40% του παγκόσμιου πληθυσμού. Τα μέσα κοινωνικής δικτύωσης έπαιξαν καθοριστικό ρόλο για την ανάπτυξη αυτή, καθώς για πολλούς τα κοινωνικά δίκτυα είναι ο κύριος, αν όχι ο μοναδικός λόγος που χρησιμοποιούν το διαδίκτυο. Αυτή η έκρηξη είχε ως αποτέλεσμα την παραγωγή πολύ μεγάλων ποσοτήτων δεδομένων, η ανάλυση των οποίων αποτελεί τεράστια πρόκληση για την επιστημονική κοινότητα. Στα πλαίσια αυτά, η ανάλυση συναισθήματος και η επεξεργασία φυσική γλώσσας βρίσκονται στο κέντρο των ερευνητικών εξελίξεων, παρουσιάζοντας μεγάλο ενδιαφέρον και προσφέροντας πολλές νέες ευκαιρίες. Ιδίως μάλιστα στην Ελλάδα, όπου ακόμη η ενασχόληση με τα εν λόγω πεδία δεν είναι επαρκής. Γι’ αυτό το λόγο, η παρούσα διπλωματική εργασία καταπιάνεται με την εφαρμογή ανάλυσης συναισθήματος με μεθόδους επεξεργασίας φυσικής γλώσσας. Σκοπός αυτής της διπλωματικής, είναι η εφαρμογή ανάλυσης συναισθήματος για την αξιολόγηση σημείων ενδιαφέροντος στη Θεσσαλονίκη, βάσει σχολίων χρηστών τόσο στα αγγλικά όσο και στα ελληνικά. Τα σχόλια αυτά κατηγοριοποιούνται σε σχόλια με θετικό ή αρνητικό συναίσθημα, με βάση έναν ταξινομητή που εκπαιδεύτηκε σε αντίστοιχο σετ δεδομένων. Έτσι, τα σημεία ενδιαφέροντος, ανάλογα με την ταξινόμηση των σχολίων τους, χωρίζονται με βάση την πόλωση σε θετικά (προσφέρουν θετικές εμπειρίες), ή αρνητικά (προσφέρουν αρνητικές εμπειρίες στους χρήστες). Για την ταξινόμηση, το σύστημα που κατασκευάστηκε, εφαρμόζει διάφορες τεχνικές επεξεργασίας φυσικής γλώσσας και προεπεξεργασίας δεδομένων, και παράγει κάποια πειραματικά αποτελέσματα, που θα παρουσιαστούν στα πλαίσια αυτής της διπλωματικής εργασίας. Τέλος, το σύστημα αυτό ενσωματώνεται και χρησιμοποιείται σε μια web εφαρμογή με το όνομα Venuetrack. Το Venuetrack είναι μια έξυπνη μηχανή αναζήτησης, όπου ο χρήστης μπορεί να βρει ένα σημείο ενδιαφέροντος στο χάρτη της Θεσσαλονίκης, και να δει τις βασικές πληροφορίες του σημείου αυτού καθώς και την κριτική (θετική ή αρνητική) στην οποία κατέληξε το σύστημα ταξινόμησης που κατασκευάστηκε.

Λέξεις – Κλειδιά: Ανάλυση Συναισθήματος, Επεξεργασία Φυσικής Γλώσσας, Ταξινόμηση, Naive Bayes, Μηχανή Αναζήτησης, Θεσσαλονίκη.

Στοιχεία Συγγραφέα: Ο Παρασκευάς Λαγάκης είναι προπτυχιακός φοιτητής του Τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης. Διεύθυνση: Σαμακοβίου 13, 40 Εκκλησιές, 54636, Θεσσαλονίκη Email: [email protected]

3 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Abstract

Author: Paraskevas Lagakis Title: Venuetrack: a smart search engine of points of interest in Thessaloniki, with evaluation capabilities based on sentiment analysis of comments. The world wide web has been rapidly expanding over the last decade, and today more than 40% of the world population is using it on a daily basis. Social media have played a very important part in this increase of the internet’s popularity, since for many people, social media is one of the few if not the only reason to go online. As a result of this explosion, large quantities of raw data have been produced, and its analysis is a huge challenge for the scientific community. In this context, sentiment analysis and natural language processing are in the center of the scientific status qwo, presenting great interest and vast new opportunities. Especially so in , where these fields are still relatively evolving in a very slow pace. For that reason, this thesis tries to develop a sentiment analysis system, by using natural language processing methods. The aim of this thesis, is to apply sentiment analysis in order to evaluate points of interest (or venues) in the city of Thessaloniki, by evaluating users’ comments. These comments are categorized as positive or negative by a classifier that was developed and trained using a relevant dataset. By using the classifier to evaluate each venue’s comments, we then decide if each venue offers a positive or negative experience to the visitor. The results of this NLP system are presented in a web application named Venuetrack. Venuetrack is a smart and easy-to-use search engine for venues in the city of Thessaloniki, in which users can search for points of interest on the map of Thessaloniki, and check out their information as well as the classification of the NLP classifier created.

Keywords: Sentiment Analysis, Natural Language Processing, Classification, Naive Bayes, Search Engine, Thessaloniki.

Author’s Personal Information: Paraskevas Lagakis is an undergraduate student in the Faculty of Engineering, Department of Electrical and Computer Engineering of the Aristotle University of Thessaloniki, Greece. Address: Samakoviou 13, 40 Ekklisies, 54636, Thessaloniki Email: [email protected]

4 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Συντομογραφίες – Abbreviations

NLP Natural Language Processing SVM Support Vector Machine PSP Positive-sentence Percentage TF‐IDF Term Frequency ‐ Inverse Document Frequency TP True Positive TN True Negative FP False Positive FN False Negative POS Part of Speech GAE Google App Engine API Application Programming Interface

5 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Περιεχόμενα

Ευχαριστίες ...... 2 Σύνοψη ...... 3 Abstract ...... 4 Συντομογραφίες – Abbreviations ...... 5 Περιεχόμενα ...... 6 Λίστα Εικόνων ...... 9 Λίστα Πινάκων ...... 10 1. Εισαγωγή ...... 11 1.1. Διαδίκτυο & Μέσα Κοινωνικής Δικτύωσης ...... 11 1.2. Σκοπός της Διπλωματικής ...... 11 1.3. Επισκόπηση Διπλωματικής & Οργάνωση Κεφαλαίων ...... 12 2. Επισκόπηση Βιβλιογραφίας ...... 14 2.1. Εισαγωγή ...... 14 2.2. Ανάλυση Συναισθήματος ...... 15 2.3. Τύποι ανάλυσης συναισθήματος ...... 17 2.3.1. Ανάλυση Πόλωσης ...... 18 2.3.2. Αναγνώριση Υποκειμενικότητας/Αντικειμενικότητας...... 19 2.3.3. Αναγνώριση Συναισθημάτων ...... 20 2.4. Επίπεδα Ανάλυσης Συναισθήματος...... 21 2.4.1. Ανάλυση σε επίπεδο κειμένου ...... 22 2.4.2. Ανάλυση σε επίπεδο πρότασης ...... 22 2.4.3. Ανάλυση με βάση χαρακτηριστικά οντοτήτων ...... 23 2.5. Συμπεράσματα ...... 25 2.6. Επεξεργασία Φυσικής Γλώσσας & Ανάλυση Συναισθήματος ...... 27 2.6.1. Επεξεργασία Φυσικής Γλώσσας σε Δεδομένα Κοινωνικών Δικτύων ...... 28 2.6.2. Μέθοδοι επιβλεπόμενης μηχανικής μάθησης ...... 29 2.6.3. Μέθοδοι βασισμένες σε λεξικά ...... 31 2.6.4. Σύγκριση μεθόδων ...... 33 2.6.5. Μετρικές απόδοσης ταξινόμησης ...... 34 2.6.6. Τεχνικές για βελτίωση ακρίβειας ...... 35

6 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.7. Πλατφόρμες Λογισμικού Ανάλυσης Συναισθήματος ...... 38 Rapid Miner ...... 38 Ling Pipe ...... 38 Alchemy API ...... 38 Weka ...... 38 JtextPro ...... 39 SentiStrength ...... 39 CMU SLM Toolkit ...... 39 3. Ανάλυση Συστήματος Ταξινόμησης ...... 40 3.1. Εισαγωγή ...... 40 3.1.1. Οργάνωση Κεφαλαίου ...... 40 3.2. Συλλογή & Προεπεξεργασία Δεδομένων ...... 41 3.2.1. Hand-tagging Δεδομένων ...... 42 3.2.2. Απομάκρυνση Stopwords ...... 43 3.2.3. Εξομάλυνση Πεζών & Κεφαλαίων ...... 45 3.2.4. Αφαίρεση τονισμών για τα ελληνικά...... 46 3.2.5. Ομαδοποίηση emoticons...... 47 3.2.6. Αφαίρεση Σημείων Στίξης & Επαναλαμβανόμενων Χαρακτήρων ...... 48 3.2.7. Stemming ...... 49 3.2.8. Ειδικοί Χαρακτήρες ...... 50 3.2.9. Επισκόπηση ...... 51 3.3. Ο Ταξινομητής Naive Bayes ...... 52 3.3.1. Επιλογή Naive Bayes ...... 53 3.3.2. Ανάλυση Μοντέλου ...... 54 3.3.3. Naive Υπόθεση ...... 56 3.3.4. Παράδειγμα Χρήσης Naive Bayes ...... 57 3.3.5. Υλοποίηση Naive Bayes ...... 58 3.4. Πειράματα ...... 60 3.4.1. Καμπύλη Εκμάθησης ...... 61 3.4.2. Ακρίβεια Ταξινομητή ...... 64 4. Η Εφαρμογή Venuetrack ...... 65 4.1. Εισαγωγή ...... 65 4.2. Χρησιμοποιούμενες Τεχνολογίες & Frameworks ...... 66

7 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

4.2.1. Apache Maven ...... 66 4.2.2. Google App Engine ...... 66 4.2.3. Java Servlets ...... 67 4.2.4. AngularJS ...... 67 4.2.5. Λοιπές Web Τεχνολογίες ...... 67 4.3. Συλλογή Δεδομένων Από Foursquare ...... 68 4.3.1. Foursquare Endpoints ...... 68 4.4. Δομή Εφαρμογής ...... 69 4.4.1. Κατασκευή Backend ...... 70 4.4.2. Κατασκευή Frontend ...... 73 5. Μελλοντικές Επεκτάσεις ...... 80 5. Βιβλιογραφία ...... 81 Παράρτημα Ι: Κώδικας NLP ...... 84 Κλάση Train ...... 84 Κλάση NaiveBayesClassifier ...... 89 Κλάση WordCount ...... 90

8 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Λίστα Εικόνων Εικόνα 1: Ανάλυση Συναισθήματος ...... 14 Εικόνα 2: Τύποι ανάλυσης συναισθήματος ...... 17 Εικόνα 3: Θετική, αρνητική και ουδέτερη κλάση ...... 19 Εικόνα 4: Έξι καθολικά συναισθήματα ...... 20 Εικόνα 5: Επίπεδα ανάλυσης συναισθήματος ...... 21 Εικόνα 6: Σχηματική απεικόνιση της ανάλυσης χαρακτηριστικών οντοτήτων ...... 23 Εικόνα 7: Πόλωση χαρακτηριστικών τηλεφώνου ...... 25 Εικόνα 8: Συγκριτικά αποτελέσματα πόλωσης δύο τηλεφώνων ...... 25 Εικόνα 9: Σχηματική απεικόνιση φάσεων εκπαίδευσης & πρόβλεψης ...... 30 Εικόνα 10: Σχηματική αναπαράσταση ανάλυσης συναισθήματος με χρήση λεξικών ...... 32 Εικόνα 11: Σύστημα προεπεξεργασίας και βελτίωσης ακρίβειας ...... 51 Εικόνα 12: Συνολικό σύστημα ταξινόμησης ...... 52 Εικόνα 13: Bag of words...... 56 Εικόνα 14: Google App Engine ...... 66 Εικόνα 15: AngularJS ...... 67 Εικόνα 16: Σχηματική απεικόνιση Venuetrack ...... 70 Εικόνα 17: Σχηματική απεικόνιση Venuetrack backend ...... 73 Εικόνα 18: Η αρχική οθόνη του Venuetrack ...... 75 Εικόνα 19: Η μπάρα αναζήτησης ...... 76 Εικόνα 20: Εφαρμογή επιλογών φιλτραρίσματος αναζήτησης ...... 77 Εικόνα 21: Παρουσίαση σημείου ενδιαφέροντος ...... 78 Εικόνα 22: Επιλογή πολλών σημείων στην ίδια οθόνη ...... 79

9 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Λίστα Πινάκων Πίνακας 1: Δείγμα σχολίων από το σετ εκπαίδευσης ...... 43 Πίνακας 2: Δείγμα αγγλικών stopwords ...... 44 Πίνακας 3: Δείγμα ελληνικών stopwrods ...... 45 Πίνακας 4: Αντικαταστάσεις τονισμένων χαρακτήρων ...... 46 Πίνακας 5: Απλοποίηση ορθογραφίας ...... 47 Πίνακας 6: Επεξηγήσεις emoticons ...... 48 Πίνακας 7: Δείγμα ομαδοποίησης emoticons ...... 48 Πίνακας 8: Αντικατάσταση επαναλαμβανόμενων χαρακτήρων ...... 49 Πίνακας 9: Δείγμα stemming σε ελληνικά και αγγλικά...... 50 Πίνακας 10: Παράδειγμα σετ εκπαίδευσης ...... 57 Πίνακας 11: Καμπύλη εκμάθησης χωρίς προεπεξεργασία και χωρίς stopwords ...... 61 Πίνακας 12: Καμπύλη εκμάθησης χωρίς προεπεξεργασία και με stopwords ...... 62 Πίνακας 13: Καμπύλη εκμάθησης με προεπεξεργασία και χωρίς stopwords ...... 62 Πίνακας 14: Καμπύλη εκμάθησης με προεπεξεργασία και με stopwords ...... 63 Πίνακας 15: Accuracy ταξινομητή ...... 64 Πίνακας 16: Accuracy ταξινομητή όταν παραλείπεται καθεμιά από τις μεθόδους προεπεξ...... 64 Πίνακας 17: Δείγμα από tips που απορρίπτονται ως θόρυβος ...... 72

10 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

1. Εισαγωγή

1.1. Διαδίκτυο & Μέσα Κοινωνικής Δικτύωσης

Το διαδίκτυο ξεκίνησε να υπάρχει πριν περίπου 26 χρόνια, και σήμερα έχει φτάσει να χρησιμοποιείται από τη μισή σχεδόν υφήλιο, όταν το πριν 20 χρόνια το ποσοστό του πληθυσμού με πρόσβαση σε αυτό ήταν κάτω από 1%. Ένας πολύ σημαντικός παράγοντας της τόσο ραγδαίας εξάπλωσής του, είναι αδιαμφισβήτητα τα μέσα κοινωνικής δικτύωσης. Για τον περισσότερο κόσμο, η χρήση του διαδικτύου είναι σχεδόν συνυφασμένη με την περιήγηση στα αγαπημένα τους κοινωνικά δίκτυα. Αυτή η τάση όλο και περισσότερου κόσμου να αποτυπώνει τη ζωή του σε ψηφιακή μορφή, πέρα από τις πολύπλευρες κοινωνικοπολιτικές επιπτώσεις που έχει, παράγει και ένα παραπροϊόν: τεράστιες ποσότητες δεδομένων, και μάλιστα δεδομένων που παρήχθησαν από ανθρώπους, αποτυπώνοντας τάσεις, ενδιαφέροντα, σκέψεις, απόψεις κλπ. Είναι λοιπόν τεράστιες οι ευκαιρίες που παρουσιάζονται, τόσο ερευνητικές όσο και εμπορικές, για μελέτη και ανάλυση αυτών των δεδομένων. Για πειραματισμό και εξαγωγή αποτελεσμάτων, για κατανόηση των μυστικών που μπορεί να κρύβονται θαμμένα πίσω από τόνους εικονικού θορύβου, και περιμένουν κάποιον να τα εξορύξει. Ο τομέας της ανάλυσης συναισθήματος είναι ένας από αυτούς τους τομείς που προσπαθούν, σε συνεργασία με άλλα επιστημονικά πεδία, να ανακαλύψουν τρόπους αξιοποίησης όλου αυτού του διαδικτυακού πλούτου. Αυτός ήταν και ένας από τους λόγους που η παρούσα διπλωματική εργασία ασχολείται με την ανάλυση συναισθήματος και με τις τεχνικές της, καθώς και με το κατά πόσο αυτή μπορεί να εφαρμοστεί στην πράξη στα πλαίσια μιας διαδικτυακής εφαρμογής, με σκοπό την επίλυση ενός πραγματικού προβλήματος.

1.2. Σκοπός της Διπλωματικής

Σκοπός αυτής της διπλωματικής εργασίας, είναι η εφαρμογή ανάλυσης συναισθήματος για την αξιολόγηση σημείων ενδιαφέροντος στη Θεσσαλονίκη, βάσει σχολίων χρηστών. Για το σκοπό αυτό, αρχικά συνελέγησαν δεδομένα για σημεία ενδιαφέροντος στην πόλη της Θεσσαλονίκης από την πλατφόρμα κοινωνικής δικτύωσης Foursquare1. Η συλλογή δεδομένων από το Foursquare εστιάστηκε κυρίως στη συσσώρευση όσο το δυνατόν μεγαλύτερου όγκου σχολίων χρηστών για τα διάφορα σημεία ενδιαφέροντος της πόλης, ώστε να δημιουργηθεί ένα ικανό σετ δεδομένων, στο οποίο να εφαρμοστεί αργότερα η ανάλυση συναισθήματος.

1 Την εφαρμογή Foursquare μπορεί κανείς να την βρει εδώ: https://foursquare.com/

11 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Αφού αποκτήθηκε ένας αρκετά μεγάλος όγκος δεδομένων, αναπτύχθηκε ένα σύστημα ανάλυσης συναισθήματος για την επεξεργασία αυτών των δεδομένων. Το σύστημα αυτό, αποτελεί ουσιαστικά ένα σύστημα ταξινόμησης των σχολίων με βάση την πόλωσή τους σε θετικά και αρνητικά, εφαρμόζοντας τεχνικές επεξεργασίας φυσικής γλώσσας. Απώτερος στόχος ήταν η εξαγωγή εκτιμήσεων για το κάθε σημείο ενδιαφέροντος της Θεσσαλονίκης, χωρίζοντάς τα σε θετικά (με την έννοια ότι βάσει των σχολίων των χρηστών, προσέφεραν θετικές εμπειρίες), ή αρνητικά (με την έννοια ότι αποτελούσαν αρνητική εμπειρία). Τέλος, έγινε προσπάθεια ώστε το σύστημα αξιολόγησης σχολίων και ταξινόμησης να συμπεριληφθεί στην διαδικτυακή εφαρμογή με όνομα Venuetrack. Στο Venuetrack, ο χρήστης μπορεί να ψάχνει ένα σημείο στην πόλη της Θεσσαλονίκης, να το εντοπίζει στο χάρτη, και να βλέπει τις βασικές πληροφορίες του σημείου αυτού καθώς και την κριτική (θετική ή αρνητική) στην οποία κατέληξε το σύστημα ταξινόμησης που εκπονήθηκε.

1.3. Επισκόπηση Διπλωματικής & Οργάνωση Κεφαλαίων

Η διάρθρωση της διπλωματικής εργασίας έχει ως εξής:

 Αρχικά, στο 2ο Κεφάλαιο, παρουσιάζεται μια επισκόπηση της τρέχουσας βιβλιογραφίας σχετικά με την ανάλυση συναισθήματος και την επεξεργασία φυσικής γλώσσας. Αρχικά αναλύονται βασικές έννοιες και ορισμοί της ανάλυσης συναισθήματος, παρουσιάζονται οι διάφοροι τύποι της ανάλογα με το ζητούμενο αποτέλεσμα κάθε φορά, και έπειτα παρουσιάζονται τα επίπεδα ανάλυσης, σε σχέση με το μέγεθος και τον τύπο του κειμένου στο οποίο εφαρμόζεται. Στη συνέχεια αναλύονται διάφορες μέθοδοι και τεχνικές επεξεργασίας φυσικής γλώσσας που εφαρμόζονται με σκοπό τη δημιουργία ταξινομητών ανάλυσης συναισθήματος, οι βασικές μετρικές για τον έλεγχο της απόδοσης των ταξινομητών, και τέλος παρουσιάζονται διάφορες μέθοδοι βελτίωσης ακρίβειας.

 Στο 3ο Κεφάλαιο, παρουσιάζεται το σύστημα ταξινόμησης που εκπονήθηκε στα πλαίσια της διπλωματικής εργασίας. Αρχικά εξηγούμε το πώς συλλέχθηκαν τα δεδομένα και αναλύουμε τις διάφορες τεχνικές προεπεξεργασίας που δοκιμάστηκαν για τη βελτίωση της απόδοσης του συστήματος. Στη συνέχεια, αναφερόμαστε στον ταξινομητή Naive Bayes που επιλέχθηκε για την εκπόνηση του συστήματος. Εξετάζουμε το γιατί επιλέχθηκε έναντι άλλων ταξινομητών, αναλύουμε το μαθηματικό του μοντέλο, και εξηγούμε την υλοποίησή του. Τέλος παρουσιάζονται κάποια πειραματικά αποτελέσματα.

 Στο 4ο Κεφάλαιο, γίνεται μια σύντομη επισκόπηση του Venuetrack, της web εφαρμογής που εκπονήθηκε στα πλαίσια της διπλωματικής εργασίας. Παρουσιάζονται οι διάφορες τεχνολογίες και τα frameworks που χρησιμοποιήθηκαν κατά την κατασκευή της εφαρμογής, αναφερόμαστε έπειτα στο πώς συνελέγησαν τα δεδομένα από το Foursquare και τι δυνατότητες προσφέρει το API του, και τέλος αναλύονται τα δύο τμήματα της εφαρμογής, το backend και το frontend.

12 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

 Στο 5ο Κεφάλαιο, προτείνονται διάφορες μελλοντικές βελτιώσεις που θα μπορούσαν να προστεθούν ή να δοκιμαστούν.

 Τέλος, στο Παράρτημα Ι, υπάρχουν τα αρχεία του κώδικα για το σύστημα ταξινόμησης.

13 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2. Επισκόπηση Βιβλιογραφίας

2.1. Εισαγωγή

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

Εικόνα 1: Ανάλυση Συναισθήματος

14 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.2. Ανάλυση Συναισθήματος

Τι είναι λοιπόν η ανάλυση συναισθήματος; Ας εξετάσουμε πρώτα τον όρο αυτό στα πλαίσια της καθημερινότητάς μας. Καθημερινά, επικοινωνούμε με διάφορους τρόπους με πολλά και διαφορετικά άτομα, γνωστά ή μη, χρησιμοποιώντας μια ή περισσότερες γλώσσες, το σώμα μας, εικόνες, ήχους κλπ. Σκοπός αυτής της επικοινωνίας είναι η ανταλλαγή πληροφοριών, και μέσα σε αυτές τις πληροφορίες, χωρίς να το αντιλαμβανόμαστε συνειδητά, εμπεριέχουμε τις περισσότερες φορές και κάποιου είδους υποκειμενικότητα, κάποιου είδους συναισθηματική φόρτιση. Στην καθημερινή μας ζωή βιώνουμε χαρά, λύπη, πόνο, έκπληξη, φόβο, ενθουσιασμό, υπερηφάνεια και πολλά άλλα και πιο σύνθετα συναισθήματα, και η επικοινωνία μας με τους συνανθρώπους μας «χρωματίζεται» από την εκάστοτε συναισθηματική μας φόρτιση, ενώ επηρεάζεται επίσης από την αντίστοιχη συναισθηματική φόρτιση των άλλων. Για παράδειγμα, μας συμβαίνει ένα τραγικό συμβάν και όταν συζητάμε με κάποιον δικό μας άνθρωπο, μέσα στην πληροφορία που μεταδίδουμε, εμπεριέχουμε τη θλίψη που αισθανόμαστε. Καταφέρνουμε κάτι που θεωρούμε σπουδαίο, και στις συζητήσεις μας εκφράζουμε την υπερηφάνεια και τον ενθουσιασμό που αισθανόμαστε. Αντίστοιχα, όταν είμαστε αποδέκτες πληροφορίας, αντιλαμβανόμαστε στην επικοινωνία με τους συνανθρώπους μας το πώς φορτίζουν συναισθηματικά τα όσα μας λένε. Όταν κάποιος φίλος μας, μας μιλά για μια αλλαγή στη ζωή του, μπορούμε να αντιληφθούμε το φόβο ή την αγωνία ή ακόμη και τον ενθουσιασμό που αισθάνεται γι’ αυτή την αλλαγή. Ακούμε την κριτική κάποιου για ένα θεατρικό έργο, και από τα λεγόμενα του εκλαμβάνουμε την ικανοποίηση ή την απογοήτευσή του για την παράσταση που είδε, και μας βοηθά να αποφασίσουμε, ανάλογα φυσικά και με το πόσο τον εμπιστευόμαστε, αν θα παρακολουθήσουμε και εμείς ή όχι, το συγκεκριμένο θεατρικό. Με τον όρο ανάλυση συναισθήματος ή αλλιώς εξαγωγή γνώμης/συναισθήματος (opinion mining), ορίζουμε την αυτοματοποιημένη διαδικασία εξαγωγής υποκειμενικής πληροφορίας από τη συνολική πληροφορία, ούτως ώστε να αποφανθούμε σχετικά με το αν αυτή η πληροφορία έχει θετική ή αρνητική χροιά (να εξάγουμε δηλαδή την πόλωσή της). Συμπεραίνουμε λοιπόν ότι η ανάλυση συναισθήματος είναι μια ανθρώπινη λειτουργία πλήρως συνυφασμένη με την ανθρώπινη φύση, και τις περισσότερες φορές γίνεται αυτόματα και χωρίς συνειδητά να αποφασίσουμε ότι την πράττουμε. Ενώ όμως για τον άνθρωπο στα πλαίσια της καθημερινής του αλληλεπίδρασης με συνανθρώπους του η εξαγωγή του συναισθήματος από μια πληροφορία πραγματοποιείται χωρίς καμία πρακτική δυσκολία, για τον υπολογιστή και εν γένει μια μηχανή, κάτι τέτοιο δεν είναι καθόλου εύκολο. Ακόμη και η αναπαράσταση του συναισθήματος με όρους που να αντιλαμβάνεται ο υπολογιστής είναι δύσκολη. Τα συναισθήματα δεν είναι μετρήσιμα ούτε είναι εύκολη η μοντελοποίησή τους ώστε να έχουν μια ποσοτική αναπαράσταση. Είναι όμως η αυτόματη εξόρυξη συναισθήματος από έναν όγκο πληροφοριών χρήσιμη; Και γιατί έχει αφιερωθεί ένας ολόκληρος κλάδος της επιστήμης της Εξόρυξης Δεδομένων στην ανάπτυξη αυτοματοποιημένων τεχνικών και μεθόδων για την επίτευξη του σκοπού αυτού;

15 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ένας σημαντικός παράγοντας που οδήγησε στην ανάπτυξη της ανάλυσης συναισθήματος είναι φυσικά η εξάπλωση του διαδικτύου. Στο διαδίκτυο παράγεται καθημερινά από τους εκατομμύρια χρήστες του, και με ολοένα και αυξανόμενους ρυθμούς, ένας τεράστιος όγκος πληροφορίας, στην οποία φυσικά εμπεριέχεται και συναίσθημα. Η αυτοματοποιημένη, εύκολη και γρήγορη αξιοποίηση και ανάλυση του όγκου αυτού των πληροφοριών παρουσιάζει ερευνητικό αλλά φυσικά και εμπορικό ενδιαφέρον. Για παράδειγμα, μέσω του διαδικτύου μπορούν εκατομμύρια χρήστες να σχολιάσουν και να κριτικάρουν θετικά ή αρνητικά μια ταινία. Για τους παραγωγούς της ταινίας, η εξαγωγή της άποψης που σχημάτισε το κοινό έχει μεγάλη αξία καθώς βάσει αυτής διαμορφώνουν τα μελλοντικά τους σχέδια (π.χ. την παραγωγή ενός sequel στην περίπτωση που η ταινία άρεσε στο κοινό). Για ένα προϊόν, είναι πολύ σημαντικό για την κατασκευάστρια εταιρία να αποκτήσει μέσω του διαδικτύου μια ολοκληρωμένη εικόνα για το πώς το εξέλαβε το αγοραστικό κοινό, κατά πόσο του άρεσε ή ποια χαρακτηριστικά του χρειάζονται αλλαγή. Στην πολιτική σκηνή, ένας υποψήφιος μπορεί να θέλει να μάθει ποιο είναι το κοινό αίσθημα για αυτόν και αναλόγως να δράσει για να ενισχύσει την υποψηφιότητά του. Εύκολα καταλαβαίνει κανείς επομένως ότι η ύπαρξη και η εξάπλωση του διαδικτύου ήταν ένας καθοριστικός παράγοντας για την ενίσχυση του ενδιαφέροντος στον τομέα της ανάλυσης συναισθήματος, και γι’ αυτό ο κλάδος αυτός είναι σχετικά «νεαρός», δηλαδή γνώρισε άνθιση κυρίως τα τελευταία 20 χρόνια. Πλέον όμως, έχει να επιδείξει σημαντικά αποτελέσματα και εφαρμογές. Η επιτυχία των εφαρμογών αυτών γίνεται εύκολα αντιληπτή στην καθημερινή μας περιήγηση στο διαδίκτυο. Για παράδειγμα, όλοι πλέον μπορούμε να διακρίνουμε πώς εταιρίες όπως το Facebook ή το Google προσαρμόζουν τα αποτελέσματα αναζήτησης που μας παρουσιάζουν βάσει των προτιμήσεών μας, τις οποίες και εξάγουν από τις πληροφορίες που έχουν συλλέξει για μας βάσει του πώς χρησιμοποιούμε τις υπηρεσίες τους. Η ανάλυση συναισθήματος συνδέεται άμεσα με το επιστημονικό κλάδο της επεξεργασίας φυσικής γλώσσας και κυρίως του επιμέρους πεδίου της κατανόησης φυσικής γλώσσας. Η δυνατότητα της χρήσης του υπολογιστή για ανάλυση και αξιοποίηση των στοιχείων που χαρακτηρίζουν μια γλώσσα ώστε να μπορεί αυτοματοποιημένα να εξαχθεί η υποκειμενική πληροφορία που περιέχεται σε ένα κείμενο, είναι ένας εξαιρετικά δύσκολος τομέας του γενικότερου κλάδου της τεχνητής νοημοσύνης. Η μορφολογία κάθε γλώσσας, οι κανόνες της, οι διαφορές που παρουσιάζονται μεταξύ άλλων γλωσσών αλλά και η συνεχής εξέλιξη που τις χαρακτηρίζει καθιστούν την κατανόηση φυσικής γλώσσας ένα εξαιρετικά δύσκολο πεδίο. Ωστόσο, παρουσιάζει εξαιρετικό ενδιαφέρον και γι’ αυτό και πάρα πολλοί ερευνητές ασχολούνται με τον εν λόγω τομέα.

16 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.3. Τύποι ανάλυσης συναισθήματος

Η ανάλυση συναισθήματος περιλαμβάνει τρεις βασικούς τύπους: 1. Ανάλυση πόλωσης (polarity analysis) 2. Αναγνώριση υποκειμενικότητας/αντικειμενικότητας (subjectivity/objectivity recognition) 3. Αναγνώριση συναισθημάτων (emotion recognition) Ευρύτερη εφαρμογή βρίσκει ο πρώτος και βασικότερος τύπος ανάλυσης συναισθήματος, αλλά και οι τρεις παρουσιάζουν ενδιαφέρον. Στη συνέχεια θα αναλύσουμε ξεχωριστά καθέναν από αυτούς τους τύπους.

Εικόνα 2: Τύποι ανάλυσης συναισθήματος

17 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.3.1. Ανάλυση Πόλωσης

Η πιο θεμελιώδης και βασική λειτουργία στην ανάλυση συναισθήματος είναι η ταξινόμηση της πόλωσης ενός οποιουδήποτε κειμένου, είτε αναφερόμαστε σε επίπεδο πρότασης, επίπεδο κειμένου ή επίπεδο οντοτήτων/χαρακτηριστικών (τα επίπεδα στην ανάλυση συναισθήματος θα επεξηγηθούν αναλυτικά στο επόμενο κεφάλαιο). Με τον όρο πόλωση αναφερόμαστε στο κατά πόσο ένα κείμενο είναι θετικό, αρνητικό ή ουδέτερο σε σχέση με το περιεχόμενό του. Θετική πόλωση σημαίνει πως η άποψη που περιέχεται στο κείμενο και μπορεί να εξαχθεί είναι θετική, ενώ αρνητική πόλωση το ανάποδο. Ουδέτερη πόλωση έχουμε στην περίπτωση που δεν εμπεριέχεται κάποια άποψη μέσα στην πληροφορία του κειμένου ή όταν αυτή η άποψη είναι «γκρίζα», δηλαδή δεν τάσσεται ξεκάθαρα στη θετική ή αρνητική πόλωση. Η ανάλυση πόλωσης παίζει κυρίαρχο ρόλο στις περισσότερες εφαρμογές ανάλυσης συναισθήματος, γιατί περιέχει πολύ σημαντική πληροφορία συναισθήματος χωρίς να παρουσιάζει μεγάλη δυσκολία στις μεθόδους υλοποίησής της, που στις περισσότερες περιπτώσεις περιλαμβάνουν απλούς και γρήγορους ταξινομητές με ικανοποιητική ωστόσο ακρίβεια ταξινόμησης. Η σημασία της ανάλυσης πόλωσης γίνεται εύκολα αντιληπτή αν σκεφτούμε τις πολυάριθμες εφαρμογές της στο διαδίκτυο (π.χ. εύκολη ταξινόμηση κριτικών ταινιών/εικόνων/μουσικής ή ακόμη και προϊόντων σε θετικές ή αρνητικές για εξαγωγή συμπερασμάτων σχετικά με την απήχησή του στον κόσμο) . Κάποιοι από τους πρώτους ερευνητές που ασχολήθηκαν με την ανάλυση και εξόρυξη της πόλωσης σε επίπεδο κειμένου ήταν οι Turney [1] και Pang [2], οι οποίοι εφάρμοσαν διάφορες μεθόδους για τον προσδιορισμό της πόλωσης σε σετ δεδομένων που αφορούσαν κριτικές προϊόντων για τον πρώτο, και κριτικές ταινιών για τον δεύτερο. Το ερευνητικό ενδιαφέρον αργότερα επεκτάθηκε και στην ανάπτυξη μεθόδων ανάλυσης της πόλωσης ενός κειμένου, όχι πλέον με τρόπο δυαδικό (ναι/όχι, θετικό/αρνητικό ή thumbs up/down) αλλά χρησιμοποιώντας μια κλίμακα πόλωσης. Μεταξύ άλλων, ενδιαφέρον παρουσιάζει η εργασία των Pang και Lee [3], που βασιζόμενοι στην προαναφερθείσα έρευνά τους πάνω στην ταξινόμηση κριτικών ταινιών ως θετικές ή αρνητικές, την επέκτειναν προσπαθώντας να αναλύσουν τις κριτικές και να εξάγουν πλέον βαθμολογίες που να υπάγονται σε μια κλίμακα έως τριών ή έως τεσσάρων αστεριών. Εξαιρετικό ενδιαφέρον παρουσιάζει ο ρόλος της ουδέτερης πόλωσης, και έχει μελετηθεί από αρκετούς ερευνητές. Στη μεγάλη τους πλειοψηφία, οι διάφορες μέθοδοι ταξινόμησης της πόλωσης αγνοούν την ουδέτερη πόλωση, θεωρώντας ότι εφόσον τα ουδέτερης πόλωσης τμήματα του κείμενου εκφράζουν μια μέση κατάσταση μεταξύ θετικού και αρνητικού και άρα έχουν μικρή βαρύτητα, έχουν πρακτικά μικρή επίπτωση στη συνολική πόλωση. Ωστόσο, αρκετοί ερευνητές υποστηρίζουν ότι όπως και σε κάθε πρόβλημα πόλωσης, πρέπει να ορισθούν τρεις κλάσεις (θετική, ουδέτερη, αρνητική), και μάλιστα κάποιοι ταξινομητές όπως ο Μέγιστης Εντροπίας (Max Entropy) [5] και ο ταξινομητής με χρήση SVMs [6] ευνοούνται και έχουν μεγαλύτερη συνολική ακρίβεια όταν εισάγεται και μια ουδέτερη κλάση ταξινόμησης.

18 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

Εικόνα 3: Θετική, αρνητική και ουδέτερη κλάση

2.3.2. Αναγνώριση Υποκειμενικότητας/Αντικειμενικότητας

Η αναγνώριση της υποκειμενικότητας ή της αντικειμενικότητας ενός κειμένου, έχει ως στόχο να αποφανθεί για το εάν το κείμενο αυτό εκφράζει μια άποψη και άρα ταξινομείται ως υποκειμενικό, ή δεν περιέχει κάποια άποψη, και άρα ταξινομείται ως αντικειμενικό. Μια τέτοια ανάλυση παρουσιάζει σημαντικές δυσκολίες και γι’ αυτό το πρόβλημα της αναγνώρισης της υποκειμενικότητας ή αντικειμενικότητας ενός κειμένου μπορεί αρκετές φορές να αποδειχθεί πολύ πιο δύσκολο [7] σε σχέση με την ανάλυση πόλωσης. Οι δυσκολίες εντοπίζονται καταρχάς στο ότι η ίδιες οι έννοιες της υποκειμενικότητας και αντικειμενικότητας και το κατά πόσο ένα κείμενο εκφράζει μια άποψη ή ένα γεγονός, δεν είναι απόλυτες και διαφορετικοί άνθρωποι δίνουν διαφορετικές ερμηνείες. Έτσι, εφόσον αξιολογούμε την απόδοση μιας μεθόδου ανάλυσης συναισθήματος με βάση το κατά πόσο τα αποτελέσματά της συμφωνούν με τις αντίστοιχες ανθρώπινες κρίσεις, και εφόσον από άνθρωπο σε άνθρωπο ο ορισμός της αντικειμενικότητας ενός κειμένου μπορεί να διαφέρει, εύκολα καταλαβαίνουμε τις δυσκολίες που παρουσιάζει η συγκεκριμένη ανάλυση. Πιο συγκεκριμένα, ο Su έδειξε [8] ότι τα αποτελέσματα της αναγνώρισης υποκειμενικότητας αλλάζουν σημαντικά ανάλογα με το τι ορίζουμε ως υποκειμενικό όταν ταξινομούμε κείμενα. Ωστόσο, παρά τις δυσκολίες που παρουσιάζει μια τέτοιου είδους ανάλυση, ερευνητές έχουν δείξει ότι η μέθοδος αυτή μπορεί να έχει θετικά αποτελέσματα αν χρησιμοποιηθεί στην

19 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

προεπεξεργασία των δεδομένων, με σκοπό την ευκολότερη μετέπειτα ταξινόμησή τους. Για παράδειγμα, ο Pang [9] έδειξε ότι, η αναγνώριση και αφαίρεση αντικειμενικών προτάσεων από ένα ευρύτερο κείμενο πριν αυτό εξεταστεί από ταξινομητή για την ανάλυση της πόλωσής του, μπορεί στην πραγματικότητα να βελτιώσει την τελική απόδοση του ταξινομητή.

2.3.3. Αναγνώριση Συναισθημάτων

Μια περισσότερο προηγμένη μέθοδος ανάλυσης που προχωρά ένα βήμα πέρα από την δυαδική εξέταση της πόλωσης, είναι η αναγνώριση συναισθημάτων (emotion recognition). Σε αυτή την μέθοδο ανάλυσης, απαιτείται αρχικά ένα προκαθορισμένο σετ συναισθηματικών καταστάσεων τις οποίες θα χρησιμοποιήσουμε για να ταξινομήσουμε τα δεδομένα μας. Ένα κλασσικό σύνολο συναισθημάτων που όρισε ο Ekman [10] και που χρησιμοποιείται ως κλίμακα σε πολλές έρευνες [11] [12], περιγράφει έξι συναισθήματα ως τα πιο θεμελιώδη και καθολικά, και αυτά είναι η χαρά, η λύπη, ο φόβος, η έκπληξη, ο θυμός, και η αηδία.

Εικόνα 4: Έξι καθολικά συναισθήματα

20 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.4. Επίπεδα Ανάλυσης Συναισθήματος

Ανάλογα με το είδος και το μέγεθος του σετ δεδομένων στα οποία θέλουμε να εφαρμόσουμε ανάλυση συναισθήματος, αλλά και το σκοπό της εφαρμογής, μπορούμε να επιλέξουμε σε τι επίπεδο θα εστιάσουμε την ανάλυσή μας, επιλέγοντας από τα εξής (ξεκινώντας από την απλούστερη προσέγγιση προς τη συνθετότερη):

1. Ανάλυση σε επίπεδο κειμένου (document level analysis) 2. Ανάλυση σε επίπεδο πρότασης (sentence level analysis) 3. Ανάλυση με βάση χαρακτηριστικά οντοτήτων (feature/aspect-based analysis)

Εικόνα 5: Επίπεδα ανάλυσης συναισθήματος

21 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.4.1. Ανάλυση σε επίπεδο κειμένου

Στην ανάλυση σε επίπεδο κειμένου, στόχος είναι να εξαχθεί ένα συμπέρασμα, να αποφανθούμε π.χ. για την πόλωση, για το σύνολο του κειμένου αυτού, ανεξάρτητα με το αν εσωτερικά του κειμένου υπάρχουν διαφορετικές νοηματικές ενότητες. Για παράδειγμα:

«Η ταινία αυτή είναι εξαιρετική. Σκηνοθετικά ήταν άψογη και είχε πολύ καλές ερμηνείες. Μόνο η ερμηνεία του Χ δε μου άρεσε ιδιαίτερα. Παρόλα αυτά την προτείνω ανεπιφύλακτα!» Προφανώς στο παραπάνω παράδειγμα, η κριτική για την ταινία είναι συνολικά θετική, αν την εξετάζουμε σε επίπεδο κειμένου. Χάνουμε ωστόσο την πληροφορία για το πώς αισθάνεται ο γράφων για την ερμηνεία του Χ, ενώ φαίνεται πως η στάση του είναι ξεκάθαρα αρνητική. Αυτό το πρόβλημα προσπαθεί να λύσει η ανάλυση στα δύο επόμενα επίπεδα, που θα εξετάσουμε στη συνέχεια. Συμπεραίνουμε λοιπόν πώς αυτό το επίπεδο είναι κατάλληλο για μικρότερα κείμενα με νοηματική συνοχή, γι’ αυτό και εφαρμόζεται κυρίως σε κείμενα που αποτελούν αναρτήσεις σε κοινωνικά δίκτυα, κριτικές ταινιών ή προϊόντων κλπ. [1] [2] [13] [14] [15].

2.4.2. Ανάλυση σε επίπεδο πρότασης

Στην ανάλυση σε επίπεδο πρότασης, διαχωρίζουμε τις προτάσεις που περιλαμβάνονται στο ευρύτερο κείμενο προς εξέταση, και προσπαθούμε να αναλύσουμε κάθε μια ξεχωριστά, δίνοντας έτσι μεγαλύτερη ακρίβεια και ευελιξία στην ανάλυσή μας. Για παράδειγμα, μπορούμε να εφαρμόσουμε αναγνώριση αντικειμενικότητας σε επίπεδο πρότασης, και να αφαιρέσουμε αντικειμενικές προτάσεις από το κείμενο [9], καθώς εξετάζουμε την πόλωσή του, διευκολύνοντας την τελική ανάλυση. Στο προηγούμενο παράδειγμα που αναφέραμε, εάν εφαρμόζαμε ανάλυση σε επίπεδο πρότασης, η πρόταση:

«Μόνο η ερμηνεία του Χ δε μου άρεσε ιδιαίτερα.» Θα είχε εντοπιστεί ως αρνητικής πόλωσης, και θα είχε ληφθεί υπόψη στον τελικό υπολογισμό της πόλωσης του κειμένου, προσδίδοντας μεγαλύτερη ακρίβεια στην τελική απόφαση. Το επίπεδο πρότασης μπορεί επίσης να διευκολύνει την ανάλυση πόλωσης ενός κειμένου όταν θέλουμε να την επεκτείνουμε από την βασική ταξινόμηση του κειμένου ως θετικό/αρνητικό στην πιο σύνθετη ταξινόμησή του με βάση μια κλίμακα βαθμολογίας. Οι Pang και Lee στην προσπάθειά τους να ταξινομήσουν κριτικές ταινιών με τη βαθμολογίας σε μια κλίμακα τριών ή τεσσάρων αστεριών [3], κάνουν χρήση της ανάλυσης σε επίπεδο πρότασης. Πιο συγκεκριμένα, χρησιμοποιούν τη μέθοδο που ονομάζουν ως positive-sentence percentage (PSP), δηλαδή το ποσοστό των θετικά πολωμένων προτάσεων δια του αριθμού των ουδέτερα πολωμένων ή αντικειμενικών προτάσεων, και τη χρησιμοποιούν ως μετρική για να καταλήξουν στον προσδιορισμό των βαθμολογιών.

22 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.4.3. Ανάλυση με βάση χαρακτηριστικά οντοτήτων

Η ανάλυση με βάση τα χαρακτηριστικά οντοτήτων εστιάζει σε πρώτη φάση στην αναγνώριση οντοτήτων ή αντικειμένων στα πλαίσια ενός κειμένου, και έπειτα έχει ως στόχο την εύρεση των απόψεων ή των συναισθημάτων που εκφράζονται σε σχέση με διάφορα χαρακτηριστικά των οντοτήτων αυτών [16]. Ως οντότητα σε ένα κείμενο μπορεί να είναι π.χ. ένα προϊόν, ένα μέρος, ένα κατάστημα ή κάτι πιο αφηρημένο, π.χ. μια άποψη. Τα χαρακτηριστικά των οντοτήτων μπορεί να είναι π.χ. η οθόνη ενός κινητού τηλεφώνου, ή η εξυπηρέτηση σε ένα κατάστημα. Έστω το κείμενο:

«Το ξενοδοχείο βρίσκεται σε πολύ όμορφη τοποθεσία, και τα δωμάτια του είναι τακτοποιημένα και καθαρά. Ωστόσο, το προσωπικό ήταν κάπως αγενές.» Η διάκριση οντοτήτων – χαρακτηριστικών – πόλωσης γίνεται όπως φαίνεται στην ακόλουθη εικόνα:

Εικόνα 6: Σχηματική απεικόνιση της ανάλυσης χαρακτηριστικών οντοτήτων

Αν και αρκετά δυσκολότερο σε σχέση με τα προηγούμενα επίπεδα, το επίπεδο ανάλυσης με βάση τα χαρακτηριστικά οντοτήτων συγκριτικά παρουσιάζει ορισμένα πλεονεκτήματα. Όπως είναι εύκολα αντιληπτό, προσφέρει τη δυνατότητα για αναγνώριση διαφορετικών συναισθημάτων για τα διαφορετικά χαρακτηριστικά της ίδιας οντότητας, για παράδειγμα ένα κείμενο μπορεί να περιγράφει ένα κατάστημα ως εξής: να έχει εύκολη πρόσβαση, φιλικό προσωπικό αλλά ακριβές τιμές. Αυτά είναι τρία διακριτά χαρακτηριστικά του καταστήματος για τα οποία εκφράζεται μια σαφής άποψη, η οποία όμως θα χανόταν ως πληροφορία σε μια ανάλυση συναισθήματος σε επίπεδο κειμένου ή επίπεδο πρότασης. Στην ανάλυση όμως με βάση τα χαρακτηριστικά οντοτήτων, οι διαφορετικές κρίσεις μπορούν να γίνουν αντιληπτές και να αναλυθούν [17].

23 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Οι δυσκολίες που παρουσιάζει ωστόσο η εν λόγω ανάλυση είναι πολλές και γι’ αυτό και δεν προτιμάται όταν δεν απαιτείται τόσο λεπτομερής καταγραφή και ανάλυση συναισθήματος. Το πρόβλημα της ανάλυσης με βάση τα χαρακτηριστικά οντοτήτων περιλαμβάνει υποπροβλήματα όπως [18]:  Η αναγνώριση των σχετικών οντοτήτων.  Η εξαγωγή των χαρακτηριστικών των οντοτήτων αυτών.  Ο καθορισμός του κατά πόσο η άποψη που αφορά κάθε χαρακτηριστικό είναι θετική, αρνητική ή ουδέτερη.  Ο καθορισμός του κατά πόσο η άποψη που αφορά ένα χαρακτηριστικό είναι άμεση (direct opinion), ή συγκριτική (comperative opinion) [16]. Πιο συγκεκριμένα στο τελευταίο πρόβλημα, μπορεί να μια άποψη για ένα χαρακτηριστικό μιας οντότητας που να είναι άμεση, παραδείγματος χάριν:

«Οι αίθουσες του Χ κινηματογράφου είναι εξαιρετικές» Ή μπορεί μια άποψη να είναι συγκριτική, δηλαδή να συγκρίνει δύο ή περισσότερες οντότητες ως προς ένα χαρακτηριστικό:

«Οι αίθουσες του Χ κινηματογράφου είναι πολύ καλύτερες από τις αίθουσες του Υ κινηματογράφου»

Βλέπουμε πως στη 2η περίπτωση, δύο οντότητες, ο Χ και ο Υ κινηματογράφος, συγκρίνονται ως προς ένα χαρακτηριστικό τους, τις αίθουσες, και η άποψη είναι υπέρ του πρώτου κινηματογράφου. Η αυτόματη αναγνώριση των χαρακτηριστικών μιας οντότητας μπορεί να γίνει είτε χρησιμοποιώντας συντακτικές μεθόδους, είτε με στατιστικές μεθόδους όπως το topic modeling [19]. Αναλυτικότερη μελέτη και ορισμοί σχετικά με το επίπεδο ανάλυσης χαρακτηριστικών οντοτήτων, αλλά και μέθοδοι εξαγωγής χαρακτηριστικών και απόψεων, μπορεί να βρει ο αναγνώστης στη δουλειά του Liu [20], που προσφέρει συμπυκνωμένες όλες τις βασικές γνώσεις για το εν λόγω επίπεδο ανάλυσης, αλλά και για την αναγνώριση συναισθήματος γενικότερα.

24 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Εικόνα 7: Πόλωση χαρακτηριστικών τηλεφώνου

Εικόνα 8: Συγκριτικά αποτελέσματα πόλωσης δύο τηλεφώνων

2.5. Συμπεράσματα

Έχοντας μελετήσει όλα τα παραπάνω, δηλαδή τους τύπους ανάλυσης συναισθήματος καθώς και τα επίπεδα στα οποία μπορούμε να την εφαρμόσουμε, μπορούμε ποιοτικά και χωρίς να εμβαθύνουμε να συγκρατήσουμε τα ακόλουθα βασικά σημεία. Η ανάλυση συναισθήματος είναι στην ουσία η αναγνώριση απόψεων, στάσεων, διαθέσεων και συναισθημάτων μέσα σε ένα κείμενο. Τα βασικά στοιχεία που ενδιαφερόμαστε να εντοπίσουμε είναι:  Το ποια είναι η πηγή της άποψης

25 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

 Σε ποιο/τι αναφέρεται αυτή η άποψη

 Ο τύπος της, επιλέγοντας να την ταξινομήσουμε σε: 1. Σαφώς προκαθορισμένο σετ τύπων (π.χ. τα έξη βασικά συναισθήματα που αναφέραμε στο κεφάλαιο της αναγνώρισης συναισθημάτων). 2. Θετικής/αρνητικής πόλωσης, που είναι η απλούστερη προσέγγιση αλλά χρησιμοποιείται πολύ συχνότερα.

 Το ποιο είναι το κείμενο που περιέχει αυτή την άποψη (π.χ. μας ενδιαφέρει ολόκληρο το προς εξέταση έγγραφο, ή απλά μια πρότασή του, ή μια φράση μέσα σε μια πρόταση κλπ.).

26 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2.6. Επεξεργασία Φυσικής Γλώσσας & Ανάλυση Συναισθήματος

Για την επίτευξη της ανάλυσης συναισθήματος, έχουν αναπτυχθεί πολλές διαφορετικές τεχνικές επεξεργασίας φυσικής γλώσσας. Το γεγονός όμως ότι η φυσική γλώσσα έχει πολύπλοκους κανόνες και μεγάλη ποικιλομορφία, όπως επίσης ότι αλλάζει πάρα πολύ με την πάροδο του χρόνου, της προσδίδουν μια δυναμικότητα που κάνει την ανάπτυξη μεθοδολογίας για την επεξεργασία της από τον υπολογιστή εξαιρετικά δύσκολη. Ένα από τα αποτελέσματα της εξάπλωσης του διαδικτύου είναι ότι υπάρχει πλέον διαθέσιμος για μελέτη και επεξεργασία μεγάλος όγκος δεδομένων για τις περισσότερες γλώσσες του κόσμου, καθιστώντας τον τομέα της επεξεργασίας φυσικής γλώσσας ως έναν από τους πλέον ανερχόμενους επιστημονικούς κλάδους. Ωστόσο η εξέλιξή του είναι σχετικά αργή, αφού προϋποθέτει συστηματική μελέτη και κατανόηση των βασικών, των ρητών και άρρητων, συντακτικών και σημασιολογικών κανόνων της κάθε γλώσσας. Και φυσικά, παρά τις όποιες ομοιότητες μεταξύ γλωσσών, η κάθε μια έχει δικές της ιδιομορφίες, συντακτικές ιδιαιτερότητες, ξεχωριστούς κανόνες αλλά και διαφορετικές διαλέκτους μέσα στην ίδια τη γλώσσα. Καταλαβαίνουμε επομένως το πόσο μεγάλη δυσκολία παρουσιάζει ο κλάδος της επεξεργασίας φυσικής γλώσσας. Οι πιο συχνές προκλήσεις και δυσκολίες που καλούνται να αντιμετωπίσουν ερευνητές στα πλαίσια της επεξεργασίας φυσικής γλώσσας έχουν να κάνουν με:  τη διαχείριση της άρνησης (negation handling)  το χειρισμό της συναναφοράς (coreference resolution)  την αναγνώριση ονοματικών οντοτήτων (named-entity recognition) [21] και άλλα θέματα όπως η ειρωνεία, ο σαρκασμός και άλλες αντίστοιχες έννοιες που πολλές φορές δεν μπορούν να προκύψουν καθαρά από τη μελέτη μιας πρότασης, αλλά προκύπτουν από τα συνφραζόμενα, το ευρύτερο περιεχόμενο ή τον τόνο του κειμένου, και είναι πολύ δύσκολο να διευθετηθούν. Τέλος, έρευνες όπως η [22], έχουν ασχοληθεί με τις δυσκολίες που προκύπτουν από την εφαρμογή επεξεργασίας φυσικής γλώσσας στον τομέα της ανάλυσης συναισθήματος. Όπως αναφέραμε και στο προηγούμενο κεφάλαιο, το γεγονός ότι το συναίσθημα, η άποψη ή η υποκειμενικότητα που εκφράζεται σε ένα κείμενο, είναι άρρηκτα συνδεδεμένες με το σημασιολογικό πλαίσιο στο οποίο τοποθετούνται, δυσχεραίνει τον προσδιορισμό τους, ενώ ο διαχωρισμός των υποκειμενικών από τις αντικειμενικές προτάσεις παρουσιάζει και αυτός μεγάλες δυσκολίες. Συμπερασματικά, μέθοδοι που μπορεί να πετυχαίνουν αξιοσημείωτες επιδόσεις σε ένα πεδίο εφαρμογής ή σε κάποιο συγκεκριμένο είδος δεδομένων, μπορούν πολύ εύκολα να αποτύχουν ή να μην έχουν την ίδια αξιοπιστία όταν εφαρμόζονται κάπου αλλού. Αυτό μπορεί ορισμένες φορές να οφείλεται στο ότι η φυσική γλώσσα παρουσιάζει ιδιαιτερότητες, και πολλές λέξεις έχουν διαφορετικές ερμηνείες που μεταβάλλονται ανάλογα με το πώς χρησιμοποιούνται. Επιπρόσθετα, μια συναισθηματική κατάσταση ή μια άποψη μπορεί να συμπεριληφθεί σε ένα κείμενο, χωρίς τη χρήση των κλασσικών συναισθηματικά φορτισμένων λέξεων, που αποτελούν συνήθως χρήσιμα εργαλεία για κάποιες μεθόδους ανάλυσης συναισθήματος. Για παράδειγμα, το

27 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

συναίσθημα είναι δυνατό να αποτυπώνεται σε ένα κείμενο απλά και μόνο από τα σημεία στίξης που χρησιμοποιούνται. Αποτέλεσμα όλων αυτών είναι φυσικά να καθίσταται ακόμα δυσκολότερη η ανάλυση της πόλωσης ενός κειμένου, αν εξετασθούν μεμονωμένα οι επιμέρους όροι του κειμένου. Άλλος ένας παράγοντας που μπορεί να επηρεάσει την ανάλυση της πόλωση ενός κειμένου, σύμφωνα με τους Bang κ.α. [22], είναι η σειρά με την οποία θα παρατεθούν οι λέξεις ή οι φράσεις μέσα στο κείμενο. Οι ίδιες λέξεις με διαφορετική σειρά, μπορούν να οδηγήσουν σε τελείως διαφορετική πόλωση. Επιπλέον, αν η πόλωση δεν είναι ισχυρή, αν δηλαδή κυριαρχούν ουδέτερα πολωμένες ή αντικειμενικές λέξεις και φράσεις μέσα στο κείμενο, η ανάλυση της πόλωσής του δυσχεραίνει ακόμα περισσότερο. Εξαιτίας όλων των παραπάνω, η εύρεση κατάλληλων τεχνικών επεξεργασίας φυσικής γλώσσας με σκοπό την ανάλυση των συναισθημάτων/απόψεων σε ένα κείμενο αποτελεί μια μεγάλη πρόκληση στον ακαδημαϊκό χώρο και όχι μόνο, αφού όπως προαναφέραμε οι εμπορικές εφαρμογές αυτής της ανάλυσης είναι πολύ σημαντικές και πολυπληθείς. Εφόσον για τους σκοπούς τις παρούσας διπλωματικής θα ασχοληθούμε με δεδομένα κοινωνικών δικτύων, και πιο συγκεκριμένα με σχόλια που εξάγουμε από την εφαρμογή Foursquare, θα παρουσιαστούν στη συνέχεια τα πιο χαρακτηριστικά προβλήματα που προκύπτουν από την επεξεργασία φυσικής γλώσσας για ανάλυση συναισθήματος σε κοινωνικά δίκτυα. Έπειτα, θα εξετάσουμε συνοπτικά τα κύρια χαρακτηριστικά των δυο βασικότερων τεχνικών εξαγωγής συναισθήματος. Για τον προσδιορισμό της πόλωσης ενός κειμένου, η πρώτη προσέγγιση χρησιμοποιεί αλγορίθμους μηχανικής μάθησης και στατιστικές μεθόδους, ενώ η δεύτερη κάνει χρήση ειδικών λεξικών γι’ αυτό η τεχνική αυτή συχνά χαρακτηρίζεται ως lexicon- based ή knowledge-based.

2.6.1. Επεξεργασία Φυσικής Γλώσσας σε Δεδομένα Κοινωνικών Δικτύων

Η ανάλυση συναισθήματος, όταν αυτή αφορά δεδομένα και σχόλια κοινωνικών δικτύων, καλείται να αντιμετωπίσει περαιτέρω δυσκολίες, οι οποίες οφείλονται στην ιδιαιτερότητα της φύσης των κειμένων σε τέτοιου είδους πλατφόρμες και υπηρεσίες. Μερικά από τα πιο συχνά εμφανιζόμενα χαρακτηριστικά που δυσχεραίνουν τη μελέτη των δεδομένων εφαρμογών κοινωνικής δικτύωσης είναι:  Το μικρό μήκος κειμένου: Η έκταση ενός κειμένου στα πλαίσια των περισσοτέρων μέσων κοινωνικής δικτύωσης, είτε πρόκειται για κάποια κρίση/αξιολόγηση, είτε για κάποιο σχόλιο, είτε για δήλωση ή τοποθετήσεις σε προσωπικό επίπεδο είναι συνήθως μικρή. Για παράδειγμα, το Twitter έχει ως μέγιστο όριο κειμένου τους 140 χαρακτήρες. Αν και αυτός ο περιορισμός μπορεί να οδηγήσει σε περιεκτικές και επί του θέματος καταχωρήσεις, πολλές φορές απουσιάζει το ευρύτερο εννοιολογικό πλαίσιο με αποτέλεσμα να μην είναι πάντα σαφής η πόλωση του κειμένου.

28 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

 Το χρησιμοποιούμενο λεξιλόγιο: Τα περισσότερα κείμενα αποτελούνται σε μεγάλη έκταση από ανεπίσημη, καθομιλούμενη γλώσσα, παρουσιάζοντας πολύ μεγαλύτερη ποικιλομορφία σε σχέση με άλλα είδη κειμένου. Περιλαμβάνουν «αργκό», νεολογισμούς, παραλλαγές λέξεων που γίνονται εσκεμμένα για να αποδώσουν μεγαλύτερη έμφαση (επιμήκυνση φθόγγων, χρήση κεφαλαίων γραμμάτων) αλλά και συντομογραφίες. Όλες αυτές οι παραλλαγές καθιστούν δυσκολότερη την ανάλυση του περιεχομένου και την εφαρμογή τεχνικών επεξεργασίας κειμένου. Παραδείγματα συχνά εμφανιζόμενων παραλλαγών είναι π.χ. η λέξη «thanks» να γράφεται ως συντομογραφία «thx», η φράση «be right back» να γράφεται ως «brb» κ.α.

 Η ύπαρξη μεγάλων ποσοτήτων θορύβου: Ένα αρκετά υψηλό ποσοστό από τα δεδομένα που παράγονται καθημερινά στα κοινωνικά δίκτυα είναι άχρηστο στην μελέτη της φυσικής γλώσσας, δηλαδή αποτελεί πρακτικά θόρυβο, καθώς περιέχει ακούσια ορθογραφικά λάθη και ακατανόητες εκφράσεις, λάθη πληκτρολόγησης (ιδίως τα τελευταία χρόνια όπου ένα μεγάλο ποσοστό δεδομένων προέρχεται από συσκευές κινητών τηλεφώνων που διαθέτουν αυτόματους διορθωτές ή auto correctors). Η αναγνώριση και ο διαχωρισμός τους από τα υπόλοιπα, χρησιμοποιήσιμα δεδομένα, αποτελεί άλλη μια πρόκληση για τα σύγχρονα συστήματα ανάλυσης συναισθήματος.

 Η ταυτόχρονη χρήση πολλών διαφορετικών γλωσσών: Οι εφαρμογές κοινωνικής δικτύωσης χρησιμοποιούνται πλέον από όλη την υφήλιο, και ως φυσικό επακόλουθο έχουν χρήστες που χρησιμοποιούν για τις αναρτήσεις τους πολλές διαφορετικές γλώσσες. Ένα επίσης συχνό φαινόμενο που έχει προκύψει τα τελευταία χρόνια στα μέσα κοινωνικής δικτύωσης είναι η συγχώνευση δύο ή περισσοτέρων γλωσσών. Η πιο διάσημη έκφανση αυτού του φαινομένου για εμάς είναι τα «», που αποτελούν συνδυασμό της αγγλικής με την ελληνική γλώσσα, είναι δηλαδή ουσιαστικά ελληνικά γραμμένα με αγγλικούς χαρακτήρες. Το φαινόμενο αυτό έχει οδηγήσει στο να καθίστανται πρακτικά μη εφαρμόσιμες, ιδιαίτερα διαδεδομένες και κατά τα άλλα πολύ αποδοτικές τεχνικές επεξεργασίας φυσικής γλώσσας, καθώς εξειδικεύονται σε συγκεκριμένες γλώσσες (language specific). Σε αυτό το πρόβλημα προσπαθούν να δώσουν λύση τεχνικές εφαρμόσιμες ανεξαρτήτως γλώσσας (language agnostic).

2.6.2. Μέθοδοι επιβλεπόμενης μηχανικής μάθησης

Βάση των μεθοδολογιών αυτών αποτελεί η ιδέα της μηχανικής μάθησης (Machine Learning), αποσκοπώντας στην κατηγοριοποίηση ενός συνόλου οντοτήτων ή αντικειμένων (στην περίπτωση της επεξεργασίας φυσικής γλώσσας, οι οντότητες αυτές είναι κείμενα). Πιο συγκεκριμένα, χρησιμοποιώντας ένα προκαθορισμένο σύνολο κλάσεων ή κατηγοριών, στόχος είναι τα προς εξέταση αντικείμενα να κατανεμηθούν σε μια από αυτές τις κλάσεις. Στην μελέτη της ανάλυσης συναισθήματος, οι κλάσεις είναι συνήθως θετικό, αρνητικό και ουδέτερο, όπως έχουμε ήδη αναφέρει. Μερικοί από τους πιο γνωστούς αλγορίθμους επιβλεπόμενης μάθησης είναι οι Naive Bayes, Maximum Entropy και Support Vector Machines (SVMs).

29 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Απαραίτητη είναι η επεξεργασία των δεδομένων, προτού εφαρμοστεί μια τέτοια μεθοδολογία. Οι βασικές τεχνικές επεξεργασίας φυσικής γλώσσας μπορούν να εξαλείψουν το θόρυβο και να απομακρύνουν πληροφορίες χωρίς χρηστική αξία για το αποτέλεσμα της κατηγοριοποίησης. Ακολούθως, κάθε κείμενο εκφράζεται ως ένα διάνυσμα χαρακτηριστικών (features), ώστε να καθίστανται εύκολα αναγνωρίσιμες οι πιο αντιπροσωπευτικές διαφορές μεταξύ κειμένων διαφορετικής κλάσης. Όπως είναι εύκολα κατανοητό, το διάνυσμα χαρακτηριστικών κατασκευάζεται συνήθως από τις λέξεις του εκάστοτε κειμένου που θέλουμε να ταξινομήσουμε. Όσον αφορά τα κριτήρια που χρησιμοποιούνται για την επιλογή του διανύσματος των χαρακτηριστικών, προϋπόθεση είναι προφανώς να αποτελούν αντιπροσωπευτικό δείγμα του κειμένου ενώ πολλές φορές, ανάλογα με τον ταξινομητή, ίσως να χρειάζονται επιπλέον διαφοροποιήσεις. Υπάρχουν, βέβαια πολλές τεχνικές αυτοματοποίησης της επιλογής των χαρακτηριστικών, οι οποίες επίσης στοχεύουν στην εύρεση του καταλληλότερου συνδυασμού για το εκάστοτε μοντέλο ή σκοπό ταξινόμησης. Μια από τις δημοφιλέστερες στον ακαδημαϊκό χώρο είναι η μέθοδος TF‐IDF (Term Frequency ‐ Inverse Document Frequency), καθώς προσφέρει ευελιξία και απλοποιημένη εφαρμογή. Η μέθοδος TF-IDF χρησιμοποιεί στατιστικές τεχνικές για να εξάγει μια μετρική που να εκφράζει το πόσο σημαντική είναι κάθε λέξη για το κείμενο προς εξέταση [41]. Η μετρική αυτή είναι ανάλογη του πόσο συχνά εμφανίζεται η εκάστοτε λέξη στο κείμενο (term frequency), αλλά αντισταθμίζεται από το μέγεθος που δηλώνει το πόσο συχνά εμφανίζεται η λέξη στο σύνολο των κειμένων του σετ δεδομένων. Αυτή η αντιστάθμιση υπάρχει γιατί οι πολύ συχνά εμφανιζόμενες λέξεις συνήθως στερούνται σημαντικής συναισθηματικής πληροφορίας (π.χ. λέξεις όπως «και», «ο», «το» κλπ.). Στα σχήματα παρακάτω, παρουσιάζονται οι δύο φάσεις που θα ακολουθήσουν μετά τη δημιουργία της βάσης του μοντέλου, δηλαδή μετά την εξαγωγή των χαρακτηριστικών.

Εικόνα 9: Σχηματική απεικόνιση φάσεων εκπαίδευσης & πρόβλεψης

30 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Το πρώτο μέρος αποτελεί την φάση εκπαίδευσης (training phase) του ταξινομητή ενώ το δεύτερο μέρος την φάση πρόβλεψης (prediction phase). Στο πρώτο μέρος, δίνεται ως είσοδος στο μοντέλο ένα σύνολο εκπαίδευσης (training set), ώστε να πραγματοποιηθεί σταδιακά η αναγνώριση των βασικών διαφορών μεταξύ των κλάσεων ταξινόμησης. Το training set, στο οποίο περιέχονται ήδη κατηγοριοποιημένα δεδομένα (π.χ. positive, neutral, negative), ποικίλει ανάλογα με τους σκοπούς που θέλουμε να επιτύχουμε με την ταξινόμηση. Είναι προφανές ότι όσο μεγαλύτερο είναι σε έκταση το training set, τόσο καλύτερη εκμάθηση αποκτά ο ταξινομητής και τόσο πιο ακριβής καθίσταται. Φυσικά, η ακρίβεια του ταξινομητή δεν συνεχίζει να αυξάνεται αναλογικά με την αύξηση του μεγέθους του training set επ’ άπειρον αλλά συνήθως σταδιακά συγκλίνει, δηλαδή ο ρυθμός βελτίωσης σταδιακά μειώνεται. Για την ακρίβεια του αποτελέσματος, είναι βαρύνουσας σημασίας η διαδικασία επιλογής του συνόλου εκπαίδευσης. Η διαδικασία αυτή οφείλει να είναι σχολαστική, ιδιαίτερα στην ανάλυση κειμένου για αναγνώριση συναισθήματος. Σε αυτή την περίπτωση, απαραίτητη είναι η όσο το δυνατόν μεγαλύτερη αντικειμενικότητα του training set, παρέχοντας μεγάλη ποικιλία λέξεων. Τέλος, μετά τη φάση εκπαίδευσης του ταξινομητή, για τον έλεγχο της ακρίβειας του προτεινόμενου μοντέλου, εφαρμόζεται ένα άλλο σύνολο δεδομένων που ονομάζεται σύνολο ελέγχου (test set). Τα κείμενα που περιλαμβάνονται μέσα στο σύνολο αυτό δεν έχουν κατηγοριοποιηθεί ήδη όπως πριν, αλλά επιχειρείται η σύγκριση της κατηγοριοποίησης που θα προβλεφθεί από το μοντέλο με την προκαθορισμένη κατηγορία του κειμένου. Όταν ο αριθμός των δεδομένων είναι περιορισμένος, συνήθης μέθοδος είναι η n-fold cross validation, κατά την οποία τα δεδομένα χωρίζονται σε n ίσα υποσύνολα και στη συνέχεια, με βάση αυτά δημιουργούνται n διαφορετικά μοντέλα. Σε κάθε μοντέλο, ένα από τα n υποσύνολα εξαιρείται και χρησιμοποιείται ως σύνολο ελέγχου ενώ τα υπόλοιπα αποτελούν το σύνολο εκπαίδευσης. Τελικά, η ακρίβεια του μοντέλου υπολογίζεται ως η μέση τιμή όλων των αποτελεσμάτων των n μοντέλων. Όπως αναφέρθηκε και παραπάνω, η προσοχή και ο χρόνος που θα αφιερωθεί κατά την συλλογή του training set είναι από τους κυριότερους παράγοντες για την τελική αποτελεσματικότητα και ακρίβεια του μοντέλου. Ιδιαίτερη προσοχή πρέπει να δοθεί και για την εκπαίδευση του ταξινομητή, μέχρις ότου βρεθούν οι βέλτιστες τιμές των παραμέτρων ή εξαχθούν οι απαραίτητοι κανόνες. Συνοψίζοντας, όλα τα παραπάνω βήματα που αναφέρθηκαν χρειάζονται εκτενή διερεύνηση, ώστε να προσαρμοστούν σε κάθε περίπτωση ταξινόμησης. Παρατηρούμε πάντως, πώς οι μέθοδοι επιβλεπόμενης μηχανικής μάθησης παρουσιάζουν αυξημένη πολυπλοκότητα και απαιτούν κατάλληλα σετ δεδομένων για την εκπαίδευση του μοντέλου. Θα εξετάσουμε στη συνέχεια ένα σύνολο μεθόδων που δεν βασίζονται στην εκπαίδευση, αλλά στη χρήση προϋπάρχοντων λεξικών.

2.6.3. Μέθοδοι βασισμένες σε λεξικά

Στην παρούσα εργασία θα μελετηθεί και μια δεύτερη κατηγορία τεχνικών, στην οποία η αναγνώριση του συναισθήματος γίνεται με βάση το σημασιολογικό προσανατολισμό των λέξεων

31 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

και φράσεων στο κείμενο. Στις τεχνικές βασισμένες σε λεξικό, η διαδικασία ανάλυσης της πόλωσης ενός κειμένου εμφανίζει αρκετές διαφοροποιήσεις συγκριτικά με τις τεχνικές μηχανικής μάθησης του προηγούμενου κεφαλαίου, καθώς ούτε διαμορφώνεται σύνολο εκπαίδευσης ούτε εξάγεται διάνυσμα χαρακτηριστικών από το κείμενο. Αντιθέτως, η τελική πόλωση του κάθε κειμένου είναι αποτέλεσμα χρήσης ειδικών λεξικών, τα οποία περιέχουν λέξεις που εκφράζουν συναίσθημα ή άποψη (opinion words). Χρησιμοποιώντας τα λεξικά αυτά, αξιολογούνται οι διάφοροι όροι της πρότασης ή του κειμένου. Τέτοιες τεχνικές χαρακτηρίζονται ως μη επιβλεπόμενες τεχνικές μάθησης. Παρακάτω παρουσιάζεται σε σχήμα ένα σύστημα ανάλυσης συναισθήματος με χρήση λεξικών.

Εικόνα 10: Σχηματική αναπαράσταση ανάλυσης συναισθήματος με χρήση λεξικών

Το Πανεπιστήμιο του Princeton, το 1986, υπήρξε το πρώτο που προσπάθησε να δημιουργήσει ένα σύνολο λέξεων με συναισθηματική αξία. Πρόκειται για το WordNet [23], μια λεξικολογική βάση δεδομένων που προέρχονται από την αγγλική γλώσσα. Το WordNet περιλαμβάνει μόνο συγκεκριμένα μέρη του λόγου (ουσιαστικά, ρήματα, επίθετα και επιρρήματα) και τα ομαδοποιεί σε σύνολα συνωνύμων (synsets), κάθε ένα από τα οποία αντιπροσωπεύει μια διακριτή λεξικολογική έννοια. Κάθε synset σηματοδοτείται από τη συχνότητα εμφάνισης του όρου με τη συγκεκριμένη έννοια στα γλωσσολογικά κείμενα που έχουν χρησιμοποιηθεί από το WordNet. Στον ακαδημαϊκό χώρο, ποικίλες μελέτες που βασίζονται σε λεξικά χρησιμοποιούν είτε την πιο “δημοφιλή” έννοια για κάθε λέξη (Most Frequent Sense ή First Sense) είτε μια μέση τιμή της πόλωσης όλων των δυνατών εννοιών της.

32 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Χρησιμοποιώντας το WordNet ως βάση, οι Baccianella κ.α. [24] ανέπτυξαν το 2010 το SentiWordNet. Ειδικότερα, το SentiWordNet είναι το αποτέλεσμα της αυτόματης επισήμανσης των συνόλων συνωνύμων του WordNet σύμφωνα με τις έννοιες του θετικού, του αρνητικού και ουδέτερου που περιγράφουν τους όρους που το απαρτίζουν. Η χρήση των συνόλων συνωνύμων κι όχι των ίδιων των όρων ως βασικών μονάδων ανάπτυξης του λεξικού, προσφέρει τη δυνατότητα διερεύνησης των ποικίλων σημασιολογικών αποχρώσεων του ίδιου όρου καθώς και των ιδιοτήτων που λαμβάνουν σε σχέση με την έκφραση απόψεων. Οι τιμές που υποδεικνύουν το συναίσθημα σε κάθε synset κυμαίνονται στο διάστημα [0.0, 1.0], υποδεικνύοντας την ένταση της πόλωσης της κάθε έννοιας, ενώ το άθροισμα τους πρέπει να είναι πάντα ίσο με 1. Πλεονέκτημα των μεθόδων μη επιβλεπόμενης μάθησης αποτελούν τα ικανοποιητικά ποσοστά ακρίβειας, ιδιαίτερα όταν χρησιμοποιούνται σε γνωστά θεματικά πεδία, όπου το λεξιλόγιο των κειμένων τους καλύπτεται από τα λεξικά συναισθήματος. Επιπρόσθετα, μπορούν να χρησιμοποιηθούν σε μεγαλύτερο εύρος θεμάτων σε σχέση με τις μεθόδους επιβλεπόμενης μάθησης, καθώς δεν απαιτούν κάποιο training set. Για τους παραπάνω λόγους, οι μέθοδοι μη επιβλεπόμενης μάθησης είναι αρκετά δημοφιλείς. Ωστόσο υπάρχουν κάποια σημεία που απαιτούν την προσοχή μας. Η αξιοπιστία του λεξικού που θα επιλεχθεί επηρεάζει άμεσα την ακρίβεια του αποτελέσματος, ενώ ταυτόχρονα οι συλλογές (corpus) που χρησιμοποιούνται για το «χτίσιμο» αυτού του λεξικού διαδραματίζουν επίσης έναν πολύ σημαντικό ρόλο στην αποτελεσματικότητά της. Σχετικά με την προηγούμενη παρατήρηση, οι Saif κ.ά. έχουν διατυπώσει δύο σημαντικούς περιορισμούς [25].  Πρώτον, ένα λεξικό είναι σχεδόν αδύνατον να περιέχει όλο το πλήθος των λέξεων που υπάρχουν σε μία γλώσσα. Αυτός ο περιορισμός στο εύρος των διαθέσιμων λέξεων, σε συνδυασμό με το γεγονός ότι το περιεχόμενο ενός κοινωνικού δικτύου είναι αρκετά δυναμικό και συνεχώς προστίθενται νεολογισμοί και συντομογραφίες, μειώνει την τελική ακρίβεια της μεθόδου. Συνεπώς, αυτή η προσέγγιση των λεξικών καθίσταται συχνά μη εφαρμόσιμη.

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

Τέλος, ερευνητές [26] υποστηρίζουν ότι ο σημασιολογικός προσδιορισμός που προέρχεται από κάποιο λεξικό δεν μπορεί να είναι παρά μόνο μια ένδειξη.

2.6.4. Σύγκριση μεθόδων

Μετά από μελέτη πολλών επιστημονικών ερευνών, αξίζει να επισημανθεί το γεγονός ότι καμία μέθοδος δεν υπερτερεί σε σημαντικό βαθμό έναντι της άλλης και πως η αποτελεσματικότητα (ή όχι) της κάθε μίας εξαρτάται από πολλούς παράγοντες. Τέτοιοι παράγοντες μπορεί να είναι η

33 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

γλώσσα στην οποία είναι γραμμένα τα προς εξέταση κείμενα, η δυνατότητα κατασκευής σετ εκπαίδευσης, η ταχύτητα με την οποία θέλουμε να εφαρμόσουμε την ταξινόμηση, η ποιότητα της πληροφορίας που θέλουμε να εξάγουμε κ.α. Αυτοί οι παράγοντες αλλάζουν σημαντικά ανάλογα με το πεδίο εφαρμογής και γι’ αυτό στην πράξη πολλές φορές δοκιμάζονται πολλές διαφορετικές μέθοδοι ταξινόμησης ή υβρίδιά τους, συγκρίνονται τα αποτελέσματά τους και επιλέγεται η πιο συμφέρουσα. Οι τεχνικές και οι μεθοδολογίες που έχουν ως θεμέλιο λίθο είτε λεξικά είτε κάποιο μοντέλο μηχανικής μάθησης ποικίλουν κι ενδεχομένως να πρέπει να εμπλουτιστούν ακόμα περισσότερο αλλά, εν κατακλείδι, είναι τεχνικές που έχουν ενισχύσει σημαντικά το πεδίο έρευνας της ανάλυσης συναισθήματος – εξόρυξης γνώμης.

2.6.5. Μετρικές απόδοσης ταξινόμησης

Σε αυτό το σημείο θα παραθέσουμε εν συντομία τις μετρικές με τις οποίες κρίνουμε την απόδοση ενός μοντέλου ταξινόμησης. Τονίζεται ότι όταν αναφερόμαστε στην απόδοση της ταξινόμησης, εννοούμε αποκλειστικά την ικανότητα του ταξινομητή να προβλέψει σωστά την κλάση του εκάστοτε αντικειμένου, και όχι την ταχύτητα εκπαίδευσης, την ταχύτητα ταξινόμησης, την κλιμάκωση κλπ. Για να προσδιορίσουμε τις μετρικές απόδοσης, ορίζουμε αρχικά τους εξής όρους:  TP ή True Positive: σωστές θετικές προβλέψεις  ΤΝ ή True Negative: σωστές αρνητικές προβλέψεις  FP ή False Positive: λανθασμένες θετικές προβλέψεις  FN ή False Negative: λανθασμένες αρνητικές προβλέψεις

Ακρίβεια (Accuracy)

Η πιο συχνά χρησιμοποιούμενη μετρική είναι η ακρίβεια του ταξινομητή. Με τον όρο ακρίβεια, θα εννοούμε τη μετρική που στην αγγλική βιβλιογραφία ονομάζεται accuracy, και όχι precision που αφορά μετρική ευαίσθητη στο κόστος. Το Accuracy υπολογίζεται απλώς αθροίζοντας τις σωστές προβλέψεις δια του συνόλου των προβλέψεων.

푇푃 + 푇푁 퐴푐푐푢푟푎푐푦 = 푇푃 + 푇푁 + 퐹푃 + 퐹푁

Ένα χαρακτηριστικό πρόβλημα που μπορεί να εμφανίσει η εν λόγω μετρική είναι ότι όταν τα δεδομένα μιας κλάσης ταξινόμησης είναι πολύ περισσότερα από μια άλλη, τότε αν ένας ταξινομητής ταξινομήσει όλα τα δεδομένα στην πρώτη κλάση, θα εμφανίζει υψηλή τιμή accuracy

34 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

(λόγω του μεγέθους της πρώτης κλάσης) αλλά στην πραγματικότητα το μοντέλο του ταξινομητή δεν θα είναι καθόλου καλό.

Μετρικές ευαίσθητες στο κόστος

Πολύ συχνά, για τις προβλέψεις ενός ταξινομητή μπορούν να αποδοθούν κόστη. Πρακτικά, αυτό σημαίνει ότι μπορεί στα πλαίσια μιας συγκεκριμένης εφαρμογής του ταξινομητή, να μας ενδιαφέρει με μεγαλύτερη βαρύτητα να μην χάσει ο ταξινομητής τα αρνητικά, και να μην μας ενδιαφέρει τόσο αν ο ταξινομητής κρίνει ως αρνητικό, κάποιο χαρακτηριστικό που στην πραγματικότητα είναι θετικό. Με βάση αυτή τη λογική, έχουν δημιουργηθεί τρεις μετρικές, η κάθε μια από τις οποίες είναι πολωμένη προς κάποιο κόστος. Αυτές είναι το Precision, το Recall και το F-measure. To Precision, έχει πόλωση προς τα True Positives και τα False Positives. To Recall έχει πόλωση ως προς τα True Positives και τα False Negatives, και τέλος το F-measure έχει πόλωση προς όλα εκτός από τα True Negatives.

푇푃 푇푃 2푇푃 푃푟푒푐푖푠푖표푛 = , 푅푒푐푎푙푙 = , 퐹 − 푚푒푎푠푢푟푒 = 푇푃 + 퐹푃 푇푃 + 퐹푁 2푇푃 + 퐹푁 + 퐹푃

2.6.6. Τεχνικές για βελτίωση ακρίβειας

Όπως προαναφέρθηκε, ανεξαρτήτως τεχνικής που θα ακολουθηθεί (επιβλεπόμενη ή μη επιβλεπόμενη) για την ανάλυση συναισθήματος , ο τομέας της επεξεργασίας φυσικής γλώσσας (Natural Language Processing - NLP) και οι τεχνικές του προσφέρουν τα κατάλληλα εργαλεία για την εξαγωγή της πόλωσης. Παρακάτω περιγράφονται, εν συντομία, οι βασικότερες τεχνικές που συμβάλλουν στη διαδικασία ανάλυσης του συναισθήματος ενός κειμένου.

Διαχωρισμός λέξεων (Tokenization)

Το πρώτο βήμα στην συναισθηματική ανάλυση ενός κειμένου συνηθίζεται να είναι ο διαχωρισμός του σε προτάσεις, και στη συνέχεια σε λέξεις. Ο διαχωρισμός αυτός, τις περισσότερες φορές, επιτυγχάνεται με την βοήθεια κάποιων μοτίβων κανονικών εκφράσεων (regular expression patterns), όπου η τμηματοποίηση γίνεται με βάση τα σημεία στίξεως ή τους κενούς χαρακτήρες. Ο χειρισμός αυτός είναι αρκετά σημαντικός για τον προσδιορισμό της πόλωσης μιας άποψης, καθώς βοηθά είτε στην εξαγωγή των χαρακτηριστικών ενός μοντέλου

35 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

Μορφολογική & συντακτική ανάλυση (POS Tagging)

H μορφολογική και συντακτική ανάλυση (part of speech tagging), αφορά τον διαχωρισμό των χαρακτηριστικών ενός κειμένου με βάση το γραμματικό τους ρόλο. Κατά την εφαρμογή του POS tagging, αποδίδεται μια μοναδική ετικέτα (tag) σε κάθε λέξη του κειμένου, με την οποία προσδιορίζεται το μέρος του λόγου στο οποίο ανήκει η λέξη. Η τεχνική αυτή χρησιμοποιείται ιδιαίτερα σε μελέτες [27] [28] [29] [30] που επιχειρούν ανάλυση συναισθήματος, ενώ η χρήση του λεξικού SentiWordNet χωρίς αυτήν την αναγνώριση θα ήταν αδύνατη. Αυτό εξηγείται από το γεγονός, ότι για την αναζήτηση μιας λέξης στο λεξικό αυτό είναι απαραίτητη η δημιουργία ενός ζεύγους <λέξη, Pos Tag>, ώστε να εξαχθεί η πόλωσή της για το συγκεκριμένο μέρος του λόγου. Η τεχνική αυτή εμφανίζεται τελευταία με πολλές εφαρμογές, καθώς στον επιστημονικό χώρο επικρατεί η αντίληψη πως τα επίθετα και τα επιρρήματα είναι σημαντικοί δείκτες στον προσδιορισμό μιας άποψης. Μέσω του pos tagging, επομένως, επιλέγονται οι λέξεις με τα αντίστοιχα tags των επιθέτων και των επιρρημάτων.

Αποκοπή λεκτικών ριζών (Stemming ή Lemmatization)

Ακόμα μια γνωστή τεχνική με ευρεία εφαρμογή είναι το stemming. Σκοπός του stemming είναι να καθιστά δυνατή τη σύγκριση λέξεων, αφαιρώντας τυχόν κλιτικές καταλήξεις, προκειμένου κάθε λέξη να μετατραπεί στην κανονική της μορφή, διατηρώντας μόνο τη ρίζα της. Κατ' αυτόν τον τρόπο, λέξεις με ίδια ρίζα θα εκλαμβάνονται ως ίδιες, όπως για παράδειγμα «taste» και «tasting». Η λημματοποίηση είναι ουσιαστικά η ίδια τεχνική με το stemming, με την κύρια διαφορά στον τρόπο αφαίρεσης των καταλήξεων για κάθε λέξη. Ενώ το stemming προσπαθεί με ευριστικές μεθόδους να αφαιρέσει κοινά επιθήματα/καταλήξεις, το lemmatization χρησιμοποιεί ειδικό λεξικό, προκειμένου να εξαχθεί η ρίζα των κλιτικών όρων μέσα σε ένα κείμενο. Μία επιπλέον διαφορά είναι ότι η λημματοποίηση, σε αντίθεση με το stemming, επιχειρεί να κατανοήσει το ευρύτερο περιεχόμενο του όρου, λαμβάνοντας υπόψη και το pos tag αυτής [39].

Εντοπισμός συνωνύμων

Σε γλώσσες με πλούσιο λεξιλόγιο έχει παρατηρηθεί ότι οι άνθρωποι πολλές φορές χρησιμοποιούν διαφορετικές λέξεις ή εκφράσεις για να αποτυπώσουν την ίδια έννοια. Λόγου χάρη, σε αξιολογήσεις για ένα εστιατόριο η λέξη «atmosphere», «environment» και η λέξη «ambience» αναφέρονται στο ίδιο χαρακτηριστικό, το περιβάλλον του εστιατορίου. Επομένως, ο

36 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

εντοπισμός πιθανών συνωνύμων οδηγεί, συνήθως, την ομαδοποίηση αυτών των λέξεων που αναφέρονται στην ίδια έννοια, όπως εφαρμόστηκε και στην μελέτη [28] που περιγράφηκε προηγουμένως. Σύμφωνα, μάλιστα, με τα πειραματικά τους αποτελέσματα βελτίωσε σημαντικά την ικανότητα εκμάθησης του προτεινόμενου μοντέλου επιβλεπόμενης μάθησης.

Αφαίρεση αριθμών, συνδέσμων (links), σημείων στίξης & ανεπιθύμητων λέξεων (StopWords)

Ως stopwords ορίζονται όλες οι πολύ συχνά χρησιμοποιούμενες λέξεις που δεν προσφέρουν, όμως, κάποια πληροφορία στην ταξινόμηση. Μερικές απ’ αυτές τις λέξεις στην αγγλική γλώσσα είναι οι «and», «or», «the» και «of», ή στα ελληνικά λέξεις όπως «και» , «ο», «η», «το» κλπ. Τα stopwords δεν εξαρτώνται μόνο από τη συχνότητα χρήσης κάποιων λέξεων στην κάθε γλώσσα, αλλά προσαρμόζονται και με το σύνολο δεδομένων προς ανάλυση. Για παράδειγμα, η λέξη «δεδομένο» σε κείμενα που αναφέρονται στο θέμα των βάσεων δεδομένων αποτελεί stopword, καθώς δεν προσφέρει καμία αξία. Για την εκτίμηση, λοιπόν, της πόλωσης μιας λέξης αποτελεί θεμελιώδη αρχή να αφαιρούνται αριθμοί, σημεία στίξης, σύνδεσμοι και stopwords, διότι δεν επηρεάζουν καθόλου την πόλωση, ενώ ταυτόχρονα μπορεί να επηρεάσουν αρνητικά την ακρίβεια της μεθοδολογίας.

Συχνότητα Όρου – Αντίστροφη Συχνότητα Εγγράφου (TF-IDF).

Στην τεχνική αυτή όπως έχουμε ήδη αναφέρει, εμφανίζονται δύο ποσότητες: η συχνότητα του όρου (TF), η οποία εκφράζει απλώς τη συχνότητα εμφάνισης ενός όρου στο κείμενο και η αντίστροφη συχνότητα εγγράφου (IDF). Στα πλαίσια επεξεργασίας κειμένου, η ποσότητα TF επιστρέφει λέξεις που επαναλαμβάνονται συνέχεια μέσα στο κείμενο, λέξεις που πολλές φορές θεωρούνται stopwords. Για το λόγο αυτό, εισάγεται η δεύτερη συνιστώσα IDF, η οποία λειτουργεί ως βάρος σημαντικότητας του όρου ως προς το κείμενο, σε σχέση με ολόκληρη την συλλογή κειμένων που εξετάζεται. Η TF‐IDF επιτυγχάνει με τον τρόπο αυτό να αποδίδει μεγάλη βαρύτητα σε έναν όρο που εμφανίζεται συχνά σε ένα κείμενο αλλά σπάνια σε ολόκληρη την συλλογή, καθιστώντας τον αντιπροσωπευτικό όρο του κειμένου. Απλούστερα, λέξεις που εμφανίζονται με μεγάλη συχνότητα πολλαπλασιάζονται με μικρό IDF, ώστε να μικρύνει το βάρος τους, ενώ λέξεις που είναι σπάνιες πολλαπλασιάζονται με μεγάλο IDF, ώστε να αυξηθεί το βάρος τους. Συνοπτικά, η μέθοδος αυτή στηρίζεται στις εξής παρατηρήσεις:

 Θεώρηση που διέπει την έννοια του IDF: Οι σπάνιοι όροι δεν είναι λιγότερο σχετικοί με το θέμα από τους όρους που χρησιμοποιούνται συχνότερα.

37 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

 Θεώρηση που διέπει την έννοια του TF: Οι συχνές αναφορές ενός όρου σε ένα έγγραφο δεν είναι περισσότερο σχετικές με το θέμα από μοναδικές αναφορές όρων.

2.7. Πλατφόρμες Λογισμικού Ανάλυσης Συναισθήματος

Στο διαδίκτυο μπορεί να βρει κανείς πάρα πολλά και διαφορετικά προγράμματα, frameworks και εργαλεία που αφορούν την ανάλυση συναισθήματος και την ανάλυση κειμένου γενικότερα τόσο για Windows και για Linux. Τα πιο γνωστά και τα πιο ευρέως χρησιμοποιούμενα είναι: Rapid Miner Πλήρες πρόγραμμα, ασχολείται με την εξόρυξη δεδομένων με χρήση μεθόδων μηχανικής μάθησης. Με την προσθήκη της προέκτασης για ανάλυση κειμένου είναι ένα ολοκληρωμένο εργαλείο για εφαρμογές ανάλυσης συναισθήματος. Σύνδεσμος: https://rapidminer.com/ Ling Pipe Framework επεξεργασίας και ανάλυσης κειμένου σε Java. Προσφέρει παρα πολλές συναρτήσεις και μεθόδους ανάλυση και δίνει τη δυνατότητα, για εφαρμογή κυρίως μηχανικής εκμάθησης στην ανάλυση συναισθήματος. Σύνδεσμος: http://alias-i.com/lingpipe/ Alchemy API Ολοκληρωμένο API ανάλυσης συναισθήματος και επεξεργασίας κειμένου. Προσφέρει τη δυνατότητα εφαρμογής ανάλυσης σε επίπεδο χαρακτηριστικών των οντοτήτων, καθώς στα παραδείγματα εντοπίζει οντότητες, χαρακτηριστικά, και γνώμες πάνω στα χαρακτηριστικά. Προσφέρει SDKs για Java κ.ά. Σύνδεσμος: http://www.alchemyapi.com/

Weka Πλήρες εργαλείο εξόρυξης δεδομένων με δυνατότητες μεθόδων μηχανικής μάθησης. Διατίθεται σε Java. Σύνδεσμος: http://www.cs.waikato.ac.nz/ml/weka/

38 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

JtextPro SDK επεξεργασίας κειμένου σε γλώσσα Java. Μπορεί να χρησιμοποιηθεί και για εξαγωγή και διαμόρφωση του διανύσματος χαρακτηριστικών, καθώς περιλαμβάνει και εντολές για unigrams, n- grams, phrases κλπ. Σύνδεσμος: http://jtextpro.sourceforge.net/ SentiStrength Πρόγραμμα σε Java για ανάλυση συναισθήματος, που ειδικεύεται σε μικρού μήκους και «χαλαρής» γλώσσας κείμενα. Περιλαμβάνει λεξικό με λέξεις αλλά και emoticons και idioms κλπ. Έχει δυνατότητες ταξινόμησης και σε παραπάνω από 2 κατηγορίες πόλωσης (strong positive- less positive – strong negative κλπ.). Διαδικτυακά δίνεται η δυνατότητα για δοκιμή και σε άλλες γλώσσες όπως τα ελληνικά (πλήρως μη δοκιμασμένο μοντέλο) μέσω μετάφρασης. Έχει χρησιμοποιηθεί σε αρκετές έρευνες. Σύνδεσμος: http://sentistrength.wlv.ac.uk/ CMU SLM Toolkit Statistical language modeling Τoolkit για το λειτουργικό σύστημα Linux. Και εδώ περιλαμβάνονται δυνατότητες ανάλυσης κειμένου, δημιουργίας λιστών λέξεων, λεξικών, μέτρησης συχνοτήτων κ.α. Ωστόσο δεν αναπτύσσεται ενεργά τα τελευταία χρόνια. Σύνδεσμος: http://www.speech.cs.cmu.edu/SLM/toolkit.html

39 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

3. Ανάλυση Συστήματος Ταξινόμησης

3.1. Εισαγωγή

Σε αυτό το κεφάλαιο, θα γίνει μια αναλυτική περιγραφή του συστήματος ταξινόμησης που δημιουργήθηκε για τις ανάγκες της παρούσας διπλωματικής, κάνοντας χρήση μεθόδων και τεχνικών επεξεργασίας φυσικής γλώσσας και ανάλυσης συναισθήματος σαν αυτές που αναφέρθηκαν στο προηγούμενο κεφάλαιο. Το σύστημα αυτό, ενσωματώθηκε στη συνέχεια στην εφαρμογή Venuetrack με σκοπό την ανάλυση των δεδομένων από τα tips του Foursquare και την αξιολόγηση της πόλωσής τους. Θα παρουσιαστεί ο ταξινομητής που χρησιμοποιήθηκε, το γιατί επιλέχθηκε αυτή η μέθοδος έναντι άλλων, θα δούμε πώς συλλέχθηκαν και ταξινομήθηκαν τα δεδομένα, και τι προεπεξεργασία υπέστησαν για την αύξηση της ακρίβειας του ταξινομητή. Για την ανάπτυξη του συστήματος αλλά και των βοηθητικών εργαλείων στα οποία θα αναφερθούμε στη συνέχεια (Batch Comment Handler και Word Counter) χρησιμοποιήθηκε η γλώσσα προγραμματισμού Java. Η Java επιλέχθηκε έναντι άλλων γλωσσών για την ευκολία στη χρήση της, την ύπαρξη εξαιρετικά εκτενούς βιβλιογραφίας για εφαρμογές επεξεργασίας φυσικής γλώσσας (π.χ. [37] κ.α.), αλλά και την ταχύτητά της σε σχέση με άλλες γλώσσες ανώτερου επιπέδου. Τέλος, ο κώδικας NLP που δημιουργήθηκε και χρησιμοποιήθηκε στο σύστημα ταξινόμησης, μπορεί να βρεθεί στο τέλος της διπλωματικής εργασίας, στο Παράρτημα Ι.

3.1.1. Οργάνωση Κεφαλαίου

Για την καλύτερη κατανόηση από τον αναγνώστη της παρουσίασης του συστήματος, εξετάζουμε συνοπτικά τη δομή του κεφαλαίου και τη σειρά με την οποία θα παρουσιαστούν τα επιμέρους στοιχεία του συστήματος. Θα ξεκινήσουμε με την ανάλυση των δεδομένων που χρησιμοποιήθηκαν. Πρώτα θα αναφερθούμε στο πώς συλλέχθηκαν και ταξινομήθηκαν, και θα δούμε κατά πόσο αυτά τα δεδομένα είναι αρκετά για να βγάλουμε ασφαλή αποτελέσματα από τον ταξινομητή. Έπειτα θα εξετάσουμε τι μέθοδοι προεπεξεργασίας και φιλτραρίσματος των δεδομένων εφαρμόστηκαν και γιατί επιλέχθηκαν. Θα συνεχίσουμε με τον ταξινομητή Naive Bayes, που είναι και ο ταξινομητής που επιλέχθηκε για την δημιουργία του συστήματος. Θα εξετάσουμε τους λόγους για τους οποίους επιλέχθηκε ο εν λόγω ταξινομητής, θα αναλύσουμε το μαθηματικό του μοντέλο, θα εξηγήσουμε τι σημαίνει η naive υπόθεση στην οποία βασίζεται ο υπολογισμός των πιθανοτήτων που περιλαμβάνει, και τέλος για την καλύτερη εποπτεία του αναγνώστη θα δοθεί ένα παράδειγμα χρήσης του αλγορίθμου στα πλαίσια της επεξεργασίας φυσικής γλώσσας για ανάλυση συναισθήματος.

40 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

3.2. Συλλογή & Προεπεξεργασία Δεδομένων

Το σετ δεδομένων που χρησιμοποιήθηκε για την εκπαίδευση του ταξινομητή δημιουργήθηκε από τα σχόλια (tips) χρηστών του Foursquare για σημεία ενδιαφέροντος (venues, points of interest2) της Θεσσαλονίκης. Τα σχόλια αυτά συνελέγησαν μέσω του API που προσφέρει το Foursquare για developers, το οποίο «σερβίρει» δεδομένα ανάλογα με το τι του ζητηθεί. Περισσότερα για το API του Foursquare και τον τρόπο με τον οποίο αποκτήθηκαν τα δεδομένα θα αναφέρουμε στο 4ο Κεφάλαιο, όπου αναλύεται η κατασκευή της εφαρμογής. Από ένα σύνολο 32,473 σχολίων, δημιουργήθηκε ένα dataset δύο χιλιάδων σχολίων – χιλίων θετικών και χιλίων αρνητικών - για την εκπαίδευση του ταξινομητή. Τα σχόλια αυτά που επιλέχθηκαν, είναι γραμμένα στα ελληνικά, στα αγγλικά και greeklish (ελληνική γλώσσα γραμμένη με αγγλικούς χαρακτήρες). Το dataset των δύο χιλιάδων σχολίων κρίθηκε ικανοποιητικό σε μέγεθος, καθώς όπως θα δούμε και αργότερα στα πειραματικά αποτελέσματα του ταξινομητή, η καμπύλη εκμάθησής του παρουσίαζε ικανοποιητική σύγκλιση και περεταίρω αύξηση του σετ εκπαίδευσης δεν θα είχε σημαντική επίπτωση στην ακρίβειά του. Οι γλώσσες που επιλέχθηκαν για την κατασκευή του σετ εκπαίδευσης είναι αυτές που χρησιμοποιούνται στη συντριπτική πλειοψηφία των σχολίων του Foursquare στα σημεία ενδιαφέροντος της Θεσσαλονίκης. Ωστόσο, για να μην υπάρχει πρόβλημα στην τελική εφαρμογή του ταξινομητή, κατά τη διάρκεια της ταξινόμησης σχολίων και στα πλαίσια της αφαίρεσης θορύβου (σχολίων που δεν προσφέρουν πληροφορία συναισθήματος ή είναι διαφημιστικά κλπ.), σχόλια από άλλες γλώσσες παρακάμπτονται ως θόρυβος, αφού ο ταξινομητής δεν μπορεί να τις κατατάξει. Περισσότερα για την απομάκρυνση θορύβου θα αναφέρουμε στο 4ο Κεφάλαιο, όταν αναφερθούμε στην ενσωμάτωση του ταξινομητή στην εφαρμογή Venuetrack. Η διαδικασία εκπαίδευσης πραγματοποιείται με τη χρήση 10-fold cross validation με το 10% των δεδομένων να χρησιμοποιείται κάθε φορά ως σετ δοκιμής. Αυτό σημαίνει δηλαδή ότι από τα 2,000 σχόλια του σετ δεδομένων, σε κάθε επανάληψη της εκπαίδευσης χρησιμοποιείται 90% αυτών (1,800 σχόλια) ως σετ εκπαίδευσης και 10% των δεδομένων (200 σχόλια) ως σετ δοκιμής, για να αξιολογηθεί ο ταξινομητής. Σημειώνεται ότι για την επιλογή του σετ δοκιμής κάθε φορά χρησιμοποιείται stratified sampling, δηλαδή η μοιρασμένη κατανομή θετικών/αρνητικών σχολίων διατηρείται και στο σετ δοκιμής, με 100 να είναι θετικά και 100 αρνητικά.

2 Περισσότερα για τα venues του Foursquare εδώ: https://developer.foursquare.com/overview/venues.html

41 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Αυτή η διαδικασία λαμβάνει χώρα 10 φορές με άλλα σετ δοκιμής και εκπαίδευσης κάθε φορά, ώστε εν τέλει το σύνολο των δεδομένων να έχει περάσει και από τα δύο σετ. H τελική τιμή της ακρίβειας (accuracy) του ταξινομητή είναι ο μέσος όρος των τιμών accuracy που σημειώνει στα δέκα επιμέρους folds. Στη συνέχεια, θα αναφερθούμε στο πώς συλλέχθηκαν και ταξινομήθηκαν τα δεδομένα του σετ εκπαίδευσης, καθώς και στις τεχνικές προεπεξεργασίας των δεδομένων που εφαρμόστηκαν, αλλά και στο πώς τροποποιήθηκαν οι τεχνικές αυτές ώστε να προσαρμοστούν στις ανάγκες της συγκεκριμένης εφαρμογής.

3.2.1. Hand-tagging Δεδομένων

Όπως αναφέρθηκε και προηγουμένως, το σετ εκπαίδευσης του ταξινομητή δεν προϋπήρχε και δεν αντλήθηκε από κάποια έτοιμη πηγή. Τα δεδομένα σχολίων που συνελέγησαν από το Foursquare ταξινομήθηκαν με hand-tagging, δηλαδή το καθένα από τα 2,000 σχόλια διαβάστηκε και ταξινομήθηκε ως θετικό ή αρνητικό με βάση την κρίση του γράφοντος. Θα μπορούσε επομένως κάποιος να πει πως το σετ εκπαίδευσης και κατ’ επέκταση το ίδιο το μοντέλο του ταξινομητή είναι επηρεασμένα από την κρίση και τις προτιμήσεις του γράφοντος. Κάτι τέτοιο ωστόσο δεν μπορούσε να αποφευχθεί, γιατί όπως αναφέραμε και κατά τη βιβλιογραφική επισκόπηση, το τι είναι θετικό ή τι είναι αρνητικό είναι ανοιχτό σε ερμηνείες και διαφέρει από άνθρωπο σε άνθρωπο, και αποτελεί μια από τις πιο χαρακτηριστικές δυσκολίες του πεδίου της ανάλυσης συναισθήματος. Ωστόσο, έγινε μεγάλη προσπάθεια να επιλεγούν όσο το δυνατόν τα πιο «ξεκάθαρα» σχόλια, δηλαδή σχόλια που έχουν μεγάλη πόλωση και διαθέτουν ισχυρές ενδείξεις σχετικά με το αν είναι θετικά ή αρνητικά. Αυτό δεν ήταν πάντοτε εύκολο, καθώς πολλά σχόλια χρηστών περιλαμβάνουν και θετικά και αρνητικά χαρακτηριστικά και κρίσεις. Τέλος, έγινε προσπάθεια για όσο το δυνατόν πιο αντιπροσωπευτική επιλογή σχολίων, δηλαδή δεν συμπεριλήφθηκαν στο σετ εκπαίδευσης του ταξινομητή υπερβολικά εστιασμένα σχόλια ή σχόλια με υπερβολικά εξειδικευμένο λεξιλόγιο, ώστε ο ταξινομητής να έχει όσο το δυνατόν καλύτερη απόδοση κατά την χρησιμοποίησή του στα πλαίσια της τελικής εφαρμογής. Στον επόμενο πίνακα, μπορούμε να δούμε ένα αντιπροσωπευτικό δείγμα των σχολίων που χρησιμοποιήθηκαν στο σετ εκπαίδευσης.

Θετικά Αρνητικά Great Greek pies, great sandwiches, excellent spot for an ...another smoking place! :(( espresso in the heart of the city center. Best known rest in town. Greek and Mediterranean dishes, Live bands playing are below average. Also the drinks draft beer , nice seafront view are way over expensive (4 beers 34€!!!). Never again All kinds of draft beer, cute place by the coast Closed also. Sad sad! This city is not for tourists. Shame.

42 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

My favorite starbucks in town. Not just because the place is Locked wifi is at least a disgrace for such a place ! awesome and quiet but mainly coz of the staff working there. Find out the shifts of elena or kyriakos and ask them to serve you. Iced tazo Great cocktails!!!! Awful cocktails... The best gyros in the centre of Thessaloniki Apaisio service....athlio k anosto fagito Classic!!!Cool sounds,since ever! Aparadekti simperifora apo tous ergazomenous. Epithetikoi Kai katholou exipiretikoi Try Greek coffee... Nice environment!!! The worst attitude and service ever. Moder look and sophisticated ambiance with quality music. The service is awful. The view is amazing, but the staff Excellent food especially starters. In fact we just had is so rude that it destroys the whole charming of this starters. Price is reasonable with the atmosphere and food place. quality but above average Fresh Home-made lemonade and nice cocktails...!!! Unfriendly service.. Rude attitude towards tourists.. Meals are not good enough, also not delicious.. They bring the dish which you didnt order.. Η καλύτερη ατομική πίτσα στην πόλη! Ειδικά μετά τα The worst souvlaki ever! The last time I tasted it , it μεσάνυκτα... stank. Απίστευτα τσουρέκια- κορυφαίο αυτό με λευκή σοκολάτα Πολύ ακριβό, ΜΕΤΡΙΟΤΑΤΗ ποιότητα (εκτός αν είσαι κάστανο- και τέλειο cake φουντούκι! εντελώς trend victim) και πολυ αργή εξυπηρέτηση στην Τούμπα. Σαλάτες κακής ποιότητας αλλα πρωτότυπο σερβιρισμα Φρέσκο κρουασαν με γέμιση μερέντα που γεμίζεται επί Οι τιμές στα κοκτέιλ στα ύψη...και δεν είναι και τόπου.must! εξαιρετικά να αξίζουν τα λεφτά τους... Τάρτα σοκολάτα made in paradise! Εκτός από την ακρίβεια, έχει και τόννους αλάτι. Κλασικό εργαλείο διατήρησης κρέατος.... Ένα απο τα πιο διασκεδαστικά όμορφα σημεία της πόλης! Απαραδεκτοι! Τραγικη εξυπηρετηση, τραγικα τα σερβιτορια...! Ωραίο τσουρεκάκι. Πανάκριβο...Από 3.70€ σε 4.00€ μια μπαγκέτα έτσι για πλάκα; Τέλειο μέρος για ποτά, δίνουν και υπέροχους μεζέδες!! ελεος πια με τη μουσικη! ή καντε το κλαμπ ή χαμηλωστε την! Πίνακας 1: Δείγμα σχολίων από το σετ εκπαίδευσης

Τέλος, για την επίτευξη ταχύτερης ταξινόμησης κατά το hand-tagging, κατασκευάστηκε και χρησιμοποιήθηκε ένας απλός Handler σε Java για να χωρίζει batches από σχόλια (ομάδες σχολίων χωρισμένα κατά γραμμή σε ένα κοινό αρχείο) σε ξεχωριστά αρχεία κειμένου.

3.2.2. Απομάκρυνση Stopwords

Στα δεδομένα σχολίων του Foursquare υπήρχε πληθώρα λέξεων με μεγάλη συχνότητα εμφάνισης, που όμως δεν περιείχαν σημαντική πληροφορία αναφορικά με την ανάλυση

43 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

συναισθήματος. Γι’ αυτό, εφαρμόστηκε η μέθοδος της απομάκρυνσης των stopwords που αναφέρθηκε ήδη κατά τη βιβλιογραφική επισκόπηση, για τη βελτίωση της ακρίβειας του ταξινομητή. Έτσι, έγινε μελέτη αυτών των λέξεων και προσπάθεια για να αφαιρεθούν όσο το δυνατόν περισσότερες από τις πιο συχνά χρησιμοποιούμενες και ταυτόχρονα «άχρηστες» (στα πλαίσια του ταξινομητή) λέξεις. Για να ευρεθούν και να απομονωθούν αυτές οι λέξεις, δημιουργήθηκε καταρχήν ένα απλό βοηθητικό πρόγραμμα με τη χρήση της Java3, το οποίο έχει τη δυνατότητα να σαρώνει ένα έγγραφο, να απομονώνει τις λέξεις του και να καταγράφει τη συχνότητα εμφάνισής τους. Το πρόγραμμα αυτό εφαρμόστηκε επί του συνόλου των 32,473 σχολίων, για να εξακριβωθούν οι λέξεις με τη μεγαλύτερη συχνότητα εμφάνισης, που φυσικά ήταν και οι υποψήφιες stopwords. Ωστόσο, πολλές από αυτές τις λέξεις έπρεπε να αφαιρεθούν από την επιλογή, γιατί περιείχαν συναισθηματική φόρτιση και περιεχόμενο. Στον επόμενο πίνακα, μπορούμε να δούμε τις ενδεικτικά 15 πιο συχνά χρησιμοποιούμενες λέξεις στα αγγλικά.

the and u in a of for place to is the with food it you Πίνακας 2: Δείγμα αγγλικών stopwords

3 Για την κατασκευή του βοηθητικού προγράμματος χρησιμοποιήθηκε ως βάση ο κώδικας από εδώ, και απλά προσαρμόστηκε για χρήση και στα ελληνικά: https://gist.github.com/EmilHernvall/953748

44 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Επίσης, στον πίνακα παρακάτω είναι οι αντίστοιχες 15 πιο συχνά χρησιμοποιούμενες ελληνικές λέξεις: και το με για να τα σε η της την του από στο στην Πίνακας 3: Δείγμα ελληνικών stopwrods

3.2.3. Εξομάλυνση Πεζών & Κεφαλαίων

Ένα πρόβλημα που προέκυψε κατά την επεξεργασία των δεδομένων είναι ότι η ίδια λέξη γραμμένη με κεφαλαία και με πεζά γράμματα, θεωρούνταν ως δύο διαφορετικές για το σύστημα ταξινόμησης. Για παράδειγμα μπορούσαμε να έχουμε στα ελληνικά τις λέξεις:

Ωραια ΩΡΑΙΑ Ομορφο ομορφο

ή αντίστοιχα στα αγγλικά:

Excellent EXCELLENT Nice nice

45 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

3.2.4. Αφαίρεση τονισμών για τα ελληνικά

Μια άλλη μέθοδος που εφαρμόστηκε για τη βελτίωση της ακρίβειας του συστήματος ταξινόμησης, είναι η αφαίρεση των τονισμών για τα σχόλια στην ελληνική γλώσσα. Τα ελληνικά παρουσιάζουν την ιδιομορφία σε σχέση με τα αγγλικά, ότι διαθέτουν φωνήεντα που τονίζονται. Το πρόβλημα που παρουσιάζεται ωστόσο, είναι ότι δεν χρησιμοποιούν όλοι οι χρήστες του Foursquare τους χαρακτήρες τονισμού (οξεία, διαλυτικά κλπ.). Αυτό μπορεί να οφείλεται ως ένα βαθμό και στην ευρύτατη πλέον χρήση κινητών τηλεφώνων και γενικότερα φορητών συσκευών, οι οποίες περιλαμβάνουν αυτόματους διορθωτές, που σε κάποιες περιπτώσεις μετατρέπουν τις λέξεις σε κεφαλαία (και άρα χωρίς τόνους). Επίσης, άλλοι λόγοι μπορεί να είναι η βιασύνη των χρηστών όταν σχολιάζουν, η έλλειψη προσοχής κλπ. Το αποτέλεσμα πάντως του προβλήματος αυτού στο σύστημα ταξινόμησης ήταν η ίδια λέξη με τόνο και χωρίς, να κατηγοριοποιείται διαφορετικά. Παραδείγματος χάριν το:

εξαιρετικά με το:

εξαιρετικα

για το σύστημα ταξινόμησης θεωρούνται διαφορετικές λέξεις, στην πράξη όμως είναι ίδιες και το μόνο που διαφέρει είναι ο χαρακτήρας τονισμού. Για το λόγο αυτό, κατά την προεπεξεργασία των δεδομένων, το σύστημα εφαρμόζει για τους ελληνικούς χαρακτήρες, εύρεση των τονισμένων χαρακτήρων, και αντικατάστασή τους με τους αντίστοιχους χωρίς τόνο, όπως βλέπουμε και στον επόμενο πίνακα:

Χαρακτήρας με τονισμό Χαρακτήρας με τον οποίο αντικαταστάθηκε ά, έ, ή, ό, ί, ύ, ώ α, ε, η, ο, ι, υ, ω ϋ, ϊ υ, ι ΰ, ΐ υ, ι Πίνακας 4: Αντικαταστάσεις τονισμένων χαρακτήρων

46 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σημειώνεται ότι υπάρχει στη μέθοδο αυτή μια αδυναμία. Στα ελληνικά, σε λέξεις όπως το:

αλλά και το:

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

Αρχικός Χαρακτήρας Χαρακτήρας με απλοποιημένη ορθογραφία ει, η, οι, υι, υ ι ω ο αι ε Πίνακας 5: Απλοποίηση ορθογραφίας

Ωστόσο, δεν είχαν θετική επίπτωση στην ακρίβεια του ταξινομητή και γι’ αυτό και δεν εφαρμόστηκαν στο τελικό σύστημα. Θα μπορούσε ίσως να συμπεράνει κανείς από τα παραπάνω ότι οι χρήστες του Foursquare αν και πολλές φορές παραλείπουν τα σημεία τονισμού, διαθέτουν παρόλα σωστή ορθογραφία!

3.2.5. Ομαδοποίηση emoticons

Μια ακόμη μέθοδος προεπεξεργασίας που εφαρμόστηκε και είχε θετικά αποτελέσματα στην ακρίβεια του συστήματος ταξινόμησης, είναι η ομαδοποίηση των emoticons. Emoticons είναι πρακτικά συνδυασμοί χαρακτήρων που σχηματικά απεικονίζουν ανθρώπινα πρόσωπα με μια συγκεκριμένη έκφραση, εκφράζοντας έτσι το αντίστοιχο συναίσθημα. Π.χ.:

47 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Emoticon Έννοια :) ή :-) Χαρούμενο πρόσωπο :D ή :-D Γελαστό πρόσωπο :( ή :-( Λυπημένο πρόσωπο Πίνακας 6: Επεξηγήσεις emoticons

Η ομαδοποίηση των emoticons είναι, κατά μια έννοια, μια παραλλαγή της μεθόδου εντοπισμού συνωνύμων, στην οποία αναφερθήκαμε επιγραμματικά στο προηγούμενο κεφάλαιο. Η διαφοροποίηση εδώ είναι ότι, αντί για λέξεις έχουμε να ομαδοποιήσουμε emoticons που έχουν αντίστοιχη έννοια. Πιο συγκεκριμένα, στα σετ δεδομένων μας από σχόλια του Foursquare υπάρχουν πάρα πολλά διαφορετικά emoticons που εκφράζουν θετικά συναισθήματα, είτε αυτά είναι χαρά είτε γέλιο είτε αγάπη κλπ., και αντίστοιχα πολλά emoticons που παρουσιάζουν αρνητικά συναισθήματα, όπως λύπη, προβληματισμό κλπ. Ωστόσο, για το πρόβλημα της ταξινόμησης, όλα τα θετικά emoticons μπορούν να ομαδοποιηθούν και να αντικατασταθούν με ένα βασικό θετικό emoji (emojis είναι αντίστοιχα σχήματα προσώπων που εκφράζουν ένα συναίσθημα, αλλά περιέχονται στους χαρακτήρες και μπορούν να απομονωθούν από τον ταξινομητή ως λέξεις), και όλα τα αρνητικά με ένα αντίστοιχο βασικό αρνητικό emoji. Ενδεικτικά, κάποιες από τις αντικαταστάσεις παρουσιάζονται στον επόμενο πίνακα:

Αρχικά Emoticons Emoji στο οποίο συγχωνεύτηκαν :) :-) ;) ;-) :D :-D :P :-P ☺ :( :-( ;( ;-( D: D-: :/ :-/ ☹ Πίνακας 7: Δείγμα ομαδοποίησης emoticons

3.2.6. Αφαίρεση Σημείων Στίξης & Επαναλαμβανόμενων Χαρακτήρων

Ένα ακόμη πρόβλημα που διορθώθηκε με κατά την προεπεξεργασία των δεδομένων, ήταν αυτό των σημείων στίξης, καθώς και των επαναλαμβανόμενων χαρακτήρων μέσα σε μια λέξη. Καταρχήν, τα σημεία στίξης εμπεριέχουν το πρόβλημα ότι για τον ταξινομητή θεωρούνται ως μέρος της λέξης. Για παράδειγμα, η λέξεις:

ωστοσο, ωστοσο. ωστοσο! με τη λέξη

48 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ωστοσο θεωρούνται διαφορετικές. Οπότε, κατά την φάση της προεπεξεργασίας αφαιρέθηκαν τα σημεία στίξης και αντικαταστάθηκαν με κενά, ούτως ώστε να εξομαλυνθούν τέτοιου είδους προβλήματα. Επίσης, ένα άλλο συχνά εμφανιζόμενο πρόβλημα, ήταν οι επαναλαμβανόμενοι χαρακτήρες μέσα σε λέξεις σχολίων. Μάλιστα, πολύ συχνά το πρόβλημα αυτό εμφανιζόταν σε λέξεις με έντονο συναισθηματικό περιεχόμενο, γιατί η μέθοδος αυτή χρησιμοποιείται για να δώσει έμφαση σε μια λέξη. Για το λόγο αυτό, ως μέρος της προεπεξεργασίας εφαρμόστηκε η αντικατάσταση των επαναλαμβανόμενων χαρακτήρων με έναν χαρακτήρα. Για παράδειγμα, αντικαταστάθηκαν λέξεις όπως:

Αρχική λέξη Λέξη μετά την αντικατάσταση Ηρεμιαααα!!!!!! ηρεμια χαλλλλααραααα χαλαρα ΛΟΟΟΟΛ λολ Yaaaay yay Πίνακας 8: Αντικατάσταση επαναλαμβανόμενων χαρακτήρων

Σημειώνεται σε αυτό το σημείο, ότι ιδίως τόσο στα αγγλικά όσο και στα ελληνικά υπάρχουν λέξεις όπως:

book, good, excellent και:

αλλα, εκκλησια που περιέχουν επαναλαμβανόμενους χαρακτήρες αλλά είναι καθόλα σωστές. Για το λόγο αυτό, η αντικατάσταση των επαναλαμβανόμενων χαρακτήρων περιορίστηκε σε χαρακτήρες που εμφανίζονταν ακολουθιακά τρεις ή περισσότερες φορές.

3.2.7. Stemming

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

49 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Γενικά για τις ανάγκες της του δικού μας συστήματος ταξινόμησης, δοκιμάστηκαν πάρα πολλές διαφορετικές παραλλαγές, πολλά διαφορετικά stems τόσο στα αγγλικά4 όσο και στα ελληνικά5. Κάποιες από αυτές επέφεραν βελτίωση στην ακρίβεια του αλγορίθμου, κάποιες όχι. Ενδεικτικά, παραδείγματα όσων μορφών stemming χρησιμοποιήθηκαν εν τέλει στο σύστημα, παρατίθενται στον επόμενο πίνακα:

Παράδειγμα καταλήξεων που αφαιρέθηκαν Καταλήξεις Θηλυκού Γένους η | ης | ην | ηση Καταλήξεις Αρσενικού/Ουδετέρου Γένους ον | ου | ο | ος | ικο | ιο | ασ Καταλήξεις Ρημάτων αμε | ει | εις | ιζει Ενδεικτικές Καταλήξεις Αγγλικών ious | ely | es | ice | ful | fully Πίνακας 9: Δείγμα stemming σε ελληνικά και αγγλικά

3.2.8. Ειδικοί Χαρακτήρες

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

4 Ιδέες για stems στα αγγλικά πάρθηκαν και από εδώ: http://snowball.tartarus.org/algorithms/english/stemmer.html. Και αυτή η πηγή φυσικά βασίζεται στον αλγόριθμο του Porter [39]. 5 5 Ιδέες για stems στα αγγλικά πάρθηκαν και από εδώ: http://deixto.com/greek-stemmer/

50 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

3.2.9. Επισκόπηση

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

Εικόνα 11: Σύστημα προεπεξεργασίας και βελτίωσης ακρίβειας

Για την καλύτερη κατανόηση του πώς ενσωματώθηκαν όλα τα παραπάνω στο ευρύτερο σύστημα ταξινόμησης, αλλά και πώς χρησιμοποιήθηκαν κατά τις φάσεις εκπαίδευσης και πρόβλεψης, δίνεται στη συνέχεια ένα συνολικό σχήμα του συστήματος ταξινόμησης και των φάσεων του, που

51 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

Εικόνα 12: Συνολικό σύστημα ταξινόμησης

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

3.3. Ο Ταξινομητής Naive Bayes

Ο Naive Bayes είναι ίσως ο δημοφιλέστερος από τους διάφορους ταξινομητές κειμένου. Είναι ένας εξαιρετικά απλός αλγόριθμος ταξινόμησης, χωρίς ωστόσο να υστερεί σε επιδόσεις στα προβλήματα ταξινόμησης [31]. Ο αλγόριθμος στηρίζεται σε ένα απλό πιθανοτικό μοντέλο, βασίζεται στην εφαρμογή του θεωρήματος του Bayes και έχει ως στόχο να ταξινομήσει ένα δείγμα Χ σε μια από τις προκαθορισμένες κατηγορίες. Στην περίπτωσή μας αυτές οι κατηγορίες είναι δύο, και αφορούν θετική και αρνητική πόλωση του δείγματος κειμένου Χ.

52 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Για να μπορέσει να χρησιμοποιηθεί σε προβλήματα ταξινόμησης, ο Naive Bayes πρέπει πρώτα να εκπαιδευτεί, για να καταφέρει να αρχικοποίησει τις παραμέτρους του. Η εκπαίδευση γίνεται με ένα σετ δεδομένων εκπαίδευσης (στην περίπτωσή μας τα δεδομένα αυτά είναι κείμενα), δηλαδή δεδομένα τα οποία του παρέχουν και την πληροφορία της κατηγορίας στην οποία ανήκουν. Με αυτό το σετ εκπαίδευσης ο ταξινομητής εκπαιδεύεται ώστε, με το τέλος της εκπαίδευσης, να είναι σε θέση να υπολογίσει την πιθανή κατηγορία στην οποία ανήκει ένα νέο έγγραφο. Συγκεκριμένα, ο Naive Bayes υπολογίζει ξεχωριστά τις πιθανότητες το νέο αυτό έγγραφο να ανήκει σε κάθε μια από τις δοσμένες κατηγορίες και στη συνέχεια δίνει ως κατηγορία κατάταξης, αυτή με τη μεγαλύτερη πιθανότητα. Για τον υπολογισμό των πιο πάνω πιθανοτήτων λαμβάνεται υπόψη τόσο η προγενέστερη πιθανότητα της κάθε κατηγορίας, όσο και η κάθε λέξη που περιέχεται στο νέο έγγραφο.

3.3.1. Επιλογή Naive Bayes

Ο Naive Bayes επιλέχθηκε για την κατασκευή του συστήματος ταξινόμησης της παρούσας διπλωματικής, γιατί παρουσιάζει ευκολία στην κατασκευή, πολύ καλή ταχύτητα και γραμμική πολυπλοκότητα για προβλήματα ταξινόμησης εγγράφων. Επίσης, ένα ακόμη πλεονέκτημα του Naive Bayes είναι ότι δεν χρειάζεται πολύ μεγάλα σετ εκπαίδευσης δεδομένων για να έχει καλή απόδοση [38] και είναι λιγότερο πιθανό να εμφανίσει υπερεκπαίδευση. Το γεγονός του ότι δεν χρειάζεται τεράστιο σετ δεδομένων στην περίπτωσή μας είναι αρκετά βολικό, καθώς το σετ δεδομένων έπρεπε να δημιουργηθεί από την αρχή, χειροκίνητα με hand-tagging, και η ταξινόμηση δεν εφαρμόστηκε σε κάποιο προϋπάρχον και ογκώδες σε μέγεθος training set. Τέλος, ο Naive Bayes χρησιμοποιεί για να εξάγει το διάνυσμα χαρακτηριστικών από κάθε κείμενο την τεχνική bag of words, δηλαδή απλά χωρίζει το εκάστοτε κείμενο σε λέξεις, και δεν λαμβάνει υπόψη τις συσχετίσεις μεταξύ λέξεων (π.χ. συχνότητα εμφάνισης δύο λέξεων μαζί), που μας εξυπηρετεί στην περίπτωση των σχολίων από το Foursquare, καθώς είναι στην πλειονότητά τους σύντομα και πολλές φορές είναι μόνο μια-δυο λέξεις. Δεν εφαρμόστηκαν πιο σύνθετοι ταξινομητές, γιατί στα πλαίσια της εκπόνησης της παρούσας διπλωματικής, στόχος ήταν να εξετάσουμε αν μια δοκιμασμένη λύση στο sentiment analysis μπορεί να ανταπεξέλθει επαρκώς σε ένα πραγματικό πρόβλημα, δηλαδή στην ταξινόμηση σχολίων χρηστών του Foursquare σε ελληνικά και αγγλικά. Δόθηκε μεγαλύτερο βάρος στο manual tagging και την αναλυτική προεπεξεργασία των δεδομένων, καθώς και στο να ενσωματωθεί το σύστημα ταξινόμησης σε μια ολοκληρωμένη web εφαρμογή με ικανοποιητική ακρίβεια αποτελεσμάτων. Άλλωστε υπάρχουν πάρα πολλές έρευνες που συγκρίνουν αλγορίθμους ταξινόμησης με βάση διάφορες μετρικές, αλλά η χρήση τους σε πραγματικά προβλήματα και η ενσωμάτωσή τους σε ολοκληρωμένες εφαρμογές, που περιλαμβάνουν μάλιστα ταξινόμηση δεδομένων στα ελληνικά, είναι πιο περιορισμένη.

53 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

3.3.2. Ανάλυση Μοντέλου

Με βάση τον Naive Bayes αλγόριθμο, ένα νέο έγγραφο d πρέπει να ταξινομηθεί στην κατηγορία c η οποία έχει τη μεγαλύτερη πιθανότητα το έγγραφο να ανήκει σε αυτή (maximum a posteriori):

푐 푙(푑) = 푎푟푔푚푎푥푐∈퐶푃( ⁄푑) (1)

Λαμβάνοντας ωστόσο υπόψη το θεώρημα του Bayes, η παραπάνω σχέση μπορεί να πάρει τη μορφή:

푑 푃( ⁄푐) ∗ 푃(푐) 푙(푑) = 푎푟푔푚푎푥 (2) 푐∈퐶 푃(푑)

Στη Σχέση 2 παρατηρούμε ότι η πιθανότητα του παρονομαστή επηρεάζεται μόνο από το έγγραφο d, επομένως ο παρονομαστής είναι ίδιος για κάθε τυχούσα κατηγορία c. Αυτό μας οδηγεί στην επόμενη σχέση:

푑 푙(푑) = 푎푟푔푚푎푥푐∈퐶푃( ⁄푐) ∗ 푃(푐) (3)

Αν «σπάσουμε» το έγγραφο d σε nd λέξεις χωρισμένες μεταξύ τους με κενό, μπορούμε να μετατρέψουμε την προηγούμενη σχέση στην ακόλουθη μορφή:

(푡 , 푡 , … , 푡 ) 1 2 푛푑 ⁄ 푙(푑) = 푎푟푔푚푎푥푐∈퐶푃 ( 푐) ∗ 푃(푐) (4)

όπου ti είναι οι λέξεις που παρουσιάζονται στο έγγραφο d. Ο υπολογισμός της πρώτης πιθανότητας στη Σχέση 4 είναι πρακτικά αδύνατος, αφού απαιτεί τον υπολογισμό υπερβολικών παραμέτρων. Στην πραγματικότητα, αν το μέγεθος των νέων εγγράφων δεν είναι φραγμένο, ο αριθμός των παραμέτρων που πρέπει να υπολογιστούν είναι άπειρος [31]. Για το λόγο αυτό, ο αλγόριθμος του Naive Bayes εφαρμόζει μια naive (αφελή) υπόθεση (conditional independence assumption). Η naive υπόθεση του αλγορίθμου είναι ότι η εμφάνιση κάθε λέξης είναι ανεξάρτητη από τις υπόλοιπες λέξεις, δοσμένης της κατηγορίας c, και επομένως και οι πιθανότητές τους μπορούν να αναλυθούν. Η ορθότητα της υπόθεσης αυτής, θα εξεταστεί λεπτομερέστερα στη συνέχεια.

54 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Εφαρμόζοντας λοιπόν την υπόθεση αυτή μαζί με τον κανόνα της αλυσίδας, η Σχέση 4 παίρνει την μορφή:

푡푖 푙(푑) = 푎푟푔푚푎푥푐∈퐶 ( ∏ 푃 ( ⁄푐) ∗ 푃(푐)) (5) 1≤푖≤푛푑

όπου P(c) είναι η προγενέστερη πιθανότητα της κατηγορίας c και P(ti/c) είναι η δεσμευμένη πιθανότητα η λέξη ti να ανήκει στη κατηγορία c. Ουσιαστικά, ο όρος P(ti/c) είναι μια ένδειξη της συνεισφοράς της λέξης ti στο να κατηγοριοποιηθεί το έγγραφο d στην κατηγορία c και ο όρος P(c) φανερώνει πόσο πιθανή είναι η κατηγορία c ανάμεσα στις υπόλοιπες κατηγορίες.

Εξαιτίας υπερχειλίσεων στους πολλαπλασιασμούς, στον υπολογισμό χρησιμοποιούνται λογάριθμοι οπότε η προηγούμενη σχέση γίνεται:

푡푖 푙(푑) = 푎푟푔푚푎푥푐∈퐶 (log 푃(푐) + ∑ log 푃 ( ⁄푐)) (6) 1≤푖≤푛푑

Βλέπουμε επομένως ότι στο λογαριθμικό χώρο, ο ταξινομητής μας γίνεται γραμμικός [40]. Χρησιμοποιούμε το σετ εκπαίδευσης για να υπολογιστούν οι εν λόγω πιθανότητες, οπότε η πιθανότητα P(c) υπολογίζεται διαιρώντας τα έγγραφα που ανήκουν στην κατηγορία προς το σύνολο των εγγράφων, όπως φαίνεται στην (7):

푡푟푎푖푛푖푛푔 푑표푐푢푚푒푛푡푠 표푓 푐푎푡푒푔표푟푦 푐 푃(푐) = (7) 푎푙푙 푑표푐푢푚푒푛푡푠

και αντίστοιχα οι πιθανότητες P(ti/c) υπολογίζονται από την (8):

푇푐푡 푡푖⁄ 푖 푃 ( 푐) = ′ (8) 훴푡′∈푉푇푐푡

όπου το Tcti είναι ο αριθμός των εμφανίσεων της εκάστοτε λέξης ti στην κατηγορία c, και V είναι ο αριθμός του συνόλου του λεξιλογίου, δηλαδή όλες οι διαφορετικές λέξεις που υπάρχουν στο training set, ανεξαρτήτου κατηγορίας. Παρατηρώντας τη Σχέση 5 και τη Σχέση 8, γίνεται φανερό ότι αν μια λέξη που υπάρχει στο έγγραφο d δεν υπάρχει στην κατηγορία c, τότε η δεσμευμένη πιθανότητα P(ti/c) θα πάρει τιμή 0

55 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

και συνεπώς και η πιθανότητα της κατηγορίας θα πάρει τιμή 0. Αυτό όμως δεν είναι κατά ανάγκη σωστό, αφού οι υπόλοιπες λέξεις που υπάρχουν στο έγγραφο d μπορεί να υπάρχουν στην κατηγορία c. Για να επιλυθεί αυτό το μικρό πρόβλημα, η Σχέση 8 παίρνει τη μορφή:

푇푐푡 + 푎 푇푐푡 + 푎 푡푖⁄ 푖 푖 푖 푖 푃 ( 푐) = ′ = ′ (9) 훴푡′∈푉(푇푐푡 + 푎푖) 훴푡′∈푉 푇푐푡 + 푎

όπου το αi είναι μια σταθερά. Κάθε λέξη μπορεί να έχει διαφορετική τιμή σταθεράς, αλλά συνήθως για λόγους απλότητας χρησιμοποιείται η σταθερά αi = 1 για όλες τις λέξεις. Έτσι, η Σχέση 9 παίρνει την εξής μορφή:

푇푐푡 + 1 푡푖⁄ 푖 푃 ( 푐) = ′ (10) 훴푡′∈푉 푇푐푡 + |푉|

όπου το |V| είναι το μέγεθος του λεξιλογίου.

3.3.3. Naive Υπόθεση

Η naive υπόθεση (conditional independence assumption) που κάναμε κατά την ανάπτυξη του μοντέλου προηγουμένως, υποστηρίζει ότι κάθε λέξη είναι ανεξάρτητη από κάθε άλλη, για συγκεκριμένη κατηγορία c, καθώς επίσης ότι η θέση κάθε λέξης δεν έχει σημασία (bag of words assumption). Με άλλα λόγια, κάθε λέξη συνεισφέρει με τρόπο ασυσχέτιστο από κάθε άλλη λέξη στην πιθανότητα ένα νέο έγγραφο να ανήκει σε μια κατηγορία.

Εικόνα 13: Bag of words

56 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ωστόσο κάτι τέτοιο δεν είναι αληθές στις περισσότερες περιπτώσεις, γι’ αυτό και η προσέγγιση αυτή χαρακτηρίζεται ως naive. Για παράδειγμα, βάσει της υπόθεσης αυτής, το γεγονός ότι ένα έγγραφο που ανήκει στην κατηγορία «άθλημα» περιλαμβάνει τη λέξη «ping», δεν θα έπρεπε να κάνει πιο πιθανό το ενδεχόμενο να περιέχει και τη λέξη «pong». Στην πραγματικότητα όμως, η υπόθεση αυτή δεν ισχύει. Πολλές λέξεις είναι εξαρτημένες μεταξύ τους, και η εμφάνιση της μιας ενισχύει την πιθανότητα εμφάνισης της άλλης. Παρόλες τις προσεγγίσεις και τις παραδοχές που κάνει αυτός ο ταξινομητής, στην πράξη και για μια μεγάλη γκάμα εφαρμογών, καταφέρνει να επιτυγχάνει πολύ καλή ακρίβεια ταξινόμησης [31] [32].

3.3.4. Παράδειγμα Χρήσης Naive Bayes

Στο παράδειγμα αυτό, θα εξετάσουμε την εφαρμογή του ταξινομητή στα πλαίσια ταξινόμησης σχολίων σημείων ενδιαφέροντος. Έστω λοιπόν ότι ζητείται να ταξινομηθεί το σχόλιο «φοβερή εμπειρία συνιστώ» στην κατηγορία «Θετικό» ή στην κατηγορία «Αρνητικό», ανάλογα με το συναίσθημα που εμπεριέχει. Στη συνέχεια δίνεται ένα ενδεικτικό σετ εκπαίδευσης.

Κείμενο Κατηγορία απίθανη καφετέρια Θετική τρομερή εμπειρία συνιστώ Θετική συνιστώ ανεπιφύλαχτα Θετική χειρότερη εμπειρία Αρνητική Πίνακας 10: Παράδειγμα σετ εκπαίδευσης

Με βάση τα δεδομένα που μας παρέχονται, εξάγουμε αρχικά το λεξιλόγιο:

푉 = {훼휋ί휃훼휈휂, 휅훼휑휀휏έ휌휄훼, 휏휌휊휇휀휌ή, 휀휇휋휀휄휌ί훼, 휎휐휈휄휎휏ώ, 훼휈휀휋휄휑ύ휆훼휒휏훼, 휒휀휄휌ό휏휀휌휂}

και έχει μέγεθος |V| = 7. Στη συνέχεια υπολογίζονται οι πιθανότητες των κατηγοριών χρησιμοποιώντας τη Σχέση 7:

3 푃(훩휀휏휄휅ή) = 4

και:

57 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

1 푃(훢휌휈휂휏휄휅ή) = 4

Ακολούθως, υπολογίζεται η πιθανότητα της κάθε λέξης του νέου εγγράφου και για τις δύο κατηγορίες, σύμφωνα με τη Σχέση 10:

휑휊훽휀휌ή 0 + 1 1 휑휊훽휀휌ή 0 + 1 1 푃 ( ⁄ ) = = , 푃 ( ⁄ ) = = , 훩휀휏휄휅ή 7 + 7 14 훢휌휈휂휏휄휅ή 7 + 7 14 휀휇휋휀휄휌ί훼 1 + 1 1 휀휇휋휀휄휌ί훼 0 + 1 1 푃 ( ⁄ ) = = , 푃 ( ⁄ ) = = , 훩휀휏휄휅ή 7 + 7 7 훢휌휈휂휏휄휅ή 2 + 7 9 2 + 1 3 0 + 1 1 푃 (휎휐휈휄휎휏ώ⁄ ) = = , 푃 (휎휐휈휄휎휏ώ⁄ ) = = 훩휀휏휄휅ή 7 + 7 14 훢휌휈휂휏휄휅ή 2 + 7 9

Τέλος, υπολογίζεται η πιθανότητα το έγγραφο d να ανήκει στις δύο κατηγορίες με χρήση της Σχέσης 5:

3 1 1 3 푃(훩휀휏휄휅ή/푑 ) = ∗ ∗ ∗ = 1.64 ∗ 10−3 4 14 7 14

και:

1 1 2 1 푃(훢휌휈휂휏휄휅ή/푑) = ∗ ∗ ∗ = 6.86 ∗ 10−4 4 9 9 9

Συνεπώς, σύμφωνα με τη σχέση αυτή, ο Naive Bayes θα κατατάξει το έγγραφο d στη «Θετική» κατηγορία. Όπως φαίνεται από αυτό το παράδειγμα, η χρήση της τροποποιημένης εξίσωσης (10 αντί για 8) για τον υπολογισμό της πιθανότητας της κάθε λέξης του νέου εγγράφου είναι απαραίτητη, ώστε να μη μηδενιστούν οι πιθανότητες.

3.3.5. Υλοποίηση Naive Bayes

Η υλοποίηση του ταξινομητή Naive Bayes σε Java για τις ανάγκες του συστήματος ταξινόμησης στην παρούσα εργασία, έγινε εφαρμόζοντας το μοντέλο που αναλύσαμε προηγουμένως. Κατά την εκπαίδευσή του, ο ταξινομητής σαρώνει έγγραφα του σετ εκπαίδευσης, δημιουργεί το

58 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

λεξιλόγιο |V| και αθροίζει τα θετικά και αρνητικά σχόλια, ούτως ώστε να μπορεί να υπολογίζει μέσω εφαρμογής της Σχέσης (7) τις πιθανότητες P(Θετική) και P(Αρνητική). Επίσης, αθροίζει το πόσες φορές εμφανίζεται η κάθε λέξη στην κάθε κατηγορία, δηλαδή βρίσκει την ποσότητα Tcti για κάθε τυχούσα ti λέξη, ούτως ώστε να τη χρησιμοποιήσει αφού τελειώσει η εκπαίδευση, δηλαδή στη φάση της ταξινόμησης. Όλα τα παραπάνω φαίνονται στη μέθοδο addExample του ταξινομητή, που επεξεργάζεται κάθε έγγραφο του σετ εκπαίδευσης:

public void addExample(String klass, List words) { if(klass.equalsIgnoreCase("pos")) { posCount++; } else { negCount++; } Iterator iter = words.iterator(); while(iter.hasNext()) { String word = iter.next(); // get the vocabulary voc.add(word); HashMap hash; if(klass.equalsIgnoreCase("pos")) { hash = posHash; } else { hash = negHash; } if(hash.containsKey(word)) { int count = hash.get(word).intValue(); hash.put(word, new Integer(++count)); } else { hash.put(word, new Integer(1)); } } }

Κατά τη διαδικασία της ταξινόμησης, ο ταξινομητής χρησιμοποιεί την ποσότητα Tcti και θέτει την σταθερά αi = 1 για κάθε λέξη του εγγράφου προς ταξινόμηση για να μην υπάρχουν μηδενισμοί, όπως αναφέρθηκε και στην ανάπτυξη του μοντέλου. Χρησιμοποιεί έπειτα τη Σχέση (10) για τον υπολογισμό των επιμέρους πιθανοτήτων και τη Σχέση (7) για τον υπολογισμό των P(Θετική) και P(Αρνητική), και έπειτα χρησιμοποιεί τις τιμές που βρίσκει στον λογαριθμικό υπολογισμό της τελικής πιθανότητας, όπως αυτός δίνεται στη Σχέση (6). Επαναλαμβάνει την διαδικασία αυτή δύο φορές, για να βρει την πιθανότητα θετικής πόλωσης και την πιθανότητα αρνητικής πόλωσης, τις συγκρίνει και αναλόγως ταξινομεί το αποτέλεσμα. Η διαδικασία της ταξινόμησης καθενός σχολίου γίνεται μέσω της μεθόδου classify, όπου εφαρμόζονται όσα προαναφέραμε:

59 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

public String classify(List words) { double p_p = (double)posCount/(double)(posCount+negCount); double p_n = (double)negCount/(double)(posCount+negCount); // Positive double posSum = log2(p_p); double negSum = log2(p_n); Iterator iter = words.iterator(); double posDen = sumOfHashMap(posHash); double negDen = sumOfHashMap(negHash); while(iter.hasNext()) { String word = iter.next(); if(posHash.containsKey(word)) { int count = posHash.get(word).intValue(); double p = (count + 1.0) / (posDen + voc.size()); posSum += log2(p); } else { double p = (1.0) / (posDen + voc.size()); posSum += log2(p); } } iter = words.iterator(); while(iter.hasNext()) { String word = iter.next(); if(negHash.containsKey(word)) { int count = negHash.get(word).intValue(); double p = (count + 1.0) / (negDen + voc.size()); negSum += log2(p); } else { double p = (1.0) / (negDen + voc.size()); negSum += log2(p); } } if(negSum < posSum) { return "pos"; } else { return "neg"; } }

Ο πλήρης κώδικας του ταξινομητή καθώς και των υπολοίπων κλάσεων που χρησιμοποιήθηκαν για την ανάπτυξη του συστήματος ταξινόμησης, βρίσκονται στο Παράρτημα Ι.

3.4. Πειράματα

Σε αυτό το σημείο θα εξετάσουμε και θα αξιολογήσουμε τα πειραματικά αποτελέσματα του συστήματος ταξινόμησης που υλοποιήθηκε στα πλαίσια αυτής της διπλωματικής εργασίας. Κύριο μέλημά μας εφόσον χρησιμοποιούμε αποκλειστικά τον Naive Bayes αλγόριθμο, θα είναι να συγκρίνουμε την ακρίβειά (accuracy) του πριν και μετά την εφαρμογή όλων των μεθόδων προεπεξεργασίας των δεδομένων που εξετάσαμε προηγουμένως, και κατά πόσο αυτές επέφεραν βελτίωση.

60 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Δεν θα εξεταστούν άλλες μετρικές πέρα από την ακρίβεια του ταξινομητή, γιατί στα πλαίσια της διπλωματικής, αυτή είναι που μας ενδιαφέρει. Οι μετρικές που βασίζονται στον πίνακα κόστους (Precision, Recall και F-measure) δεν θα μας απασχολήσουν καθώς το κόστος εδώ είναι για όλες τις προβλέψεις το ίδιο, δεν υπάρχει δηλαδή διαφορετική βαρύτητα στο αν ταξινομηθεί λάθος ένα θετικό ή ένα αρνητικό σχόλιο. Επίσης μπορούμε με ασφάλεια να θεωρήσουμε ότι η μετρική της ακρίβειας είναι αντιπροσωπευτική της απόδοσης του ταξινομητή, γιατί τα σετ εκπαίδευσης και δοκιμής είναι μοιρασμένα ισόποσα μεταξύ θετικών και αρνητικών σχολίων, οπότε δεν έχουμε το πρόβλημα της εικονικά υψηλής ακρίβειας αλλά πρακτικά κακού μοντέλου που εξετάσαμε στο προηγούμενο κεφάλαιο. Στη συνέχεια θα εξετάσουμε αρχικά την καμπύλη εκμάθησης του ταξινομητή, και το κατά πόσο το σετ εκπαίδευσης των 2,000 σχολίων είναι ικανοποιητικό για την εκμάθηση. Έπειτα, θα παραθέσουμε τα αποτελέσματα της ακρίβειας του ταξινομητή.

3.4.1. Καμπύλη Εκμάθησης

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

Καμπύλη εκμάθησης χωρίς προεπεξεργασία δεδομένων και χωρίς stopwords 0.74

0.72

0.7

0.68

0.66

0.64

Accuracy 0.62

0.6

0.58

0.56

0.54 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Μέγεθος dataset

Μέγεθος dataset 100 200 500 1000 1500 2000 Accuracy 0.55 0.62 0.66 0.69 0.72 0.73 Πίνακας 11: Καμπύλη εκμάθησης χωρίς προεπεξεργασία και χωρίς stopwords

61 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παρατηρούμε ότι υπάρχει σύγκλιση και επομένως το dataset έχει ικανοποιητικό μέγεθος. Εφαρμόζοντας stopwords, η καμπύλη εκμάθησης μεταβάλλεται όπως φαίνεται στο επόμενο γράφημα:

Καμπύλη εκμάθησης χωρίς προεπεξεργασία δεδομένων και με stopwords 0.74

0.72

0.7

0.68

0.66

0.64

Accuracy

0.62

0.6

0.58

0 200 400 600 800 1000 1200 1400 1600 1800 2000 Μέγεθος dataset Μέγεθος dataset 100 200 500 1000 1500 2000 Accuracy 0.56 0.62 0.67 0.69 0.73 0.74 Πίνακας 12: Καμπύλη εκμάθησης χωρίς προεπεξεργασία και με stopwords

Παρατηρούμε μια μικρή βελτίωση στην ακρίβεια. Εάν εφαρμόσουμε μόνο προεπεξεργασία δεδομένων χωρίς stopwords, η καμπύλη γίνεται:

Καμπύλη εκμάθησης με προεπεξεργασία δεδομένων και χωρίς stopwords 0.9

0.85

0.8

0.75

Accuracy 0.7

0.65

0.6

0.55 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Μέγεθος dataset Μέγεθος dataset 100 200 500 1000 1500 2000 Accuracy 0.6 0.67 0.755 0.785 0.795 0.802 Πίνακας 13: Καμπύλη εκμάθησης με προεπεξεργασία και χωρίς stopwords

62 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Εδώ φαίνεται μια σημαντικότερη βελτίωση σε σχέση με πριν. Τέλος, αν εφαρμοστούν οι μέθοδοι της προεπεξεργασίας και τα stopwords ταυτόχρονα, έχουμε:

Καμπύλη εκμάθησης με προεπεξεργασία δεδομένων και stopwords 0.85

0.8

0.75

Accuracy 0.7

0.65

0 200 400 600 800 1000 1200 1400 1600 1800 2000 Μέγεθος dataset

Μέγεθος dataset 100 200 500 1000 1500 2000 Accuracy 0.646 0.69 0.758 0.795 0.81 0.8255 Πίνακας 14: Καμπύλη εκμάθησης με προεπεξεργασία και με stopwords

63 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

3.4.2. Ακρίβεια Ταξινομητή

Παραθέτουμε τώρα τα τελικά αποτελέσματα της ακρίβειας σε ένα συγκεντρωτικό πίνακα, για το σύνολο του dataset των 2,000 σχολίων. Σημειώνεται και εδώ, αν και προαναφέρθηκε, ότι αναφερόμαστε στο μέσο όρο ακρίβειας που πετυχαίνει ο ταξινομητής, όταν εφαρμόζεται 10 φορές στο σετ δεδομένων με τη μέθοδο του 10-fold cross validation.

Accuracy Χωρίς προεπεξεργασία και χωρίς stopwords 0,73 Χωρίς προεπεξεργασία και με stopwords 0,74 Με προεπεξεργασία και χωρίς stopwords 0,802 Με όλες τις μεθόδους βελτίωσης ακρίβειας 0,8255 Πίνακας 15: Accuracy ταξινομητή

Παρατηρούμε επομένως πώς, με την κατάλληλη προεπεξεργασία των δεδομένων και στοχευμένες μεθόδους βελτίωσης της ακρίβειας, καταφέραμε να βελτιώσουμε την απόδοση του ταξινομητή κατά σχεδόν 10%, ποσοστό αρκετά σημαντικό για τα πλαίσια της διπλωματικής εργασία. Ας εξετάσουμε όμως και την επιμέρους επίπτωση της κάθε μεθόδου προεπεξεργασίας στην τελική ακρίβεια του ταξινομητή. Στον επόμενο πίνακα παρουσιάζεται η ακρίβεια του ταξινομητή για το σύνολο του dataset των 2,000 σχολίων, όταν κάθε φορά απενεργοποιούσαμε κάποια από τις μεθόδους προεπεξεργασίας που αναλύθηκαν προηγουμένως. Βλέπουμε πως σε κάθε περίπτωση, η ακρίβεια είναι μειωμένη. Έτσι επαληθεύουμε πώς η κάθε μέθοδος μας προσφέρει κάποια, έστω και μικρή, βελτίωση.

Accuracy Χωρίς εξομάλυνση πεζών/κεφαλαίων 0,8085 Χωρίς αφαίρεση τονισμών για τα ελληνικά 0,7965 Χωρίς ομαδοποίηση emoticons 0,8214 Χωρίς αφαίρεση σημείων στίξης 0.823 Χωρίς αφαίρεση επαναλαμβανόμενων 0.794 χαρακτήρων Χωρίς stemming 0.8125 Με όλες τις μεθόδους βελτίωσης ακρίβειας 0,8255 Πίνακας 16: Accuracy ταξινομητή όταν παραλείπεται καθεμιά από τις μεθόδους προεπεξεργασίας

64 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

4. Η Εφαρμογή Venuetrack

4.1. Εισαγωγή

Σε αυτό το κεφάλαιο θα εξετάσουμε το πώς σχεδιάστηκε και κατασκευάστηκε η εφαρμογή Venuetrack, που εκπονήθηκε στα πλαίσια αυτής της διπλωματικής εργασίας. Το Venuetrack είναι μια web εφαρμογή και αποτελεί ουσιαστικά ένα mashup του Fοursquare και του Google Maps για την πόλη της Θεσσαλονίκης. Συγκεντρώνει και παρουσιάζει συνοπτικά τα σημεία ενδιαφέροντος (venues) της πόλης, με κυρίαρχο σκοπό να προσφέρει μια εκτίμηση του κάθε σημείου βάσει των σχολίων που άφησαν οι χρήστες του Foursqare για αυτό. Για το σκοπό αυτό, το Venuetrack ενσωματώνει και χρησιμοποιεί το σύστημα ανάλυσης συναισθήματος με επεξεργασία φυσικής γλώσσας που αναλύσαμε στο 3ο Κεφάλαιο.

 Στο παρόν κεφάλαιο, θα αναφερθούμε αρχικά στις τεχνολογίες και τα frameworks που χρησιμοποιήθηκαν κατά την κατασκευή της εφαρμογής. Θα μελετήσουμε συνοπτικά την καθεμιά από αυτές και θα εξηγήσουμε γιατί χρησιμοποιήθηκε και πώς βοήθησε στην κατασκευή της εφαρμογής.

 Στη συνέχεια, θα γίνει μια επισκόπηση του API που διαθέτει το Foursquare και τις δυνατότητες που αυτό παρέχει. Έπειτα, θα εξηγηθεί το πώς αυτό χρησιμοποιήθηκε για την άντληση των απαραίτητων δεδομένων για την εφαρμογή.

 Θα αναφερθούμε επίσης στη δομή της εφαρμογής, τα μέρη από τα οποία αποτελείται, δηλαδή το Backend και το Frontend της εφαρμογής. Θα εξηγήσουμε από τι αποτελείται το καθένα, και πώς αλληλεπιδρούν για την επίτευξη της συνολικής λειτουργίας της εφαρμογής.

65 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

4.2. Χρησιμοποιούμενες Τεχνολογίες & Frameworks

4.2.1. Apache Maven

Το Maven της Apache είναι ένα εργαλείο διαχείρισης έργων λογισμικού που βασίζεται στο μοντέλο POM (project object model). Διαχειρίζεται τη δόμηση μιας εφαρμογής, την έκδοσή της και το documentation. Επιλέχθηκε για την παρούσα εφαρμογή γιατί συνεργάζεται με το Google App Engine (GAE) που χρησιμοποιήθηκε για τη φιλοξενία του Venuetrack και καθιστά την δημιουργία της δομής μιας εφαρμογής για το GAE πολύ εύκολη. Σύνδεσμος: https://maven.apache.org/

4.2.2. Google App Engine

To Google App Engine είναι μια PaaS (Platform as a Service) πλατφόρμα cloud computing, με δυνατότητες φιλοξενίας web εφαρμογών. Οι εφαρμογές λειτουργούν κατανεμημένα μεταξύ πολλών servers και τα δεδομένα των εφαρμογών αποθηκεύονται σε data centers διαχειριζόμενα από τη Google.

Εικόνα 14: Google App Engine

Το App Engine προσφέρει αυτόματο scaling των εφαρμογών που φιλοξενεί, δηλαδή όταν τα requests για μια εφαρμογή αυξάνονται, το App Engine αυτόματα ανακατανέμει τους πόρους κατάλληλα για να καλύψει την έξτρα ζήτηση. Το GAE χρησιμοποιήθηκε για τη φιλοξενία του Venuetrack για διάφορους λόγους:  Είναι μια σχετικά νέα πλατφόρμα cloud computing με ενδιαφέρουσες δυνατότητες και εύκολη χρήση.  Επιτρέπει τη χρήση τεχνολογιών, γλωσσών και frameworks που εξυπηρετούσαν την κατασκευή του Venuetrack.  Είναι δωρεάν για μικρές εφαρμογές με χαμηλή ζήτηση και σχετικά λίγα Read/Write operations, οπότε επιτρέπει στο Venuetrack να έχει μηδενικά κόστη φιλοξενίας.

66 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σύνδεσμος: https://appengine.google.com/

4.2.3. Java Servlets

Τα Java Servlets είναι προγράμματα σε Java που επεκτείνουν τις δυνατότητες ενός server, δηλαδή αποτελούν ένα server side framework της γλώσσας Java. Προσφέρονται για την κατασκευή του backend web εφαρμογών και χρησιμοποιούνται ως μια από τις δυνατές επιλογές από το GAE. Για την εκπόνηση του Venuetrack, τα Java Servlets χρησιμοποιήθηκαν για το backend κομμάτι της εφαρμογής, γιατί διευκόλυναν πολύ την ενσωμάτωση του συστήματος ανάλυσης συναισθήματος, καθώς και αυτό είναι γραμμένο σε Java.

4.2.4. AngularJS

Το Framework AngularJS είναι ένα open source client & server-side Framework, πλήρως γραμμένο σε Javascript, που συντηρείται και επεκτείνεται κυρίως από τη Google. Το Framework αυτό εξειδικεύεται στην κατασκευή single-page (χωρίς να απαιτείται ανανέωση της σελίδας κατά την περιήγηση) web εφαρμογών.

Εικόνα 15: AngularJS

Στο Venuetrack, το AngularJS χρησιμοποιήθηκε για την εκπόνηση του Frontend τμήματος της εφαρμογής. Επιλέχθηκε για την ευκολία με την οποία μπορεί κανείς να φτιάξει και να συντηρήσει μια frontend εφαρμογή, καθώς και για την καλή απόκριση που προσφέρει για single-page εφαρμογές. Σύνδεσμος: https://angularjs.org/

4.2.5. Λοιπές Web Τεχνολογίες

Στα πλαίσια της κατασκευής του Venuetrack χρησιμοποιήθηκαν και άλλα frameworks που έχουν να κάνουν π.χ. με το κομμάτι:

67 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

 της αποθήκευσης των δεδομένων, όπου χρησιμοποιήθηκε το Objectify6,  της μετατροπής των δεδομένων από και σε JSON μορφή, όπου χρησιμοποιήθηκε η βιβλιοθήκη Gson7,  της εμφάνισης της εφαρμογής, όπου χρησιμοποιήθηκε το Boostrap8 (CSS και JS framework για μορφοποίηση web εφαρμογών με mobile δυνατότητες) κ.α,  και φυσικά το Google Maps Javascript API9, για την παρουσίαση του χάρτη και των markers. 4.3. Συλλογή Δεδομένων Από Foursquare

Όπως έχει αναφερθεί πολλές φορές έως τώρα, τα δεδομένα για την εκπόνηση της εφαρμογής συλλέγονται από το Foursquare. Το Foursquare είναι μια πολύ δημοφιλής εφαρμογή κοινωνικής δικτύωσης, όπου οι χρήστες μπορούν να ψάχνουν, μαθαίνουν και να σχολιάζουν σημεία ενδιαφέροντος στην πόλη τους ή σε μέρη που επισκέπτονται. Το Venuetrack χρησιμοποιεί το API που προσφέρει το Foursquare για τη συλλογή δεδομένων για την πόλη της Θεσσαλονίκης. Μέσω αυτού του API, μπορεί και συλλέγει πληροφορίες τόσο για τα σημεία ενδιαφέροντος της Θεσσαλονίκης, όσο και για τα απαραίτητα σχόλια χρηστών για κάθε σημείο, έτσι ώστε να εκτιμήσει αν ένα σημείο ενδιαφέροντος μπορεί να προσφέρει θετική ή αρνητική εμπειρία σε έναν επισκέπτη.

4.3.1. Foursquare Endpoints

Το API10 του Foursquare προσφέρει μεθόδους που ακολουθούν το RESTful μοντέλο, για την πρόσβαση σε διάφορα resources (πόρους) της εφαρμογής, και κυρίως για venues (σημεία ενδιαφέροντος) και tips (σχόλια χρηστών). Τα ζητούμενα δεδομένα επιστρέφονται σε JSON μορφή.

Venues Για τα venues, το Foursquare μπορεί να επιστρέψει μεγάλο εύρος πληροφοριών, με τις σημαντικότερες να είναι το id, το όνομα του, η τοποθεσία, η κατηγορία, η βαθμολογία του καθώς και διάφορα στατιστικά στοιχεία.

6 https://github.com/objectify/objectify 7 https://github.com/google/gson 8 http://getbootstrap.com/ 9 https://developers.google.com/maps/documentation/javascript/ 10 Αναλυτικές πληροφορίες σχετικά με τις δυνατότητες του API του Foursquare υπάρχουν στο documentation για developers, εδώ: https://developer.foursquare.com/docs/

68 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Επίσης μπορεί κάποιος να σαρώσει για venues γύρω από ένα σημείο με συγκεκριμένη ακτίνα, για να του επιστραφεί ένα πακέτο από δεδομένα. Ένα request στα Endpoints του Foursquare για παράδειγμα είναι το ακόλουθο: https://api.foursquare.com/v2/venues/explore?ll= LATITUDE ,LONGTITUDE &limit=50

όπου φυσικά LATITUDE και LONGTITUDE οι αντίστοιχες συντεταγμένες γύρω από τις οποίες θέλουμε να αναζητήσουμε venues. Αυτό το request θα επιστρέψει έως και 50 venues γύρω από το σημείο που ζητήσαμε.

Tips Αντίστοιχα με τα venues, ένα request μπορεί να γίνει για να ζητήσει tips. Τα tips που θα επιστραφούν σε JSON μορφή περιλαμβάνουν στοιχεία όπως το id του Tip, το κείμενο, το πότε δημιουργήθηκε κλπ. Ένα request για tips είναι για παράδειγμα το επόμενο: https://api.foursquare.com/v2/venues/VENUE_ID/tips?sort=recent&limit=100

όπου VENUE_ID είναι το id του venue για το οποίο ζητάμε τα tips. Το request αυτό θα επιστρέψει έως 100 tips επιλέγοντας από τα πιο πρόσφατα για το συγκεκριμένο venue.

Σημειώνεται τέλος ότι οι παραπάνω σύνδεσμοι των requests δεν είναι πλήρεις, αλλά πρέπει να συμπεριληφθεί και ένα Authentication Token στο τέλος του συνδέσμου, για να εξυπηρετηθεί από τα Endpoints. Τέλος, τα requests στα venues/* endpoints έχουν όριο τα 5,000 requests.

4.4. Δομή Εφαρμογής

Στη συνέχεια θα εξετάσουμε την εσωτερική δομή της εφαρμογής του Venuetrack, το πώς λειτουργεί το backend και πώς αποθηκεύονται τα δεδομένα, το πώς αυτά εμφανίζονται και παρουσιάζονται στο frontend καθώς και πώς τα δύο μέρη της εφαρμογής αλληλεπιδρούν μεταξύ τους. Αν θεωρήσουμε ως «μαύρα κουτιά» τα δύο κομμάτια της εφαρμογής, μια βασική περιγραφή της έχει ως εξής:

69 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Το backend είναι αυτό που αλληλεπιδρά με τα endpoints του Foursquare. Ζητά δεδομένα από αυτά, τα μετατρέπει κατάλληλα και τα αποθηκεύει. Έπειτα τα σερβίρει όταν ζητηθούν, στο frontend. Επίσης, εφαρμόζει το σύστημα ανάλυσης συναισθήματος σε αυτά, ώστε να τα ταξινομήσει και να τα εκτιμήσει ως θετικά ή αρνητικά. Μια σχηματική απεικόνιση των παραπάνω ακολουθεί στο επόμενο σχήμα:

Εικόνα 16: Σχηματική απεικόνιση Venuetrack

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

4.4.1. Κατασκευή Backend

Το Backend της εφαρμογής αποτελείται από τρία σημαντικά servlets που επιτελούν τις απαραίτητες λειτουργίες της εφαρμογής, και από αρκετές επιμέρους κλάσεις που μοντελοποιούν τα δεδομένα των venues και tips, και χρησιμοποιούνται για την αποθήκευσή τους. Παρατηρούμε επομένως ότι δεν αποθηκεύουμε τα δεδομένα μας σε κάποια SQL-based βάση όπως στην πλειονότητα των web εφαρμογών. Αυτό συμβαίνει γιατί το Datastore, δηλαδή ο χώρος αποθήκευσης δεδομένων του GAE, είναι NoSQL, τύπου Object-based, δηλαδή αποθηκεύουμε στιγμιότυπα των κλάσεων απευθείας στο Datastore, και αντλούμε εκ νέου τα δεδομένα από εκεί, πάλι με τη μορφή αντικειμένων.

70 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Η δυσκολία αυτού του τύπου αποθήκευσης σε σχέση με τις κλασσικές SQL βάσεις δεδομένων, είναι ότι δεν υπάρχει η ίδια ευχέρεια στη χρήση queries για κατάλληλη άντληση των δεδομένων από το Datastore. Σε αυτό το πρόβλημα δίνει λύση το Objectify που αναφέρθηκε προηγουμένως, το οποίο είναι ένα ουσιαστικά ένα interface που διευκολύνει σε μεγάλο βαθμό το χειρισμό του Datastore σε σχέση με το Low-Level API που χρησιμοποιείται από προεπιλογή, χωρίς να υστερεί σε απόδοση. Στη συνέχεια θα εξετάσουμε τα τρία servlets που συνιστούν τον κορμό του backend τμήματος του Venuetrack,

 το FsqdataappServlet, που συλλέγει τα δεδομένα από το Foursquare,

 το EndpointsServlet, που σερβίρει τα δεδομένα στο frontend,

 και το TrainServlet, που εφαρμόζει τον ταξινομητή ανάλυσης συναισθήματος.

Έπειτα θα παραθέσουμε τις δύο βασικές κλάσεις που μοντελοποιούν τα δεδομένα της εφαρμογής, την κλάση Venue και την κλάση Tip.

FsqdataappServlet Το servlet αυτό, εκτελείται κάθε 10 λεπτά και συλλέγει δεδομένα. Η περιοδική εκτέλεσή του συντελείται μέσω του ορισμού ενός cron11 job που το καλεί, αλλά μπορεί να εκτελεστεί και εκτός προγράμματος, μέσω HTTP Request. Η λειτουργία του ξεκινά με τον προσδιορισμό ενός τυχαίου σημείου σε μια ακτίνα γύρω από το κέντρο της Θεσσαλονίκης. Για αυτό το σημείο δημιουργεί ένα request url, το οποίο κατασκευάζεται για να ζητήσει έως και 50 venues κοντά στο προκαθορισμένο σημείο. Προσπαθεί έπειτα να πραγματοποιήσει το request στο API του Foursquare. Αν δεν λάβει απάντηση, επιστρέφει μήνυμα λάθους. Αλλιώς, λαμβάνει την απάντηση σε JSON και με τη χρήση της βιβλιοθήκης Gson που προαναφέραμε, μετατρέπει το JSON σε Object. Έπειτα, εξετάζει κάθε item μέσα σε αυτό το Object. Κάθε item είναι πρακτικά και ένα venue. Για κάθε ένα venue, εξετάζει αν βρίσκεται μέσα στα όρια της Θεσσαλονίκης. Αυτός ο έλεγχος είναι απαραίτητος γιατί αν το σημείο για το οποίο έγινε το request είναι κοντά στα όρια της πόλης, κάποια από τα venues που εντοπίστηκαν μπορεί να βρίσκονται και εκτός Θεσσαλονίκης, περίπτωση η οποία δεν μας ενδιαφέρει στα πλαίσια αυτής της εφαρμογής, αποτελεί περιττή πληροφορία και πρέπει να την απορρίψουμε.

11 Ο όρος cron αφορά έναν scheduler για τον χρονικό προγραμματισμό tasks. Τέτοιοι schedulers υπάρχουν σε Unix- based συστήματα, και βοηθούν στο χρονοπρογραμματισμό των διαφόρων εκτελέσεων προγραμμάτων. Το GAE δίνει και αυτό τη δυνατότητα περιοδικής εκτέλεσης tasks μέσω ορισμού τους ως cron jobs.

71 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Για τα venues που πληρούν το προηγούμενο κριτήριο, τα αποθηκεύει με τη χρήση του Objectify. Έπειτα για κάθε ένα από αυτά, στέλνει νέο request στο Foursquare, αυτή τη φορά ζητώντας τα 100 πιο πρόσφατα tips του venue. Αν λάβει απάντηση, αποθηκεύει με τρόπο αντίστοιχο με αυτόν που περιεγράφηκε προηγουμένως, τα tips του συγκεκριμένου venue.

EndpointsServlet Το servlet αυτό, εκτελείται όταν κληθεί μέσα από HTTP Request, και είναι αυτό το οποίο σερβίρει τα δεδομένα για παρουσίαση στο frontend. Έχει τη δυνατότητα να αντλήσει τα δεδομένα από το Datastore, να τα μετατρέψει σε μορφή JSON με τη χρήση της βιβλιοθήκης Gson, και να τα επιστρέψει ως απάντηση στο εκάστοτε request. Οι επιλογές πρόσβασης που προσφέρει είναι είτε για venues είτε για tips, ενώ μπορεί να εφαρμόσει και διάφορα φίλτρα ανάλογα με τις παραμέτρους που θα δοθούν στο request (π.χ. στο μέγεθος των venues, να βρει venues γύρω από κάποια περιοχή κλπ).

TrainServlet Το TrainServlet εφαρμόζει το σύστημα ταξινόμησης των σχολίων που αναλύσαμε στο 3ο Κεφάλαιο. Εκτελείται και αυτό μέσα από προγραμματισμένο cron job, κάθε 7 ημέρες. Αυτό το φαινομενικά μεγάλο διάστημα μεταξύ κλήσεων του servlet δεν αποτελεί στην πραγματικότητα πρόβλημα, καθώς τα δεδομένα των venues της Θεσσαλονίκης αλλάζουν με σχετικά αργούς ρυθμούς, οπότε η επαναταξινόμησή τους μια φορά κάθε εβδομάδα κρίνεται κάτι παραπάνω από επαρκής. Η λειτουργία του servlet αυτού, αναλύεται ως εξής: αρχικά, ο ταξινομητής επανεκπαιδεύεται (για τυχόν μελλοντικές αλλαγές στο σετ εκπαίδευσης, μελλοντικές προσθήκες ή αλλαγές στην κλάση του NaiveBayesClassifier που υλοποιεί τον ταξινομητή), και έπειτα για κάθε venue αντλούνται τα δεδομένα σχολίων του, ταξινομούνται ανάλογα με την πόλωσή τους, και τέλος υπολογίζεται η συνολική πόλωση του venue, ανάλογα με το αν υπερτερούν τα θετικά ή τα αρνητικά σχόλια. Σημειώνεται σε αυτό το σημείο ότι: Όταν αντλούνται τα tips ενός venue και πριν μεταβιβαστούν στο σύστημα ανάλυσης συναισθήματος για προεπεξεργασία, ταξινόμηση κλπ, πρώτα γίνεται ένας έλεγχος θορύβου. Αυτό σημαίνει ότι για κάθε ένα από τα tips, εξετάζονται ορισμένες ενδείξεις για να αποφασιστεί αν το συγκεκριμένο tip αποτελεί θόρυβο ή χρήσιμη πληροφορία. Μερικές από αυτές τις ενδείξεις φαίνονται στον επόμενο πίνακα.

Ένδειξη Πρόβλημα 4sqwifi.com , via WiFi Sherlock, Wi-fi: , passw Spam που καταγράφει τους κωδικούς κλπ. πρόσβασης του wi-fi δικτύου σε διάφορα venues. www. , .com , .gr Διαφημίσεις Πίνακας 17: Δείγμα από tips που απορρίπτονται ως θόρυβος

72 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Επίσης τα tips ελέγχονται για το εάν περιέχουν χαρακτήρες κυριλλικού και τούρκικου αλφαβήτου. Αν ναι, τότε απορρίπτονται ως θόρυβος, λόγω του ότι ο ταξινομητής δεν έχει εκπαιδευτεί σε άλλες γλώσσες πέραν ελληνικών, αγγλικών και greeklish. Όλα όσα αναφέρθηκαν έως εδώ σχετικά με το backend κομμάτι της εφαρμογής και τη λειτουργία των servlets, συνοψίζονται στο επόμενο σχήμα, όπου παρουσιάζεται μια πιο αναλυτική απεικόνιση του πώς τα servlets εκτελούνται, αλληλεπιδρούν με το Datastore, το Foursquare και τον τελικό χρήστη (στον υπολογιστή του οποίου εκτελείται το frontend τμήμα, που πραγματοποιεί τα HTTP Requests, τα οποία εξυπηρετούνται από το Endpoints Servlet).

Εικόνα 17: Σχηματική απεικόνιση Venuetrack backend

4.4.2. Κατασκευή Frontend

Το frontend του Venuetrack είναι αρκετά απλό στη χρήση του, αφού όπως αναφέραμε πρόκειται για μια single-page εφαρμογή που περιλαμβάνει το χάρτη της Θεσσαλονίκης με markers στις τοποθεσίες που αποτελούν σημεία ενδιαφέροντος. Όσον αφορά τη λειτουργικότητα της εφαρμογής, περιλαμβάνει ένα πεδίο αναζήτησης για venues, ενώ προσφέρονται και κάποιες βασικές δυνατότητες φιλτραρίσματος ή ταξινόμησης των αποτελεσμάτων της αναζήτησης (π.χ. με αλφαβητική σειρά, βάσει κατηγορίας, βαθμολογίας κλπ). Η αναζήτηση μπορεί να γίνει με βάση οποιοδήποτε στοιχείο του venue, χωρίς να απαιτείται να προσδιοριστεί αυτό εκ των προτέρων (αν είναι το όνομα του venue, η διεύθυνσή του, η περιοχή ή

73 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

η κατηγορία του). Πρακτικά αυτό σημαίνει ότι κάποιος μπορεί να γράψει στο πεδίο της αναζήτησης:

cafe Καλαμαριά Και θα του επιστραφούν ως αποτελέσματα όλα τα cafe της περιοχής της Καλαμαρίας. Τέλος, περιλαμβάνει και μια σελίδα στατιστικών στοιχείων της εφαρμογής, δηλαδή στοιχεία σχετικά με το πόσα venues και πόσα tips περιλαμβάνει η εφαρμογή, ποιο venue ενημερώθηκε πιο πρόσφατα, στατιστικά σχετικά με τον ταξινομητή κ.α. Για την κατασκευή του frontend χρησιμοποιήθηκε όπως προαναφέρθηκε το AngularJS framework, όπως επίσης και το Javascript API που διαθέτει το Google Maps, για την ενσωμάτωση του χάρτη και την κατασκευή των markers. Σχετικά με τη δομή του frontend, περιλαμβάνονται τα εξής:  Αξιοποιώντας τη δυνατότητα που προσφέρει το AngularJS για κατασκευή custom services, για την υλοποίηση του frontend κατασκευάστηκε ένα service που έχει τη δυνατότητα να επικοινωνεί με τα endpoints του backend για την άντληση των κατάλληλων δεδομένων.

 Επίσης, στο κυρίως τμήμα frontend κατασκευάστηκε ένας βασικός controller που επιτελεί τις απαραίτητες λειτουργίες εκκίνησης της εφαρμογής, όπως τον σχεδιασμό του χάρτη και καθορισμό του κέντρου του στο κέντρο της Θεσσαλονίκης, καθώς και καθορισμός του αρχικού επιπέδου ζουμ. Ο controller αυτός είναι επίσης που καλεί το service και αντλεί τα δεδομένα από το backend σε μορφή JSON, τα μετατρέπει σε αντικείμενα venues και έπειτα δημιουργεί τους αντίστοιχους markers, έναν για κάθε venue. Οι markers έχουν διαφορετικό εικονίδιο, ανάλογα με την κατηγορία του venue. Αν δηλαδή ένα venue είναι κατηγορίας «cafe» τότε ο marker θα έχει εικονίδιο που συμβολίζει ένα καφέ, αν το venue αφορά έναν αρχαιολογικό χώρο, τότε το εικονίδιο θα συμβολίζει αυτό κ.ο.κ.

 Τέλος προσθέτει ένα listener για κάθε marker, ούτως ώστε όταν ο χρήστης επιλέξει κάποιον marker, να εμφανιστούν σε ειδικό πλαίσιο οι λεπτομέρειες του venue και η εκτίμηση της εφαρμογής για την πόλωσή του.

Σε αυτό το σημείο, θα παρουσιάσουμε μέσα και από αντίστοιχες εικόνες, τα βασικά σημεία λειτουργίας του frontend της εφαρμογής, όπως αυτά αναλύθηκαν πιο πάνω.

74 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Η πρώτη εικόνα είναι αυτή που αντικρίζουμε όταν ανοίγουμε για πρώτη φορά την εφαρμογή Venuetrack. Όπως έχει ήδη αναφερθεί, ανοίγει μπροστά μας ο χάρτης της Θεσσαλονίκης με τα διάφορα σημεία ενδιαφέροντος «καρφιτσωμένα» πάνω σε αυτόν.

Εικόνα 18: Η αρχική οθόνη του Venuetrack

Αν πατήσουμε το κουμπί της αναζήτησης, τότε ακόμη και αν δεν έχουμε δώσει κάποιο συγκεκριμένο όρο αναζήτησης, θα ανοίξει η πλάγια μπάρα η οποία εμφανίζει τα αποτελέσματα του τι αναζητήσαμε. Όπως φαίνεται και στην επόμενη εικόνα, στην μπάρα υπάρχουν επιλογές ταξινόμησής των venues που επιστρέφονται ως αποτελέσματα, με βάση το όνομα του εκάστοτε venue, τη διεύθυνσή του, την τοποθεσία ή τη βαθμολογία του. Πιο συγκεκριμένα, για τη χρήση της βαθμολογίας ως επιλογής ταξινόμησης, αναφερόμαστε σε αυτή την οποία αποδίδει το Foursquare στο venue, καθώς ταξινόμηση με βάση τη βαθμολόγηση του Venuetrack που είναι δυαδική, δεν θα είχε νόημα.

75 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Εικόνα 19: Η μπάρα αναζήτησης

Επίσης υπάρχει η δυνατότητα φιλτραρίσματος των αποτελεσμάτων με βάση κάποιον όρο ή κάποια κατηγορία. Αυτό γίνεται με την επιλογή του χρήστη από μια λίστα έτοιμων λέξεων- κλειδιών που υπάρχει στο πεδίο «Filters», και φαίνεται στην παραπάνω εικόνα. Τέτοια φίλτρα μπορεί να είναι π.χ. η λέξη «Cafes», για περιορισμό των αποτελεσμάτων μόνο στα καφενεία και τις καφετέριες που είναι σχετικές με τον όρο αναζήτησης, η λέξη «Restaurants» για περιορισμό των αναζητήσεων στα εστιατόρια, η λέξη «Museums» για τα μουσεία κλπ.

76 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Στην επόμενη εικόνα, μπορούμε να δούμε στην πράξη όσα προαναφέρθηκαν. Εδώ έχει επιλεγεί το φιλτράρισμα της αναζήτησης με βάση τη λέξη κλειδί «Cafes», ενώ επιλέχθηκε επίσης τα αποτελέσματα που παρουσιάζονται στην πλάγια μπάρα να ταξινομηθούν κατά όνομα σημείου ενδιαφέροντος.

Εικόνα 20: Εφαρμογή επιλογών φιλτραρίσματος αναζήτησης

Για να δει ο χρήστης τις λεπτομέρειες ενός venue, μπορεί είτε να περιηγηθεί σε αυτό επιλέγοντάς το από την πλάγια μπάρα, είτε απλούστερα να το επιλέξει απευθείας μέσω του εικονιδίου του στο χάρτη. Αν το επιλέξει από τη μπάρα, τότε η εφαρμογή ζουμάρει πάνω στο συγκεκριμένο σημείο. Αν επιλεγεί το σημείο μέσω του χάρτη, δεν έχουμε την ίδια λειτουργία ζουμ, για ευκολία του χρήστη ώστε αν θέλει να μπορέσει να ανοίξει πολλά venues στην ίδια περιοχή καθώς περιηγείται στο χάρτη, χωρίς να χρειάζεται να αναπροσαρμόζει το επίπεδο ζουμ κάθε φορά.

77 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Εικόνα 21: Παρουσίαση σημείου ενδιαφέροντος

Όταν λοιπόν επιλέξει ένα venue, εμφανίζονται σε πλαίσιο οι πληροφορίες του, όπως φαίνεται στην παραπάνω εικόνα. Οι πληροφορίες του venue περιλαμβάνουν την βασική κατηγορία του (με βάση την κατηγοριοποίηση του Foursquare φυσικά), που μπορεί να είναι π.χ. εστιατόριο, καφέ, πλατεία, κλπ. Επίσης περιλαμβάνεται η διεύθυνσή του, ο αριθμός των check ins χρηστών του Foursquare σε αυτό το venue (που υποδηλώνει πόσες φορές δήλωσαν χρήστες ότι το επισκέφθηκαν), καθώς και ο αριθμός των σχολίων που έχουν αφήσει. Τέλος, περιλαμβάνονται οι βαθμολογήσεις του Foursquare και του Venuetrack για αυτό το venue, και το URL για τον διαδικτυακό του τόπο, αν αυτό παρέχεται. Σημειώνεται ότι θεωρήθηκε σωστό να δίνεται η πληροφορία του αριθμού των σχολίων χρηστών για κάθε venue, γιατί ενώ μπορεί να θεωρείται ως περιττή για έναν απλό χρήστη, στα πλαίσια αυτής της εφαρμογής είναι καλό ο χρήστης να ξέρει από πόσα σχόλια προήλθε η βαθμολογία που εξάγει ο ταξινομητής του Venuetrack για την κατηγοριοποίηση της πόλωσης κάθε venue. Με αυτό τον τρόπο μπορεί να καταλήξει για το κατά πόσο είναι αξιόπιστη ή όχι. Αν δεν υπάρχουν σχόλια, τότε η εφαρμογή εμφανίζει κατάλληλο μήνυμα αντί για rating.

78 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Εικόνα 22: Επιλογή πολλών σημείων στην ίδια οθόνη

Στην παραπάνω εικόνα βλέπουμε πώς εμφανίζονται πολλά ανοιχτά venues σε μια κοινή οθόνη, τα οποία ο χρήστης μπορεί εύκολα να κλείσει εάν δεν τα χρειάζεται άλλο, επιλέγοντας το αντίστοιχο εικονίδιο πάνω δεξιά στο πλαίσιο του venue.

79 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

5. Μελλοντικές Επεκτάσεις

Στην παρούσα διπλωματική, εξετάσαμε έναν από τους τρόπους προσέγγισης του προβλήματος της ανάλυσης συναισθήματος για τα σημεία ενδιαφέροντος της Θεσσαλονίκης. Φυσικά, το πρόβλημα αυτό είναι πολυσύνθετο και μπορεί να έχει πολλές διαφορετικές λύσεις, αν εξεταστεί από διαφορετικές σκοπιές. Προτάσεις για μελλοντικές βελτιώσεις είναι:  Η χρήση διαφορετικών μεθόδων ταξινόμησης. Θα μπορούσαν να δοκιμαστούν επιπρόσθετα μέθοδοι όπως τα SVMs ή ο αλγόριθμος Max Entropy. Ακόμη, θα είχε ίσως ενδιαφέρον μια προσέγγιση με βάση μεθόδους λεξικών, για να συγκριθεί η ακρίβεια μεταξύ των διαφορετικών προσεγγίσεων.

 Η συμπερίληψη περισσότερων γλωσσών στο σετ εκπαίδευσης. Η αλήθεια είναι πως στα πλαίσια της πόλης της Θεσσαλονίκης, οι γλώσσες που καλύφθηκαν στην παρούσα διπλωματική καλύπτουν τη συντριπτική πλειοψηφία των σχολίων, ωστόσο θα μπορούσε να δοκιμαστεί μια εντελώς language-agnostic μέθοδος, που δε θα λαμβάνει καθόλου υπόψη τη γλώσσα στην οποία είναι γραμμένα τα σχόλια.

 Η επέκταση του χώρου που καλύπτει η εφαρμογή και εκτός Θεσσαλονίκης. Με κατάλληλο scalling, η εφαρμογή αυτή θα μπορούσε να καλύπτει μεγαλύτερο μέρος της Ελλάδας, και θα παρουσίαζε ίσως ενδιαφέρον, το πώς θα μεταβαλλόταν η συμπεριφορά του ταξινομητή με ένα αντίστοιχου μεγέθους dataset, αλλά από άλλη περιοχή της Ελλάδας.

 Η επέκταση του Venuetrack, ώστε να αντλεί δεδομένα και από άλλα μέσα κοινωνικής δικτύωσης (π.χ. Facebook, TripAdvisor, Yelp κ.α.).

80 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

5. Βιβλιογραφία

1. Turney, Peter (2002). "Thumbs Up or Thumbs Down? Semantic Orientation Applied to Unsupervised Classification of Reviews". Proceedings of the Association for Computational Linguistics. pp. 417–424. 2. Pang, Bo; Lee, Lillian; Vaithyanathan, Shivakumar (2002). "Thumbs up? Sentiment Classification using Machine Learning Techniques". Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP). pp. 79–86. 3. Pang, Bo; Lee, Lillian (2005). "Seeing stars: Exploiting class relationships for sentiment categorization with respect to rating scales". Proceedings of the Association for Computational Linguistics (ACL). pp. 115–124. 4. Snyder, Benjamin; Barzilay, Regina (2007). "Multiple Aspect Ranking using the Good Grief Algorithm". Proceedings of the Joint Human Language Technology/North American Chapter of the ACL Conference (HLT-NAACL). pp. 300–307. 5. Vryniotis, Vasilis (2013). The importance of Neutral Class in Sentiment Analysis. 6. Jump up^ Koppel, Moshe; Schler, Jonathan (2006). "The Importance of Neutral Examples for Learning Sentiment". Computational Intelligence 22. pp. 100–109. 7. Mihalcea, Rada; Banea, Carmen; Wiebe, Janyce (2007). "Learning Multilingual Subjective Language via Cross-Lingual Projections" (PDF). Proceedings of the Association for Computational Linguistics (ACL). pp. 976–983. 8. Su, Fangzhong; Markert, Katja (2008). "From Words to Senses: a Case Study in Subjectivity Recognition". Proceedings of Coling 2008. 9. Pang, Bo; Lee, Lillian (2004). "A Sentimental Education: Sentiment Analysis Using Subjectivity Summarization Based on Minimum Cuts". Proceedings of the Association for Computational Linguistics (ACL). pp. 271–278. 10. Ekman,P., 1992. An argument for Basic Emotions. Cognition and Emotion, pages 169- 200. 11. Alm, C., Roth, D., Sproat, R., 2005. Emotions from text: machine learning for text- based emotion prediction. In proceedings of the Joint Conference on Human Language Technolo- gy/Empirical Methods in Natural Language Processing (HTL/EMNLP). 12. Neviarouskaya, A., Predinger, H., Ishizuka ,M.,2009. Analysis of affect expressed through the evolving language of online communication, in proceedings of the 12th International Conference on Intelligent Systems. 13. Wiebe, J., Wilson, T., Bell, M., 2001. Identifying collocations for recognizing opinions, in Proceedings of the ACL/EACL Workshop on Collocation, Toulouse, France. 14. Mullen, T., and Collier, N., 2004. Sentiment analysis using support vector machines with diverse information sources, in Proceedings of the Empirical Methods in Natural Language Processing, Barcelona, Spain, pages 412- 418. 15. Whitelaw, C., Garg, N., Argamon, S., 2005. Using appraisal groups for sentiment analysis, In Proceedings of the 14th ACM Conference on Information and Knowledge Management, pages 625- 631. 16. Hu, Minqing; Liu, Bing (2004). "Mining and Summarizing Customer Reviews". Proceedings of KDD 2004.

81 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

17. Cataldi, Mario; Ballatore, Andrea; Tiddi, Ilaria; Aufaure, Marie-Aude (2013-06-22). "Good location, terrible food: detecting feature sentiment in user-generated reviews". Social Network Analysis and Mining 3 (4): 1149–1163. 18. Liu, Bing; Hu, Minqing; Cheng, Junsheng (2005). "Opinion Observer: Analyzing and Comparing Opinions on the Web". Proceedings of WWW 2005. 19. Titov, Ivan; McDonald, Ryan (2008-01-01). "Modeling Online Reviews with Multi-grain Topic Models". Proceedings of the 17th International Conference on World Wide Web. WWW '08 (New York, NY, USA: ACM): 111–120. 20. Liu, Bing (2010). "Sentiment Analysis and Subjectivity". In Indurkhya, N.; Damerau, F. J. Handbook of Natural Language Processing (Second ed.). 21. Nadeau, David; Sekine, Satoshi (2007). A survey of named entity recognition and classification. Lingvisticae Investigationes. 22. B. Pang, and L. Lee, “Opinion mining and sentiment analysis”. In Foundations and Trends in Information Retrieval, vol. 2, no 1-2, 2008. 23. G. Miller, R. Beckwith, C. Fellbaum, D. Gross, and K. Miller. “WordNet: An online lexical database”. Int. J. Lexicograph. 3, 4, pp. 235–244, 1990. 24. S. Baccianella, A. Essuli, and F. Sebastiani, “Sentiwordnet 3.0: An enhanced lexical resource for sentiment analysis and opinion mining”. In Proceedings of LREC 10, 2010. 25. H. Saif, M. Fernandez, Y. He, and H. Alani, “Senticircles for contextual and conceptual semantic sentiment analysis of twitter”. In 11th Extended Semantic Web Conference, 2014. 26. Bing Liu, “Sentiment Analysis and Opinion Mining”. Morgan & Claypool Publishers, May 2012. 27. D. Yang, D. Zhang, Z. Yu, and Z. Wang, "A sentiment-enhanced personalized location recommendation system“. In Proceedings of the 24th ACM Conference on Hypertext and Social Media, ACM, 2013. 28. J. D. Zhang, C. Y. Chow, and Y. Zheng. “ORec: An opinion-based point-of-interest recommendation framework”. In Proceedings of the 24th ACM International on Conference, Information and Knowledge Management. ACM, 2015. 29. F. Moraes, M. Vasconcelos,P. Prado, D. Dalip, J. Almeida, and M. Gonçalves, “Polarity detection of Foursquare tips”. In Social Informatics. Springer International Publishing, pp. 153-162, 2013. 30. M. Taboada, J. Brooke, M. Tofiloski, K. Voll, and M. Stede. “Lexicon-based methods for sentiment analysis”. In Computational Linguistics, vol 37(2): p. 267-307, 2011. 31. C. D. Manning, P. Raghavan and H. Schütze, "Text classification and Naive Bayes," in An Introduction to Information Retrieval, Cambridge University Press, 2009, pp. 253-288. 32. H. Zhang, "The Optimality of Naive Bayes," Proceedings of the Seventeenth Florida Artificial Intelligence Research Society Conference, p. 562–567, 2004. 33. Ι. Ιωάννου, “Ανάλυση Συναισθήματος Σε Μεγάλο Όγκο Δεδομένων Κειμένου Με Χρήση Κατανεμημένων Τεχνικών Μηχανικής Εκμάθησης”, 2014. 34. Π. Ελευθερίου, “Μια προσέγγιση για την Ανάλυση Συναισθήματος κατά τον Εντοπισμό Γεγονότων”, 2016. 35. Π. Ζλάτη, “Τεχνική συναισθηματικής ανάλυσης για παροχή συστάσεων τοποθεσίας σε χρήστες Έξυπνων Πόλεων”, 2016.

82 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

36. Γ. Σολακίδης, “Ανάλυση Συναισθήματος σε Ελληνικά Δεδομένα Μέσω Μηχανικής Μάθησης με Αυτόματο Σχηματισμό των Σετ Εκπαίδευσης: Smileys και Λέξεις – Κλειδιά”, 2014. 37. B. Baldwin, K. Dayanidhi “Natural Language Processing with Java and LingPipe Cookbook”, 2014. 38. G. Forman and I. Cohen, “Learning from Little: Comparison of Classifiers Given Little Training”, 39. M.F.Porter, “An algorithm for suffix stripping”, 1980. 40. Rennie, J.; Shih, L.; Teevan, J.; Karger, D. (2003). Tackling the poor assumptions of Naive Bayes classifiers. ICML 41. Rajaraman, A.; Ullman, J. D. (2011). "Data Mining". Mining of Massive Datasets. pp. 1–17.

83 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράρτημα Ι: Κώδικας NLP

Κλάση Train import java.util.*; import java.util.regex.*; import java.io.*; public class Train {

public static boolean FILTER_STOP_WORDS = false; // this gets set in main() private static List stopList = readFile(new File("../../data/words.stop")); public static int numFolds = 10;

private static List readFile(File f) { try { StringBuilder contents = new StringBuilder();

BufferedReader input = new BufferedReader(new FileReader(f)); for(String line = input.readLine(); line != null; line = input.readLine()) { contents.append(line); contents.append("\n"); } input.close();

return segmentWords(contents.toString());

} catch(IOException e) { e.printStackTrace(); System.exit(1); return null; } }

private static List segmentWords(String s) { List ret = new ArrayList();

// Print string before segmentation // System.out.println(s);

// Break string into words

// without preprocessing: // for (String word: s.split("\\s")) {

// or with: for (String word: preprocessString(s)) {

if(word.length() > 0) {

84 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ret.add(word); } }

// Print string after segmentation // System.out.println(ret);

return ret; }

private static String[] preprocessString(String s) { s = s.toLowerCase();

// remove numbers // s = s.replaceAll("[0-9]","");

// remove prices s = s.replaceAll("\\^(€+)","");

// remove greek cause not everybody uses them :D s = s.replaceAll("ϋ","υ").replaceAll("ϊ","ι"); s = s.replaceAll("ΰ","υ").replaceAll("ΐ","ι"); s = s.replaceAll("ώ","ω").replaceAll("ύ","υ").replaceAll("ή","η").replaceAll("ί","ι" ).replaceAll("έ","ε").replaceAll("ό","ο").replaceAll("ά","α").replaceAll("ς","σ" );

// Character ' s = s.replace("\\u0027","");

// Character & s = s.replace("\\u0026","");

// Emojis s = s.replaceAll(":\\)","☺").replaceAll(":- \\)","☺").replaceAll(":D","☺").replaceAll(":- D","☺").replaceAll(":P","☺").replaceAll(":- P","☺").replaceAll(";\\)","☺").replaceAll(";-\\)","☺"); s = s.replaceAll(";\\(","☹").replaceAll(";- \\(","☹").replaceAll(":\\(","☹").replaceAll(":- \\(","☹").replaceAll(":/","☹").replaceAll(":-/","☹");

// remove multiple occurances of the same character (ooooo's and aaaaa's, but no less that 3, so that we won't mess with words like good, book etc) s = s.replaceAll("(.)\\1\\1+","$1");

// Greek spelling test // s = s.replaceAll("(ει|η|οι|υι|υ)","ι"); // s = s.replaceAll("ω","ο"); // s = s.replaceAll("αι","ε");

String[] words = s.replaceAll("^[~^,.:!();\'\"\\s]+", "").split("[~^,.:!();\'\"\\s]+");

int i = 0; for (String word: words) {

85 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

// Stemming for greek words word = word.replaceAll("(η|ησ|ην|ον|ου|ο|οσ|ικο|ιο|ηση|αμε|ει|εις|ιζει|ασ|μενοσ|μενη|με νεσ|σ|αση)$","");

// Stemming for english word = word.replaceAll("(ious|ely|es|ice|ful|fully)$","");

words[i] = word; i++;

}

return words;

}

private static List buildSplits(List args) {

// Get the directory with the dataset, in which the pos/neg directories are File trainDir = new File(args.get(0));

// Create the splits List splits = new ArrayList();

System.out.println("[INFO]\tPerforming 10-fold cross-validation on data set: "+args.get(0));

// A list with all the files for splitting List files = new ArrayList();

for (File dir: trainDir.listFiles()) { List dirList = Arrays.asList(dir.listFiles());

for (File f: dirList) { files.add(f); } }

splits = getFolds(files); return splits; }

static public List getFolds(List files) {

List splits = new ArrayList();

for (Integer fold=0; fold

TrainSplit split = new TrainSplit();

for (File file: files) { int endOfName = file.getName().length();

// Based on the names of the comments of the dataset used for training, the 5th character from the end is a 0-9 number

86 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

// which can be used to grab one tenth of the comments to create the testset for each fold. if( file.getName().subSequence(endOfName-5,endOfName- 4).equals(fold.toString()) ) { split.test.add(file); } else { split.train.add(file); } }

splits.add(split); }

return splits; }

public static List filterStopWords(List words) { List filtered = new ArrayList();

for (String word :words) { if (!stopList.contains(word)) { filtered.add(word); } } return filtered; }

public static void printSplit(TrainSplit split) { System.out.println("\t[INFO]\tSplit's train set length = " + split.train.size()); for (File file: split.train) { // System.out.println(file.getName()); } System.out.println("\t[INFO]\tSplit's test set length = " + split.test.size()); for (File file: split.test) { System.out.println(file.getName()); List words = readFile(file); if (FILTER_STOP_WORDS) { words = filterStopWords(words); } System.out.println(words); } }

public static void main(String[] args) {

List otherArgs = Arrays.asList(args);

if (otherArgs.size() < 1 || otherArgs.size() > 2) { // Wrong arguments System.out.println("[ERROR]\tWrong arguments. Use -f for filtering with stop words & the path of the dataset as arguments"); return; }

if ( args.length > 0 && args[0].equals("-f") ) {

87 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

// Use stop words FILTER_STOP_WORDS = true; otherArgs = otherArgs.subList(1,otherArgs.size()); }

System.out.println("[INFO]\tStop words filtering = "+FILTER_STOP_WORDS);

// Build the train splits for 10-fold cross-validation List splits = buildSplits(otherArgs); double avgAccuracy = 0.0; int fold = 0;

for(TrainSplit split: splits) {

System.out.println("[INFO]\tFold " + fold);

// Use printSplit function for testing purposes only //printSplit(split);

NaiveBayesClassifier classifier = new NaiveBayesClassifier(); double accuracy = 0.0;

for(File file: split.train) { String klass = file.getParentFile().getName(); List words = readFile(file); if (FILTER_STOP_WORDS) { words = filterStopWords(words); } classifier.addExample(klass,words); }

for (File file : split.test) { String klass = file.getParentFile().getName(); List words = readFile(file); if (FILTER_STOP_WORDS) { words = filterStopWords(words); } String guess = classifier.classify(words); if(klass.equals(guess)) { accuracy++; } } accuracy = accuracy/split.test.size(); avgAccuracy += accuracy; System.out.println("[INFO]\tFold " + fold + " Accuracy: " + accuracy); fold += 1; } avgAccuracy = avgAccuracy / numFolds; System.out.println("[INFO]\tAccuracy: " + avgAccuracy); } }

88 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Κλάση NaiveBayesClassifier public class NaiveBayesClassifier {

int posCount = 0;

int negCount = 0;

HashMap posHash = new HashMap();

HashMap negHash = new HashMap();

HashSet voc = new HashSet();

public void addExample(String klass, List words) { if(klass.equalsIgnoreCase("pos")) { posCount++; } else { negCount++; } Iterator iter = words.iterator(); while(iter.hasNext()) { String word = iter.next(); // get the vocabulary voc.add(word); HashMap hash; if(klass.equalsIgnoreCase("pos")) { hash = posHash; } else { hash = negHash; } if(hash.containsKey(word)) { int count = hash.get(word).intValue(); hash.put(word, new Integer(++count)); } else { hash.put(word, new Integer(1)); } } }

double sumOfHashMap(HashMap hash) { Collection values = hash.values(); Iterator iter = values.iterator(); double sum = 0.0; while(iter.hasNext()) { sum += iter.next().intValue(); } return sum; }

double log2(double a) { return Math.log(a)/Math.log(2); }

public String classify(List words) {

89 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

double p_p = (double)posCount/(double)(posCount+negCount); double p_n = (double)negCount/(double)(posCount+negCount); // Positive double posSum = log2(p_p); double negSum = log2(p_n); Iterator iter = words.iterator(); double posDen = sumOfHashMap(posHash); double negDen = sumOfHashMap(negHash); while(iter.hasNext()) { String word = iter.next(); if(posHash.containsKey(word)) { int count = posHash.get(word).intValue(); double p = (count + 1.0) / (posDen + voc.size()); posSum += log2(p); } else { double p = (1.0) / (posDen + voc.size()); posSum += log2(p); } } iter = words.iterator(); while(iter.hasNext()) { String word = iter.next(); if(negHash.containsKey(word)) { int count = negHash.get(word).intValue(); double p = (count + 1.0) / (negDen + voc.size()); negSum += log2(p); } else { double p = (1.0) / (negDen + voc.size()); negSum += log2(p); } } if(negSum < posSum) { return "pos"; } else { return "neg"; } }

}

Κλάση WordCount public class WordCount {

public static class Word implements Comparable { String word; int count;

@Override public int hashCode() { return word.hashCode();

90 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

}

@Override public boolean equals(Object obj) { return word.equals(((Word)obj).word); }

@Override public int compareTo(Word b) { return b.count - count; } }

public static void main(String[] args) throws IOException { long time = System.currentTimeMillis();

Map countMap = new HashMap();

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]))); String line; while ((line = reader.readLine()) != null) { String[] words = line.split("[~^,.:!();\'\"\\s]+"); for (String word : words) {

// System.out.println(word);

if ("".equals(word)) { continue; }

Word wordObj = countMap.get(word); if (wordObj == null) { wordObj = new Word(); wordObj.word = word; wordObj.count = 0; countMap.put(word, wordObj); }

wordObj.count++; } }

reader.close();

SortedSet sortedWords = new TreeSet(countMap.values()); int i = 0; for (Word word : sortedWords) { if (i > 300) { break; }

System.out.println(word.word);

91 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

i++; }

time = System.currentTimeMillis() - time;

System.out.println("in " + time + " ms"); } }

92