ΑΣΚΗΣΗ 11: ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ - ΣΥΝΤΑΚΤΙΚΗ ΑΝΑΛΥΣΗ (PARSING)



Σχετικά έγγραφα
ΤΕΧΝΟΓΛΩΣΣΙΑ VIII ΛΟΓΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΔΑΣΚΟΝΤΕΣ: ΜΑΪΣΤΡΟΣ ΓΙΑΝΗΣ, ΠΑΠΑΚΙΤΣΟΣ ΕΥΑΓΓΕΛΟΣ ΑΣΚΗΣΗ: ΔΙΟΡΘΩΣΗ ΕΚΦΡΑΣΕΩΝ (Β )

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΥΝΤΑΞΗ: ΟΡΘΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (FORMAL SYNTAX)

Τεχνογλωσσία 8 Β' Εξάμηνο. Λογικός Προγραμματισμός Prolog. Άσκηση: Διορθωτής Εκφράσεων

3ο Νηπ/γείο Κορδελιού Τμήμα Ένταξης

ΣΥΝΤΑΚΤΙΚΟΙ ΟΡΟΙ. Η σύνταξη μιας πρότασης

ΓΡΑΜΜΑΤΙΚΗ ΣΥΝΤΑΞΗ ΕΙΣΑΓΩΓΗ

ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΜΑΘΗΜΑ: Μεταγλωττιστές

ΕΠΛ 434: Λογικός Προγραμματισμός

ΝΕΑ ΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΕΝΔΕΙΚΤΙΚΟΣ ΕΤΗΣΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Α ΤΑΞΗ ΓΥΜΝΑΣΙΟΥ

ΦΥΛΛΑΔΙΟ ΓΛΩΣΣΑΣ ΣΥΝΤΑΚΤΙΚΟ (Υποκείμενο, Αντικείμενο, Κατηγορούμενο)

ΣΥΝΤΑΚΤΙΚΟ ΠΡΟΤΑΣΗ. Η οργανωμένη ομάδα λέξεων που εκφράζει μόνο ένα νόημα, με σύντομη συνήθως διατύπωση, λέγεται πρόταση.

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΔΙΑΦΟΡΟΠΟΙΗΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΠΡΟΓΡΑΜΜΑΤΩΝ

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΗΜΑΣΙΟΛΟΓΙΑ - SEMANTICS

Εβδομαδιαίο οργανόγραμμα ύλης.

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Μεθοδολογία Προγραμματισμού

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

ΚΟΛΛΕΓΙΟ ΑΘΗΝΩΝ Σχολικό έτος: ΤΜΗΜΑ ΕΛΛΗΝΙΚΗΣ ΓΛΩΣΣΑΣ ΓΥΜΝΑΣΙΟ

Εισαγωγή στη Γλωσσολογία Ι

Δεκτές είναι μόνο οι λέξεις της νέας Eλληνικής γλώσσας που υπάρχουν στα ισχύοντα βοηθήματα-λεξικά τα οποία είναι τα εξής (1) :

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Μαλούτα Θεανώ Σελίδα 1


Επικοινωνία Ανθρώπου Υπολογιστή. Β3. Κατανόηση φυσικής γλώσσας

Νέα ελληνικά Επίπεδο A1-Εξάμηνο Α Κοινωνικοπολιτιστικά Βιβλία. Πηγές

ΚΟΙΝΗ ΥΛΗ ΚΑΙ ΤΟ ΚΑΙ ΤΟ ΥΠΑΡΧΕΙ ΣΤΗΝ ΥΛΗ ΤΟΥ ΚΑΙ ΔΕΝ ΣΥΜΠΕΡΙΕΛΗΦΘΗ ΣΤΗΝ ΥΛΗ ΤΟΥ ΝΕΑ ΥΛΗ ΤΟ

Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του ΜΚΔ και του ΕΚΠ στην MSWLogo

ΥΛΗ ΥΠΟΤΡΟΦΙΩΝ ΓΙΑ ΥΠΟΨΗΦΙΟΥΣ Α ΓΥΜΝΑΣΙΟΥ. Από το βιβλίο μαθητή και το τετράδιο εργασιών της ΣΤ Δημοτικού:

