Ασκήσεις μελέτης της 23 ης διάλεξης

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

Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Γλωσσική Τεχνολογία, Διδάσκων: Ι. Ανδρουτσόπουλος

Ασκήσεις μελέτης της ενότητας της Γλωσσικής Τεχνολογίας

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

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

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

Ασκήσεις μελέτης της 11 ης διάλεξης

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

Printed November 5, 2012 at 8:37

ΑΣΚΗΣΗ ΜHΧΑΤΡΟΝΙΚΗΣ. Τέλος όταν εισάγετε ένας σωστός συνδυασμός η ένδειξη του display να μηδενίζετε.

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

Ασκήσεις μελέτης της 16 ης διάλεξης

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

Τεχνητή Νοημοσύνη ( )

Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική»

Γλωσσική Τεχνολογία. 5 η Ενότητα: Συντακτική ανάλυση. Ίων Ανδρουτσόπουλος.

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Μηχανές Πεπερασμένων Καταστάσεων

Υπηρεσία «NT Bulk SMS» Οδηγίες Χρήσεως

SPSS Statistical Package for the Social Sciences

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

The Accusative Case. A Target for the Action. A lesson for the Paideia web-app Ian W. Scott, 2015

Ασκήσεις μελέτης της 8 ης διάλεξης

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

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

