ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΤΑΞΙΝΟΜΗΤΗ ΗΛΕΚΤΡΟΝΙΚΗΣ ΑΛΛΗΛΟΓΡΑΦΙΑΣ ιπλωµατική Εργασία της Μαλεζά Σοφίας (ΑΕΜ:765) Επιβλέπων Καθηγητής: ΒΛΑΧΑΒΑΣ ΙΩΑΝΝΗΣ ΘΕΣΣΑΛΟΝΙΚΗ ΟΚΤΩΒΡΙΟΣ 2006
1
Στον Γιάννη για την βοήθεια και την υποµονή του 3
Πρόλογος Ο φόρτος του ηλεκτρονικού ταχυδροµείου είναι ένα θέµα το οποίο απασχολεί όλους τους χρήστες. Για να αντιµετωπιστεί το φαινόµενο αυτό οι προγραµµατιστές προτείνουν την ανάπτυξη ταξινοµητών, οι οποίοι ανάλογα µε το περιεχόµενο των ηλεκτρονικών µηνυµάτων τους κατατάσσουν στους ανάλογους φακέλους και έτσι οι χρήστες γλιτώνουν κόπο αλλά και χρόνο. Στην εργασία αυτή, παρουσιάζονται τα χαρακτηριστικά της ηλεκτρονικής αλληλογραφίας καθώς και οι διάφοροι τρόποι µε τους οποίους γίνεται η εξόρυξη των µηνυµάτων. Ακόµη, γίνεται αναφορά σε διάφορους αλγορίθµους οι οποίοι συµβάλουν στην ανάπτυξη των ταξινοµητών και τέλος, αναπτύσσεται µια εφαρµογή η οποία µελλοντικά θα συµβάλλει στην αυτόµατη ταξινόµηση των µηνυµάτων ηλεκτρονικής αλληλογραφίας. Θα ήθελα να ευχαριστήσω τον καθηγητή κ. Βλαχάβα Ιωάννη αρχικά για την εµπιστοσύνη στην ανάθεση της εργασίας, και στη συνέχεια για τη διαρκή υποστήριξη. Επίσης, να ευχαριστήσω θερµά τον υποψήφιο διδάκτορα του τµήµατος, κ. Κατάκη Ιωάννη, για την άψογη συνεργασία, την υποµονή, την άµεση απόκριση σε κλήσεις βοήθειας, την επίβλεψη και διόρθωση της διπλωµατικής. Οι οδηγίες, οι κατευθύνσεις και η όλη συµµετοχή του στη διαµόρφωση και τελική εικόνα της εργασίας ήταν καταλυτική. Τέλος, τα µέλη του εργαστηρίου Γλωσσών Προγραµµατισµού και Τεχνολογίας Λογισµικού (PlaSE) και ειδικότερα τα µέλη της οµάδας Λογικού προγραµµατισµού και Ευφυών Συστηµάτων (LPIS) για τη συνεργασία. Μαλεζά Σοφία 20-10-2006 4
Περιεχόµενα ΠΡΟΛΟΓΟΣ... 4 ΠΕΡΙΕΧΟΜΕΝΑ... 5 1 ΕΙΣΑΓΩΓΗ... 9 2 ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ ΚΑΙ ΤΑΞΙΝΟΜΗΣΗ... 11 2.1 ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ... 11 2.1.1 Είδη Μηχανικής Μάθησης... 13 2.2 ΜΑΘΗΣΗ ΜΕ ΕΠΙΒΛΕΨΗ... 14 2.2.1 Τεχνικές µηχανικής µάθησης µε επίβλεψη... 15 2.2.2 ιαφορές µάθησης µε επίβλεψη και µάθησης χωρίς επίβλεψη. 15 2.3 ΤΑΞΙΝΟΜΗΣΗ... 16 2.3.1 έντρα ταξινόµησης... 17 2.3.2 Εφαρµογές της ταξινόµησης... 20 3 ΕΞΟΡΥΞΗ Ε ΟΜΕΝΩΝ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΧΥ ΡΟΜΕΙΟΥ... 21 3.1 ΙΑΧΕΙΡΙΣΗ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΧΥ ΡΟΜΕΙΟΥ... 21 3.2 Η ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΧΥ ΡΟΜΕΙΟΥ... 23 3.3 ΕΞΟΡΥΞΗ ΜΗΝΥΜΑΤΩΝ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΧΥ ΡΟΜΕΙΟΥ... 24 3.3.1 Προεπεξεργασία και Αναπαράσταση Μηνυµάτων... 25 3.3.2 Επιλογή Χαρακτηριστικών... 28 3.3.3 Ταξινόµηση Μηνυµάτων Ηλεκτρονικού Ταχυδροµείου... 29 3.4 ΕΦΑΡΜΟΓΕΣ... 32 3.4.1 Spam Filtering... 32 3.4.2 Αυτόµατη Οργάνωση Μηνυµάτων σε Φακέλους... 34 4 Η ΠΛΑΤΦΟΡΜΑ MOZILLA... 39 4.1 Η ΙΕΠΑΦΗ ΤΟΥ MOZILLA... 39 4.1.1 XPCOM... 40 4.1.2 XPCOM Objects... 41 5
4.1.3 Modular Προγραµµατισµός...42 4.1.4 Άλλα συστήµατα...43 4.2 Η ΓΛΩΣΣΑ XUL...44 4.3 ΤΑ ΑΡΧΕΙΑ RDF...45 4.4 ΤΟ ΛΟΓΙΣΜΙΚΟ THUNDERBIRD...47 5 EXTENSIONS...49 5.1.1 Ο Mozilla Thunderbird και τα extensions...49 5.2 ΗΜΙΟΥΡΓΙΑ ΕΝΟΣ EXTENSION...50 5.2.1 Τα πακέτα (packages) και τα αρχεία manifest...51 5.2.2 Το αρχείο chrome...51 5.2.3 Το πακέτο content...52 5.2.4 Το πακέτο skin...54 5.2.5 Το πακέτο locale...55 5.2.6 Τα components...56 5.2.7 Το αρχείο install.rdf...56 5.3 Η ΓΛΩΣΣΑ JAVASCRIPT...58 5.4 ΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ...59 6 ΠΑΡΑ ΕΙΓΜΑ ΑΝΑΠΤΥΞΗΣ ΕΝΟΣ EXTENSION...61 6.1 ΗΜΙΟΥΡΓΙΑ ΤΟΥ INSTALL.RDF...61 6.2 ΗΜΙΟΥΡΓΙΑ ΤΟΥ BAYESBIRD_OVERLAY.XUL...63 6.3 ΗΜΙΟΥΡΓΙΑ ΤΟΥ BAYESBIRD_OVERLAY.JS...65 6.4 ΗΜΙΟΥΡΓΙΑ ΤΟΥ BAYESBIRD.CSS...65 6.5 ΗΜΙΟΥΡΓΙΑ ΤΟΥ CHROME.MANIFEST...66 6.6 ΟΡΓΑΝΩΣΗ ΤΩΝ ΑΡΧΕΙΩΝ ΚΑΙ ΤΩΝ ΠΑΚΕΤΩΝ...67 6.7 Η ΕΓΚΑΤΑΣΤΑΣΗ ΤΟΥ BAYESBIRD...68 7 ΣΥΜΠΕΡΑΣΜΑΤΑ...73 7.1 ΓΕΝΙΚΑ...73 7.2 ΠΡΟΒΛΗΜΑΤΑ ΠΟΥ ΑΝΤΙΜΕΤΩΠΙΣΤΗΚΑΝ...74 7.3 ΜΕΛΛΟΝΤΙΚΗ ΕΡΓΑΣΙΑ...74 ΒΙΒΛΙΟΓΡΑΦΙΑ...77 ΠΑΡΑΡΤΗΜΑ...83 6
7
1 Εισαγωγή Η διπλωµατική αυτή αναφέρεται στην ανάπτυξη ενός ταξινοµητή για µηνύµατα ηλεκτρονικού ταχυδροµείου. Σκοπός της εργασίας είναι να δηµιουργηθεί όλο το θεωρητικό υπόβαθρο, το οποίο θα συµβάλλει µελλοντικά στην υλοποίηση µιας εφαρµογής, η ο- ποία θα είναι ικανή αυτόµατα να ταξινοµεί από µόνη της τα εισερχόµενα µηνύµατα του χρήστη σε φακέλους ανάλογα µε το περιεχόµενό τους. Συγκεκριµένα, στο κεφάλαιο δύο παρουσιάζονται κάποιες γενικότερες έννοιες του επιστηµονικού πεδίου στο οποίο ανήκει αυτή η εργασία. Αρχικά, γίνεται αναφορά στην Μηχανική Μάθηση και στα δύο είδη της, την µάθηση µε επίβλεψη και στην µάθηση χωρίς επίβλεψη και κατόπιν αναπτύσσεται η έννοια και τα χαρακτηριστικά της ταξινό- µησης. Το κεφάλαιο τρία αναφέρεται στην εξόρυξη µηνυµάτων ηλεκτρονικού ταχυδροµείου. Περιγράφεται επίσης ο τρόπος διαχείρισης και λειτουργίας του email και παρουσιάζονται ενδεικτικά κάποιες εφαρµογές όπως το spam filtering και η αυτόµατη οργάνωση των µηνυµάτων σε φακέλους. Αντικείµενο του τετάρτου κεφαλαίου είναι η πλατφόρµα Mozilla. Αρχικά, παρουσιάζεται η διεπαφή του, τα βασικά χαρακτηριστικά του και κάποιες επιπλέον πληροφορίες. Στη συνέχεια, περιγράφεται η γλώσσα XUL καθώς και τα αρχεία RDF τα οποία είναι χαρακτηριστικά στοιχεία για τον Mozilla. Τέλος, γίνεται µια σύντοµη αναφορά σε ένα προϊόν του Mozilla, το λογισµικό Thunderbird το οποίο είναι µια πλήρης εφαρµογή για τη διαχείριση ηλεκτρονικού ταχυδροµείου. Το πέµπτο κεφάλαιο επικεντρώνεται στα extensions τα οποία είναι µικρές επιπροσθέσεις που προσδίδουν λειτουργικότητα σε εφαρµογές του Mozilla. Εξηγείται ο τρόπος µε τον οποίο οργανώνεται ένα extension καθώς και τα αρχεία που περιέχει. Επιπλέον, αναφερόµαστε στη γλώσσα Javascript και αναλύεται µια καινούρια τεχνική, ο δυναµικός προγραµµατισµός. Θέµα του κεφαλαίου έξι είναι η ανάπτυξη ενός πειραµατικού extension. Αναλύεται ο τρόπος µε τον οποίο δηµιουργήθηκε αυτό, ο κώδικάς του και η οργάνωσή του σε αρχεία. Το συγκεκριµένο extension θα συµβάλλει µελλοντικά στην ανάπτυξη ενός ταξι- 9
νοµητή ο οποίος θα έχει τη δυνατότητα να ταξινοµεί αυτόµατα τα εισερχόµενα µηνύµατα του χρήστη σε σχετικούς φακέλους ανάλογα µε το περιεχόµενό τους. Στο έβδοµο και τελευταίο κεφάλαιο καταγράφονται επιλογικά κάποιες γενικές σκέψεις, συµπεράσµατα και προοπτικές για µελλοντική εργασία πάνω στο συγκεκριµένο ερευνητικό χώρο. 10
2 Μηχανική Μάθηση και Ταξινόµηση Στο κεφάλαιο αυτό παρουσιάζονται κάποιες γενικές έννοιες της Τεχνητής Νοηµοσύνης. Γίνεται ιδιαίτερη αναφορά στην Μηχανική Μάθηση και στις δύο κατηγορίες της, τη µάθηση µε επίβλεψη και τη µάθηση χωρίς επίβλεψη και τέλος αναλύεται η έννοια της ταξινόµησης και παρουσιάζονται ορισµένες εφαρµογές της. 2.1 Μηχανική Μάθηση Για πολλά χρόνια φιλόσοφοι προσπαθούσαν να περιγράψουν το µηχανισµό της µάθησης, της αποµνηµόνευσης, της όρασης, της αντίληψης και του συλλογισµού. Από τη στιγµή που εµφανίστηκαν οι πρώτοι υπολογιστές, οι άνθρωποι ασχολήθηκαν µε τη σχεδίαση ευφυών υπολογιστικών συστηµάτων, δηλαδή συστηµάτων που επιδείκνυαν τα παραπάνω χαρακτηριστικά. Άµεση συνέπεια ήταν η ανάπτυξη ενός τοµέα της επιστή- µης των υπολογιστών που ονοµάστηκε Τεχνητή Νοηµοσύνη. Η έρευνα στην Τεχνητή Νοηµοσύνη καλύπτει ένα ευρύ φάσµα περιοχών και έχει αποφέρει καρπούς σε πολλές από αυτές όπως στην µηχανική όραση, στους ευφυείς πράκτορες, στην ροµποτική, στα έµπειρα συστήµατα και στην µηχανική µάθηση. Η έννοια της µάθησης σε ένα σύστηµα επεξεργασίας πληροφορίας το οποίο έχει δυνατότητες συλλογισµού, λήψης απόφασης, µάθησης, επικοινωνίας και δράσης µπορεί να συνδεθεί µε δύο βασικές ιδιότητες. Πρώτον, µε την ικανότητά του στην πρόσκτηση γνώσης κατά την αλληλεπίδρασή του µε το περιβάλλον, µέσα στο οποίο δραστηριοποιείται και δεύτερον, µε την ικανότητά του να βελτιώνει µε την επανάληψη τον τρόπο µε τον οποίο εκτελεί µια ενέργεια καθώς και την απόδοσή του. Έχουν προταθεί διάφοροι ορισµοί για τη µάθηση, όπως µάθηση είναι να κάνουµε χρήσιµες αλλαγές στο µυαλό µας κατά τον Minsky (1985) ή µάθηση είναι η δηµιουργία ή η αλλαγή της αναπαράστασης των εµπειριών κατά τον Michalski (1986). Όσον αφορά τις µηχανές µπορούµε να πούµε ότι µια µηχανή µαθαίνει όταν αλλάζει τη δοµή της, το πρόγραµµα ή τα δεδοµένα σε τέτοιο βαθµό ώστε να βελτιώνεται η µελλοντική της λειτουργία. Παρ όλα αυτά επειδή η µάθηση, όπως και η νοηµοσύνη, 11
καλύπτει ένα ευρύ φάσµα διεργασιών είναι πολύ δύσκολο να καθορίσουµε επακριβώς τον ορισµό της. [1] Ο όρος Μηχανική Μάθηση εισάχθηκε στις αρχές της δεκαετίας του 1980 και είναι από τους παλαιότερους ερευνητικούς τοµείς της Τεχνητής Νοηµοσύνης. Η Μηχανική Μάθηση συνήθως αναφέρεται στις αλλαγές που σχετίζονται µε συστήµατα τα οποία καλύπτουν εφαρµογές που συνδέονται µε την Τεχνητή Νοηµοσύνη. Τέτοιες εφαρµογές περιλαµβάνουν τη διάγνωση, το σχεδιασµό, την πρόβλεψη, τη ροµποτική κ.α. Στη βιοπληροφορική η µηχανική µάθηση σχετίζεται µε τη στοίχιση ακολουθιών και την ανάλυση των δεδοµένων από µικροσυστοιχίες. Στη ροµποτική χρησιµοποιείται για τη δη- µιουργία χάρτη και τη λήψη αποφάσεων ενώ στον τοµέα των πολυµέσων για την ανάκτηση γνώσης µε βάση το περιεχόµενο. Επίσης η Μηχανική Μάθηση βρίσκει εφαρµογές και στη φαρµακευτική όπου κάνει διάγνωση ασθενειών, χρησιµοποιείται για τη θεραπεία διάφορων παθήσεων και βοηθάει στο σχεδιασµό καινούριων φαρµάκων. Στον τοµέα της οικονοµικής ανάλυσης µπορεί και προβλέπει τις τιµές των µετοχών ενώ στο ηλεκτρονικό εµπόριο δηµιουργούνται πράκτορες για αυτόµατο εµπόριο και βοηθάει στη διατήρηση των πελατών. Ακόµη χρησιµοποιείται και στη µηχανική όραση για αναγνώριση των αντικειµένων και τµηµατοποίηση των εικόνων. Οι αλλαγές από τη µεριά τους µπορεί να είναι είτε βελτιώσεις σε ήδη υπάρχοντα συστήµατα είτε συνθέσεις νέων συστηµάτων. Σύµφωνα µε τον Carbonell (1987) µηχανική µάθηση ονοµάζεται η µελέτη υπολογιστικών µεθόδων για την απόκτηση νέας γνώσης, νέων δεξιοτήτων και νέων τρόπων οργάνωσης της υπάρχουσας γνώσης. Επίσης υπάρχει και ένας πιο αυστηρός ορισµός σύµφωνα µε τον Mitchell (1997) : Ένα πρόγραµµα υπολογιστή θεωρείται ότι µαθαίνει από την εµπειρία Ε σε σχέση µε µια κατηγορία εργασιών Τ και µια µετρική απόδοσης Ρ, αν η απόδοση του σε εργασίες της Τ, όπως µετριούνται από την Ρ, βελτιώνονται µε την εµπειρία Ε. Ως ερευνητικός τοµέας, η µηχανική µάθηση έχει ασχοληθεί µε πλήθος επί µέρους προβληµάτων και έχει προτείνει διάφορες µεθόδους επίλυσης. Η διαφοροποίηση βρίσκεται στον τρόπο αναπαράστασης της γνώσης, στις στρατηγικές µάθησης, στην ύπαρξη ή όχι αρχικής γνώσης κ.τ.λ. Η αποτελεσµατικότητα ή όχι ενός τέτοιου συστήµατος εξαρτάται από την ποσότητα και ποιότητα της αρχικής γνώσης. Έτσι η διαδικασία της µάθησης γίνεται δύσκολη εάν το σύστηµα δεν κατανοήσει αρχικά το τι ακριβώς πρέπει να µάθει. 12
Τα τελευταία χρόνια έχουν αναπτυχθεί πολλές επιτυχείς εφαρµογές της µηχανικής µάθησης που εκτείνονται από προγράµµατα εξόρυξης δεδοµένων (Data Mining) που µαθαίνουν να εντοπίζουν συναλλαγές µε κλεµµένες πιστωτικές κάρτες, µέχρι συστήµατα φιλτραρίσµατος πληροφοριών που µαθαίνουν τις προτιµήσεις των χρηστών και αυτόνοµα οχήµατα που µαθαίνουν να οδηγούν σε δηµόσιους δρόµους. Επιπλέον, η λεπτο- µερής κατανόηση του τρόπου λειτουργίας αλγορίθµων επεξεργασίας πληροφοριών για µηχανική µάθηση µπορεί να οδηγήσει σε καλύτερη κατανόηση των δυνατοτήτων και µειονεκτηµάτων της ανθρώπινης µάθησης. Περιοχές οι οποίες είναι σχετίζονται µε την µηχανική µάθηση είναι η φιλοσοφία, η ψυχολογία, η βιολογία, η θεωρία της πληροφορίας και η στατιστική. 2.1.1 Είδη Μηχανικής Μάθησης Η Μηχανική Μάθηση ασχολείται µε την κατασκευή λογισµικού που έχει τη δυνατότητα να βελτιώνεται αυτόµατα µε την εµπειρία. Ανάλογα µε τη φύση του κάθε προβλήµατος έχουν αναπτυχθεί τεχνικές µηχανικής µάθησης οι οποίες διακρίνονται σε δύο κατηγορίες: Μάθηση µε επίβλεψη (supervised learning) ή µάθηση από παραδείγµατα (learning from examples ), Μάθηση χωρίς επίβλεψη (unsupervised learning ) ή µάθηση από παρατήρηση (learning from observation ). Στη µάθηση µε επίβλεψη στόχος είναι το σύστηµα να µάθει µια έννοια ή µια συνάρτηση από ένα σύνολο δεδοµένων µε ζευγάρια τιµών εισόδου και εξόδου της συνάρτησης αυτής. Ονοµάζεται έτσι επειδή θεωρείται ότι υπάρχει κάποιος επιβλέπων ο οποίος παρέχει τη σωστή τιµή εξόδου της συνάρτησης, για τα δεδοµένα που εξετάζονται. Το αποτέλεσµα της διαδικασίας µάθησης µε επίβλεψη καλείται µοντέλο πρόβλεψης (predictive model) και αυτό γιατί προβλέπει την τιµή µιας µεταβλητής. Ένα µοντέλο περιγράφει το σύνολο των δεδοµένων και εκτός από τις δυνατότητες πρόβλεψης έχει επιπλέον ορισµένες δυνατότητες πληροφόρησης επειδή παρέχει και ποιοτικές πληροφορίες για τα δεδοµένα. Αντίθετα, στη µάθηση χωρίς επίβλεψη το σύστηµα πρέπει να ανακαλύψει µόνο του ενδεχόµενες υπάρχουσες συσχετίσεις και οµάδες σε ένα σύνολο δεδοµένων. Έτσι ως 13
αποτέλεσµα δηµιουργούνται πρότυπα. Ένα πρότυπο περιγράφει συνήθως µόνο ένα µέρος των δεδοµένων δηλαδή έχει τοπικό χαρακτήρα και ονοµάζεται πρότυπο πληροφόρησης (informative pattern) αφού περιγράφει συσχετίσεις µεταξύ των δεδοµένων. Τα κυριότερα πρότυπα πληροφόρησης είναι οι κανόνες συσχέτισης (association rules), τα σειριακά πρότυπα (sequential patterns) τα οποία αποτελούν παραλλαγή των κανόνων συσχέτισης και οι οµάδες (clusters). 2.2 Μάθηση µε Επίβλεψη Στη µάθηση µε επίβλεψη υπάρχει µια συνάρτηση που ονοµάζεται συνάρτηση στόχος (target function) και αποτελεί έκφραση του µοντέλου που περιγράφει τα δεδοµένα. Σκοπός της τεχνικής αυτής είναι το σύστηµα να µπορέσει να µάθει επαγωγικά αυτή τη συνάρτηση. Χρησιµοποιώντας τις τιµές ενός συνόλου µεταβλητών που καλούνται ανεξάρτητες µεταβλητές ή χαρακτηριστικά ή µεταβλητές εισόδου, η συνάρτηση στόχος προσπαθεί να προβλέψει την τιµή µιας µεταβλητής που ονοµάζεται εξαρτηµένη µεταβλητή ή µεταβλητή εξόδου. Το πεδίο ορισµού της συνάρτησης είναι γνωστό ως σύνολο των περιπτώσεων ή στιγµιότυπων και είναι το σύνολο των διαφορετικών τιµών εισόδου της. Κάθε περίπτωση περιγράφεται από ένα σύνολο χαρακτηριστικών. Σύνολο δεδοµένων εκπαίδευσης ή παραδείγµατα ονοµάζεται το υποσύνολο του συνόλου των περιπτώσεων για τα οποία γνωρίζουµε την τιµή της µεταβλητής εξόδου. Στη µάθηση µε επίβλεψη το σύστηµα εξετάζει διάφορες υποθέσεις. Οι υποθέσεις αυτές είναι διάφορες συναρτήσεις οι οποίες µπορεί να είναι είτε λογικές είτε πραγ- µατικές και προσεγγίζουνε άλλες περισσότερο και άλλες λιγότερο τη συνάρτηση στόχο. Το σύνολο των υποθέσεων το οποίο θα εξεταστεί για να βρεθεί η συνάρτηση στόχος ονοµάζεται σύνολο υποθέσεων. Πιο συγκεκριµένα αναζητείται µια συνάρτηση f της οποίας ξέρουµε τις τιµές της για m δείγµατα σε ένα σύνολο Ν. Αν βρεθεί µια υπόθεση h η οποία θα συµφωνεί µε την f για τα µέλη του Ν τότε αυτή η υπόθεση θα είναι µια καλή προσέγγιση της f ειδικά εάν το Ν είναι αρκετά µεγάλο. 14
2.2.1 Τεχνικές µηχανικής µάθησης µε επίβλεψη Στην µάθηση µε επίβλεψη διακρίνονται δύο είδη προβληµάτων (learning tasks), τα προβλήµατα παρεµβολής και τα προβλήµατα ταξινόµησης ή αλλιώς κατηγοριοποίησης. Στην πρώτη κατηγορία δηµιουργούνται µοντέλα πρόβλεψης όπου το χαρακτηριστικό που προβλέπεται απαιτείται να έχει αριθµητική τιµή ενώ η δεύτερη κατηγορία αφορά στη δηµιουργία µοντέλων πρόβλεψης διακριτών τάξεων. Ορισµένες τεχνικές µηχανικής µάθησης µε επίβλεψη που σχετίζονται µε τα παραπάνω προβλήµατα είναι: Γραµµική παρεµβολή : στην οποία το χαρακτηριστικό του οποίου η τιµή πρέπει να προβλεφθεί µοντελοποιείται µε µία απλή γραµµική εξίσωση των παραµέτρων εισόδου. Νευρωνικά δίκτυα : προτιµούνται σε σχέση µε την γραµµική παρεµβολή λόγω της δυνατότητας τους να µοντελοποιούν µη γραµµικά δεδοµένα και παρέχουν ένα περισσότερο πρακτικό τρόπο για την εκµάθηση αριθµητικών και διανυσµατικών συναρτήσεων. Παρουσιάζουν ανοχή σε δεδοµένα που έχουν περιστασιακά λανθασµένες τιµές ενώ το κύριο µειονέκτηµά τους είναι ότι αδυνατούν να εξηγήσουν ποιοτικά τη γνώση που µοντελοποιούν. Μηχανές διανυσµάτων υποστήριξης : έχουν διαδοθεί τα τελευταία χρόνια ως µια από τις διαδεδοµένες µεθόδους παρεµβολής και ταξινόµησης, αποτελώντας τη καλύτερη επιλογή για εφαρµογές όπως η αναγνώριση γραφής, η ταξινόµηση κει- µένων κ.α. [39] 2.2.2 ιαφορές µάθησης µε επίβλεψη και µάθησης χωρίς επίβλεψη Από µία θεωρητική άποψη η µάθηση µε επίβλεψη και η µάθηση χωρίς επίβλεψη διαφέρουν µόνο στον τρόπο µε τον οποίο κατασκευάζεται το µοντέλο. Στη µάθηση µε επίβλεψη το µοντέλο καθορίζει την επίδραση που έχει ένα σύνολο από παρατηρήσεις, οι οποίες ονοµάζονται είσοδοι σε ένα σύνολο από παρατηρήσεις που ονοµάζονται έξοδοι. Με άλλα λόγια, οι είσοδοι θεωρούνται πως είναι στην αρχή ενώ οι έξοδοι βρίσκονται στο τέλος της αλυσίδας του µοντέλου. Το µοντέλο περιλαµβάνει διάφορες µεταβλητές στις εισόδους και εξόδους αντίστοιχα. 15
Στη µάθηση χωρίς επίβλεψη όλες οι παρατηρήσεις θεωρούνται πως προέρχονται από αφανείς µεταβλητές κι αυτό γιατί οι παρατηρήσεις εµφανίζονται στο τέλος της αλυσίδας του µοντέλου. Στην πραγµατικότητα, τα µοντέλα της µάθησης µε επίβλεψη συχνά αφήνουν την πιθανότητα για εισόδους ανοιχτή. Αυτό το µοντέλο δεν είναι χρήσιµο όσο έχουµε διαθέσιµες εισόδους αλλά εάν µερικές από τις τιµές εισόδου λείπουν, είναι αδύνατο να συµπεράνουµε οτιδήποτε χρήσιµο για τις εξόδους. Εάν όµως οι είσοδοι είναι µοντελοποιηµένες, τότε οι είσοδοι που λείπουν δεν προκαλούν κανένα πρόβληµα αφού µπορούν να θεωρηθούν ως αφανείς µεταβλητές όπως στη µάθηση χωρίς επίβλεψη. Με την µάθηση χωρίς επίβλεψη είναι πολύ πιθανό να δηµιουργηθούν πιο πολύπλοκα και µεγαλύτερα µοντέλα από ότι µε την µάθηση µε επίβλεψη. Κι αυτό γιατί στην µάθηση µε επίβλεψη αυτό που επιδιώκεται είναι να βρεθεί µόνο η συσχέτιση ανάµεσα στα δύο σύνολα των παρατηρήσεων. Η δυσκολία στα µοντέλα µάθησης αυξάνει εκθετικά ανάλογα µε τον αριθµό των βηµάτων ανάµεσα στα δύο σύνολα κι αυτό γιατί η µάθηση µε επίβλεψη δεν µπορεί πρακτικά να µάθει µοντέλα µε βαθιές ιεραρχίες. Στη µάθηση χωρίς επίβλεψη, η µάθηση µπορεί να προχωρήσει ιεραρχικά από τις παρατηρήσεις σε πιο ουσιαστικά επίπεδα αναπαράστασης. Κάθε εναλλακτική ιεραρχία χρειάζεται να µάθει µόνο ένα βήµα και γι αυτό ο χρόνος µάθησης αυξάνει ( κατά προσέγγιση ) γραµµικά ανάλογα µε τον αριθµό των επιπέδων της ιεραρχίας του µοντέλου. Εάν η φυσική σχέση ανάµεσα στις παρατηρήσεις εισόδου και εξόδου είναι πολύπλοκη, δηλαδή υπάρχει µεγάλο χάσµα, τότε είναι ευκολότερο να χρησιµοποιήσουµε µάθηση χωρίς επίβλεψη αντί της µάθησης µε επίβλεψη. [2] 2.3 Ταξινόµηση Μια ειδική κατηγορία µοντέλων πρόβλεψης είναι η ταξινόµηση. Η ταξινόµηση είναι µια µέθοδος αναζήτησης παρόµοια µε την παρεµβολή, µε τη διαφορά ότι η τιµή του πεδίου που πρέπει να προβλεφθεί δεν εκφράζεται µε αριθµό αλλά µε κατηγορία. Έτσι υπάρχει µεγαλύτερη πιθανότητα να έχει κάποιο χαρακτηριστικό Y την τιµή y δεδοµένου ότι άλλα χαρακτηριστικά X= ( X1, X2,, XN ) έχουν τιµές 16
x= ( x1, x2,, xn ), παρά να έχει κάποια άλλη τιµή y. ηλαδή P ( Y = y X = x ) > P ( Y = y X = x ). Στην µέθοδο αυτή στόχος είναι να µπορέσουν να ταξινοµηθούν µε µεγάλη ακρίβεια µη ταξινοµηµένα αντικείµενα αφού δώσουµε στο σύστηµα µια σειρά από παραδείγµατα. Για να λυθούν τα προβλήµατα ταξινόµησης χρησιµοποιούµε τους κατηγοριοποιητές ή ταξινοµητές. Ο κάθε ταξινοµητής αποτελείται από έναν αλγόριθµο ταξινόµησης και το σύνολο δεδοµένων στο οποίο αυτός εφαρµόζεται. Τα προβλήµατα στα οποία εφαρµόζεται η ταξινόµηση ονοµάζονται προβλή- µατα ταξινόµησης. Στα προβλήµατα αυτά γίνεται προσπάθεια να προβλεφθούν τιµές για µία εξαρτηµένη µεταβλητή βασιζόµενοι σε µία ή περισσότερες µεταβλητές οι οποίες είναι ανεξάρτητες. Παραδείγµατα τέτοιων προβληµάτων είναι η ιατρική διάγνωση, η ανάλυση ενός ρίσκου δανειοδότησης, η εύρεση αιτίας δυσλειτουργίας κ.α. 2.3.1 έντρα ταξινόµησης Τα δέντρα ταξινόµησης χρησιµοποιούνται για να προβλέψουν τις τιµές µιας µεταβλητής που ονοµάζεται εξαρτηµένη. Αυτό πραγµατοποιείται αφού κάνουν διάφορες µετρήσεις πάνω σε µία ή περισσότερες µεταβλητές οι οποίες ονοµάζονται α- νεξάρτητες µεταβλητές. Η ανάλυση που γίνεται από τα δέντρα ταξινόµησης είναι µία από τις πιο δηµοφιλείς τεχνικές που χρησιµοποιείται και στον τοµέα της εξόρυξης δεδοµένων. Ο στόχος αυτής της τεχνικής είναι να προβλέψει ή να εξηγήσει τις αντιδράσεις µιας εξαρτηµένης µεταβλητής, και γι αυτό το λόγο τα δέντρα ταξινόµησης έχουν πολλά κοινά στοιχεία µε πιο παραδοσιακές τεχνικές όπως την οµαδοποίηση. Η ελαστικότητα η οποία παρουσιάζουν βοηθάει στο να χρησιµοποιούνται αρκετά συχνά σε προβλήµατα χωρίς βέβαια αυτό να αποκλείει τη χρήση άλλων µεθόδων. Αντιθέτως όταν απαιτούνται περισσότερο αυστηρές προβλέψεις συνήθως προτιµούνται οι πιο παραδοσιακές µέθοδοι. Παρ όλα αυτά τα δέντρα ταξινόµησης, σύµφωνα µε τη γνώµη πολλών επιστηµόνων, είναι µία από τις καλύτερες τεχνικές όταν θέλουµε να διερευνήσουµε ένα πρόβληµα ή όταν οι άλλες τεχνικές αποτυγχάνουν να βρουν µία λύση. 17
Τα δέντρα ταξινόµησης είναι δενδροειδείς δοµές που αναπαριστούν γραφικά τις συσχετίσεις των δεδοµένων. Αναπαρίστανται σαν σύνολα κανόνων ή πίνακες απόφασης και είναι πολύ εύκολα στην κατανόησή τους. Κάθε κόµβος του δέντρου ορίζει µία συνθήκη ελέγχου της τιµής κάποιου χαρακτηριστικού των περιπτώσεων και κάθε κλαδί που φεύγει από τον κόµβο αντιστοιχεί σε µία διαφορετική διακριτή τιµή του χαρακτηριστικού που ελέγχει ο κόµβος. Το τελικό δέντρο ταξινόµησης µπορεί να χρησιµοποιηθεί είτε για πρόβλεψη είτε για περιγραφή και διερεύνηση. Στην πρόβλεψη οι ανεξάρτητες µεταβλητές είναι η είσοδος και η εξαρτηµένη µεταβλητή η έξοδος. Στην περιγραφή ιδιαίτερο βάρος δίνουµε στα αποτελέσµατα τα οποία µας βοηθούνε να διακρίνουµε συσχετίσεις µεταξύ εξαρτηµένης και ανεξάρτητων µεταβλητών. Πολλές φορές τα προβλήµατα µπορεί να οδηγήσουν σε ιδιαίτερα πολύπλοκα δέντρα. Γι αυτό το λόγο χρησιµοποιούνται εξελιγµένα γραφικά ώστε βασιζόµενοι σε αυτά να σχεδιάσουµε ένα δέντρο από το οποίο θα µπορούµε να εξάγουµε σωστά αποτελέσµατα. Τα δέντρα ταξινόµησης µοντελοποιούν τις ίδιες σχέσεις ανεξάρτητα εάν είναι δυαδικά ή όχι και µοντελοποιούνε µόνο µία εξαρτηµένη µεταβλητή. Αν όχι όλοι τουλάχιστον οι περισσότεροι αλγόριθµοι απαιτούν η µεταβλητή αυτή να είναι κατηγορική γι αυτό και οι συνεχόµενες µεταβλητές µετατρέπονται σε κατηγορίες διαστήµατα τιµών. Ένα χαρακτηριστικό των δέντρων ταξινόµησης είναι η ελαστικότητά τους, δηλαδή το γεγονός ότι εξετάζουν ένα-ένα τα αποτελέσµατα κάθε ανεξάρτητης µεταβλητής και όχι όλα µαζί. Η ταξινόµηση βασιζόµενη στα δέντρα, όταν χρησιµοποιείται σε προβλήµατα και παράγει αποτελέσµατα τα οποία σχετίζονται µε εάν τότε (if-then) συνθήκες έχει πολλά πλεονεκτήµατα σε σχέση µε τις άλλες παραδοσιακές τεχνικές. Καταρχήν, υπάρχει απλότητα στα αποτελέσµατα που προκύπτουν. Στις περισσότερες περιπτώσεις η ερµηνεία των αποτελεσµάτων που συνοψίζονται σε ένα δέντρο είναι πολύ απλή και εύκολη. Αυτή η απλότητα δεν είναι µόνο χρήσιµη σε περιπτώσεις όπου απαιτείται η γρήγορη ταξινόµηση νέων παρατηρήσεων(αφού είναι πολύ πιο εύκολο να εκτιµήσουµε µία ή δύο λογικές συνθήκες, παρά να υπολογίσουµε τα αποτελέσµατα της ταξινόµησης για κάθε πιθανή οµάδα ή να βρούµε τιµές µε βάση τις ανεξάρτητες µεταβλητές χρησιµοποιώντας πιο πολύπλοκα µοντέλα ) αλλά µπορεί και να αποφέρει ένα πιο απλό µοντέλο το οποίο θα εξηγεί πως οι παρατηρήσεις ταξινοµούνται µε έναν συγκεκριµένο τρόπο. 18
Η µέθοδος των δέντρων ταξινόµησης είναι µία µη-γραµµική µέθοδος. Κι αυτό γιατί τα αποτελέσµατα της ταξινόµησης µε τη λογική συνθήκη εάν-τότε συνοψίζονται στους κόµβους των δέντρων. Έτσι δεν υπάρχει καµία περίπτωση η σχέση µεταξύ των ανεξάρτητων µεταβλητών και της εξαρτηµένης µεταβλητής να είναι γραµµική. Τα δέντρα ταξινόµησης είναι κατάλληλα σε περιπτώσεις εξόρυξης δεδοµένων όπου συνήθως υπάρχει µικρή προϋπάρχουσα γνώση ή όπου υπάρχουν συνδεδεµένες οµάδες από θεωρίες ή προβλέψεις οι οποίες δείχνουν ποιες µεταβλητές σχετίζονται και πως. Σε τέτοιες περιπτώσεις, τα δέντρα ταξινόµησης συχνά φανερώνουν απλές συσχετίσεις µεταξύ ορισµένων µεταβλητών οι οποίες δεν θα ανακαλύπτονταν εάν χρησιµοποιούνταν άλλες τεχνικές. Ο γνωστότερος αλγόριθµος ο οποίος χρησιµοποιείται για την κατασκευή των δέντρων είναι ο αλγόριθµος ID3. Ο αλγόριθµος αυτός κατασκευάζει το δέντρο από τη ρίζα προς τα φύλλα και είναι άπληστος µε την έννοια ότι οι κόµβοι του δέντρου κατασκευάζονται λαµβάνοντας υπόψη κριτήρια τα οποία είναι τοπικά, δηλαδή ισχύουν στο τρέχον σηµείο κατασκευής, και όχι κριτήρια συνολικά. Η κατασκευή κάθε δέντρου ξεκινάει από τον κόµβο-ρίζα όπου τοποθετούνται όλα τα δεδοµένα µε βάση την εξαρτηµένη µεταβλητή. Κατόπιν γίνεται επιλογή της µεταβλητής η οποία θεωρείται η περισσότερο κατάλληλη µε βάση ορισµένα κριτήρια και αρχίζει η ανάπτυξη του δέντρου. Ο αλγόριθµος ID3 χρησιµοποιεί την αναρρίχηση λόφων για να βρει το σωστό δέντρο µέσα στο σύνολο των πιθανών δέντρων που έχουν προκύψει. Αρχικά η αναζήτηση ξεκινάει µε ένα άδειο δέντρο. Στη συνέχεια ο αλγόριθµος το επεκτείνει προοδευτικά µε σκοπό να βρει ένα δέντρο το οποίο θα ταξινοµεί µε σωστό τρόπο τα δεδοµένα. Σε κάθε βήµα του ο αλγόριθµος χρησιµοποιεί όλα τα δεδοµένα τα οποία είναι διαθέσιµα στον υπό εξέταση κόµβο. Ο χώρος των υποθέσεων στον οποίο κάνει την α- ναζήτηση περιλαµβάνει όλες τις πιθανές συναρτήσεις που µπορεί να οριστούν σε σχέση µε τα διαθέσιµα χαρακτηριστικά. Ακόµη ένα βασικό του πλεονέκτηµα είναι ότι παρουσιάζει αντοχή σε λάθη. Από την άλλη, κατά την αναζήτηση που πραγµατοποιεί ο αλγόριθµος διατηρεί µόνο µια υπόθεση συµβατή µε τα δεδοµένα και έτσι δεν έχει τη δυνατότητα να βρει όλα τα δέντρα που είναι συµβατά µε τα δεδοµένα. Επίσης δεν κάνει ποτέ οπισθοδρόµηση. Όταν επιλέγει έναν κόµβο για να εξετάσει ένα χαρακτηριστικό δεν µπορεί να επιστρέψει πίσω για να αλλάξει την επιλογή του αυτή.[3] 19
2.3.2 Εφαρµογές της ταξινόµησης Παρακάτω παρουσιάζονται τρία παραδείγµατα στα οποία βρίσκει εφαρµογή η ταξινό- µηση τα οποία είναι η ιατρική διάγνωση, η ανίχνευση βλαβών σε αεροσκάφη και η ταξινόµηση ιστοσελίδων. Ιατρική διάγνωση Ένα από τα σηµαντικότερα προβλήµατα που καλείται να λύσει η ταξινόµηση είναι σχετικά µε θέµατα υγείας. Η ταξινόµηση χρησιµοποιεί ειδικές µεθόδους για τη διάγνωση ασθενειών και ειδικότερα του καρκίνου. Βρίσκει εφαρµογή κυρίως στη µαστογραφία για την έγκαιρη διάγνωση του καρκίνου του στήθους. Επίσης έχουν αναπτυχθεί διάφορες τεχνικές που βοηθούν σε µεγάλο βαθµό στην διάγνωση του µελανώµατος και του όγκου στον εγκέφαλο. Ανίχνευση βλαβών σε αεροσκάφη Με τη βοήθεια της ταξινόµησης τα τελευταία χρόνια έχουν αναπτυχθεί µηχανήµατα τα οποία επιτρέπουν την ανίχνευση των βλαβών σε αεροσκάφη κατά τη διάρκεια πτήσεων. Μία τέτοια εφαρµογή βοηθάει τους χειριστές και τις οµάδες συντήρησης να προβλέψουν κάποιο πρόβληµα και να το διορθώσουν πριν προκαλέσει οποιαδήποτε ζηµιά στο αεροσκάφος ή ακόµα και συντριβή. Παρ όλη τη βοήθεια που προσφέρουν, δίνουν πολύ συχνά και λανθασµένους συναγερµούς εξαιτίας της αδυναµίας τους να ξεχωρίσουν µια πραγµατική κατάσταση από µία µοντελοποιηµένη. Ταξινόµηση ιστοσελίδων Μία άλλη εφαρµογή είναι η ταξινόµηση ιστοσελίδων στο χώρο του παγκόσµιου ιστού. Αυτό βοηθάει σε µεγάλο βαθµό τους χρήστες αφού τους βοηθάει να κάνουν αναζήτηση µέσα σε συγκεκριµένες κατηγορίες. Έτσι µειώνονται σε µικρή ποσότητα οι σελίδες που επιστρέφει µία µηχανή αναζήτησης στα ερωτήµατα που θέτει ο χρήστης. 20
3 Εξόρυξη δεδοµένων ηλεκτρονικού ταχυδροµείου Το ηλεκτρονικό ταχυδροµείο ή αλλιώς email είναι ένας τοµέας ο οποίος έχει γνωρίσει τα τελευταία χρόνια µεγάλη άνθηση. Οι άνθρωποι σε όλο τον κόσµο στέλνουν και δέχονται χιλιάδες µηνύµατα κάθε µέρα και έτσι επικοινωνούν µε συναδέλφους και φίλους ή ανταλλάζουν χρήσιµα αρχεία και πληροφορίες. υστυχώς όµως η υπερφόρτωση από τα καθηµερινά email τα τελευταία χρόνια έχει δηµιουργήσει σοβαρά προβλήµατα σε κάθε χρήστη καθώς και σε πολλές εταιρείες. Για να αντιµετωπιστεί λοιπόν το πρόβληµα έχουν χρησιµοποιηθεί διάφορες τεχνικές, όπως η Μηχανική Μάθηση ή η εξόρυξη δεδοµένων οι οποίες µπορούν αποτελεσµατικά να συνεισφέρουν στη σωστή διαχείριση των µηνυµάτων και οι οποίες έχουν πολλά πλεονεκτήµατα έναντι άλλων εναλλακτικών λύσεων. 3.1 ιαχείριση του ηλεκτρονικού ταχυδροµείου Η επίδραση του ηλεκτρονικού ταχυδροµείου στην καθηµερινή ζωή των ανθρώπων είναι στις µέρες µας περισσότερο φανερή από ποτέ. Κάθε λεπτό εκατοµµύρια µηνύµατα α- πλού κειµένου ή άλλα εµπλουτισµένα στέλνονται και λαµβάνονται από χρήστες σε όλο τον κόσµο. Μερικά από αυτά µπορεί να διαβαστούν πολύ προσεκτικά, αφού θα αφορούν τον χρήστη, και την ίδια στιγµή άλλα θα διαγραφούν αφού δεν θα παρουσιάζουν κανένα ιδιαίτερο ενδιαφέρον. Όσο το διαδίκτυο εξαπλώνεται όλο και περισσότερο, το ηλεκτρονικό ταχυδροµείο έχει εξελιχθεί όχι µόνο σε ένα ζωτικό εργαλείο για τη δουλειά του κάθε ανθρώπου αλλά και σε ένα σηµαντικό βοήθηµα για τις διαπροσωπικές σχέσεις. Στον επαγγελµατικό τοµέα, το ηλεκτρονικό ταχυδροµείο έχει εισχωρήσει σε κάθε τµήµα. Η οργάνωση των οµάδων, η διαχείριση των έργων, η ανταλλαγή πληροφοριών, η λήψη αποφάσεων, η υποστήριξη πελατών είναι µόνο µερικές από τις καθηµερινές ε- νέργειες των εταιρειών όπου το email είναι απαραίτητο. Επίσης η προσωπική επικοινωνία έχει γίνει σηµαντικά ευκολότερη αφού το ηλεκτρονικό ταχυδροµείο προσφέρει συ- 21
νεχή επαφή των ανθρώπων µε το ελάχιστο κόστος. Άτοµα σε όλο τον κόσµο µπορούν να ανταλλάζουν διάφορες πληροφορίες και µηνύµατα ή και να κάνουν νέες γνωριµίες µε τέτοια ευκολία, ώστε το ηλεκτρονικό ταχυδροµείο να έχει γίνει πλέον το δεύτερο πιο δηµοφιλές κανάλι επικοινωνίας µετά τη φωνή (π.χ. τηλέφωνο). [48] Τα στοιχεία που έχουν κάνει το ηλεκτρονικό ταχυδροµείο τόσο δηµοφιλή είναι η γρήγορη επικοινωνία, το ελάχιστο κόστος και επιπλέον το γεγονός ότι είναι τροµερά εύκολο στη χρήση. Το πλεονέκτηµα που έχει αυτής της µορφής η επικοινωνία έναντι στην επικοινωνία µε τη φωνή, όπως για παράδειγµα µε το τηλέφωνο, είναι ότι είναι α- σύγχρονη. ηλαδή δεν είναι ανάγκη και για τις δύο πλευρές που επικοινωνούν να είναι συνδεδεµένες στο ίδιο δίκτυο εκείνη τη στιγµή ή να είναι µπροστά από τον ηλεκτρονικό υπολογιστή. υστυχώς όµως το ηλεκτρονικό ταχυδροµείο δεν θα µπορούσε να αποφύγει την κατάρα της υπερφόρτωσης πληροφοριών. Χιλιάδες µηνύµατα που φτάνουν καθηµερινά σε κάθε χρήστη, µερικά εξαιρετικά σηµαντικά και άλλα τελείως άχρηστα, έχουν κάνει την διαχείριση των µηνυµάτων µια κουραστική διαδικασία. Σήµερα, κάθε χρήστης λαµβάνει κατά µέσο όρο εκατό µε διακόσια µηνύµατα κάθε µέρα και σύµφωνα µε µία πρόσφατη έρευνα έχει αναφερθεί ότι µέχρι το έτος 2006 η ανταλλαγή των ηλεκτρονικών µηνυµάτων θα είναι της τάξης των εξήντα δισεκατοµµυρίων την ηµέρα παγκοσµίως [19]. Στις µέρες µας, οι άνθρωποι σπαταλούν αρκετό χρόνο για να διαχωρίσουν από τον σωρό µηνυµάτων που έχουν τα πιο σηµαντικά, τα οποία χρειάζονται άµεση ανταπόκριση, ενώ οι µεγάλες εταιρείες επενδύουν πολλά χρήµατα για να διατηρήσουν κέντρα διαχείρισης ηλεκτρονικού ταχυδροµείου µε προσωπικό το οποίο να εξειδικεύεται στο να απαντάει σε απορίες και ερωτήσεις των πελατών τις οποίες στέλνουν µε email. Επιπρόσθετα, το πρόβληµα των ανεπιθύµητων µηνυµάτων (spam) έχει αυξηθεί σε τέτοιο βαθ- µό που έχει καταλήξει να θεωρείται ένα µεγάλο οικονοµικό πρόβληµα. Κοστίζει εκατοµµύρια δολάρια [49] καθώς τα µηνύµατα αυτά καταλαµβάνουν σηµαντικό χώρο και απασχολούν τους εργαζοµένους που τα λαµβάνουν. Επιπλέον, το περιεχόµενο πολλών ανεπιθύµητων µηνυµάτων είναι ακατάλληλο για τα παιδιά αφού µπορεί να περιέχουν και πορνογραφικό υλικό. 22
3.2 Η λειτουργία του ηλεκτρονικού ταχυδροµείου Το ηλεκτρονικό ταχυδροµείο δεν λειτουργεί διαφορετικά από το πώς λειτουργούσε ό- ταν εµφανίστηκε για πρώτη φορά. Βασίζεται σε δύο βασικά πρωτόκολλα επικοινωνίας : το SMTP ( Simple Mail Transfer Protocol ) πρωτόκολλο, το οποίο χρησιµοποιείται για να στέλνει µηνύµατα και το POP3 ( Post Office Protocol ) πρωτόκολλο, το οποίο χρησιµοποιείται για να δέχεται µηνύµατα. Μια απλοποιηµένη έκδοση του κύκλου ζωής του ηλεκτρονικού µηνύµατος φαίνεται στο παρακάτω σχήµα : Εικόνα 1. Κύκλος ζωής ενός ηλεκτρονικού µηνύµατος Τα πιο σηµαντικά λογικά στοιχεία του Ηλεκτρονικού Ταχυδροµείου είναι : 1. Mail User Agent ( MUA ): Ο Mail User Agent είναι υπεύθυνος για να βοηθήσει τον χρήστη να διαβάσει και να γράψει ηλεκτρονικά µηνύµατα. Συνήθως αναφέρεται µε τον όρο email client. ύο πολύ δηµοφιλή email client είναι το Microsoft Outlook (Microsoft Outlook: http://www.microsoft.com/outlook/) και το Mozilla Thunderbird (Mozilla ThunderBird: http://www.mozilla.org/products/thunderbird/). Αυτά τα προγράµµατα αλλάζουν ένα µήνυµα κειµένου σε κατάλληλη µορφή ώστε αυτό το µήνυµα να µπορεί να φτάσει µέσω του διαδικτύου στο σωστό προορισµό του. 23
2. Mail Transfer Agent ( MTA ): Ο Mail Transfer Agent δέχεται ένα µήνυµα το οποίο φτάνει σε αυτόν είτε από ένα MUA είτε από ένα άλλο MTA και µετά αποφασίζει για την κατάλληλη µέθοδο µε την οποία θα παραδοθεί το µήνυ- µα καθώς και για τη διαδροµή που θα ακολουθήσει. Χρησιµοποιεί το πρωτόκολλο SMTP για να στείλει το µήνυµα σε ένα άλλο MTA ή σε ένα MDA. 3. Mail Delivery Agent ( MDA ): Ο Mail Delivery Agent δέχεται τα µηνύµατα από τα MTA και τα παραδίνει στο ταχυδροµικό κουτί του χρήστη στον α- ντίστοιχο εξυπηρετή ηλεκτρονικού ταχυδροµείου. 4. Mail Retrieval Agents ( MRA ): Μεταφέρει τα µηνύµατα από τον εξυπηρέτη (server) στο φάκελο εισερχοµένων του χρήστη. Τα MRAs συχνά υπάρχουν στα email clients. Το ηλεκτρονικό µήνυµα αποτελείται από δύο µέρη, τις Επικεφαλίδες (Headers) και το Σώµα (Body). Οι Επικεφαλίδες περιέχουν ένα σύνολο από χρήσιµες πληροφορίες έτσι ώστε το µήνυµα να φτάσει στον προορισµό του και να µπορεί να διαβαστεί σωστά από τον παραλήπτη. Οι περισσότερο συνηθισµένες Επικεφαλίδες είναι το «Από» («From»), το «Προς» («To») ή το «Θέµα» («Subject»). 3.3 Εξόρυξη Μηνυµάτων Ηλεκτρονικού Ταχυδρο- µείου Το email mining µπορεί να θεωρηθεί ως µία εφαρµογή από τον πρόσφατα εξελισσόµενο τοµέα έρευνας της εξόρυξης κειµένων (text mining) πάνω στα δεδοµένα ηλεκτρονικού ταχυδροµείου. Η εξόρυξη κειµένων είναι ένας τοµέας ο οποίος έχει τραβήξει την προσοχή ερευνητών από διάφορους επιστηµονικούς χώρους όπως η Μηχανική Μάθηση, η εξόρυξη δεδοµένων, κ.α. 24 Παρ όλα αυτά, διακρίνουµε ορισµένα χαρακτηριστικά στα δεδοµένα των ηλεκτρονικών µηνυµάτων τα οποία διαχωρίζουν την εξόρυξη µηνυµάτων ηλεκτρονικού ταχυδροµείου από την εξόρυξη κειµένων : 1. Το ηλεκτρονικό µήνυµα περιέχει επιπλέον πληροφορίες στις επικεφαλίδες του µηνύµατος οι οποίες µπορούν να χρησιµοποιηθούν για διάφορες διεργασίες ε- ξόρυξης δεδοµένων ηλεκτρονικού ταχυδροµείου. 2. Το κείµενο ενός ηλεκτρονικού µηνύµατος είναι µικρότερο σε έκταση και γι αυτό το λόγο ορισµένες τεχνικές που χρησιµοποιούνται στο text mining µπορεί να µην είναι αποδοτικές στα δεδοµένα του µηνύµατος.
3. Ένα ηλεκτρονικό µήνυµα γράφεται συνήθως βιαστικά και έτσι δεν έχει πολλές φορές σωστή γλωσσολογική δόµηση αφού εµφανίζονται συχνά ορθογραφικά και συντακτικά λάθη. 4. Σε ένα ηλεκτρονικό µήνυµα υπάρχει η πιθανότητα να συζητηθούν πολλά και διάφορα θέµατα. 5. Το ηλεκτρονικό µήνυµα είναι προσωπικό και έτσι γενικές τεχνικές είναι δύσκολο να εφαρµοστούν. 6. Τα µηνύµατα αποτελούν ροή δεδοµένων, γι αυτό και η κατανοµή καθώς και η έννοια των κλάσεων µπορεί στην πορεία να αλλάξουν. Οι αλγόριθµοι θα πρέπει να έχουν την δυνατότητα να µπορούν να τροποποιηθούν καθώς νέα στοιχεία µπορεί να προκύψουν. 7. Τα ηλεκτρονικά µηνύµατα είναι πιθανό πολλές φορές να περιέχουν θόρυβο. ιάφορα επισυναπτόµενα αρχεία θα πρέπει να αφαιρούνται ώστε να µπορεί χρησιµοποιηθεί µια τεχνική εξόρυξης κειµένου. Σε ορισµένες περιπτώσεις µάλιστα ο θόρυβος τοποθετείται σκόπιµα. Για παράδειγµα, στο spam filtering λέξεις και φράσεις µε θόρυβο χρησιµοποιούνται για να παραπλανήσουν τους αλγορίθµους της µηχανικής µάθησης. 8. Είναι ιδιαίτερα δύσκολο να έχουµε διαθέσιµα δεδοµένα ηλεκτρονικού ταχυδρο- µείου για τη διεξαγωγή πειραµάτων. Αυτό αποτελεί µειονέκτηµα, ειδικά στην έρευνα, αφού δεν µπορούν να διεξαχθούν συγκριτικές µελέτες χωρίς κοινά σύνολα δεδοµένων. Εξαίρεση αποτελεί η συλλογή Enron, που έγινε διαθέσιµη στο κοινό µετά από µία νοµική έρευνα που διεξάχθηκε στην εταιρεία Enron. 3.3.1 Προεπεξεργασία και Αναπαράσταση Μηνυµάτων Το πρώτο στάδιο κάθε µεθόδου Ανακάλυψης Γνώσης είναι η προεπεξεργασία των δεδοµένων που αρχικά καλείται «ακατέργαστη µορφή δεδοµένων» («raw format»). Για να εισχωρήσουµε σε αυτά τα ακατέργαστα δεδοµένα και να αποκοµίσουµε τη γνώση από αυτά, πρέπει πρώτα να µετατρέψουµε τα δεδοµένα σε µία κατάλληλη µορφή ώστε να είναι κατανοητή από τους αλγορίθµους της µηχανικής µάθησης. Τα τελευταία χρόνια, οι χρήστες µε τη βοήθεια νέου και εξελιγµένου λογισµικού διαχείρισης ηλεκτρονικού ταχυδροµείου (email client) άρχισαν να εισάγουν HTML κώδικα, εµπλουτίζοντας έτσι τα απλά µηνύµατα κειµένου µε άλλα διαφορετικού τρόπου γραφής, µε ξεχωριστά φόντα, εικόνες κ.α. Στην πραγµατικότητα, αυτό επιτεύχθηκε 25
στέλνοντας µια σελίδα HTML ως ένα επισυναπτόµενο αρχείο το οποίο κάθε σύγχρονος email client µε έναν ενσωµατωµένο web browser έχει τη δυνατότητα να παρουσιάσει. εν εκµεταλλευόµαστε την HTML για να εξάγουµε γνώση. Συνήθως αφαιρείται χρησι- µοποιώντας Συντακτικούς Αναλυτές. Έτσι κρατάµε µόνο το κείµενο που περιέχεται στην HTML σελίδα. Μερικές φορές µάλιστα οι HTML ετικέτες χρησιµοποιούνται σαν χαρακτηριστικά των µηνυµάτων. Στο text και email mining το πιο κυρίαρχο µοντέλο για απεικόνιση είναι το ιανυσµατικό Μοντέλο (vector space model)[50]. Σε αυτό κάθε µήνυµα αντιπροσωπεύεται από ένα µοναδικό διάνυσµα και κάθε στοιχείο συσχετίζεται µε ένα χαρακτηριστικό. Στα δεδοµένα κειµένου τα χαρακτηριστικά είναι συνήθως λέξεις ή φράσεις. Τα στοιχεία του διανύσµατος παίρνουν τις περισσότερες φορές υαδικές τιµές, δηλαδή 0 ή 1, έτσι ώστε να δηλώσουν την ύπαρξη ή την απουσία ενός συγκεκριµένου χαρακτηριστικού στο έγγραφο, ή βάρη τα οποία είναι τιµές µεταξύ του 0 και του 1 για να δείξουν τη ση- µασία που έχει αυτό για το έγγραφο. Στην ταξινόµηση κειµένου η χρήση απλών λέξεων σαν χαρακτηριστικά είναι περισσότερο συνηθισµένη και συνήθως αναφέρεται ως απεικόνιση «bag-of-words». Σαν εναλλακτική λύση θα µπορούσαν να χρησιµοποιηθούν ως χαρακτηριστικά φράσεις, όµως κάτι τέτοιο δεν θα βοηθούσε στην αποτελεσµατικότητα των αλγορίθµων [51]. Επίσης έχει προταθεί και µία άλλη ενδιαφέρουσα απεικόνιση [52] όπου γίνεται χρήση των εννοιολογικών χαρακτηριστικών. Αυτά τα χαρακτηριστικά δηλώνουν την απόσταση µεταξύ του εγγράφου και του εννοιολογικού διανύσµατος. Αυτά τα διανύσµατα δηµιουργούνται αφού ταξινοµήσουµε όλα τα έγγραφα. Έτσι ένα µήνυµα e j µπορεί να παρασταθεί από ένα διάνυσµα e j = [ w 1, j,, w n, j ], ό- που τα βάρη w 1, j και w n, j είναι τα βάρη των χαρακτηριστικών για ένα συγκεκριµένο έγγραφο j. Ο δείκτης i αναφέρεται στο χαρακτηριστικό t i. Σε περίπτωση που χρησιµοποιούµε λέξεις αντί για χαρακτηριστικά το t i αναφέρεται στην ι-οστή λέξη του λεξιλογίου, που είναι βασικά ένα σύνολο από ξεχωριστές λέξεις. Το λεξιλόγιο κάθε προβλήµατος δοµείται αναλύοντας έγγραφα εκπαίδευσης που υπάρχουν και συλλέγοντας ξεχωριστές λέξεις. Ένα ακόµη σηµαντικό θέµα είναι αν οι λέξεις µε την ίδια ρίζα θα θεωρούνται ισοδύναµες. Σε αυτήν την περίπτωση δηµιουργήθηκε ένα λεξικό ριζών και λέξεις όπως «program», «programming» και «programmer» αντιµετωπίζονται ως ίδιες. Στην βιβλιογραφία υπάρχουν ήδη αλγόριθµοι ριζών όπως ο Αλγόριθµος του Porter (Porter Stemming Algorithm) [53]. Ένα άλλο ζήτηµα είναι η αφαίρεση κοινά χρησιµοποιούµενων 26
λέξεων όπως τα άρθρα και οι προθέσεις, τις οποίες αποκαλούµε «stop-words». Αυτό θα ήταν αποτελεσµατικό στις περισσότερες εφαρµογές γιατί αυτές οι λέξεις χρησιµοποιούνται στη φυσική γλώσσα ανεξαρτήτως θέµατος και γι αυτό το λόγο δεν έχουν ιδιαίτερη σηµασία. Από την άλλη πλευρά, σε εφαρµογές όπως η αναγνώριση συγγραφέα ηλεκτρονικού ταχυδροµείου, η χρήση των «stop-words» µπορεί να είναι καθοριστική αφού η χρήση τέτοιων όρων µπορεί να αποκαλύψει την ταυτότητα του συγγραφέα [54]. Ιδιαίτερα για το ηλεκτρονικό ταχυδροµείο µπορεί να προκύψουν και λέξειςχαρακτηριστικά από τις επικεφαλίδες. Μια λέξη που εµφανίζεται στο θέµα του µηνύµατος µπορεί να είναι πιο σηµαντική από µια λέξη που υπάρχει στο σώµα. Στην περίπτωση των επικεφαλίδων, το w i αντιπροσωπεύει ένα χαρακτηριστικό εάν υπάρχει στο θέµα και ένα άλλο χαρακτηριστικό εάν υπάρχει στο σώµα. Έτσι, το µέγεθος του διανύσµατος διπλασιάζεται όπως παρακάτω [55]: E j = [subject : w 1, body : w 1,, subject : w n, body : w n ]. Έχουν προταθεί διαφορετικοί τρόποι για να καθοριστεί το βάρος µιας λέξης. Εκτός από την ήδη αναφερόµενη µέθοδο Boolean [31,56], µια εναλλακτική λύση είναι να χρησιµοποιηθεί η TF-IDF συνάρτηση ( Term Frequency- Invert Document Frequency) [57] για κάθε λέξη ώστε να υπολογιστεί το βάρος. Η συνάρτηση TF-IDF καθορίζεται παρακάτω: όπου, TF i,j ο αριθµός των φορών που το χαρακτηριστικό t i εµφανίζεται στο µήνυµα e j (Term Frequency), το N είναι το σύνολο των µηνυµάτων και DF i είναι ο αριθµός των µηνυµάτων t i (Document Frequency). Η παραπάνω διαδικασία βασίζεται στο γεγονός ότι µια λέξη είναι σηµαντική για ένα έγγραφο εάν εµφανίζεται πολλές φορές σε αυτό και την ίδια στιγµή δεν είναι µια συνηθισµένη λέξη (µια λέξη που εµφανίζεται σε πολλά έγγραφα). Μπορεί να χρησιµοποιηθεί και κανονικοποίηση συνηµιτόνου εάν θέλουµε να αναπαρασταθούν τα βάρη στο διάστηµα [0,1][58]. 27
3.3.2 Επιλογή Χαρακτηριστικών Ένα τυπικό λεξικό αποτελείται από χιλιάδες λέξεις. Σε µία προσέγγιση bag-of-words οι λέξεις αυτές θα αποτελούν το σύνολο των χαρακτηριστικών. Ένα σύνολο τόσο µεγάλο δεν είναι µόνο αναποτελεσµατικό αλλά και παραπλανητικό για πολλούς αλγορίθµους, καθώς λαµβάνονται θορυβώδη ή άσχετα χαρακτηριστικά και µπορούν να προκύψουν διάφορα προβλήµατα (curse of dimensionality-κατάρα των διαστάσεων). Γι αυτό το λόγο αναπτύχθηκε ένας µεγάλος αριθµός από αλγορίθµους µείωσης διαστάσεων. Οι αλγόριθµοι αυτοί είναι γνωστοί ως µέθοδοι επιλογής χαρακτηριστικών, γιατί η µείωση ιαστάσεων πραγµατοποιείται προσπαθώντας να συλλέξουµε τα καλύτερα χαρακτηριστικά από ολόκληρο το διάστηµα χαρακτηριστικών. Στην ταξινόµηση κειµένων αυτό σηµαίνει να συλλέξουµε λέξεις που ξεχωρίζουν ένα έγγραφο από ένα άλλο πιο αποτελεσµατικό. Αυτό πραγµατοποιείται υπολογίζοντας ένα ποιοτικό όριο για κάθε λέξη και επιλέγουµε να χρησιµοποιήσουµε τα N καλύτερα χαρακτηριστικά. Μπορεί να χρησιµοποιηθεί η TF-IDF συνάρτηση µε τη διαφορά ότι βοηθάει στο να παρουσιαστεί η σπουδαιότητα ενός όρου από ολόκληρη τη συλλογή και όχι µόνο από ένα έγγραφο. όπου ΤF i είναι ο αριθµός των εµφανίσεων του όρου i στην συλλογή, DF i ο αριθµός των φορών που εµφανίζεται αυτός ο όρος σε διαφορετικά έγγραφα και N ο συνολικός αριθ- µός των εγγράφων. Συνήθως χρησιµοποιούνται µετρήσεις από την θεωρία της πληροφορίας (information theory). Στο text mining και κατ επέκταση σε εφαρµογές ηλεκτρονικού ταχυδρο- µείου χρησιµοποιούνται το Κέρδος Πληροφορίας (Information Gain) και η Μετρική x 2 (Chi-Squared Measure) όπως και το Mutual Information [59]. Γενικά, ένα µέτρο M (t i,c j ) φανερώνει πόση δύναµη έχει ο όρος t i ώστε να διαχωριστεί ο c j από άλλες κατηγορίες. Παρακάτω παραθέτεται ο ορισµός του Κέρδους Πληροφορίας και της Μετρικής x 2 : 28
Information Gain : Chi-Squared Measure : 3.3.3 Ταξινόµηση Μηνυµάτων Ηλεκτρονικού Ταχυδροµείου Οι περισσότερες µέθοδοι email mining πραγµατοποιούνται χρησιµοποιώντας ταξινό- µηση µηνυµάτων. Γενικά αυτό που αντιµετωπίζει η ταξινόµηση µηνυµάτων ηλεκτρονικού ταχυδροµείου είναι η ανάθεση ενός µηνύµατος σε µια κατηγορία από ένα προκαθορισµένο σύνολο. Η αυτόµατη ταξινόµηση έχει στόχο να δηµιουργήσει ένα µοντέλο, συνήθως χρησιµοποιώντας τεχνικές µηχανικής µάθησης, το οποίο θα αναλάβει αυτήν την εργασία εκ µέρους του χρήστη. Τέτοια παραδείγµατα είναι η αυτόµατη ταξινόµηση µηνυµάτων σε φακέλους, το spam filtering και η αναγνώριση συγγραφέα ηλεκτρονικού ταχυδροµείου. Υπάρχουν και άλλες εφαρµογές όπου η ταξινόµηση βρίσκεται σε εξέλιξη όπως η Αυτόµατη Περίληψη Ηλεκτρονικού Μηνύµατος. Υπάρχουν δύο είδη ταξινόµησης. Το πρώτο και ευκολότερο είναι η επίπεδη ταηινό- µηση όπου έχουµε µόνο ένα επίπεδο κλάσεων. Η άλλη κατηγορία είναι η ιεραρχική, όπου υπάρχει µία ιεράρχηση των κλάσεων και των υποκλάσεων [32,21]. Σε ορολογία µηχανικής µάθησης, εάν έχουµε ένα προκαθορισµένο σύνολο κλάσεων C = {c 1,,c n }, χρειάζεται να δηµιουργήσουµε ένα µοντέλο συνάρτησης το οποίο θα αναθέτει ένα ηλεκτρονικό µήνυµα (e ) σε µία κλάση π.χ. M(e)->C. Αυτά τα µοντέλα που είναι γνωστά ως ταξινοµητές κατασκευάζονται χρησιµοποιώντας τεχνικές µηχανικής µάθησης, όπως Naïve Bayes [56], Support Vector Machines [17], αλγορίθµους που βασίζονται στα έντρα απόφασης [60] και Νευρωνικά ίκτυα [29]. Οι περισσότεροι αλγόριθµοι ταξινόµησης χρησιµοποιούν το διανυσµατικό µοντέλο. Για να δηµιουργηθεί ένας ταξινοµητής απαιτείται ένα σύνολο από παραδείγµατα. Ένα παράδειγµα είναι ένα µήνυµα το οποίο το έχει ήδη καταχωρήσει σε µία κατηγορία ένας χρήστης ή ένας ειδικός. Το παράδειγµα είναι συνήθως ένα διάνυσµα e= [w 1, w 2,,w n, c e ] όπου το c e είναι η κλάση στην οποία ανήκει το παράδειγµα e. Αυτή η διαδικασία δηµιουργίας ταξινοµητή ονοµάζεται εκπαίδευση (training). 29
Αυτό που είναι ιδιαίτερα σηµαντικό στην ταξινόµηση µηνυµάτων είναι το γεγονός ότι το ηλεκτρονικό ταχυδροµείο είναι ένα δυναµικό περιβάλλον και ότι υπάρχει συνεχής ροή µηνυµάτων. Αυτό σηµαίνει ότι παρόλο που υπάρχει ένα διαθέσιµο σύνολο training, ο ταξινοµητής θα πρέπει να µπορεί να αφοµοιώσει την καινούρια γνώση που βρίσκεται σε νέα παραδείγµατα. Γι αυτό το λόγο είναι απαραίτητο οι αλγόριθµοι να µπορούν να τροποποιηθούν [25,16,61]. Ο ταξινοµητής Naïve Bayes : Ο αλγόριθµος αυτός έχει χρησιµοποιηθεί πολλές φορές σε εφαρµογές ταξινόµησης µηνυµάτων ηλεκτρονικού ταχυδροµείου [42,56]. Η απλότητά του, το χαµηλό υπολογιστικό κόστος και η αποτελεσµατικότητα, η ευελιξία του αλλά και η ευκολία στην εκτέλεση είναι τα βασικά χαρακτηριστικά τα οποία τον καθιστούν τόσο δηµοφιλή όχι µόνο σε εφαρµογές ηλεκτρονικών µηνυµάτων αλλά και στην ταξινόµηση κειµένων [36,62,63]. Ο αλγόριθµος βασίζεται στην υπόθεση ότι τα βασικά χαρακτηριστικά γνωρίσµατα π.χ. οι tf-idf τιµές ενός διανύσµατος είναι ανεξάρτητα. Η ταξινόµηση κατά Bayes ενός µηνύµατος e= [w 1, w 2,,w n ] σε µία κατηγορία από C= {c 1, c 2,, c 3 } υπολογίζεται παρακάτω: όπου c NB είναι η ταξινόµηση που προτείνεται από τον αλγόριθµο. Μηχανές ιανυσµάτων Υποστήριξης (Support Vector Machines) : Η εξαιρετική τους απόδοση έχει καταστήσει τις Μηχανές ιανυσµάτων Υποστήριξης ιδιαίτερα δη- µοφιλείς στην ταξινόµηση κειµένων και ηλεκτρονικών µηνυµάτων. Στην απλούστερη και αρχική τους µορφή οι µηχανές αυτές είναι δυαδικοί ταξινοµητές, δηλαδή χωρίζουν τα αντικείµενα µόνο σε δύο προκαθορισµένες κλάσεις. Ο ταξινοµητής βρίσκει ένα υπερεπίπεδο που διαχωρίζει µια οµάδα από θετικά παραδείγµατα από µια οµάδα από αρνητικά παραδείγµατα µε τη µεγαλύτερη απόσταση. 30
Εικόνα 2.Μηχανή ιανύσµατος Υποστήριξης Αυτό το όριο καθορίζεται ως η απόσταση του υπερεπιπέδου από το κοντινότερο θετικό και αρνητικό παράδειγµα, τα οποία ονοµάζονται ιανύσµατα Υποστήριξης (support vectors). Εάν το d είναι το έγγραφο εισόδου και το v είναι το διάνυσµα του ορίου, τότε η έξοδος του ταξινοµητή υπολογίζεται παρακάτω: Ο στόχος είναι να µεγιστοποιηθεί το όριο που αναπαρίσταται από το v διάνυσµα. Έτσι προκύπτει ένα πρόβληµα βελτιστοποίησης: Μεγιστοποίηση του: Έτσι ώστε: όπου d ι είναι τα παραδείγµατα και y είναι η κατηγορία (+1 ή -1) στην οποία ανήκει το έγγραφο d ι. Έτσι, απαιτείται η σωστή ταξινόµηση όλων των παραδειγµάτων εκπαίδευσης. Φυσικά, αυτό είναι εφικτό µόνο εάν το πρόβληµα είναι γραµµικά διαχωρίσιµο. Υπάρχουν ωστόσο προτεινόµενες τροποποιήσεις ώστε να εφαρµοστεί η βελτιστοποίηση και σε µη γραµµικά προβλήµατα. Τα προβλήµατα αυτά απαιτούν µία τετραγωνική µέθοδο βελτιστοποίησης η οποία θα υπολογίζει το καλύτερο υπερεπίπεδο και όριο. Οι µέθοδοι αυτοί είναι ιδιαίτερα αργές για να χρησιµοποιηθούν στην ταξινόµηση µηνυµάτων. Πρόσφατα, έχει προταθεί ένας αλγόριθµος αρκετά αποτελεσµατικός από τον Platt (1999) όπου σπάει το QP πρόβληµα σε µικρότερα ( γνωστός ως Sequential Minimal 31
Optimization (SMO)) και ο οποίος χρησιµοποιείται σε βιβλιοθήκες µηχανικής µάθησης όπως το Weka [43]. 3.4 Εφαρµογές Έχουν ανακαλυφθεί διάφορες τεχνικές για µεθόδους όπως την περίληψη κειµένων, την οργάνωση, την ταξινόµηση και την αναγνώριση συγγραφέα ηλεκτρονικού ταχυδροµείου. Μια νέα πρόκληση για τον τοµέα της εξόρυξης κειµένων είναι τα δεδοµένα µηνυ- µάτων και τα χαρακτηριστικά τους. Ο τοµέας αυτός δηµιούργησε πρόσφορο έδαφος για να αναπτυχθούν νέες εφαρµογές. Τέτοιες είναι το Spam Filtering και η Αυτόµατη Οργάνωση Μηνυµάτων Ηλεκτρονικού Ταχυδροµείου σε Φακέλους (Automatic Mail Organization into Folders). 3.4.1 Spam Filtering Ο κύριος στόχος του spam filtering είναι να αναγνωριστούν και να ξεχωριστούν τα α- νεπιθύµητα και περιττά διαφηµιστικά µηνύµατα (spam) τα οποία καταφθάνουν κάθε λεπτό στο ηλεκτρονικό ταχυδροµείο των χρηστών. Τα µηνύµατα αυτά, γνωστά και ως junk ή bulk email, ξεκίνησαν σαν µία µικρή ενόχληση για τους χρήστες όταν πρωτοεµφανίστηκε το ηλεκτρονικό ταχυδροµείο και κατέληξαν να αποτελούν τα τελευταία πέντε χρόνια ένα τεράστιο βιοµηχανικό πρόβληµα. Οι µεγάλες ποσότητες των spam µηνυµάτων όχι µόνο έχουν προκαλέσει οικονοµικά προβλήµατα αλλά καταλαµβάνουν και πολύτιµο χρόνο από τους χρήστες που προσπαθούν να ξεχωρίσουν και να διαγράψουν πολλά ανεπιθύµητα µηνύµατα κάθε µέρα. Επιπλέον, πολλά τέτοια µηνύµατα περιέχουν και πορνογραφικό υλικό ακατάλληλο για παιδιά. Για να καταπολεµηθεί λοιπόν αυτό το φαινόµενο, η κοινωνία της τεχνολογίας έχει αρχίσει την κατασκευή spam φίλτρων έτσι ώστε να διαγράφονται αυτόµατα τα περιττά εισερχόµενα µηνύµατα. Υπάρχουν πολλές στρατηγικές που έχουν προταθεί και χρησι- µοποιούνται για να εξαλειφθούν αυτά τα µηνύµατα. Θα µπορούσαν να διαχωριστούν σε δύο γενικές κατηγορίες: Τεχνικές ή Μη Στατιστικές Προσεγγίσεις (Technical ή Non-Statistical Approaches): περιλαµβάνει λευκές και µαύρες λίστες (white and black lists), ψηφιακές υπογραφές και κανόνες φτιαγµένους χειροκίνητα. 32
Μηχανικής Μάθησης ή Στατιστικές Προσεγγίσεις (Machine Learning ή Statistical Approaches): περιλαµβάνει στατιστικές φιλοσοφικές αναλύσεις και αλγορίθµους µηχανικής µάθησης. Οι τεχνικές spam filtering µπορούν εναλλακτικά να οργανωθούν σε δύο άλλες κατηγορίες: Λύσεις βασισµένες στον διακοµιστή (Server based solutions): τα µηνύµατα φιλτράρονται στον ISP server. Λύσεις βασισµένες στον πελάτη (Client based solutions): τα µηνύµατα ταξινοµούνται στον υπολογιστή του χρήστη. Παρά το φανερό πλεονέκτηµα ότι στην πρώτη κατηγορία τα spam µηνύµατα δεν φθάνουν στον υπολογιστή του χρήστη, τα server based φίλτρα δεν είναι πάντα προσωποποιηµένα και έτσι ο χρήστης πρέπει να ελέγξει περιοδικά τον junk φάκελο στον server για να διαπιστώσει εάν υπάρχουν λάθος ταξινοµηµένα µηνύµατα. Στην βιβλιογραφία έχουν δοκιµαστεί πολλοί διαφορετικοί ταξινοµητές µηχανικής µάθησης. Παρακάτω παραθέτεται µία µικρή λίστα από αυτούς. Naïve Bayes [56] Memory-based Approaches [64] Boosting Techniques [66] Case-Based Reasoning [25] Support Vector Machines [67] Latent Semantic Indexing [23] Stacking Classifiers [65] Είναι πολύ δύσκολο να συγκρίνουµε αυτές τις µεθόδους καθώς γίνεται χρήση διαφορετικών συνόλων δεδοµένων και άλλης βελτιστοποίησης από τους αλγορίθµους. Παρόλα αυτά υπάρχει µία προτίµηση για τον ταξινοµητή Naïve Bayes κυρίως για την απλότητά του, την ευελιξία του, το µικρό υπολογιστικό του κόστος και την ικανοποιητική του απόδοση. Επιπλέον, το εξελιγµένο λογισµικό όπως το SpamAssasin συνήθως συνδυάζει τεχνικές από τις δύο κατηγορίες, την Στατιστική και την Μη Στατιστική. Μέχρι κάποιο σηµείο η µέθοδος του spam filtering µοιάζει µε την ταξινόµηση κει- µένων και µηνυµάτων ηλεκτρονικού ταχυδροµείου. Ωστόσο, υπάρχουν ορισµένα χαρακτηριστικά που διαχωρίζουν το spam filtering από τις άλλες µεθόδους ταξινόµησης. 33
Στο spam filtering τα λάθη που γίνονται στην ταξινόµηση δεν έχουν την ίδια σπουδαιότητα. Το να ταξινοµηθεί ένα χρήσιµο µήνυµα ως spam είναι πολύ πιο σοβαρό λάθος από το να επιτραπεί σε ένα µη χρήσιµο µήνυµα να περάσει από το φίλτρο. Έτσι, ένα µήνυµα θα θεωρείται spam µόνο εάν ο ταξινοµητής το προβλέπει µε µεγάλη σιγουριά. Για παράδειγµα, κατά την Naïve Bayes ταξινόµηση ένα µήνυµα e θα είναι spam µόνο εάν P(e=SPAM)>t, όπου t είναι ένα όριο κοντά στο 1 π.χ. 0,98. Το ίδιο συµβαίνει και µε την αξιολόγηση του αλγορίθµου. Ένα επιπόλαιο θετικό σφάλµα µπορεί να θεωρηθεί ως 100t αρνητικά σφάλµατα. Ένας άλλος διαχωρισµός είναι ότι στο spam filtering µπορεί πιθανότατα να χρησι- µοποιηθούν επιπλέον χαρακτηριστικά όπως πληροφορίες από τις επικεφαλίδες, µορφολογικά χαρακτηριστικά ή σηµάδια στίξης, τα οποία είναι σηµαντικοί δείκτες αφού υ- πάρχουν σε αφθονία στα µηνύµατα spam. ιάφορες τεχνικές προσεγγίσεις όπως οι λευκές και µαύρες λίστες είναι αναπόφευκτες καθώς οι spammers έχουν αρχίσει πλέον να βάζουν τυχαία αθώα κείµενα στα µηνύµατα για να παραπλανήσουν τους ταξινοµητές. Επιπλέον, οι κλάσεις στο spam filtering είναι περισσότερο ετερογενείς σε περιεχόµενο από ότι ένα τυπικό κείµενο ή ένα πρόβληµα ταξινόµησης µηνυµάτων, ώστε υπάρχουν πολλοί διαφορετικοί τύποι µηνυµάτων spam και πολλά διαφορετικά ευανάγνωστα µηνύµατα, γεγονός που καθιστά τη διαφορά ακόµα πιο δύσκολη. Ακόµη, οι spammers τείνουν να αλλάζουν τα χαρακτηριστικά των spam µηνυµάτων και έτσι γεννιέται η ανάγκη για συνεχή µάθηση. Παρόλο που µερικά από τα ήδη αναφερθέντα φίλτρα είναι σηµαντικά ακριβή, µερικά από αυτά παρουσιάζουν 99% επιτυχία µε ελάχιστες περιπτώσεις σφαλµάτων, δεν έχει βρεθεί ακόµη λύση στο πρόβληµα. Κάθε χρόνο πραγµατοποιούνται δύο συνέδρια, το Spam Conference ( http://spamconference.org./ ) και το Conference on Email and Anti-Spam ( http://www.ceas.cc/ ), στα οποία συγκεντρώνονται επιστήµονες και ακαδηµαϊκοί από όλο τον κόσµο όπου προτείνουν και συζητούν νέες ιδέες και λύσεις. 3.4.2 Αυτόµατη Οργάνωση Μηνυµάτων σε Φακέλους Η ανάπτυξη της χρήσης του ηλεκτρονικού ταχυδροµείου ανάγκασε τους χρήστες να αναζητήσουν τρόπους ώστε να οργανώσουν, να αρχειοθετήσουν και να διαχειρίζονται τα µηνύµατά τους πιο αποτελεσµατικά. Πολλοί από αυτούς οργανώνουν τα εισερχόµενα µηνύµατα σε ξεχωριστούς φακέλους. Οι φάκελοι µπορεί να χαρακτηρίζονται ανάλογα µε το θέµα όπως «δουλειά», «προσωπικά», «αστεία», µε διάφορα ονόµατα όπως 34
«Γιώργος», «Κώστας», ή ανάλογα µε µία οµάδα ανθρώπων όπως «συνάδελφοι», «οικογένεια», «φίλοι». Μερικοί χρήστες διευθετούν τα µηνύµατά τους ανάλογα µε την σπουδαιότητά τους και διατηρούν φακέλους µε ονοµασίες «επείγον», «για µελλοντική χρήση», «spam». Για να πραγµατοποιηθεί αυτό, οι χρήστες αναπτύσσουν ορισµένους κανόνες για να ταξινοµηθούν τα µηνύµατά τους. Αυτοί οι κανόνες αφορούν σε ευριστικές µεθόδους οι οποίες αναζητούν λέξεις κλειδιά στο µήνυµα και εκτελούν µια ενέργεια όπως αντιγραφή σε ένα φάκελο, διαγραφή ενός µηνύµατος, κ.α. Για παράδειγµα, έχου- µε κανόνες όπως: If (sender= John Smith OR sender= Mary Smith ) Then (moveinto FAMILY) If (body contains call for papers ) Then{ (moveinto CFP) (forwardto COLLEAGUES ) } όπου FAMILY και CFP είναι φάκελοι και COLLEAGUES είναι µια οµάδα ανθρώπων (πρακτικά είναι µία λίστα από διευθύνσεις του χρήστη). Στις µέρες µας, οι περισσότεροι email clients υποστηρίζουν την δηµιουργία αυτών των κανόνων. Αυτό που έχει να προσφέρει η Μηχανική Μάθηση σε αυτήν την περίπτωση είναι η αυτόµατη ταξινόµηση των εισερχόµενων µηνυµάτων παρατηρώντας παλαιότερες και πρόσφατες ταξινοµήσεις που έχουν γίνει από τον χρήστη (µελετώντας για παράδειγµα ήδη υπάρχοντες φακέλους). Έτσι, δεν είναι αναγκαίο να δηµιουργήσει ο ίδιος ο χρήστης µόνος του τους κανόνες. Επιπλέον, οι αλγόριθµοι µηχανικής µάθησης είναι σε θέση να ταξινοµήσουν ένα µήνυµα λαµβάνοντας υπόψη το περιεχόµενό του και όχι µόνο ψάχνοντας για συγκεκριµένες λέξεις. Αυτό συνήθως πραγµατοποιείται συνδυάζοντας στατιστικές και γλωσσολογικές µεθόδους. Κάτι τέτοιο είναι ιδιαίτερα βολικό για τον χρήστη αφού υπάρχουν θέµατα όπως «µηνύµατα που αφορούν την δουλειά» ή «µηνύ- µατα που πρέπει να απαντηθούν σήµερα» ή «ενδιαφέροντα µηνύµατα» τα οποία δεν µπορούν εύκολα να περιγραφούν µε έναν απλό συνδυασµό λέξεων. Επιπρόσθετα, ο χρήστης µπορεί να αλλάζει αυτά τα θέµατα σε τακτά χρονικά διαστήµατα. Από την άλλη, ένας αλγόριθµος µηχανικής µάθησης µπορεί να µάθει να ταξινοµεί τα νέα µηνύµατα απλά παρατηρώντας προηγούµενα παραδείγµατα. Έχει πραγµατοποιηθεί εκτεταµένη έρευνα σε αυτό το πεδίο [28,29,17,38] και πολλές ιδέες έχουν οδηγήσει σε χρήσιµα εργαλεία [68,22,61]. 35
Το popfile [68] είναι ένα δηµοφιλές online εργαλείο για την ταξινόµηση µηνυµάτων ηλεκτρονικού ταχυδροµείου. ηµιουργήθηκε από τον John Graham-Cummings σε γλώσσα Perl και είναι εµπνευσµένο από το ifile [42]. Βρίσκεται µεταξύ του mail server και του client, ανακτώντας τα µηνύµατα από τον server, ταξινοµώντας τα και έπειτα στέλνοντάς τα στον client. Το popfile ξεκινάει τη λειτουργία του από το σηµείο µηδέν και σταδιακά όλα τα µηνύµατα καταλήγουν στον προκαθορισµένο φάκελο. Εάν ο χρήστης δηµιουργήσει έναν κάδο στον popfile και κατόπιν µετακινήσει ορισµένα µηνύµατα σε αυτόν, τότε ο popfile θα µάθει πώς να ταξινοµεί παρόµοια µηνύµατα. Οι χρήστες έχουν την δυνατότητα να δηµιουργούν, να καταστρέφουν ή να συγχωνεύουν κάδους οποιαδήποτε στιγµή θέλουν. Φυσικά, ο popfile αποδίδει ελάχιστα στην αρχή καθώς υ- πάρχουν λίγα µόνο παραδείγµατα από τα οποία µπορεί να µάθει, αλλά τα αποτελέσµατα δείχνουν πως υπάρχει κατά µέσο όρο µια ακρίβεια 98,7% µετά από 500 µηνύµατα. Ο popfile βάζει σε εφαρµογή έναν κατηγοριοποιητή Bayesian χρησιµοποιώντας µια προσέγγιση bag-of-words και προσθέτοντας µερικά χαρακτηριστικά που έχουν φτιαχτεί χειροκίνητα, όπως η ύπαρξη html κώδικα, κυρίως για να βελτιώσει τις ικανότητες του spam filtering. Αυτό γίνεται κυρίως γιατί οι spammers χρησιµοποιούν τεχνικές όπως την εισαγωγή τυχαίου κειµένου στα spam µηνύµατα ώστε να παραπλανήσουν τον ταξινοµητή Naïve Bayes. Ένα άλλο εργαλείο ταξινόµησης είναι το SwiftFile γνωστό και ως MailCat [69] το οποίο αναπτύχθηκε από την IBM Research [61] και δίνει έµφαση στην ανάγκη για ο- λοένα και αυξανόµενη γνώση. Με κάθε καινούρια άφιξη µηνύµατος το SwiftFile προβλέπει τρεις φακέλους προορισµού. Έπειτα τοποθετεί τρία κουµπιά πάνω στο µήνυµα έτσι ώστε ο χρήστης να το στείλει γρήγορα σε έναν από τους φακέλους. Ο SwiftFile χρησιµοποιεί έναν ταξινοµητή τύπου TF-IDF και ειδικότερα έναν αλγόριθµο k Nearest Neighbor µε χρήση TF-IDF βαρών [58] ο οποίος έχει τροποποιηθεί ώστε να υποστηρίζει αυξανόµενη γνώση και αναπαράσταση bag-of-words χρησιµοποιώντας τις συχνότητες των λέξεων στο µήνυµα σαν βάρη. Κάθε φάκελος F αναπαρίσταται από ένα κεντροειδή διάνυσµα το οποίο υπολογίζεται λαµβάνοντας υπόψη όλα τα µηνύµατα του φακέλου. Κατόπιν, υπολογίζεται η οµοιότητα µεταξύ του διανύσµατος και ενός καινούριου µηνύµατος και το σύστηµα προτείνει τους τρεις πιθανούς φακέλους. Τα κεντροειδή κάθε φακέλου ξαναυπολογίζονται µετά από µία νέα ταξινόµηση. 36
Άλλες ενδιαφέρουσες εφαρµογές λογισµικού είναι το EMMA[22] το οποίο χρησι- µοποιεί πολλαπλή ταξινόµηση Ripple Down Rules [70] και το emailsift [71] το οποίο χρησιµοποιεί µια προσέγγιση based mining γραφήµατος. Παρόλα αυτά απαιτείται ακόµη η συµµετοχή των χρηστών στο να αποφασίσουν και να δηµιουργήσουν τα θέµατα των φακέλων για την ταξινόµηση. Αυτό το βήµα θα µπορούσε να αποφευχθεί χρησιµοποιώντας την οµαδοποίηση των µηνυµάτων. Για παράδειγµα, ένας προσωπικός email browser δηµιουργείται ανακαλύπτοντας τις οµάδες µηνυµάτων στο inbox του χρήστη. Στη συνέχεια, αφού αναλυθούν τα µηνύµατα, διαλέγεται µία φράση η οποία αντιπροσωπεύει το περιεχόµενο των φακέλων και η οποία θα βοηθήσει ώστε να ονοµατιστεί ο φάκελος µε µία λέξη κλειδί. Χρησιµοποιούνται διανύσµατα TF-IDF για να αναπαρασταθούν τα µηνύµατα και ο αλγόριθµος K-Means για την οµαδοποίηση. Ο Manco et al. [38] εξέτασε τα ίδιο πρόβληµα, λαµβάνοντας υπόψη τις οµοιότητες δοµηµένων και µη δοµηµένων κοµµατιών ενός ηλεκτρονικού µηνύµατος. 37
4 Η πλατφόρµα Mozilla Η πλατφόρµα του Mozilla είναι ισχυρό εργαλείο ανάπτυξης λογισµικού το οποίο αποτελεί έναν συνδυασµό από έγγραφα XML, scripting γλώσσες και αντικείµενα λογισµικού. Χρησιµοποιείται κυρίως για να δηµιουργηθούν εφαρµογές οι οποίες αλληλεπιδρούν και στηρίζονται στον χρήστη. Η πλατφόρµα του ενθαρρύνει ένα συγκεκριµένο στυλ ανάπτυξης, το rapid application development ( RAD ). Με τη βοήθεια του RAD οι προγραµµατιστές στηρίζουν τις εφαρµογές τους σε ένα εργαλείο ανάπτυξης το οποίο περιέχει ήδη υπάρχουσες λειτουργικότητες. Με ένα τέτοιο εργαλείο όπως είναι ο Mozilla οι διάφορες εργασίες µπορούν να ολοκληρωθούν σε σύντοµο χρονικό διάστη- µα. 4.1 Η διεπαφή του Mozilla Η διεπαφή (interface) του mozilla αποτελείται από αρχεία XUL, XBL, JavaSsript, CSS καθώς και από αρχεία εικόνων. Τα αρχεία XUL, XBL, JavaScript όπως και το CSS βρίσκονται σε µορφή κειµένου και µπορούν να δηµιουργηθούν µε ένα απλό text editor, ενώ τα αρχεία εικόνων είναι σε δυαδική GIF, JPG ή PNG µορφή και µπορούν να επεξεργαστούν µε ένα πρόγραµµα εικόνων. Στη συνέχεια τα αρχεία αυτά οργανώνονται σε ένα σύνολο από JAR αρχεία. Τα JAR αρχεία δεν είναι τίποτα άλλο από ZIP αρχεία τα οποία περιέχουν ένα ειδικά φορ- µαρισµένο manifest φάκελο. Μέσα στον φάκελο αυτό βρίσκονται τα περιεχόµενα κάθε αρχείου ώστε να έχει την δυνατότητα ο Mozilla να γνωρίζει το τι πραγµατοποιεί το κάθε αρχείο. Παρόλο που τα JAR αρχεία είναι δυαδικοί φάκελοι, η διεπαφή χρήστη του Mozilla δεν µεταγλωττίζεται σε κώδικα µηχανής. Αντί για αυτό, ο Mozilla δηµιουργεί τη δικιά του διεπαφή χρήστη από τους µη µεταγλωττιζόµενους φακέλους µέσα στο αρχείο κάθε φορά που ξεκινάει η λειτουργία. Εξαιτίας αυτού του γεγονότος, µπορούµε να τροποποιήσουµε τους φακέλους µέσα στο αρχείο και έπειτα να δούµε µερικά τις αλλαγές µας στην διεπαφή του χρήστη απλά µε επανεκκίνηση της εφαρµογής. Αυτό δίνει την δυνατότητα στην διεπαφή του Mozilla να είναι πολύ εύκολα τροποποιήσιµη. 39
Η διεπαφή χρήστη του Mozilla χωρίζεται σε τρία επίπεδα: τη δοµή, τη µορφή και τη συµπεριφορά. Το επίπεδο της δοµής αναγνωρίζει τα χαρακτηριστικά όπως το µενού, τα κουµπιά κ.τ.λ. και τη θέση τους στην διεπαφή. Το επίπεδο της µορφής καθορίζει πως τα χαρακτηριστικά αυτά θα δείχνουν δηλαδή το µέγεθος, το χρώµα, το στυλ και την γενική τους θέση και παράταξη. Το επίπεδο της συµπεριφοράς φανερώνει το πώς τα χαρακτηριστικά αυτά θα λειτουργούν και πως ο χρήστης θα µπορεί να τα χρησιµοποιήσει για να πετύχει τους σκοπούς του. Και τα τρία επίπεδα δεν είναι τελείως ξεχωριστά το ένα από το άλλο. Συγκεκριµένα, πληροφορίες για τη θέση των χαρακτηριστικών µπορούν να καθοριστούν και στο επίπεδο της δοµής και στο επίπεδο της µορφής, ενώ πληροφορίες για τη συµπεριφορά µπορούν να δηλωθούν στο επίπεδο της µορφής. [5] 4.1.1 XPCOM To Cross Platform Component Object Model ( XPCOM ) είναι µία απλή πλατφόρµα η οποία διασταυρώνει διαφορετικά µοντέλα. Περιέχει συνδυασµούς διαφορετικών γλωσσών προγραµµατισµού (language bindings) και IDL ( Interface Description Language ) περιγραφές έτσι ώστε οι προγραµµατιστές να έχουν τη δυνατότητα να συνδέσουν ένα δικό τους προϊόν µε άλλα στοιχεία. Μια XPCOM language binding θεωρείται ως η «γέφυρα» ανάµεσα σε µία συγκεκριµένη γλώσσα και στο XPCOM για να επιτευχθούν δύο στόχοι: Πρόσβαση στα αντικείµενα XPCOM από την συγκεκριµένη γλώσσα. Με τον όρο πρόσβαση εννοούµε την ανάγνωση, την εγγραφή και την δηµιουργία αντικειµένων όπως επίσης και την δυνατότητα να καλούνται διάφορες µέθοδοι. Εκθέτει διάφορα modules τα οποία έχουν γραφτεί και έτσι µπορούν όλες οι άλλες γλώσσες να τα χρησιµοποιήσουν. Εφόσον, το επίπεδο XPCOM έχει γραφτεί σε C/C++ το API του µπορεί να προσπελαστεί µόνο από αυτές τις γλώσσες. Για να έχουν πρόσβαση στο API όλες οι άλλες γλώσσες θα πρέπει να δηµιουργηθούν άλλες µέθοδοι. Τέτοιες µέθοδοι υπάρχουν για διάφορες γλώσσες όπως: Java : JavaXPCOM JavaScript : XPConnect Perl : PlXPCOM Python : PyXPCOM 40
Ruby : RbXPCOM Το XPIDL είναι µία γλώσσα περιγραφής διεπαφής ( Interface Description Language ) η οποία χρησιµοποιείται για να καθορίσει τις κλάσεις XPCOM της διεπαφής. Το IDL ξεχωρίζει ποιες διεπαφές µπορούν να επεξεργαστούν από εργαλεία έτσι ώστε να δηµιουργηθούν ανάλογες διεπαφές οι οποίες θα σχετίζονται µε την κάθε γλώσσα. Ένα από αυτά τα εργαλεία είναι το xpidl το οποίο βοηθάει στη δηµιουργία: C++ header files (.h ) τα οποία περιλαµβάνουν µια φόρµα υλοποίησης της C++ για τη διεπαφή XPConnect typelib φακέλους (.xpt) οι οποίοι περιέχουν πληροφορίες για όλα τα αντικείµενα XPCOM φακέλους για την Java (.java ) τεκµηρίωση (documentation) σε µορφή HTML (.html ) [5,6] 4.1.2 XPCOM Objects Η πλατφόρµα του Mozilla θεωρείται ως η βάση για να δηµιουργηθούν εφαρµογές λογισµικού και περιέχει µία βιβλιοθήκη αντικειµένων αποτελούµενη από χιλιάδες αντικεί- µενα ( objects ), πολλά από τα οποία δεν σχετίζονται µε την διεπαφή του χρήστη. Η βιβλιοθήκη αυτή περιέχει κυρίως XPCOM στοιχεία. Χωρίς τα στοιχεία αυτά οποιαδήποτε εφαρµογή του χρήστη «παγιδεύεται» µόνο σε ένα έγγραφο XML, το οποίο µπορεί να είναι της µορφής HTML ή XUL. Μέσα σε ένα τέτοιο έγγραφο οι µηχανισµοί URL, HTTP, SOAP και WSDL είναι οι µόνοι που δεν υποστηρίζονται. Τα στοιχεία XPCOM είναι αυτά που παρέχουν όλη την υποστήριξη για τα δίκτυα, τις βάσεις δεδοµένων, τα αρχεία και τις διάφορες διεργασίες. Επιπλέον, είναι διαθέσιµα σε όλες τις πλατφόρµες στις οποίες εκτελείται ο Mozilla και µπορούν να προσπελαστούν µε ελάχιστες εξαιρέσεις. Τα στοιχεία XPCOM του Mozilla είναι παρόµοια µε τις βιβλιοθήκες 3GL (third Generation Language) και OO (Object Oriented). Όπως οι γλώσσες C++ και Java υποστηρίζουν τη συνεχή ροή δεδοµένων και όπως η C, η Perl και πολλές άλλες στηρίζονται στους φακέλους, το ίδιο συµβαίνει και µε τον Mozilla. O Mozilla περιέχει ένα σύνολο από χαµηλού επιπέδου αντικείµενα, ένα σύνολο από µεσαίου επιπέδου αντικείµενα και µερικά υψηλού επιπέδου τα οποία είναι αποκλειστικά για εφαρµογές. Η πλατφόρµα του είχε αρχικά σχεδιαστεί για να υποστηρίξει µια εφαρµογή Web browser και δεν παρου- 41
σίαζε την επεκτασιµότητα και την σχεδίαση γενικού σκοπού που συναντάµε στις βιβλιοθήκες Java. Ο αριθµός των αντικειµένων του Mozilla είναι σηµαντικά µεγάλος και πλησιάζει το µέγεθος της Perl βιβλιοθήκης. Ένα δεύτερο χαρακτηριστικό των αντικειµένων είναι ότι είναι δίκτυο-κεντρικά. Ο Navigator, ο Messenger και οι εφαρµογές Chat είναι όλες Internet clients που αλληλεπιδρούνε µε servers και αυτό αντικατοπτρίζεται στη βιβλιοθήκη αντικειµένων. Μερικές απλές εφαρµογές, όπως το φόρτωµα ενός φακέλου, γίνονται πολύπλοκες γιατί ο φάκελος µπορεί να βρίσκεται σε οποιοδήποτε σηµείο του κόσµου. Αυτό σίγουρα επηρεάζει τις διεπιφάνειες που χρησιµοποιούνται οι οποίες περιορίζονται από το σύστηµα ασφάλειας του Mozilla. Εάν µία εφαρµογή δεν είναι ένας Web browser, ένας email client ή ένα σύστηµα XML, τότε τα αντικείµενα του Mozilla πάλι θα είναι χρήσιµα, απλά µερικά πολύ εξειδικευµένα µπορεί και να µην χρησιµοποιηθούν καθόλου. Από την άλλη µεριά, εάν µία εφαρµογή περιέχει λειτουργίες που σχετίζονται µε έναν browser, τότε τα συγκεκριµένα αντικείµενα έχουν τη δυνατότητα να βελτιώσουνε τις διεργασίες. [5] 4.1.3 Modular Προγραµµατισµός Η πλατφόρµα του Mozilla χωρίζει την τεχνολογία σε κοµµάτια µε διάφορους τρόπους και σχεδόν κάθε κοµµάτι του λογισµικού χρησιµοποιείται από τον Mozilla. Τα κοµµάτια αυτά είναι : Binding : το binding είναι µια διεπαφή η οποία δηµιουργείται µε µία συγκεκρι- µένη γλώσσα προγραµµατισµού. Class : οι µόνες κλάσεις στον Mozilla είναι οι κλάσεις του XPCOM. Component : ένα component είναι ένα στοιχείο µε µοναδική ταυτότητα στο σύστηµα XPCOM. Interface : ένα interface είναι ένα σύνολο από στοιχεία πρόσβασης σε ένα αντικείµενο. Τα XPCOM interfaces είναι τα µόνα interfaces στον Mozilla. Κάθε XPCOM αντικείµενο και κάθε XBL binding υλοποιούν ένα ή περισσότερα XPCOM interfaces. Επίσης και τα αντικείµενα Javascript µπορούν να δηµιουργήσουν τέτοια interfaces. Library : η πλατφόρµα του Mozilla έχει ένα µεγάλο αριθµό από δυναµικά ενεργές βιβλιοθήκες, παρόλα αυτά δεν χρησιµοποιούνται σε µεγάλο βαθµό από τους προγραµµατιστές. Τα Javascript scripts µπορούν να χρησιµοποιηθούν σαν βι- 42
βλιοθήκες. Όταν η πλατφόρµα µεταγλωττίζεται, δηµιουργούνται αυτόµατα φάκελοι δεδοµένων τα οποία είναι τύποι βιβλιοθήκης. Αυτοί οι φάκελοι χρησιµοποιούνται από το XPConnect και καθορίζουν XPCOM interfaces ( π.χ οι JavaScript βιβλιοθήκες). Module : τα XPCOM components οµαδοποιούνται σε modules. Object : o Mozilla περιέχει XPCOM objects και Javascript objects ( αντικείµενα). Ένα XPCOM object είναι µιας συγκεκριµένης κλάσης και υλοποιεί ένα ή περισσότερα interfaces. Package : το package είναι µία οµάδα από σχετικούς µεταξύ τους φακέλους οι οποίοι εγκαθίστανται στο chrome του Mozilla (π.χ. το package content). Prototype : είναι ένα Javascript object το οποίο θεωρείται ως η βάση για να δη- µιουργηθεί ένα νέο Javascript object. [5,6] 4.1.4 Άλλα συστήµατα Το XPCOM σύστηµα δίνει Javascript πρόσβαση και σε άλλα προγραµµατιστικά περιβάλλοντα, τα οποία παρουσιάζουν διαφορετικά χαρακτηριστικά. Έτσι, είτε αυτά τα χαρακτηριστικά για να χρησιµοποιηθούν από τον Mozilla θα πρέπει να µετατραπούν σε Javascript τύπους είτε θα πρέπει να παρέχουν κάποια χρήσιµη διεπαφή. Υπάρχουν πέντε «ξένα» συστήµατα στον Mozilla στα οποία η γλώσσα Javascript έχει πρόσβαση : Τα fundamental platform types τα οποία υλοποιούνται από την NSPR ( Netscape Portable Runtime ). Αυτοί είναι τύποι C/C++ µε την βοήθεια των οποίων έχει δοµηθεί η πλατφόρµα. Η NSPR παρέχει µια ουδέτερη πλατφόρµα API και βιβλιοθήκες σε µορφή συναρτήσεων. Το API χρησιµοποιείται από τον Mozilla client και από άλλα λειτουργικά συστήµατα. Τα RDF data types. Είναι τύποι που ο Mozilla αναγνωρίζει σε RDF αρχεία. Τα XML schema data types. Ο Mozilla έχει τη δυνατότητα να αναλύσει φακέλους που έχουν αυτή τη δοµή και µπορεί να αναγνωρίσει τους διάφορους τύπους που περιλαµβάνουν αυτοί οι φάκελοι. Τα XML RPC/XDR (Remote Procedure Call/ External Data Representation). Το RPC- over- XML πρωτόκολλο δικτύου υποστηρίζεται από τον Mozilla, το οποίο περιλαµβάνει ανεξάρτητους XDR τύπους δεδοµένων. 43
Java. Ένα Java JVM µπορεί να εκτελεστεί ως ένα plugin της πλατφόρµας του Mozilla σε αντικείµενα τύπου Java. [6] 4.2 Η γλώσσα XUL Η γλώσσα XUL ( XML User-interface Language ) είναι µία πλατφόρµα όπου βοηθάει στην περιγραφή της διεπαφής χρήστη διαφόρων εφαρµογών. ηµιουργήθηκε για να βοηθήσει στην ευκολότερη και γρηγορότερη ανάπτυξη του Mozilla browser. Είναι µία γλώσσα XML και έτσι όλα τα χαρακτηριστικά που διακρίνουν την XML τα συναντάµε και στην XUL. Χρειάζεται αρκετός χρόνος για να δηµιουργηθεί µία εφαρµογή έστω και για µία µόνο πλατφόρµα. Ο χρόνος που απαιτείται για να µεταγλωττιστεί και να αποσφαλµατωθεί µπορεί να είναι ακόµη µεγαλύτερος. Η XUL είναι µία γλώσσα που σχεδιάστηκε ειδικά για να συµβάλει στην δηµιουργία φορητών διεπαφών χρήστη αφού µία διεπαφή µπορεί να υλοποιηθεί και τροποποιηθεί ευκολότερα και γρηγορότερα. Η XUL παρέχει την δυνατότητα να δηµιουργηθούν στοιχεία τα οποία τα συναντάµε σε µοντέρνες διεπαφές γραφικών. Τα στοιχεία αυτά µπορεί να είναι : Textboxes και checkboxes Toolbars µε κουµπιά και άλλα περιεχόµενα Μενού σε ένα menu bar ή pop up menus Tabbed dialogs έντρα για ιεραρχική ή πινακοειδή πληροφορία Συντοµεύσεις πληκτρολογίου Υπάρχουν διάφοροι τρόποι µε τους οποίους δηµιουργούνται εφαρµογές XUL : Firefox extension ένα extension προσθέτει λειτουργικότητα στον browser, συχνά µε τη µορφή επιπλέον toolbars, µενού περιεχοµένων ή δηµιουργώντας διεπαφές χρήστη οι οποίες προσαρµόζονται στην διεπαφή χρήστη του browser. Αυτό επιτυγχάνεται χρησιµοποιώντας ένα χαρακτηριστικό από την XUL, το overlay το οποίο επιτρέπει σε µία διεπαφή χρήστη η οποία παρέχεται από µία πηγή, στην συγκεκριµένη περίπτωση από τον Firefox browser, να ενώνεται µε την διεπαφή χρήστη του extension. Τα extensions είναι επίσης συµβατά µε άλλα προϊόντα που βασίζονται στον Mozilla όπως το Thunderbird. 44
Standalone XULRunner application XULRunner είναι µία έκδοση της πλατφόρµας του Mozilla η οποία δηµιουργεί εφαρµογές standalone XUL. εν απαιτείται browser για να λειτουργήσουν αυτές οι εφαρµογές καθώς έ- χουν το δικό τους εκτελέσιµο αρχείο. XUL package είναι εφαρµογές οι οποίες δηµιουργούνται µε τον ίδιο τρόπο όπως ένα extension αλλά ενεργούν σαν µια ξεχωριστή εφαρµογή σε ένα ξεχωριστό παράθυρο. Χρησιµοποιούνται όταν δεν απαιτείται το µέγιστο µέγεθος ολόκληρης της XULRunner εφαρµογής. Remote XUL application µπορούµε επίσης να τοποθετήσουµε κώδικα XUL σε έναν web browser και να το ανοίξουµε σε έναν άλλο browser όπως θα κάναµε µε µία web σελίδα. Παρόλα αυτά, αυτή η µέθοδος είναι περιορισµένη σε χρήση αφού εµφανίζονται διάφορα προβλήµατα ασφάλειας τα ο- ποία δεν µας επιτρέπουν να εκτελέσουµε πολλές εφαρµογές. Οι τρεις πρώτοι τύποι απαιτούν να πραγµατοποιηθεί µια εγκατάσταση στην µηχανή του χρήστη. Ωστόσο, αυτές οι εφαρµογές δεν έχουν περιορισµούς α- σφαλείας και έτσι µπορούν να έχουν πρόσβαση σε τοπικούς φακέλους και να γράψουν προτιµήσεις (preferences). Για τα extensions οι φάκελοι XUL, τα σχετικά scripts και οι εικόνες που χρησιµοποιούνται σε µία εφαρµογή πακετάρονται σε έναν φάκελο και εγκαθίστανται από τον χρήστη. Οι εφαρµογές του Mozilla παρέχουν έναν extension manager ο οποίος επιτρέπει στα πακέτα να εγκαθίστανται χωρίς να απαιτείται πολύπλοκος κώδικας. Επίσης, υπάρχει η δυνατότητα να ανοίξουµε τους φακέλους XUL απευθείας από το σύστηµα αρχείων ή από ένα αποµακρυσµένο web site. Ωστόσο, το είδος των λειτουργών που θα εκτελούνται θα είναι περιορισµένο και µερικές εφαρµογές δεν θα είναι διαθέσιµες. [7] 4.3 Τα αρχεία RDF Το RDF ( Resource Description Framework ) είναι ένα format το οποίο χρησιµοποιείται για να αποθηκεύονται διάφορες πηγές όπως bookmarks ή το ηλεκτρονικό ταχυδροµείο. Εναλλακτικά, δεδοµένα σε άλλα formats µπορούν να χρησιµοποιηθούν και να γραφτεί κώδικας ο οποίος θα διαβάζει το αρχείο και θα δηµιουργούνται δεδοµένα RDF από αυτόν. Αυτός είναι ο τρόπος που ο Mozilla λειτουργεί όταν διαβάζει δεδοµένα ό- 45
πως bookmarks, ιστορικά ή mail messages. Ο Mozilla παρέχει datasources για αυτά τα απλά δεδοµένα κι έτσι είναι πολύ εύκολο να χρησιµοποιηθούν. Ο Mozilla χρησιµοποιεί τα RDF για να εκτελέσει λειτουργίες όπως : Επιλογές του χρήστη για τα παράθυρα και τη σχετική τους θέση. Περιεχόµενα του Mozilla sidebar. Manifest φακέλους για τα αρχεία JAR, τα πακέτα chrome, locale και skin. Βάσεις δεδοµένων για τις εφαρµογές διεπαφής. Τύπους αναζήτησης για το Smart Browsing Navigator. Αναζήτηση και έλεγχο καταστάσεων του DOM Inspector. Τον Download Manager. Τύπους MIME ( Multipurpose Internet Mail Extensions ). Η υποδοµή του Mozilla χρησιµοποιεί τα δεδοµένα RDF σε ένα µεγάλο πλήθος διεργασιών χωρίς να χρειάζεται απαραίτητα να διαβάζει τα δεδοµένα κάθε φορά από τα έγγραφα RDF. Επίσης, έχει την δυνατότητα να µετατρέψει µια πηγή που δεν είναι σε αυτή την µορφή σε RDF αρχείο για εσωτερική χρήση. Τα µέρη του συστήµατος στα οποία το RDF µοντέλο έχει µεγάλη σηµασία είναι : Το σύστηµα XUL Overlay. Το σύστηµα XUL Template. Αρχεία και φακέλους στο τοπικό σύστηµα φακέλων. Bookmarks. Ιστορικό των ιστοσελίδων πλοήγησης. Πρόσφατα χρησιµοποιούµενα παράθυρα. Email φακέλους. Τα µηνύµατα των φακέλων. Παράδοση SMTP µηνυµάτων. Λογαριασµούς email και Newsgroup. Ήχους που σχετίζονται µε την άφιξη µηνυµάτων. Το address book. To Mozilla registry. 46
Υπάρχουν και διεργασίες οι οποίες δεν χρησιµοποιούν τα αρχεία RDF όπως οι βάσεις δεδοµένων των newsgroups ή των επικεφαλίδων τους, οι βάσεις δεδοµένων των email φακέλων και η µόνιµη αποθήκευση των συνδέσεων του Internet. Μπορούν να χρησιµοποιηθούν οποιαδήποτε από τα παρεχόµενα RDF datasources για να εισάγουµε δεδοµένα στα δέντρα ή µπορούµε να χρησιµοποιήσουµε έναν φάκελο RDF ο οποίος είναι αποθηκευµένος σε XML και περιέχει δεδοµένα. Έτσι είναι δυνατόν να δηµιουργηθούν δέντρα µε πολλές σειρές σε αυτά. Τα RDF µπορούν επίσης να σχετίζονται µε άλλα XUL στοιχεία όπως listboxes και διάφορα µενού. Το RDF αποτελείται από ένα µοντέλο το οποίο είναι γραφική απεικόνιση δεδοµένων. Η RDF/ XML είναι µία γλώσσα XML η οποία χρησιµοποιείται για να απεικονίσει τα δεδοµένα RDF και η οποία περιέχει µία απλή οµάδα στοιχείων. [5,6,7] 4.4 Το λογισµικό Thunderbird Το thunderbird είναι µια πλήρης εφαρµογή για το ηλεκτρονικού ταχυδροµείο, εύκολη στη χρήση, δυναµική η οποία µπορεί να προσαρµοστεί εύκολα στις απαιτήσεις του χρήστη. Υποστηρίζει τα πρωτόκολλα IMAP και POP καθώς και τη µορφή HTML και ο κάθε χρήστης µπορεί πολύ εύκολα να εισάγει τους ήδη υπάρχοντες λογαριασµούς ηλεκτρονικού ταχυδροµείου και τα µηνύµατά του. Μερικά από τα χαρακτηριστικά του είναι η γρήγορη και εύκολη αναζήτηση, ο έλεγχος της ορθογραφίας κατά τη διάρκεια της πληκτρολόγησης, το φιλτράρισµα των µηνυµάτων, η διαγραφή των attachments. Κάθε ηλεκτρονικό µήνυµα που λαµβάνει ο χρήστης περνάει από τα ειδικά δια- µορφωµένα junk mail φίλτρα του Thunderbird. Κάθε φορά που ένα µήνυµα µαρκάρεται ως spam, το Thunderbird βελτιώνει το φιλτράρισµά του έτσι ώστε να δίνεται περισσότερη έµφαση στην ανάγνωση των πιο σηµαντικών µηνυµάτων. Επιπρόσθετα, το thunderbird προστατεύει τους χρήστες από τα συνηθισµένα παραπλανητικά µηνύµατα email scams (απάτη) γνωστά και ως «phishing» τα οποία προ- 47
σπαθούν να τους ξεγελάσουν εκµαιεύοντας προσωπικές πληροφορίες και πληροφορίες σχετικές µε διάφορους κωδικούς ασφαλείας. Αυτό που κάνει είναι να ενηµερώνει τον κάθε χρήστη κάθε φορά που θεωρεί πως ένα µήνυµα είναι scam. Επίσης, παρέχει αυξη- µένη ασφάλεια αφού περιλαµβάνει χαρακτηριστικά όπως S/MIME, ψηφιακές υπογραφές, κρυπτογράφηση µηνυµάτων. Ακόµη, τα διάφορα attachments ποτέ δεν εκτελούνται χωρίς την συγκατάθεση του χρήστη, προστατεύοντάς τον έτσι από πολλούς ιούς. Ένα από τα θετικά στοιχεία του thunderbird είναι ότι φορτώνει αυτόµατα πρόσφατες ενηµερώσεις για την ασφάλεια του συστήµατος και για τα διάφορα χαρακτηριστικά του και ειδοποιεί τους χρήστες πότε είναι έτοιµες να εγκατασταθούν. Επίσης, µε τα διάφορα extension που υπάρχουν µπορεί ο κάθε χρήστης να προσθέσει καινούρια κου- µπιά στο toolbar, να του προσδώσει νέα χαρακτηριστικά ή να αλλάξει την εµφάνιση του browser. Με αυτόν τον τρόπο ο κάθε χρήστης καθορίζει την όψη και τη λειτουργικότητα του thunderbird. [8,9,44,45,46] Παρακάτω παρουσιάζεται µια εικόνα της διεπαφής χρήστη του thunderbird. Εικόνα 3. ιεπαφή χρήστη του Thunderbird 48
5 Extensions Τα extensions είναι µικρές επιπροσθέσεις οι οποίες προσδίδουν καλύτερη και νέα λειτουργικότητα σε εφαρµογές Mozilla. Μπορούν να προσθέσουν οτιδήποτε, από ένα α- πλό κουµπί στην εργαλειοθήκη έως και ένα εντελώς διαφορετικό χαρακτηριστικό. Επιπλέον, δίνουν στις εφαρµογές την δυνατότητα να τροποποιηθούν ώστε να ταιριάζουν στις προσωπικές ανάγκες του κάθε χρήστη ενώ καθιστούν την ίδια την εφαρµογή να έχει το µικρότερο δυνατό µέγεθος. Ένα από τα µεγαλύτερα πλεονεκτήµατα των extensions είναι ότι δεν χρειάζεται ο χρήστης να είναι ειδικός και να έχει πολλές γνώσεις για το πώς ολόκληρο το προϊόν είναι σχεδιασµένο ώστε να συντάξει από µόνος του ο ίδιος ένα απλό. 5.1.1 Ο Mozilla Thunderbird και τα extensions Το thunderbird εγκαθίστανται χωρίς κάποιο extension. Η εγκατάσταση ενός extension γίνεται σχετικά εύκολα. Ο χρήστης, από το κεντρικό παράθυρο του thunderbird, επιλέγει Tools>Extensions και εµφανίζεται από εκεί το Extensions dialog. Εικόνα 4.Η εγκατάσταση ενός extension Μερικά extensions δεν υποστηρίζουν όλες τις εκδόσεις του thunderbird. Παρόλα αυτά δεν είναι επικίνδυνο να εγκατασταθεί ένα τέτοιο extension. [9,45] 49
5.2 ηµιουργία ενός extension Τα extensions πακετάρονται και διανέµονται σε φακέλους ZIP έχοντας ως κατάληξη στην ονοµασία φακέλου το xpi. Η µορφή του περιεχοµένου σε έναν xpi φάκελο είναι η εξής : extension.xpi : / install.rdf / components/* / components/ cmdline.js / defaults/* / defaults/ preferences/*.js / plugins/* / chrome.manifest / chrome/ icons/ default/* / chrome/* / chrome/ content/ Αν και όπως φαίνεται από την παραπάνω δοµή υπάρχει ένα πλήθος αρχείων, οι προγραµµατιστές συνήθως δηµιουργούν µόνο τα αρχεία install.rdf, chrome.manifest και τον φάκελο chrome µε τα συστατικά του. Κι αυτό γιατί όλα τα υπόλοιπα αρχεία πραγ- µατοποιούν πιο εξειδικευµένες και πολύπλοκες λειτουργίες οι οποίες στα απλά extensions δεν είναι ιδιαίτερα χρήσιµες. Αρχικά, δηµιουργούµε κάπου στον σκληρό δίσκο έναν φάκελο για το extension που θα δηµιουργήσουµε. Για παράδειγµα : C : \ extensions \ myextension \ Μέσα σε αυτόν τον φάκελο δηµιουργούµε έναν καινούριο ο οποίος ονοµάζεται chrome και στη συνέχεια µέσα στον φάκελο chrome δηµιουργούµε έναν άλλον ο οποίος λέγεται content. Μέσα στον myextension φάκελο και παραλλήλως του φακέλου chrome δηµιουργούµε δύο νέα άδεια αρχεία κειµένου. Το ένα θα ονοµαστεί chrome.manifest και το άλλο θα ονοµαστεί install.rdf. [10] 50
+- myextension/ +-install.rdf +-chrome.manifest +-chrome/ +-content/ 5.2.1 Τα πακέτα (packages) και τα αρχεία manifest Ένα package είναι ένα σύνολο από XUL αρχεία και scripts τα οποία καθορίζουν την λειτουργικότητα µιας διεπαφής χρήστη. Τα πακέτα µπορεί να εγκαθίστανται στον Mozilla και να αναφέρονται µε chrome URLs. Επίσης µπορεί να περιέχουν οποιοδήποτε είδος φακέλων και µπορούν να χωριστούν σε subdirectories. Ένα πακέτο αποθηκεύεται είτε σαν ένα directory είτε σαν ένα αρχείο JAR. Ένας φάκελος manifest περιγράφει ένα πακέτο και φανερώνει την τοποθεσία του στον δίσκο σε ένα chrome URL. Οι φάκελοι αυτοί στο chrome directory εξετάζονται όταν ξεκινάει µια εφαρµογή του Mozilla για να εξακριβωθεί τι πακέτα έχουν εγκατασταθεί. Αυτό που απαιτείται για να εγκατασταθεί ένα νέο πακέτο είναι να προστεθεί ένας νέος φάκελος manifest είτε στο chrome directory της εφαρµογής είτε στο συγκεκριµένο chrome directory του χρήστη. Αυτό είναι και το chrome directory το οποίο χρησιµοποιείται συνήθως. [9,11] 5.2.2 Το αρχείο chrome Το chrome αρχείο είναι τα µέρη µιας εφαρµογής που αποτελούν το παράθυρο στην επιφάνεια του χρήστη. Οι εργαλειοθήκες, η γραµµή του µενού, τα progress bars είναι όλα παραδείγµατα στοιχείων που είναι µέρη του chrome. Οι φάκελοι XUL µπορούν να αναφερθούν σαν HTTP URL όπως οι φάκελοι HTML. Ωστόσο, τα πακέτα που εγκαθίστανται στο chrome του Mozilla αναφέρονται ως chrome URLs. Η βασική σύνταξη ενός chrome είναι η ακόλουθη: chrome : // < package name > / < part > / < file. xul > 51
Το <package name > είναι το όνοµα του πακέτου όπως messenger ή editor. Το < part > είναι είτε content, είτε skin, είτε locale και εξαρτάται από πιο µέρος θέλουµε. Το file.xul είναι απλά το όνοµα του αρχείου. 5.2.3 Το πακέτο content Το πακέτο αυτό σχετίζεται µε τα παράθυρα και τα έγγραφα. Οι δηλώσεις για τα παράθυρα και τα στοιχεία της διεπαφής του χρήστη περιέχονται σε αυτό. Είναι αποθηκευµένα σε XUL φακέλους οι οποίοι έχουν την κατάληξη xul. Ένα τέτοιο πακέτο µπορεί να περιέχει πολλούς xul φακέλους αλλά το κυρίως παράθυρο θα πρέπει να έχει ένα αρχείο µε το ίδιο όνοµα όπως αυτό του πακέτου. Για παράδειγµα, το πακέτο του συντάκτη (editor ) θα πρέπει να έχει έναν φάκελο µέσα ο οποίος θα ονοµάζεται editor.xul. Τα έγγραφα τοποθετούνται σε ξεχωριστούς φακέλους µέσα στα αρχεία XUL. Μέσα στο πακέτο content υπάρχουν επίσης και ένα ή περισσότερα αρχεία.js της γλώσσας Javascript. Τα αρχεία αυτά τα οποία συνδέονται µε τα αρχεία XUL, περιέχουν τον εκτελέσιµο κώδικα του extension. Παρόλα αυτά, πολλές φορές οι προγραµµατιστές παραλείπουν να δηµιουργήσουν αρχεία.js και εισάγουν κατευθείαν τον κώδικα στα αρχεία της XUL. Με αυτόν τον τρόπο µπορεί να εξοικονοµούν προγραµµατιστικό χρόνο αλλά η µέθοδος αυτή κάνει πιο δυσκολονόητο τον κώδικα ενός extension και είναι κάτι που δεν συνίσταται. Επιπρόσθετα, το πακέτο αυτό περιέχει και ένα ακόµη αρχείο, το αρχείο contents.rdf. Είναι το αρχείο το οποίο ενηµερώνει τον browser για το που θα αποθηκεύσει τις πληροφορίες για το overlay και έχει την παρακάτω µορφή: <?xml version="1.0"?> <RDF:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:chrome="http://www.mozilla.org/rdf/chrome#"> <RDF:Seq RDF:about="urn:mozilla:package:root"> <RDF:li RDF:resource="urn:mozilla:package:---"/> </RDF:Seq> <RDF:Seq RDF:about="urn:mozilla:overlays"> 52
<RDF:li RDF:resource="chrome://browser/content/browser.xul"/> <RDF:li RDF:resource="chrome://navigator/content/navigator.xul"/> </RDF:Seq> <RDF:Seq RDF:about="chrome://browser/content/browser.xul"> <RDF:li>chrome://---/content/---Overlay.xul</RDF:li> </RDF:Seq> <RDF:Seq about="chrome://navigator/content/navigator.xul"> <RDF:li>chrome://---/content/---Overlay.xul</RDF:li> </RDF:Seq> <RDF:Description RDF:about="urn:mozilla:package:---" chrome:displayname="###" chrome:author="&&&" chrome:authorurl="***.com" chrome:name="---" chrome:extension="true" chrome:description="%%%%"> </RDF:Description> </RDF:RDF> Στα σηµεία --- εισάγεται το όνοµα του extension. Στο σηµείο ### εισάγεται το όνοµα που θα θέλουµε να εµφανίζεται στα στοιχεία του extension. Στο σηµείο &&& εισάγεται το όνοµα του δηµιουργού του extension. Το σηµείο ***.com είναι προαιρετικό και µπαίνει η διεύθυνση του extension στο internet. 53
Στο σηµείο %%% εισάγεται µια σύντοµη περιγραφή της λειτουργίας του extension. Όλα τα υπόλοιπα µέρη του κώδικα παραµένουν ίδια. [9,10,11] Tο όνοµα ενός αρχείου JAR µπορεί να περιγράφει τι περιέχει, αλλά ο χρήστης δεν µπορεί να είναι σίγουρος εάν δεν κοιτάξει το πακέτο content. Για παράδειγµα, ένα πακέτο content µπορεί να έχει την παρακάτω δοµή: Content browser browser.xul browser.js other mail XUL and JS files bookmarks bookmarks files preferences preferences files 5.2.4 Το πακέτο skin Το πακέτο αυτό περιέχει πληροφορίες για τα style sheets και για τα αρχεία εικόνων. Τα style sheets περιγράφουν τις λεπτοµέρειες της εµφάνισης ενός παραθύρου και αποθηκεύονται ξεχωριστά από τα XUL αρχεία για να διευκολύνουν την τροποποίηση µιας εφαρµογής. Επίσης εδώ αποθηκεύονται και όσες εικόνες χρησιµοποιούνται. Ο Mozilla αναγνωρίζει το πακέτο αυτό µε το όνοµα skin ενώ η διεπαφή χρήστη α- ναφέρεται σε αυτό και ως theme. Η δοµή ενός τέτοιου αρχείου είναι παρόµοια µε την παρακάτω δοµή : 54
skin classic browser browser skin files global contents.rdf global skin files 5.2.5 Το πακέτο locale Περιέχει συγκεκριµένους φακέλους και όλα τα κείµενα ενός παραθύρου αποθηκεύονται ξεχωριστά. Ο φάκελος en-us.jar δίνει πληροφορίες για τη γλώσσα που χρησιµοποιείται, στην περίπτωσή µας η US English. Η δοµή του πακέτου αυτού είναι παρόµοια µε τα προηγούµενα. Για να υποστηριχθούν περισσότερες από µία γλώσσες, χρειάζεται να ξεχωρίσουµε τα διάφορα strings από τον φάκελο content. Αυτό επιτυγχάνεται µε τον φάκελο locale. Ο φάκελος locale περιέχει δύο είδη αρχείων: τα DTD αρχεία και τα αρχεία properties. Τα αρχεία DTD έχουν την κατάληξη.dtd και περιέχουν entity declarations µία για κάθε string κειµένου που χρησιµοποιείται σε ένα παράθυρο. Τα property files είναι παρόµοια µε τα παραπάνω αρχεία µε τη µόνη διαφορά ότι χρησιµοποιούνται από script αρχεία. Ένα αρχείο.dtd το οποίο αποθηκεύεται σε έναν φάκελο locale συνήθως έχει την παρακάτω µορφή : <!ENTITY button.label ---- > <!ENTITY button.accesskey ---- > όπου µέσα στις παύλες εισάγουµε το string που επιθυµούµε. Για να µπορέσει το extension να χρησιµοποιήσει το αρχείο.dtd, θα πρέπει να το εισάγουµε µέσα στο αρχείο της XUL κάτω από την γραµµή <?xml version 1.0?> µε τον παρακάτω τρόπο : <!DOCTYPE window SYSTEM chrome://packagename/locale/filename.ent > 55
όπου συνήθως αντί για το window χρησιµοποιούµε το overlay. Επίσης, για να µπορέσει το αρχείο της ΧUL να διαβάσει τα entities προσθέτουµε τις εξής δύο γραµµές : <button label= &button.label; accesskey= &button.accesskey; /> 5.2.6 Τα components Το thunderbird υποστηρίζει τα XPCOM components στα extensions. Οι προγραµµατιστές µπορούν να δηµιουργήσουν από µόνοι τους εύκολα τα δικά τους χρησιµοποιώντας τη γλώσσα Javascript η τη C++. Απλά τοποθετούν όλα τα.js και.dll αρχεία στο components / directory και αυτά αυτόµατα καταγράφονται τη στιγµή που θα εκτελεστεί για πρώτη φορά ο thunderbird µετά την εγκατάσταση. 5.2.7 Το αρχείο install.rdf Το Install Manifest είναι ο φάκελος ο οποίος περιέχει τις πληροφορίες για ένα extension κατά την εγκατάστασή του. Περιέχει µεταδεδοµένα τα οποία αναγνωρίζουν το extension και παρέχει πληροφορίες για το ποιος είναι ο συντάκτης του. Επιπλέον, δίνει στοιχεία σχετικά µε τα λογισµικά τα οποία είναι συµβατά µε το προϊόν καθώς και για το πότε θα πρέπει η έκδοση να ενηµερωθεί. Το format του Install Manifest είναι RDF/XML. Ο φάκελος θα πρέπει να ονοµαστεί install.rdf και να βρίσκεται στην αρχή ενός φακέλου XPI. Η βασική µορφή ενός τέτοιου φακέλου είναι: 56
<? xml version= 1.0 > < RDF xmlns= http: // www.w3.org/1999/02/22-rdf-syntax-ns# xmlns: em= http:// www.mozilla.org/2004/em-rdf# > < Description about = urn : mozilla : install- manifest > <em: id> xxxxx < / em: id> <em: version> 0.0 < /em: version> <em: type> 2 < /em: type> <! Target Application this extension can install into, with minimum and maximum supported versions. -- > <em: targetapplication> <Description> <em: id > {ec-------------}< /em:id> <em: minversion> x.x+< / em: minversion> <em: maxversion> y.y*< / em: maxversion> </ Description > </em: targetapplication> <! - - Front End Metadata - - > <em : name> kkk< /em: name> <em: description> mmmmm</ em: description> <em: creator> gggg </em: creator <em: homepageurl> http:// www.foo.com/ </ em: homepageurl> </ Description> < /RDF> Συγκεκριµένα έχουµε: Το <em: id> xxxxx < / em: id> φανερώνει την ταυτότητα του extension. Είναι το χαρακτηριστικό µε το οποίο κάθε προγραµµατιστής ξεχωρίζει το δικό του extension από τα άλλα. Το id µπορεί να είναι είτε ένα string, είτε ένας ειδικός κωδικός ο οποίος δηµιουργείται αυτόµατα ή από ένα online perl script ( 57
http://www.perl.com/ ) ή από ένα ειδικό πρόγραµµα που ονοµάζεται guidgen ( http://www.guidgen.com/ ). Το 2 στο <em: type> 2 < /em: type> δείχνει πως θα δηµιουργηθεί ένα extension. Το <em: version>0.0< /em: version> δείχνει την έκδοση του extension. Το <em: id > {ec-------------}< /em: id> δείχνει την ταυτότητα της εφαρµογής. Στην συγκεκριµένη περίπτωση εφόσον τα extension προορίζονται για τον Mozilla thunderbird το συγκεκριµένο id θα έχει την µορφή: <em: id > {3550f703-e582-4d05-9a08-453d09bdfdc6} < /em: id>. Τα minversion x.x+ και τα maxversion y.y* φανερώνουν την παλιότερη και την πιο πρόσφατη έκδοση της εφαρµογής στην οπoία µπορεί να δουλέψει το extension. Στο <em: name > kkk < /em: name>, στο σηµείο kkk εισάγεται το όνοµα του extension. Στο <em: description> mmmmm < /em: description>, στο σηµείο mmmmm ο προγραµµατιστής εισάγει µια απλή και σύντοµη περιγραφή για την λειτουργία που θα εκτελεί το extension. Στο <em: creator> gggg < /em: creator>, στο σηµείο gggg καταγράφεται το ό- νοµα του δηµιουργού του extension. Το <em: homepageurl> http://www.foo.com/ < /em: homepageurl> είναι προαιρετικό και εισάγεται η διεύθυνση της ιστοσελίδας στην οποία βρίσκεται το extension. [10,12]. 5.3 Η γλώσσα JavaScript Η Javascript είναι µία βασιζόµενη στα αντικείµενα (object), διαπλατφορµική (crossplatform) scripting γλώσσα προγραµµατισµού. Ο όρος βασιζόµενη στα αντικείµενα ση- µαίνει ότι µπορεί να χρησιµοποιεί στοιχεία τα οποία αποκαλούνται αντικείµενα. Ωστόσο, τα αντικείµενα δεν βασίζονται σε κλάσεις, πράγµα που σηµαίνει ότι δεν γίνεται κα- µία διάκριση µεταξύ µιας κλάσης και ενός αντικειµένου, σε αντίθεση µε τις γλώσσες αντικειµενοστραφούς προγραµµατισµού. Μια γλώσσα script επιτρέπει να γραφτεί ένα πρόγραµµα το οποίο δεν χρειάζεται να περάσει από την διαδικασία της µεταγλώττισης. Η διερµήνευση του κώδικα του προγράµµατος γίνεται άµεσα από την εφαρµογή. Με 58
µια κανονική γλώσσα προγραµµατισµού θα έπρεπε να γραφτεί ο πηγαίος κώδικας και να µεταγλωττιστεί, χρησιµοποιώντας έναν compiler, έτσι ώστε να µετατρεπόταν σε ε- κτελέσιµη µορφή και να αποφεύγονταν τα συντακτικά σφάλµατα. Στην περίπτωση της Javascript ο χειρισµός των σφαλµάτων είναι ευθύνη της εφαρµογής browser που χρησι- µοποιεί ο κάθε χρήστης. Η γλώσσα αυτή χρησιµοποιείται όχι µόνο για να προσθέσουν οι προγραµµατιστές διάφορα εφέ σε µια εφαρµογή αλλά και για να συντάξουν scripts τα οποία θα εκτελούν χρήσιµες εργασίες. Η Javascript και η Java είναι δύο διαφορετικές γλώσσες προγραµµατισµού. Η Java είναι µια ολοκληρωµένη γλώσσα και ο κώδικας που γράφεται µε αυτήν τη γλώσσα πρέπει να µεταγλωττιστεί πριν µπορέσει να εκτελεστεί. Η Java είναι πιο ισχυρή αλλά επίσης και πιο πολύπλοκη από την Javascript. Εν αντιθέσει, η Javascript δεν χρειάζεται έναν µεταγλωττιστή για την µετατροπή του κώδικά της σε εκτελέσιµη µορφή και είναι πιο ανεκτική σε ορισµένους τοµείς όπως για παράδειγµα η σύνταξη. Η Javascript έχει ορισµένες οµοιότητες µε άλλες γλώσσες προγραµµατισµού όπως η C++, η C και η Java και µε γλώσσες script. Επειδή είναι µια γλώσσα script έχει επίσης οµοιότητες µε γλώσσες όπως η Perl ο κώδικάς της µπορεί να τρέχει µέσω ενός interpreter αντί να µεταγλωττίζεται. [6,14,15] 5.4 υναµικός Προγραµµατισµός Μια χρήσιµη τεχνική που αναπτύχθηκε πρόσφατα στηv πλατφόρµα του Mozilla είναι ο υναµικός Προγραµµατισµός ( Dynamic Development ). Αυτή η νέα µέθοδος επιτρέπει στους προγραµµατιστές να δουλεύουν πάνω στα extension και να βλέπουν τα αποτελέσµατα σε πραγµατικό χρόνο. Με αυτόν τον τρόπο δεν χρειάζεται να πακετάρουν συνέχεια τα extensions κάθε φορά που θέλουν να δοκιµάσουν µια αλλαγή είτε στα XUL έγγραφα είτε στον κώδικα Javascript. Έτσι όχι µόνο µειώνεται ο χρόνος που απαιτείται για την δηµιουργία ενός extension αλλά επιτυγχάνεται και η διόρθωση των λαθών του κώδικα ευκολότερα από ότι πριν. Πριν τον δυναµικό προγραµµατισµό όλα τα δεδοµένα τα οποία περιέχει αυτός ο φάκελος ήταν διασκορπισµένα σε δύο µέρη: στο αρχείο install.rdf και στο αρχείο contents.rdf. Με τη νέα αυτή µέθοδο δηµιουργείται ένα νέο αρχείο το chrome.manifest το οποίο τοποθετείται στο επάνω επίπεδο του φακέλου extension. Το αρχείο αυτό ενηµε- 59
ρώνει τον Mozilla Thunderbird για το ποια πακέτα και overlays παρέχονται. Ένα απλό δείγµα του αρχείου φαίνεται παρακάτω: content myextension chrome/content/ overlay chrome://browser/content/browser.xul chrome://myextension/content/overlay.xul locale myextension en-us chrome/locale/en-us/ skin myextension classic/1.0 chrome/skin/ Η πρώτη γραµµή καταγράφει ένα πακέτο content µε το όνοµα myextension όπως επίσης και την τοποθεσία του πακέτου. Παρατηρούµε ότι το όνοµα πρέπει να γραφτεί µε πεζά γράµµατα και όχι µε κεφαλαία ή µικτά. Αυτή η γραµµή επιτρέπει στα chrome URLs όπως το chrome://myextension/content να δείχνουν στη σωστή θέση στην ιεραρχία του extension. Η δεύτερη γραµµή καταγράφει ένα overlay για το chrome://browser/content/browser.xul. Με αυτόν τον τρόπο οι προγραµµατιστές µπορούν να προσθέσουν στοιχεία ή να τροποποιήσουν την διεπαφή χρήστη. Ο XUL φάκελος ο οποίος χρησιµοποιείται ως overlay καθορίζεται από το chrome://myextension/content/overlay.xul. Η επόµενη γραµµή καθορίζει πως θα δηµιουργηθεί ένας φάκελος locale ενώ η τελευταία προσθέτει ένα φάκελο skin στο extension. Επίσης, εκτός από τα παραπάνω χρειάζεται και ένα αρχείο, το οποίο θα υποδεικνύει στον Mozilla Thunderbird το σηµείο στο οποίο είναι καταχωρηµένο το extension µέσα στον σκληρό δίσκο. ηµιουργούµε έτσι ένα text αρχείο οπουδήποτε µέσα στο δίσκο και του δίνουµε το ίδιο όνοµα µε το id που χρησιµοποιήσαµε στο install.rdf για να χαρακτηρίσουµε το extension. Μέσα σε αυτό το text αρχείο γράφουµε µόνο µια γραµµή κώδικα, το µονοπάτι του φακέλου στο οποίο είναι αποθηκευµένο το extension ( τον φάκελο δηλαδή που περιέχει τον φάκελο chrome, το αρχείο chrome.manifest και το Install.rdf ). Τέλος, αναζητούµε τον φάκελο profile του thunderbird ο οποίος περιέχει τον φάκελο extensions. Μέσα σε αυτόν τον extensions φάκελο τοποθετούµε το text αρχείο. [6,11] 60
6 Παράδειγµα ανάπτυξης ενός extension Με στόχο την υλοποίηση του ταξινοµητή ηλεκτρονικής αλληλογραφίας, αρχικά αναπτύχθηκε ένα extension το οποίο ονοµάστηκε bayesbird. Το extension αυτό µπορεί να θεωρηθεί ως η βάση για να δηµιουργηθεί ένας ταξινοµητής µε τον αλγόριθµο Naïve Bayes, ο οποίος θα ταξινοµεί αυτόµατα τα εισερχόµενα µηνύµατα ηλεκτρονικού ταχυδροµείου σε δύο ή περισσότερους φακέλους ανάλογα µε το περιεχόµενο τους. Στο κεφάλαιο αυτό αναλύονται τα βήµατα δηµιουργίας του extension καθώς και η λειτουργία του. 6.1 ηµιουργία του install.rdf Το αρχείο αυτό, το οποίο θα παρέχει τις βασικές πληροφορίες για το bayesbird, είναι ένα text αρχείο που δέχεται ως κατάληξη το.rdf. Τα περιεχόµενά του είναι τα εξής: 1: <?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <Description about="urn:mozilla:install-manifest"> <!-- Required Items --> 2: <em:id>{b07db59b-7581-4d1d-b739-6bef4606af45}</em:id> <em:version>1.0</em:version> <!-- Target Application this extension can install into, with minimum and maximum supported versions. --> 3: <em:targetapplication> <Description> 61
<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> <em:minversion>1.5</em:minversion> <em:maxversion>1.5.0.*</em:maxversion> </Description> </em:targetapplication> <!-- Front End MetaData --> 4: <em:name>bayesian Email Classification</em:name> <em:creator>sophia Maleza</em:creator> <em:description>bayesian Email Classification for Thunderbird</em:description> <!-- Packages, Skins and Locales that this extension registers --> 5: <em:file> <Description about="urn:mozilla:extension:file:bayesbird.jar"> <em:package>content/</em:package> <em:skin>skin/</em:skin> </Description> </em:file> </Description> </RDF> Σχολιασµός του κώδικα: (1) Οι γραµµές αυτές καθορίζουν ότι ο φάκελος αυτός δεν είναι τίποτα άλλο από ένα xml αρχείο. Η έκφραση <RDF > είναι υπεύθυνη για να αναγνωριστεί το install.rdf ως ένα RDF αρχείο ενώ η <Description > αναγνωρίζει το αρχείο ως ένα installer manifest. (2) Το {B07DB59B-7581-4d1d-B739-6BEF4606AF45} είναι η ταυτότητα του extension bayesbird, ενώ ο αριθµός 0.1 είναι η έκδοση του. 62
(3) Ο κώδικας αυτός είναι από τα πιο σηµαντικά κοµµάτια αφού καθορίζει την εφαρµογή για την οποία θα λειτουργήσει το extension. Στην περίπτωσή µας η εφαρµογή είναι ο Mozilla Thunderbird και αυτό υποδεικνύεται από το {3550f703-e582-4d05-9a08-453d09bdfdc6} αφού αυτός είναι ο χαρακτηριστικός κωδικός της. Έπειτα, το 1.5 και το 1.5.0.* είναι η ελάχιστη και η µέγιστη έκδοση του Thunderbird µε τις οποίες είναι συµβατό το bayesbird. (4) Με αυτές τις τρεις γραµµές κώδικα δηλώνεται το όνοµα «Bayesian Email Classification» του extension και µια σύντοµη περιγραφή της λειτουργίας του «Bayesian Email Classification for Thunderbird», καθώς και το όνοµα του δηµιουργού «Sophia Maleza». (5) Εδώ περιγράφονται τα στοιχεία του bayesbird.jar. O «συµπιεσµένος» αυτός φάκελος περιέχει δύο φακέλους, τον φάκελο content και τον φάκελο skin µε τα περιεχόµενά τους. 6.2 ηµιουργία του bayesbird_overlay.xul Το αρχείο αυτό το οποίο είναι και αυτό ένα text αρχείο µε την κατάληξη.xul περιέχει όλες τις πληροφορίες για την διεπαφή γραφικών του extension. Το συγκεκριµένο extension προσθέτει δύο χαρακτηριστικά: ένα κουµπί στο toolbar του thunderbird και µία λειτουργία στο pop up µενού. Ο κώδικας του bayesbird_overlay.xul είναι ο παρακάτω: 1: <?xml version="1.0"?> <?xml-stylesheet href="chrome://bayesbird/skin/bayesbird.css" type="text/css"?> <overlay id="bayesbird_overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 2: <toolbarpalette id="mailtoolbarpalette"> <toolbarbutton class="toolbarbutton-1" id="bayesbutton" 63
image="chrome://bayesbird/skin/main.png" label="bayes Button" tooltiptex="this is the Bayes Button" oncommand="disp_alert();" /> </toolbarpalette> 3: <popup id="threadpanecontext"> <menuitem id="bayesrules" label="bayes Rules" accesskey="b" insertafter="threadpanecontext-sep-selectall" oncommand="disp_alert();"/> </popup> 4: <script type= application/x-javascript src= chrome://bayesbird/content/bayesbird_overlay.js" /> </overlay> Σχολιασµός του κώδικα: (1) Η πρώτη γραµµή κώδικα υποδεικνύει πως είναι ένα αρχείο xml. Με την δεύτερη γραµµή, το αρχείο αυτό διαβάζει τον κώδικα που περιέχεται στο φάκελο skin/bayesbird.css. το οποίο είναι και αυτό ένα text αρχείο. Κατόπιν, δίνεται το όνοµα "bayesbird_overlay" στο overlay και καθορίζεται πως θα χρησιµοποιηθεί για µία εφαρ- µογή του Mozilla. (2) ηµιουργούµε ένα κουµπί (button) για τη διεπαφή του χρήστη. Το κουµπί αυτό είναι κλάσης "toolbarbutton", έχει ως id το "BayesButton" και η εικόνα του βρίσκεται στο αρχείο "chrome://bayesbird/skin/main.png". Επίσης, ονοµάζεται "Bayes Button" και µια σύντοµη περιγραφή του είναι η εξής: "This is the Bayes Button". Προσωρινά, το κουµπί αυτό µε το πάτηµα του χρήστη καλεί τον κώδικα της συνάρτησης disp_alert(). Η συνάρτηση αυτή υλοποιείται στο αρχείο bayesbird_overlay.js το οποίο παρουσιάζεται παρακάτω. 64
(3) Με τον κώδικα αυτό προσθέτουµε µια λειτουργία στο context pop up µενού του thunderbird, το οποίο εµφανίζεται όταν ο χρήστης πατάει δεξί κλικ στο ποντίκι. Η λειτουργία αυτή θα εµφανίζεται ως "Bayes Rules" στην αρχή του µενού και θα έχει ως access key το γράµµα B. Όταν ο χρήστης θα πατάει το Bayes Rules αυτό θα καλεί την συνάρτηση disp_alert() όπως και το button. (4) Οι δύο αυτές γραµµές συνδέουν τον κώδικα του bayesbird_overlay.xul µε τον κώδικα του bayesbird_overlay.js. Με αυτόν τον τρόπο, η συνάρτηση disp_alert όταν κληθεί από το button και το pop up µενού θα εκτελέσει τον κώδικά της κατευθείαν από το αρχείο bayesbird_overlay.js. [44,46,47] 6.3 ηµιουργία του bayesbird_overlay.js Το αρχείο bayesbird_overlay.js είναι ένα javascript αρχείο το οποίο περιέχει τον εκτελέσιµο κώδικα του extension. Ο κώδικας είναι ο παρακάτω: function disp_alert() { alert("bayes Rules!"); } ηµιουργείται µια συνάρτηση, η disp_alert η οποία εµφανίζει ένα alert box. Το alert box αυτό περιέχει την φράση "Bayes Rules!". Ως απώτερος και µελλοντικός σκοπός αυτού του extension είναι να γραφτεί ο κώδικας ο οποίος θα διαβάζει το περιεχόµενο των εισερχόµενων µηνυµάτων και, ανάλογα µε διάφορα κριτήρια και σε συνδυασµό µε τον ταξινοµητή Naïve Bayes, να τα ταξινο- µεί αυτόµατα σε έναν, δύο ή περισσότερους φακέλους. 6.4 ηµιουργία του bayesbird.css To bayesbird.css συνδέει τις πληροφορίες που σχετίζονται µε την εικόνα µε το button που εµφανίζεται στο toolbar. Παρακάτω, έχουµε τον κώδικα: #BayesButton { list-style-image: url("chrome://bayesbird/skin/main.png"); } 65
#BayesButton[disabled] { list-style-image: url("chrome://bayesbird/skin/main.png"); } toolbar[iconsize="small"] #BayesButton { list-style-image: url("chrome://bayesbird/skin/main.png"); } toolbar[iconsize="small"] #BayesButton[disabled] { list-style-image: url("chrome://bayesbird/skin/main.png"); } Αρχικά, εισάγουµε τη φράση list-style-image η οποία χρησιµοποιείται σε γραφικά buttons και στη συνέχεια προσθέτουµε το µονοπάτι του φακέλου στο οποίο βρίσκεται η εικόνα µε την οποία θέλουµε να συνδέσουµε το button. Κατόπιν, µε το toolbar [iconsize="small"] δηλώνουµε ότι η εικόνα θα χρησιµοποιηθεί στο toolbar και το µέγεθός της θα είναι small. Η εικόνα µας για το button θα είναι η εξής:. Αποθηκεύουµε αυτήν την εικόνα στο αρχείο main.png. Αυτό που παρατηρούµε είναι ότι η συγκεκριµένη εικόνα θα είναι σε µορφή png. 6.5 ηµιουργία του chrome.manifest Το extension δηµιουργήθηκε µε βάση τις αρχές του δυναµικού προγραµµατισµού. Για αυτόν τον λόγο, δεν είναι αναγκαία η δηµιουργία του αρχείου contents.rdf αφού κάτι τέτοιο θεωρείται περιττό. Όλες οι πληροφορίες που αφορούν το bayesbird αποθηκεύονται στο chrome.manifest και στο intall.rdf που δηµιουργήθηκε παραπάνω. Έτσι, δηµιουργούµε και το chrome.manifest ως εξής: content bayesbird chrome/content/ overlay chrome://messenger/content/messenger.xul chrome://bayesbird/content/bayesbird_overlay.xul skin bayesbird classic/1.0 chrome/skin/ 66
Αρχικά, δηλώνουµε ότι θα δηµιουργηθεί ένα πακέτο content στο extension µε το όνοµα bayesbird, καθώς και την τοποθεσία του µέσα στον φάκελο του extension. Έπειτα, µε την δεύτερη γραµµή µπορούµε να αλλάξουµε ή να προσθέσουµε χαρακτηριστικά στην διεπαφή χρήστη του Thunderbird µέσω του αρχείου bayesbird_overlay.xul το οποίο βρίσκεται στο φάκελο content. Και τέλος, προσθέτουµε τον φάκελο skin µέσω του ο- ποίου εισάγουµε τις διάφορες εικόνες. 6.6 Οργάνωση των αρχείων και των πακέτων Για να δηµιουργήσουµε το τελικό πακέτο.xpi θα πρέπει όλα τα παραπάνω αρχεία να οργανωθούν στους κατάλληλους φακέλους, να ζιπαριστούν και να παραχθεί τελικά το bayesbird.xpi extension. Η οργάνωση των αρχείων θα γίνει µεθοδικά και προσεκτικά έτσι ώστε να αποφευχθούν τυχόν λάθη. Αρχικά, δηµιουργούµε έναν φάκελο και τον ονοµάζουµε content. Μέσα στον content τοποθετούµε τα αρχεία που σχετίζονται µε τον κύριο κώδικα και µε τη δηµιουργία των γραφικών. Τα αρχεία αυτά είναι το bayesbird_overlay.xul και το bayesbird_overlay.js. Στη συνέχεια, δηµιουργούµε έναν άλλο φάκελο µε το όνοµα skin. Σε αυτόν τον φάκελο θα εισάγουµε το main.png και το bayesbird.css αρχείο δηλαδή αυτά που είναι υπεύθυνα για τις εικόνες. Στην περίπτωση που δεν χρησιµοποιούσαµε δυναµικό προγραµµατισµό θα έπρεπε τους δύο αυτούς φακέλους που δηµιουργήσαµε να τους συµπιέσουµε στο bayesbird.jar αρχείο. Τώρα όµως κάτι τέτοιο δεν είναι αναγκαίο. Έπειτα, δηµιουργούµε έναν νέο φάκελο. Τον φάκελο αυτό θα τον ονοµάσουµε chrome και µέσα του θα εισάγουµε τους φακέλους content και chrome. Εν τω µεταξύ, κάπου στον σκληρό δίσκο έχουµε ήδη δηµιουργήσει έναν φάκελο µε το όνοµα του extension µας, δηλαδή bayesbird. Μέσα στον bayesbird φάκελο τοποθετούµε τρία στοιχεία. Τα στοιχεία αυτά είναι ο φάκελος chrome, το αρχείο install.rdf και το αρχείο chrome.manifest. Το τελικό βήµα για να υλοποιηθεί το extension είναι να δηµιουργήσουµε το bayesbird.xpi. Χρησιµοποιώντας ένα εργαλείο zip µετατρέπουµε τον φάκελο bayesbird σε bayesbird.xpi και το extension έχει δηµιουργηθεί. Τώρα µπορούµε να το εγκαταστήσουµε στον Mozilla Thunderbird και να δούµε την λειτουργία του. 67
6.7 Η εγκατάσταση του bayesbird Ο extension manager του thunderbird κατά την εγκατάσταση του bayesbird.xpi θα ενη- µερώσει τον χρήστη πως το extension του έχει εγκατασταθεί. Έτσι ο χρήστης µε αυτόν τον τρόπο θα είναι σίγουρος πως το extension λειτουργεί σωστά. Έπειτα, πατώντας το About που σχετίζεται µε το extension θα εµφανιστεί ένα νέο παράθυρο µε πληροφορίες σχετικά µε αυτό. Εικόνα 5.Εγκατάσταση του Bayesian Email Classification 68
Εικόνα 6.About Bayesian Email Classification Μόλις εγκατασταθεί το extension bayesbird στον Mozilla Thunderbird αµέσως θα προστεθούν δύο νέα χαρακτηριστικά στην διεπαφή του χρήστη. Το πρώτο χαρακτηριστικό θα εµφανιστεί πατώντας ο χρήστης δεξί κλικ όπως φαίνεται παρακάτω: Εικόνα 7.Η επιλογή Bayes Rules του popup menu 69
Το δεύτερο χαρακτηριστικό δεν θα είναι ορατό αµέσως στο toolbar του Thunderbird. Χρειάζεται να πάµε στο κεντρικό toolbar και να κάνουµε customize. Εκεί εµφανίζεται το κουµπί µε την καρδούλα που δηµιουργήσαµε. Το κάνουµε drag and drop και το βάζουµε στο toolbar. Το button Bayes Button θα εµφανιστεί δεξιά του toolbar µε µία καρδιά όπως φαίνεται παρακάτω: Εικόνα 8.Το κουµπί Bayes Button Όταν κάνουµε κλικ πάνω στο ένα ή στο άλλο χαρακτηριστικό εµφανίζεται αµέσως ένα alert box µε το µήνυµα Bayes Rules!. 70
Εικόνα 9.To alert box 71