Λογισμικό: Αρχαία με Νόημα Κατηγορία αναπηρίας: Κώφωση Βαρηκοΐα Μάθημα: Αρχαία Ελληνικά Τάξη/εις: Α, Β Γυμνασίου

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΥΛΗ ΕΞΕΤΑΣΕΩΝ 2007 ΥΠΟΨΗΦΙΩΝ ΥΠΟΤΡΟΦΩΝ ΚΑΘΙΔΡΥΜΑΤΟΣ ΑΘΑΝΑΣΙΟΥ ΜΑΤΑΛΑ Α ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

Η ΠΟΡΕΙΑ ΣΥΝΤΑΞΗΣ ΚΑΙ ΜΕΤΑΦΡΑΣΗΣ ΕΝΟΣ ΑΡΧΑΙΟΥ ΚΕΙΜΕΝΟΥ

Άσκηση 1. Ποια από τα κάτω αλφαριθμητικά είναι αποδεκτά ως ονόματα μεταβλητών σε έναν αλγόριθμο i. Τιμή

Εισαγωγή στον Προγραμματισμό

Τεχνητή Νοημοσύνη. 23η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Μάθημα 4 ο : Συντακτική ανάλυση. Γεώργιος Πετάσης. Ακαδημαϊκό Έτος:

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Πληροφορική ΙΙ Ενότητα 1

Μεταβατικές διατάξεις Νέου Προγράμματος Σπουδών (ΝΠΣ) για τους φοιτητές εισαγωγής 2013 και πριν Υποχρεωτικά Μαθήματα

Τεχνογλωσσία 8 Β' Εξάμηνο Λογικός Προγραμματισμός Prolog

ΚΟΛΛΕΓΙΟ ΑΘΗΝΩΝ Σχολικό έτος: ΤΜΗΜΑ ΕΛΛΗΝΙΚΗΣ ΓΛΩΣΣΑΣ ΓΥΜΝΑΣΙΟ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ Α ΓΥΜΝΑΣΙΟΥ. Προτεινόμενος Προγραμματισμός κατά ενότητα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΤΑ ΜΕΡΗ ΤΟΥ Βασίλης Αναστασίου

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Εφαρμογή κατασκευής Προγράμματος εξεταστικών περιόδων. εφαρμογής

Πληροφορική 2. Αλγόριθμοι

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΔΗΜΗΤΡΙΟΥ ΑΘ. ΚΡΟΝΤΣΟΥ ΘΕΜΑ: ΓΡΑΜΜΑΤΙΚΗ-ΣΥΝΤΑΚΤΙΚΗ ΑΝΑΛΥΣΗ ΤΗΣ ΝΕΑΣ ΕΛΛΗΝΙΚΗΣ ΓΛΩΣΣΑΣ ΕΙΣΗΓΗΤΗΣ: ΙΩΑΝΝΗΣ ΡΕΦΑΝΙΔΗΣ

ΕΚ ΟΣΕΙΣ ΠΑΠΑ ΟΠΟΥΛΟΣ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

Εισαγωγή στον προγραμματισμό

Μέρος B: Εισαγωγή στις έννοιες παιδαγωγικής αξιοποίησης των ΤΠΕ με εφαρμογή στη διδακτική της Πληροφορικής Οργάνωση και Σχεδίαση Μαθήματος

Ενότητα 14 (XIV): Γλωσσική-Λεξιλογική προσέγγιση, επεξεργασία και γραμματικής ανακεφαλαίωση.

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΚΦΩΝΗΣΕΙΣ & ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΘ ΑΝΑ ΚΕΦΑΛΑΙΟ ΚΑΙ ΠΑΡΑΓΡΑΦΟ

Συστήματα κ Τεχνολογίες Γνώσης Εργασίες στην Επεξεργασία Φυσικής Γλώσσας

Ιωάννης 1[α ]:1 και το οριστικό άρθρο «ο» --- Θεός ή κάποιος θεός;

Ιδιαιτερότητες και δυσκολίες στη διδακτική της ελληνικής: η άρνηση

