Το πρόβλημα
Ένα από τα βασικότερα προβλήματα που ανακύπτουν στις μηχανές αναζήτησης που χρησιμοποιούν οι περισσότερες ιστοσελίδες είναι ότι όταν κάποιος ψάχνει μια λέξη όπως π.χ. "ποδήλατα", η μηχανή θα του φέρει μόνο τις σελίδες που περιλαμβάνουν τη λέξη "ποδήλατα" ακριβώς γραμμένη έτσι. Αν δηλαδή η σελίδα περιλαμβάνει τη λέξη "ποδήλατο", δεν θα εμφανιστεί στα αποτελέσματα, γιατί για αυτήν πρόκειται για μια διαφορετική λέξη! Το αποτέλεσμα του παραπάνω γεγονότος είναι ότι οι χρήστες δεν παίρνουν εύκολα από τις μηχανές αναζήτησης που περιλαμβάνονται πια σε πολλές ιστοσελίδες τα αποτελέσματα που επιθυμούν και αυτό έχει σαν επακόλουθο είτε: 1. να μεταβαίνουν σε άλλες ιστοσελίδες πιστεύοντας ότι αυτό που ψάχνουν δεν υπάρχει στη σελίδα που βρίσκονται, 2. είτε να παύουν να εμπιστεύονται τις μηχανές αναζήτησης που βρίσκονται μέσα στα site, 3. είτε να καταλήγουν τελικά να χρησιμοποιούν το Google το οποίο μπορεί και φέρνει τις σελίδες που περιλαμβάνουν τη λέξη "ποδήλατο" ακόμα κι όταν ψάχνουμε για "ποδήλατα". Το παραπάνω πρόβλημα παρατηρείται σε όλες τις γλώσσες γίνεται όμως πιο έντονο στα ελληνικά όπου οι καταλήξεις και τα παράγωγα κάθε λέξης είναι πολλά.
Η λύση
Την απάντηση στο παραπάνω πρόβλημα έρχεται να δώσει το "stemming", το οποίο η Wikipedia περιγράφει ως τη διαδικασία αφαίρεσης από τις λέξεις των παραγώγων και καταλήξεων και μείωσής τους στη ρίζα τους (stem). Με τη διαδικασία αυτή η μηχανή αναζήτησης βρίσκει ότι η ρίζα της λέξης "ποδήλατο" είναι "ποδήλατ" και αποθηκεύει αυτή στο ευρετήριό της. Αντίστοιχα, όταν ένας χρήστης κάνει αναζήτηση για "ποδήλατο", ψάχνει στο ευρετήριό της για "ποδήλατ" το οποίο το έχει ήδη αποθηκευμένο και έτσι φέρνει τη σελίδα που το περιέχει. Το αποτέλεσμα είναι ότι η σελίδα εμφανίζεται είτε όταν κάποιος ψάχνει για "ποδήλατο" είτε για "ποδήλατα". Το πρόβλημα λοιπόν λύθηκε!
Η υλοποίηση για την ελληνική γλώσσα
Τον Φεβρουάριο του 2006 ο Γιώργος Νταής μετά από 20 εβδομάδες μελέτης παρουσίασε στη Στοκχόλμη της Σουηδίας την μεταπτυχιακή διατριβή του που αφορούσε στην ανάπτυξη ενός αλγορίθμου stemming για την ελληνική γλώσσα. Με επόπτη καθηγητή τον Hercules Dalianis και βασισμένος στον αλγόριθμο Porter (ο οποίος είχε γίνει από το 1980 που παρουσιάστηκε από τον Martin Porter ο de facto αλγόριθμος για stemming της αγγλικής γλώσσας) ανέπτυξε τον αντίστοιχο αλγόριθμο ο οποίος καλύπτει με ακρίβεια πάνω από 90% τις 166 καταλήξεις της ελληνικής γλώσσας! To 2008 ο Πάνος Κυριακάκης μετέφερε τον αλγόριθμο σε PHP και το 2009 ο Βασίλης Σπηλιόπουλος ανέπτυξε ένα module το οποίο μεταφέρει τον αλγόριθμο στη μηχανή αναζήτησης του Drupal 5. Το 2009 o basos.g at gmx.net βελτίωσε τη μεταφορά σε PHP (δουλεύει εγγενώς με UTF-8) και ανέπτυξε και extensions για τη μηχανή αναζήτησης Lucene.
Drupal module
Όλοι οι παραπάνω διέθεσαν την εργασία τους ανοικτή στην προγραμματιστική κοινότητα (GNU GPL). Με βάση την εργασία των παραπάνω, o Γιάννης Καράμπελας ανέπτυξε για τη netstudio τον Ιούλιο του 2011 τα αντίστοιχα module για Drupal 6 και Drupal 7 τα οποία διαθέτουμε επίσης ελεύθερα. Μπορείτε να τα κατεβάσετε και να τα χρησιμοποιήσετε στα site σας από τη σελίδα: https://www.drupal.org/project/greekstemmer.
Οδηγίες χρήσης
1. Εγκαταστήστε και ενεργοποιήστε το module. 2. Επιλέξτε Configuration > Search and Metadata > Re-index site 3. Τρέξτε το Cron όσες φορές χρειάζεται ώστε να ταξινομηθούν όλες οι σελίδες του site σας.
Demo
Μπορείτε να δείτε σε χρήση τον Greek Stemmer χρησιμοποιώντας την αναζήτηση που βρίσκεται στο site μας.
Πηγές
Wikipedia: http://en.wikipedia.org/wiki/Stemming Η διατριβή του Γιώργου Νταή σε PDF: http://people.dsv.su.se/~hercules/papers/Ntais_greek_stemmer_thesis_final.pdf 1η ανάπτυξη του Stemmer σε Javascript: http://people.dsv.su.se/~hercules/greek_stemmer.gr.html Μεταφορά του αλγορίθμου σε PHP από τον Πάνο Κυριακάκη και βελτιωμένη έκδοση από τον basos.g at gmx.net. Module για Drupal 5 από τον Βασίλη Σπηλιόπουλο και module για Drupal 6 και 7 από τη netstudio: https://www.drupal.org/project/greekstemmer