Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση» Παραδώστε μια αναφορά (το πολύ 5 σελίδων) για την άσκηση 9 και επιδείξτε την υλοποίησή σας. Μπορείτε να εργαστείτε σε ζεύγη. 1. Σχεδιάστε τα δύο συντακτικά δέντρα που προκύπτουν για την πρόταση «είδαμε το γιατρό με την άσπρη μπλούζα», όταν χρησιμοποιείται η ακόλουθη γραμματική με αρχικό σύμβολο S. V είδαμε Det το την N γιατρό μπλούζα Prep με Adj άσπρη Nominal N Adj N N PP NP Det Nominal PP Prep NP VP V NP V NP PP S VP
2. (α) Γράψτε μια δεξιά γραμμική γραμματική για τη γλώσσα a m b n c k, m > 0, n > 0, k > 0. Η γραμματική φαίνεται παρακάτω. Έχει αρχικό σύμβολο S. S aa A aa A bb B bb B cc C cc C ε (β) Σχεδιάστε ένα αυτόματο πεπερασμένων καταστάσεων που να αναγνωρίζει (ή να παράγει) ακριβώς τη γλώσσα του προηγούμενου σκέλους. Σημειώστε την αρχική και τις τελικές καταστάσεις. (γ) Γράψτε μια γραμματική χωρίς συμφραζόμενα για τη γλώσσα a m b n c m, με m > 0, n > 0. S abc S asc B bb B b (δ) Σχεδιάστε αυτόματο πεπερασμένων καταστάσεων με στοίβα που να αναγνωρίζει (ή να παράγει) ακριβώς τη γλώσσα του προηγούμενου σκέλους. Σημειώστε την αρχική και τις τελικές καταστάσεις. 3. Επιβεβαιώστε ότι η πολυπλοκότητα του αλγορίθμου CKY είναι O(n 3 ), όπου n το πλήθος των λέξεων της πρότασης.
4. Εξηγήστε πώς ακριβώς είναι δυνατόν να τροποποιηθεί ο αλγόριθμος CKY, ώστε να παράγει και συντακτικά δέντρα. Δείξτε πώς θα γινόταν η παραγωγή του συντακτικού δέντρου στο παράδειγμα των διαφανειών 32 40. 5. (α) Γράψτε μια γραμματική χωρίς συμφραζόμενα για τη γλώσσα a m b n c m, m > 0, n > 0. S --> a P c P --> a P c P --> Q Q --> b b Q (β) Μετατρέψτε τη γραμματική του προηγούμενου σκέλους (αν χρειάζεται), ώστε να παραμένει γραμματική χωρίς συμφραζόμενα, αλλά να έχει ως αρχικό σύμβολο το S και να περιλαμβάνει πλέον μόνο (i) τους τρεις «κανόνες λεξικού» Α α, B b και C c, καθώς και (ii) κανόνες χωρίς τερματικά σύμβολα στα δεξιά μέρη τους και χωρίς A, B, C (κατηγορίες λέξεων) στα αριστερά μέρη. S --> A P C P --> A P C P --> Q Q --> B B Q A --> a B --> b C --> c (γ) Δίνουμε στον αλγόριθμο Earley τη γραμματική του προηγούμενου σκέλους και την είσοδο «abc». Σχεδιάστε τα περιεχόμενα του χάρτη στο τέλος της εκτέλεσης του αλγορίθμου. 6. (α) Δίνεται στον αλγόριθμο Earley η ακόλουθη γραμματική χωρίς συμφραζόμενα (με αρχικό σύμβολο S) και η ακολουθία λέξεων εισόδου «ο σκύλος κυνήγησε τη γάτα». Σχεδιάστε το χάρτη που θα προκύψει στο τέλος της εκτέλεσης του αλγορίθμου. S NP VP NP Det N VP V NP Det ο η το τη N σκύλος γάτα V κυνήγησε δάγκωσε
(β) Γράψτε την παραπάνω γραμματική σε μορφή DCG, προσθέτοντας επίσης έλεγχο συμφωνίας γένους, ώστε π.χ. να μην επιτρέπονται προτάσεις όπως «η σκύλος κυνήγησε το γάτα». s --> np, vp. np --> det(gender), n(gender). vp --> v, np. det(masc) --> [ο]. det(fem) --> [η]. det(masc) --> [το]. det(fem) --> [τη]. n(masc) --> [σκύλος]. n(masc) --> [σκύλο]. n(fem) --> [γάτα]. v --> [κυνήγησε]. v --> [δάγκωσε]. 7. (α) Δίνεται στον αλγόριθμο Earley η ακόλουθη γραμματική χωρίς συμφραζόμενα (με αρχικό σύμβολο S) και η ακολουθία λέξεων εισόδου «ο οδηγός είδε τη γιατρό». Σχεδιάστε το χάρτη που θα προκύψει στο τέλος της εκτέλεσης του αλγορίθμου. S NP VP NP Det N VP V NP Det ο η το τη N οδηγός γιατρό V είδε
(β) Εξηγήστε ποιες επιπλέον πληροφορίες πρέπει να αποθηκεύονται στο χάρτη κατά την εκτέλεση του αλγορίθμου Earley, ώστε μετά τον τερματισμό του αλγορίθμου να είναι δυνατή η κατασκευή του συντακτικού δέντρου από τα δεδομένα του χάρτη. Προσθέστε τις επιπλέον πληροφορίες στο χάρτη του σκέλους (α) και σχεδιάστε το συντακτικό δέντρο που προκύπτει, εξηγώντας πώς προκύπτει από τα δεδομένα του χάρτη του σκέλους (α). Σε κάθε ακμή που προστίθεται στο χάρτη δίνουμε ένα διαφορετικό αριθμόταυτότητα. Επίσης, σε κάθε ακμή, έστω α, που προκύπτει μέσω συμπλήρωσης, αποθηκεύουμε τώρα εντός παρενθέσεων και τους αριθμούς-ταυτότητες όλων των άλλων ακμών που μας βοήθησαν να προχωρήσουμε τις τελείες της ακμής α προς τα δεξιά. Στην περίπτωση του παραδείγματος του σκέλους (β), προκύπτει το δέντρο: Ο αριθμός εντός παρενθέσεων της ακμής με ετικέτα «Γ S» (βλ. χάρτη) δείχνει πως η τελεία προχώρησε δεξιά του S (δηλαδή βρέθηκε το S) με τη βοήθεια της ακμής 17, που έχει ετικέτα «S NP VP». Επομένως τα παιδιά του S στο συντακτικό δέντρο είναι NP και VP. Ομοίως οι αριθμοί εντός παρενθέσεων της ακμής 17 δείχνουν ότι τα NP και VP βρέθηκαν με τη βοήθεια των ακμών 6 και 16 αντίστοιχα, που έχουν ετικέτες «NP Det N» και «VP V NP». Επομένως τα παιδιά του NP είναι Det και N, ενώ του VP είναι V και NP. Ομοίως προκύπτει και το υπόλοιπο δέντρο. 8. Συμπληρώστε το παράδειγμα της εκτέλεσης του αλγορίθμου CKY με πιθανοτική γραμματική (διαφάνειες 67 69). 9. (α) Υλοποιήστε τον αλγόριθμο CKY (για γραμματικές σε Chomsky Normal Form, CNF) ή τον αλγόριθμο Earley (για γραμματικές χωρίς συμφραζόμενα, CFG) ή προαιρετικά και τους δύο. (β) Να επεκτείνετε την υλοποίηση του προηγούμενου σκέλους, ώστε να υποστηρίζει και πιθανοτικές γραμματικές (διαφάνειες 65 69) του αντίστοιχου τύπου (πιθανοτικές
γραμματικές CNF ή πιθανοτικές CFG). (γ) Να επεκτείνετε την υλοποίηση του προηγούμενου σκέλους, ώστε να παράγει και δέντρα συντακτικών εξαρτήσεων (όπως στη διαφάνεια 19, αλλά τόσο για πιθανοτικές όσο και για μη πιθανοτικές γραμματικές του αντίστοιχου τύπου, χωρίς ετικέτες στις ακμές), θεωρώντας ότι οι κανόνες της γραμματικής ορίζουν τα κύρια παιδιά (βλ. διαφάνεια 17). Και στα τρία σκέλη, επιδείξτε τις δυνατότητες της υλοποίησής σας χρησιμοποιώντας γραμματικές των διαφανειών ή/και δικές σας. Η υλοποίησή σας πρέπει να τυπώνει τα αντίστοιχα συντακτικά δέντρα (σε όποια μορφή θέλετε), μαζί με τη συνολική πιθανότητα κάθε δέντρου στην περίπτωση πιθανοτικών γραμματικών. Πρέπει, επίσης, να διαβάζει τη γραμματική από αρχείο εύκολα τροποποιήσιμο με απλό επεξεργαστή κειμένου. Μπορείτε να παριστάνετε τις γραμματικές σε όποια μορφή θέλετε (π.χ. σε XML).