Ψυχογλωσσολογία. Ενότητα 4 : Επεξεργασία προτάσεων. Χριστίνα Μανουηλίδου, Επίκουρη Καθηγήτρια Τμήμα Φιλολογίας

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Απλές ασκήσεις για αρχάριους μαθητές 3

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

σας φύλλο τον αριθμό της ερώτησης ακολουθούμενη από το γράμμα Σ (Σωστή) ή το γράμμα Λ (Λάθος).

Εισαγωγή στη Γλωσσολογία Ι

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

αντίστοιχο γεγονός. Όταν όντως το κουμπί

ΕΚ ΟΣΕΙΣ ΠΑΠΑ ΟΠΟΥΛΟΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Προτεινόμενος Προγραμματισμός κατά ενότητα

Χρησιμοποιώντας συναρτήσεις

ΕΚ ΟΣΕΙΣ ΠΑΠΑ ΟΠΟΥΛΟΣ

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Νέα ελληνικά Πανεπιστήμιο Stendhal Grenoble 3 Επίπεδο A2 Α εξάμηνο-επιλογή / επιμέλεια Μ. Ζουμπουλίδου Γραμματικό Κοινωνικοπολιτιστικά.

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Γλώσσες & Τεχνικές 4 ο Εξάμηνο. - Ενότητα 2 - Δημοσθένης Σταμάτης Τμήμα Πληροφορικής

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Α. ΚΕΙΜΕΝΑ 1 «ΤΟ ΧΕΡΙ»

Αριθμοκαμώματα Computer Game σε Microworlds Pro

ΕΙΔΗ ΔΕΥΤΕΡΕΥOΥΣΩΝ ΠΡOΤΑΣΕΩΝ Τη θεωρία της ύλης θα τη βρείτε: Βιβλίο μαθητή σελ και Βιβλίο Γραμματικής σελ

Η Δομή Επανάληψης. Εισαγωγή στην δομή επανάληψης Χρονική διάρκεια: 3 διδακτικές ώρες

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Information Extraction

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

Transcript:

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΡΓΑΣΤΗΡΙΟ ΤΕΧΝΗΤΗΣ ΝΟΗΜΟΣΥΝΗΣ (Prolog) ΕΞΑΜΗΝΟ: Δ - Εαρινό 2013-14 ΚΑΘΗΓΗΤΕΣ: Δ.ΣΤΑΜΑΤΗΣ, Κ.ΔΙΑΜΑΝΤΑΡΑΣ ΑΣΚΗΣΗ 11: ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ - ΣΥΝΤΑΚΤΙΚΗ ΑΝΑΛΥΣΗ (PARSING) Η συντακτική ανάλυση είναι το πρώτο βήμα για την κατανόηση μιας γλώσσας φυσικής ή μη-φυσικής. Φυσικές γλώσσες είναι αυτές που ομιλούνται από ανθρώπους όπως πχ. τα Ελληνικά ή τα Αγγλικά, ενώ μη-φυσικές είναι αυτές που χρησιμοποιούνται πχ. για τον προγραμματισμό των υπολογιστών (Java, C/C++, Prolog, κλπ). Η συντακτική ανάλυση συνίσταται σε δύο λειτουργίες (α) στην αναγνώριση της συντακτικής ορθότητας μιας πρότασης (είναι δηλαδή η πρόταση συντακτικά ορθή ή όχι;) και (β) στην ανάθεση του σωστού ρόλου σε κάθε όρο (λέξη) της πρότασης στην περίπτωση που αυτή είναι όντως συντακτικά ορθή. Για παράδειγμα, στην Ελληνική γλώσσα η συντακτική ανάλυση της πρότασης Ο Γιάννης είδε τη Μαρία (α) αποφαίνεται ότι η πρόταση είναι συντακτικά ορθή, και (β) κάνει την ακόλουθη αντιστοίχηση των λέξεων με το συντακτικό τους ρόλο: Ο Γιάννης είδε τη Μαρία (όνομα) (ρήμα) (όνομα) Αντίστοιχα, η συντακτική ανάλυση για την παρακάτω πρόταση Είδες τον Γιάννη η Μαρία Υποκείμενο Αντικείμενο θα μας έλεγε ότι αυτή είναι συντακτικά λανθασμένη και επομένως δεν είναι δυνατή η αντιστοίχηση των λέξεων με κάποιο συντακτικό ρόλο. Κανόνες Γραμματικής Η ορθή συντακτική δομή μιας γλώσσας ορίζεται από κανόνες όπως οι παρακάτω (δείτε τις αντίστοιχες επεξηγήσεις): Πρόταση (Sentence) είναι ένα NounPhrase (φράση με ουσιαστικό) ένα VerbPhrase (φράση με ρήμα) Sentence NounPhrase VerbPhrase (Γραμματικός Κανόνας 1) NounPhrase είναι ένα Article ένα Noun (ουσιαστικό) NounPhrase Article Noun (Γραμματικός Κανόνας 2) Name είτε ένα Name (Κύριο όνομα) VerbPhrase είναι ένα tverb (μεταβατικό ρήμα) ένα NounPhrase 1