S, (5, -3, 34, -23, 7) ( *, _

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

STARTING STEPS IN GRAMMAR, FINAL TEST C TERM 2012 UNITS 1-18

Περιεχόμενα Πρόλογος 1. Εισαγωγή 2. Τα Βασικά Μέρη ενός Προγράμματος Prolog

Ασκήσεις μελέτης της 6 ης διάλεξης

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

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

Ασκήσεις μελέτης της 19 ης διάλεξης

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Διάλεξη 12η: Δείκτες, μέρος 2

Μηχανική Μετάφραση Αριθμητικών

@ BY AVENUES PRIVATE INSTITUTE JUNE 2014

Εισαγωγή στην Αριθμητική Ανάλυση

COMBO panels contents

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

LESSON 16 (ΜΑΘΗΜΑ ΔΕΚΑΕΞΙ) REF : 102/018/16-BEG. 4 March 2014

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

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

Συντακτική Ανάλυση. Ίων Ανδρουτσόπουλος.

Εισαγωγή στην γλώσσα προγραμματισμού C

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

Mεταβλητές (variables) και Σταθερές (constants)

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

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

(α) Ζητείται να αναπαρασταθεί η παραπάνω γνώση σε Prolog, ώστε να δημιουργηθεί αντίστοιχο πρόγραμμα.

Προγραμματισμός ΙI (Θ)

char name[5]; /* define a string of characters */

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Αντικειμενοστραφής Προγραμματισμός

COMBO panels contents

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

/ Γράψε και χρωμάτισε τα φρούτα. / Γράψε και χρωμάτισε τα ζώα.

Εισαγωγή στο MATLAB. Κολοβού Αθανασία, ΕΔΙΠ,

Pages 4-5 Pages 6-7 Pages 8-9 Pages Pages Pages Pages Pages Pages Pages Pages Page Page 28-29

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

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Εντολές της LOGO (MicroWorlds Pro)

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

8 η ΕΝΟΤΗΤΑ Συμβολοσειρές Δομές

3 Αλληλεπίδραση Αντικειμένων

Μαθηματική Λογική και Λογικός Προγραμματισμός

Shell Scripts: loops / if / test

ΤΕΙ Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών. Επώνυμο Όνομα: Α.Μ. : Εξάμηνο : Αίθουσα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Διαδικασιακός Προγραμματισμός

ΚΕΦΑΛΑΙΟ 4. Ενοποιητική Γραµµατική

2.1. Εντολές Σχόλια Τύποι Δεδομένων

lab7: Συμβολοσειρές Συμβολοσειρές Ασφάλεια εισόδου Αναγνωσιμότητα κώδικα (σχόλια, στοίχιση, περιγραφικά ονόματα μεταβλητών, κτλ.)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Pivot Support.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

Αντικειμενοστραφής Προγραμματισμός

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Αναφορές, είκτες και Αλφαριθμητικά

Διαδικασιακός Προγραμματισμός

ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Διαδικασιακός Προγραμματισμός

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Για να μιλήσουμε για περισσότερα από ένα πρόσωπα, ζώα ή πράγματα, συνήθως προσθέτουμε το s στο τέλος μίας λέξης. four sisters

Κατ οίκον Εργασία ΚE5

Αντικειμενοστρεφής Προγραμματισμός

Εργαστήριο Σημασιολογικού Ιστού

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Γλώσσες Χωρίς Συμφραζόμενα

Transcript:

Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 23 ης διάλεξης 23.1. Μετατρέψτε τη γραμματική του σκέλους (α) της άσκησης 22.1 σε γραμματική DCG της Prolog, φροντίζοντας η γραμματική να υπολογίζει και το μήκος της συμβολοσειράς εισόδου, όπως στο παρακάτω παράδειγμα:?- phrase( s(length), [a, a, b, b, b, c, c]). Length = 7?- phrase( s(length), [a, a, b, b, b, c]). no s(newvalue) --> [a], p(value), [c], {NewValue is Value + 2}. p(newvalue) --> [a], p(value), [c], {NewValue is Value + 2}. p(value) --> q(value). q(1) --> b. q(newvalue) --> b, q(value), {NewValue is Value + 1}. 23.2. Τροποποιήστε τη γραμματική του σκέλους (β) της άσκησης 22.2, ώστε αν τη δώσουμε στην Prolog μαζί με το στόχο: phrase(s(action, Agent, Object), [ο, σκύλος, κυνήγησε, τη, γάτα]). η Prolog να απαντήσει: Action = chase, Agent = dog, Object = cat, ενώ στην περίπτωση του στόχου: phrase(s(action, Agent, Object), [ο, σκύλος, δάγκωσε, τη, γάτα]). η Prolog να απαντήσει: Action = bite, Agent = dog, Object = cat. s(action, Agent, Object) --> np(agent), vp(action, Object). np(entity) --> det(gender), n(entity, Gender). vp(action, Object) --> v(action), np(object). det(masc) --> [ο]. det(fem) --> [η]. det(masc) --> [το]. det(fem) --> [τη]. n(dog, masc) --> [σκύλος]. n(dog, masc) --> [σκύλο]. n(cat, fem) --> [γάτα]. v(chase) --> [κυνήγησε]. v(bite) --> [δάγκωσε].

23.3. (α) Τροποποιήστε τη γραμματική DCG της διαφάνειας «Σημασιολογία αριθμητικής γλώσσας», ώστε να επιτρέπει αριθμητικές πράξεις μεταξύ αριθμών από το μηδέν ως και το 9.999. Ως απλούστευση, το δέκα να γράφεται ως [one, ten], το δώδεκα ως [one, ten, two], το 23 ως [two, ten, three], το εκατό ως [one, hundred], το 110 ως [one, hundred, one, ten], το 123 ως [one, hundred, two, ten, three], το 1000 ως [one, thousand], το 1123 ως [one, thousand, one, hundred, two, ten, three] κ.ο.κ. Για παράδειγμα, η ακόλουθη εντολή:?-phrase(expression(v), [open, two, thousand, three, hundred, five, ten, two, plus, two, ten, one, close]). θα πρέπει να επιστρέφει: V = 2373 και η εντολή:?-phrase(expression(v), [open, open, two, thousand, three, hundred, five, ten, two, plus, two, ten, one, close, minus, one, thousand, seven, ten, close]). V = 1303 digit(0) --> [zero]. digit(2) --> [two]. digit(4) --> [four]. digit(6) --> [six]. digit(8) --> [eight]. digit(1) --> [one]. digit(3) --> [three]. digit(5) --> [five]. digit(7) --> [seven]. digit(9) --> [nine]. number(value) --> digit(value). number(newvalue) --> digit(value1), [ten], number(value2), {Value2 < 10, NewValue is Value1 * 10 + Value2}. number(newvalue) --> digit(value1), [ten], {NewValue is Value1 * 10}. number(newvalue) --> digit(value1), [hundred], number(value2), {Value2 < 100, NewValue is Value1 * 100 + Value2}. number(newvalue) --> digit(value1), [hundred], {NewValue is Value1 * 100}. number(newvalue) --> digit(value1), [thousand], number(value2), {Value2 < 1000, NewValue is Value1 * 1000 + Value2}. number(newvalue) --> digit(value1), [thousand], {NewValue is Value1 * 1000}. expression(value) --> number(value). expression(newvalue) --> [open], expression(value1), [plus], expression(value2), [close], {NewValue is Value1 + Value2}. expression(newvalue) --> [open], expression(value1), [minus], expression(value2), [close], {NewValue is Value1 - Value2}. (β) Μετατρέψτε τη γραμματική του προηγούμενου σκέλους σε προτάσεις Horn πρωτοβάθμιας κατηγορηματικής λογικής. Μπορείτε να χρησιμοποιήσετε αριθμούς (π.χ. 10) και συμβολοσειρές (strings, π.χ. "one") ως σταθερές. Μπορείτε, επίσης, να χρησιμοποιήσετε

αριθμητικές πράξεις (π.χ. x + 10) και συνενώσεις συμβολοσειρών (π.χ. string1 + "one") ως συναρτησιακούς όρους. Digit(0, "zero") Digit(1, "one") Digit(2, "two") Digit(3, "three") Digit(4, "four") Digit(5, "five") Digit(6, "six") Digit(7, "seven") Digit(8, "eight") Digit(9, "nine") Digit(value, string) number(value, string) (Digit(value1, string1) number(value2, string2) (value2 < 10)) Number(value1 10 + value2, string1 + "ten" + string2) Digit(value1, string1) Number(value1 10, string1 + "ten") (Digit(value1, string1) number(value2, string2) (value2 < 100)) Number(value1 100 + value2, string1 + "hundred" + string2) Digit(value1, string1) Number(value1 100, string1 + "hundred") (Digit(value1, string1) number(value2, string2) (value2 < 1000)) Number(value1 1000 + value2, string1 + "thousand" + string2) Digit(value1, string1) Number(value1 1000, string1 + "thousand") Number(value, string) Expression(value, string) (Expression(value1, string1) Expression(value2, string2)) Expression(value1 + value2, "open" + string1 + "plus" + string2 + "close") (Expression(value1, string1) Expression(value2, string2)) Expression(value1 value2, "open" + string1 + "minus" + string2 + "close") 23.4. Γράψτε ως προτάσεις Horn πρωτοβάθμιας κατηγορηματικής λογικής τους ακόλουθους κανόνες γραμματικής DCG. Συμβολίστε με «s 1 + s 2» τη συνένωση δύο συμβολοσειρών s 1, s 2. nominal(gen, Sem) n(gen, Sem). nominal(gen, and(semadj, SemNom)) adj(gen, SemAdj), nominal(gen, SemNom). n(fem, request(flight)) [πτήση]. adj(fem, price(cheap)) [φτηνή]. N(gen, sem, s1) Nominal(gen, sem, s1) Adj(gen, semadj, s1) Nominal(gen, semnom, s2) Nominal(gen, And(semAdj, semnom), s1+s2) N(Fem, Request(Flight), «πτήση») Adj(Fem, Price(Cheap), «φτηνή») 23.5. Γράψτε μια γραμματική DCG που να επιτρέπει προτάσεις όπως: [άνοιξε,τα,παράθυρα,του,σαλονιού], [κλείσε,το,μικρό,παράθυρο,του,σαλονιού], [σβήσε,το,μεγάλο,φως,της,μικρής,κουζίνας], [άναψε,τα,φώτα,των,μικρών,μπάνιων]

αλλά να μην επιτρέπει προτάσεις με ασυμφωνία γένους, αριθμού ή πτώσης, όπως οι παρακάτω: Χ [άνοιξε,το,παράθυρα,του,σαλονιού], Χ [κλείσε,το,μικρή,παράθυρο,του,σαλονιού], Χ [σβήσε,το,μεγάλου,φως,της,μικρής,κουζίνας], Χ [άναψε,τα,φώτα,το,μικρού,μπάνιων] και να απαιτεί τα ρήματα «ανάβω» και «σβήνω» να χρησιμοποιούνται μόνο με φώτα, ενώ τα «ανοίγω» και «κλείνω» μόνο με παράθυρα. Για παράδειγμα, να μην επιτρέπονται προτάσεις όπως: Χ [σβήσε,το,μικρό,παράθυρο,του,σαλονιού], Χ [άνοιξε,το,μεγάλο,φως,της,μικρής,κουζίνας] Για τις επιτρεπόμενες προτάσεις, θέλουμε η γραμματική να μπορεί να χρησιμοποιηθεί όπως φαίνεται στα παρακάτω παραδείγματα:?- phrase(s(action, Type1, Size1, Number1, Type2, Size2, Number2, [άνοιξε,τα,μεγάλα,παράθυρα,του,μικρού,σαλονιού]). Action = open, Type1 = window, Size1 = large, Number1 = plur, Type2 = livingroom, Size2=small, Number2 = sing?- phrase(s(action, Type1, Size1, Number1, Type2, Size2, Number2, [άναψε,τα,φώτα,των,μικρών,μπάνιων]). Action = on, Type1 = light, Size1 = unknown, Number1 = plur, Type2 = bathroom, Size2=small, Number2 = plur?- phrase(s(action, Type1, Size1, Number1, Type2, Size2, Number2, [κλείσε,τα,παράθυρα]). Action = close, Type1 = window, Size1 = unknown, Number1 = plur, Type2 = unknown, Size2=unknown, Number2 = unknown s(action, Type1, Size1, Number1, Type2, Size2, Number2) --> vp(action, Type1, Size1, Number1, Type2, Size2, Number2). vp(action, Type, Size, Number, uknown, uknown, unknown) --> v(action, Type), np(gender, Number, Case, Type, Size). vp(action, Type1, Size1, Number1, Type2, Size2, Number2) --> v(action, Type1), np(gender1, Number1, Case1, Type1, Size1), np(gender2, Number2, gen, Type2, Size2). np(gender, Number, Case, Type, Size) --> det(gender, Number, Case), nominal(gender, Number, Case, Type, Size). nominal(gender, Number, Case, Type, Size) --> adj(gender, Number, Case, Size), n(gender, Number, Case, Type). nominal(gender, Number, Case, Type, unknown) -->

n(gender, Number, Case, Type). v(on, light) --> [άναψε]. v(open, window) --> [άνοιξε]. det(neut, sing, acc) --> [το]. det(neut, sing, gen) --> [του]. det(gender, plur, gen) --> [των]. v(off, light) --> [σβήσε]. v(close, window) --> [κλείσε]. det(neut, plur, acc) --> [τα]. det(fem, sing, gen) --> [της]. n(neut, sing, acc, window) --> [παράθυρο]. n(neut, plur, acc, window) --> [παράθυρα]. n(neut,sing,acc, light) --> [φως]. n(neut, plur, acc, light) --> [φώτα]. n(neut, sing, gen, livingroom) --> [σαλονιού]. n(neut, plur, gen, livingroom) --> [σαλονιών]. n(neut, sing, gen, bathroom) --> [μπάνιου]. n(neut, plur, gen, bathroom) --> [μπάνιων]. n(fem, sing, gen, kitchen) --> [κουζίνας]. n(fem, plur, gen, kitchen) --> [κουζινών]. adj(neut, sing, acc, small) --> [μικρό]. adj(neut, sing, gen, small) --> [μικρού]. adj(fem, sing, acc, small) --> [μικρή]. adj(fem, sing, gen, small) --> [μικρής]. adj(gender, plur, gen, small) --> [μικρών]. adj(neut, sing, acc, large) --> [μεγάλο]. adj(neut, sing, gen, large) --> [μεγάλου]. adj(fem, sing, acc, large) --> [μεγάλη]. adj(fem, sing, gen, large) --> [μεγάλης]. adj(gender, plur, gen, large) --> [μεγάλων]. 23.6. Δίνουμε στην Prolog την ακόλουθη γραμματική DCG: v(event(saw, we, What, How)) --> [είδαμε]. det --> [τον]. det --> [το]. n(entity(scientist, Specifier)) --> [επιστήμονα]. n(entity(telescope, Specifier)) --> [τηλεσκόπιο]. pn(paris) --> [παρίσι]. prep(with) --> [με]. prep(from) --> [από]. pp(specifier(psem, NPSem)) --> prep(psem), np(npsem). nominal(nsem)--> n(nsem). nominal(entity(type, Specifier)) --> n(entity(type, Specifier)), pp(specifier). np(nominalsem) --> det, nominal(nominalsem). np(pnsem) --> det, pn(pnsem).

vp(event(type, Who, NPSem, How)) --> v(event(type, Who, NPSem, How)), np(npsem). vp(event(type, Who, NPSem, How)) --> v(event(type, Who, NPSem, How)), np(npsem), pp(how). s(vpsem) --> vp(vpsem). Γράψτε τις απαντήσεις που θα επιστρέψει η Prolog για τη μεταβλητή Sem, όταν της δώσουμε το στόχο: phrase(s(sem), [είδαμε, τον, επιστήμονα, με, το, τηλεσκόπιο]). Παραστήστε με «_» μεταβλητές που δεν θα έχουν συγκεκριμένες τιμές. Εξηγήστε πώς προκύπτουν οι απαντήσεις. Προκύπτουν δύο συντακτικά δέντρα και δύο απαντήσεις, όπως δείχνουν τα παρακάτω σχήματα. Οι δύο απαντήσεις είναι: Sem = event(saw, we, entity(scientist, specifier(with, entity(telescope, _))), _) Sem = event(saw, we, entity(scientist, _), specifier(with, entity(telescope, _)))

Μπορείτε (από περιέργεια) να δοκιμάσετε τη γραμματική και με την πρόταση «είδαμε τον επιστήμονα με το τηλεσκόπιο από το Παρίσι».