Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #11 Suffix Arrays Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 1
Άδεια χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα Ιονίου Πανεπιστημίου» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 3
Suffix Arrays Επιτρέπουν την επεξεργασία πιο πολύπλοκων ερωτήσεων Η µέθοδος αυτή «βλέπει» το κείµενο σαν µία µεγάλη σειρά χαρακτήρων Κάθε θέση στο κείµενο θεωρείται ως suffix Οι θέσεις που δεικτοδοτούνται ονοµάζονται index points εν απαιτείται η δεικτοδότηση όλων των θέσεων του κειµένου Μπορεί να δεικτοδοτούνται µόνο οι αρχές των λέξεων Παράδειγµα Κείµενο: This is a text. A text has many words. Words are made from letters Suffices: text. A text has many words. Words are made from letters text has many words. Words are made from letters many words. Words are made from letters words. Words are made from letters Words are made from letters made from letters letters
Suffix Trees Ένα suffix tree είναι στην ουσία µία δοµή Trie η οποία χτίζεται µε βάση τις καταλήξεις (suffices) του κειµένου Οι δείκτες προς τις καταλήξεις αποθηκεύονται στα φύλλα του δέντρου Για τη µείωση του απαιτούµενου χώρου το δέντρο συµπιέζεται (Patricia tree) Αυτό µας επιτρέπει να αποθηκεύσουµε τη δοµή σε χώρο O(n) Παράδειγµα: Suffix Trie 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters l m 60 d 50 w a t n 28 e x t o r d. s 19 11 40. 33
Παράδειγµα: Suffix Tree 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters l m 60 d 50 w t n 28 19 40. 33. 11 Κόστος Αποθήκευσης Το πρόβληµα είναι ότι για την αποθήκευση της δοµής απαιτείται αρκετός χώρος Υπολογίζεται ότι ακόµη και στην περίπτωση που δεικτοδοτούνται µόνο οι πρώτοι χαρακτήρες κάθε λέξης, ο επιπλέον χώρος που απαιτείται είναι 120% µε 240% του συνολικού µεγέθους του κειµένου Κάθε κόµβος της δοµής απαιτεί 12 ή 24 bytes για την αποθήκευσή του
Suffix Arrays Η δοµή των suffix arrays προσφέρει την ίδια λειτουργικότητα, µε τη διαφορά ότι απαιτείται πολύ λιγότερος χώρος για την αποθήκευση της δοµής Εάν διασχίσουµε τα φύλλα του suffix tree µε τη σειρά, όλες οι καταλήξεις (suffices) του κειµένου παράγονται κατά λεξικογραφική διάταξη Ένα suffix array περιέχει απλά τους δείκτες στις καταλήξεις µε λεξικογραφική διάταξη Ο επιπλέον απαιτούµενος χώρος είναι περίπου 40% του κειµένου Παράδειγµα: Suffix Array 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters 60 50 28 19 11 40 33
Αρχεία Υπογραφών (Signature Files) ιαχειρίζονται λέξεις (word-based) και στηρίζονται στο hashing Έχουν σχετικά µικρό χώρο Περίπου 10% µε 20% του µεγέθους του κειµένου Η πολυπλοκότητα αναζήτησης είναι γραµµική Κατάλληλη για µικρές συλλογές Τα ανεστραµµένα αρχεία έχουν καλύτερη απόδοση από τα αρχεία υπογραφών Αρχεία Υπογραφών Ένα αρχείο υπογραφών χρησιµοποιεί µία hash συνάρτηση η οποία αναπαριστά κάθε λέξη µε µία µάσκα από Β bits Το κείµενο χωρίζεται σε blocks µε b λέξεις το καθένα Σε κάθε block µεγέθους b αντιστοιχούµε µία µάσκα από B bits Η µάσκα παράγεται εφαρµόζοντας τον τελεστή OR στις δυαδικές αναπαραστάσεις των λέξεων του block
Παράδειγµα This is a text. A text has many words. Words are made from letters 000101 110101 100100 101101 H(text) = 000101 H(many) = 110000 H(words) = 100100 H(made) = 001100 H(letters) = 100001 Η hash συνάρτηση επιλέγεται έτσι ώστε να υπάρχουν τουλάχιστον Κ bits ενεργά στην υπογραφή κάθε λέξης False Drops Εάν µία λέξη είναι παρούσα σε ένα block κειµένου, τότε όλα τα bits που είναι 1 στην υπογραφή της λέξης, είναι επίσης 1 στη µάσκα του block Ωστόσο είναι πιθανόν, τα bits να είναι 1 ακόµη και όταν η λέξη δε βρίσκεται στο block (false drop) Η πιο σηµαντική διαδικασία στα αρχεία υπογραφών είναι µα µειωθεί στο ελάχιστο η πιθανότητα να έχουµε false drop
Αναζήτηση σε Αρχεία Υπογραφών Έστω ότι Β i είναι τα bit masks των blocks της συλλογής Για την αναζήτηση µιας απλής λέξης µε bit mask W ελέγχεται αν W & B i = W Για να επιβεβαιωθεί ότι δεν πρόκειται για false drop τα blocks ελέγχονται online Για την αναζήτηση φράσεων δηµιουργείται το bit mask της φράσης εφαρµόζοντας τον τελεστή OR σε όλες τις λέξεις της φράσης Είναι το µόνο σχήµα δεικτοδότησης που βελτιώνεται στην αναζήτηση φράσεων
Online Search Υπάρχουν περιπτώσεις που δεν υπάρχουν βοηθητικές δοµές δεδοµένων για την αναζήτηση Αν δίνεται ένα pattern P µε m χαρακτήρες και ένα κείµενο Κ µε n χαρακτήρες, πρέπει να βρεθούν όλες οι εµφανίσεις του P στο Κ Έχουν προταθεί πολλές µέθοδοι για την επίλυση του προβλήµατος Brute force Knuth, Morris και Pratt Boyer-Moore Shift-or 52 Brute-Force Είναι η πιο απλή µέθοδος αναζήτησης οκιµάζονται σειριακά όλες οι θέσεις του κειµένου και ελέγχεται εάν το pattern αναζήτησης ταιριάζει µε τους χαρακτήρες του κειµένου Η διαδικασία ακολουθείται έως ότου φτάσουµε στο τέλος του κειµένου Κ Ως παραλλαγή, µπορεί να ελέγχεται ένα παράθυρο µήκους m που κινείται κατά µήκος του κειµένου 53 1
Παράδειγµα a b r a c a b r a c a d a b r a a b r a c a d a a a b Mismatch Match a a b r a c a d a b r a 54 Πολυπλοκότητα Brute-Force Υπάρχουν O(n) θέσεις στο κείµενο και Ο(m) θέσεις στο pattern αναζήτησης Εφόσον εξετάζονται όλες οι δυνατές θέσεις για το pattern, η πολυπλοκότητα χειρότερης περίπτωσης για τη µέθοδο είναι O(n*m) Ωστόσο η πολυπλοκότητα µέσης περίπτωσης είναι O(n), διότι σε τυχαίο κείµενο θα έχουµε αποτυχία µετά από O(1) συγκρίσεις χαρακτήρων 55 2