VerbPhrase tverb NounPhrase (Γραμματικός Κανόνας 3) iverb είτε ένα iverb (αμετάβατο ρήμα) Article "a" Article "the" Noun "ball" Noun "car" Name "John" Name "Mary" iverb "runs" iverb "dances" tverb "sees" tverb "likes" tverb "drinks" Λεξικό (απλοί κανόνες ή αλλιώς "γεγονότα") Τα παραπάνω αποτελούν μια απλή γραμματική της Αγγλικής γλώσσας (χωρίς επίθετα, επιρρήματα, αναφορικές προτάσεις, κλπ, και μόνο σε τρίτο ενικό του ενεστώτα). Η γραμματική αυτή αποτελείται από τρεις κανόνες και από μια πληθώρα δεδομένων (ή γεγονότων facts) που αποτελούν το λεξικό μας. Η καρδιά της γραμματικής είναι οι κανόνες οι οποίοι μας λένε από τι αποτελείται μια πρόταση και από τι αποτελούνται τα επί μέρους κομμάτια μιας πρότασης. Παρ' όλη την απλότητά της η παραπάνω γραμματική μπορεί να αναγνωρίσει προτάσεις όπως John sees the ball και να αναθέσει συντακτικούς ρόλους στις λέξεις: John = Name = NounPhrase.. sees = tverb. the = Article ball = Noun Επίσης μπορεί να βρει ότι προτάσεις όπως The John sees ball είναι συντακτικά εσφαλμένες. = NounPhrase = VerbPhrase = Sentence Γραμματικοί κανόνες στην Prolog Παρατηρήστε ότι οι κανόνες της παραπάνω γραμματικής μοιάζουν πάρα πολύ με κανόνες Prolog ενώ οι απλοί κανόνες που αποτελούν το λεξικό μοιάζουν με γεγονότα στην Prolog. Πράγματι, αν υποθέσουμε ότι οι λέξεις μιας πρότασης μας δίνονται σε μια λίστα, μπορούμε εύκολα να μετατρέψουμε την παραπάνω γραμματική σε πρόγραμμα Prolog: sentence(wordlist) :- append(np,vp,wordlist), nounphrase(np), verbphrase(vp). nounphrase(wordlist) :- append(a,n,wordlist), article(a), noun(n). Υλοποιεί τον Γραμματικό κανόνα 1 Υλοποιούν τον Γραμματικό κανόνα 2 2

nounphrase(wordlist) :- name(wordlist). verbphrase(wordlist) :- append(tv,np,wordlist), tverb(tv), nounphrase(np). verbphrase(wordlist) :- iverb(wordlist). Υλοποιούν τον Γραμματικό κανόνα 3 article([a]). article([the]). noun([ball]). noun([car]). name([john]). name([mary]). iverb([runs]). iverb([dances]). tverb([sees]). tverb([likes]). tverb([drinks]). Λεξικό (σειρά από γεγονότα) Παράδειγμα εκτέλεσης?- sentence([john,sees,the,ball]). Yes Συνήθως δε μας αρκεί μια απλή απάντηση Yes ή No για την γραμματικότητα μιας πρότασης, αν είναι δηλαδή αυτή συντακτικά ορθή ή όχι. Ο ουσιαστικός σκοπός της συντακτικής ανάλυσης είναι η εύρεση του συντακτικού ρόλου κάθε λέξης της πρότασης. Θέλουμε λοιπόν να τυπώνεται στην οθόνη αυτή η επί πλέον πληροφορία. Το παρακάτω πρόγραμμα διαμορφώνει το προηγούμενο πρόγραμμα προσθέτοντας αυτή ακριβώς την πληροφορία υπό μορφή strings. Η εντολή string_concat(a,b,c) λειτουργεί όπως ακριβώς η εντολή append με τη διαφορά ότι εφαρμόζεται σε strings και όχι σε λίστες, δηλαδή ενώνει τα strings Α, Β με αποτέλεσμα το string C. Η λίστα Wordlist είναι sentence με συντακτική δομή που περιγράφεται στο string Syntax, εαν sentence(wordlist,syntax) :- append(np,vp,wordlist), nounphrase(np,syntax1), verbphrase(vp,syntax2), string_concat('sentence:{ ', Syntax1, Temp1), string_concat(temp1, Syntax2, Temp2), Χωρίζεται στις λίστες NP, VP και Οι λίστες NP, VP έχουν συντακτική δομή που περιγράφεται από τα strings Syntax1, Syntax2, και nounphrase(wordlist,syntax) :- append(a,n,wordlist), article(a,syntax1), noun(n,syntax2), string_concat('noun-phrase:{ ', Syntax1, Temp1), string_concat(temp1, Syntax2, Temp2), Το string Syntax προέρχεται από την ένωση των strings Syntax1, Syntax2. nounphrase(wordlist,syntax) :- name(wordlist,syntax1), string_concat('noun-phrase:{ ', Syntax1, Temp1), string_concat(temp1,'} ',Syntax). 3

verbphrase(wordlist,syntax) :- append(tv,np,wordlist), tverb(tv,syntax1), nounphrase(np,syntax2), string_concat('verb-phrase:{ ', Syntax1, Temp1), string_concat(temp1,syntax2,temp2), verbphrase(wordlist,syntax) :- iverb(wordlist,syntax1), string_concat('verb-phrase:{ ', Syntax1, Temp1), string_concat(temp1,'} ',Syntax). article([a], 'article:{a} '). article([the], 'article:{the} '). noun([ball], 'noun:{ball} '). noun([car], 'noun:{car} '). name([john], 'name:{john} '). name([mary], 'name:{mary} '). iverb([runs], 'iverb:{runs} '). iverb([dances], 'iverb:{dances} '). tverb([sees], 'tverb:{sees} '). tverb([likes], 'tverb:{likes} '). tverb([drinks], 'tverb:{drinks} '). Παράδειγμα εκτέλεσης:?- sentence([john,sees,a,car],syntax). Syntax = "sentence:{ noun-phrase:{ name:{john} } verb-phrase:{ tverb:{sees} nounphrase:{ article:{a} noun:{car} } } }." Μια απλή Ελληνική γραμματική Η συντακτική δυσκολία της Ελληνικής γλώσσας έγκειται στην κλίση των ονομάτων, των ουσιαστικών, των άρθρων, των ρημάτων, κλπ. Έτσι, για παράδειγμα, κάθε ουσιαστικό προσδιορίζεται από κάποιες ιδιότητες (attributes) όπως γένος, πτώση, και αριθμό (ενικό/πληθυντικό). Ομοίως κάθε ρήμα έχει ιδιότητες όπως ο χρόνος (ενεστώτας, αόριστος, κλπ), το πρόσωπο (1 ο, 2 ο, 3 ο ), ο αριθμός, κ.ο.κ. Μια πολύ απλή γραμματική της Ελληνικής υλοποιείται από τους εξής κανόνες: Πρόταση ΟνοματικήΦράση(πτώση=ονομαστική, γένος=χ) ΡηματικήΦράση(πτώση=αιτιατική) ΟνοματικήΦράση(πτώση=Χ, γένος=υ) ΡηματικήΦράση(πτώση=Χ) Άρθρο(πτώση=Χ, γένος=υ) Ουσιαστικό(πτώση=Χ, γένος=υ) Άρθρο(πτώση=Χ, γένος=υ) Όνομα(πτώση=Χ, γένος=υ) ΜεταβατικόΡήμα ΟνοματικήΦράση(πτώση=Χ, γένος=υ) ΑμετάβατοΡήμα Στην παραπάνω γραμματική μπορούμε να "παίξουμε" μόνο με το γένος και την πτώση των ουσιαστικών και των ονομάτων. Ο αριθμός τω ουσιαστικών και των ονομάτων θεωρείται σταθερός (πχ. ο ενικός), όπως επίσης και ο χρόνος και το πρόσωπο του ρήματος (πχ. ενεστώτας, 3 ο πρόσωπο). Επίσης στο λεξικό πρέπει να προσδιορίσουμε τις ιδιότητες της κάθε λέξης, πχ. Άρθρο(πτώση=ονομαστική, γένος=αρσενικό) "ο" Άρθρο(πτώση=αιτιατική, γένος=αρσενικό) "τον" Άρθρο(πτώση=ονομαστική, γένος=θηλυκό) "η" Άρθρο(πτώση=αιτιατική, γένος=θηλυκό) "την" Άρθρο(πτώση=ονομαστική, γένος=ουδέτερο) "το" Άρθρο(πτώση=αιτιατική, γένος=ουδέτερο) "το" Όνομα(πτώση=ονομαστική, γένος=αρσενικό) "Ανδρέας" Όνομα (πτώση=αιτιατική, γένος=αρσενικό) "Ανδρέα" Όνομα (πτώση=ονομαστική, γένος=θηλυκό) "Ελένη" Όνομα (πτώση=αιτιατική, γένος=θηλυκό) "Ελένη" Ουσιαστικό(πτώση=ονομαστική, γένος=αρσενικό) "άνθρωπος" Ουσιαστικό (πτώση=αιτιατική, γένος=αρσενικό) "άνθρωπο" 4

Ουσιαστικό (πτώση=ονομαστική, γένος=θηλυκό) "καρέκλα" Ουσιαστικό (πτώση=αιτιατική, γένος=θηλυκό) "καρέκλα" Ουσιαστικό (πτώση=ονομαστική, γένος=ουδέτερο) "μολύβι" Ουσιαστικό (πτώση=αιτιατική, γένος=ουδέτερο) "μολύβι" ΜεταβατικόΡήμα "παίρνει" ΜεταβατικόΡήμα "βάφει" ΑμετάβατοΡήμα "τρέχει" ΑμετάβατοΡήμα "χορεύει" Έτσι προτάσεις όπως Η Ελένη παίρνει το μολύβι αναλύονται συντακτικά ως εξής Η = Άρθρο(πτώση=ονομαστική,γένος=θηλυκό) Ελένη = Άρθρο(πτώση=ονομαστική,γένος=θηλυκό) παίρνει = ΜεταβατικόΡήμα το = Άρθρο(πτώση=αιτιατική,γένος=ουδέτερο) μολύβι = Ουσιαστικό(πτώση=αιτιατική,γένος=ουδέτερο) ΟνοματικήΦράση. (πτώση=ονομαστική, γένος=θηλυκό) ΟνοματικήΦράση (πτώση=αιτιατική, γένος=θηλυκό) ΡηματικήΦράση (πτώση=αιτιατική) Πρόταση ΤΙ ΠΡΕΠΕΙ ΝΑ ΚΑΝΕΤΕ Υλοποιήστε την παραπάνω γραμματική της Ελληνικής σε Prolog. Έτσι, για παράδειγμα, η πρόταση "Ο Ανδρέας βάφει την καρέκλα" αναλύεται συντακτικά εκτελώντας την ερώτηση?- protasi([o, andreas, bafei, thn, karekla], Syntax). Syntax = "protasi:{ onomatikhfrash[onomastikh,arseniko]:{ arthro[onomastikh,arseniko]:{o} onoma[onomastikh,arseniko]:{andreas} } rhmatikhfrash:{ metabatikorhma:{bafei} onomatikhfrash[aitiatikh,thhlyko]:{ arthro[aitiatikh,thhlyko]:{thn} oysiastiko[aitiatikh,thhlyko]:{karekla} } } } 5