Prolog Kurze Einführung (I) KI-Programmierung und Wissensrepräsentation (KPWR) Grammatikregeln in Prolog. Prolog Kurze Einführung (II)
|
|
- Uwe Schulze
- vor 6 Jahren
- Abrufe
Transkript
1 Prolog Kurze Einführung (I) Einfache Prolog-Programme KI-Programmierung und Wissensrepräsentation (KPWR) Grammatikregeln in Prolog Fakten treffen immer zu Hornklauseln insect(bee). leere rechte Seite linke Seite gilt ohne Voraussetzungen Regeln gelten unter bestimmten, aus Fakten ableitbaren Voraussetzungen Zusammenhang ergibt sich aus Fakten is_insect(a) :- legs(a,6), insect(a). Regelkopf gleiche Form wie Fakt Regelkörper verknüpft zugehörige Bedingungen KPWR Sommer 2004 Prolog & DCG Nr. 1 KPWR Sommer 2004 Prolog & DCG Nr. 2 Prolog Kurze Einführung (II) Welches Element hat tatsächlich eine Beziehung zu einem anderen Element? Welche Regeln gelten? Wissensbasis Kern sind Fakten Fakt = Beziehung zwischen einem oder mehreren Objekten Beziehung = Charakterisierung eines Objektes durch eine Eigenschaft Objekt = Konstante oder Variable Ziel eines Prolog-Programms abhängig von Art und Weise der Auswertung (der Fakten und Regeln) Vielzahl möglicher Programmziele Definite-Clausen-Grammatiken bekanntester Ansatz für das Parsen mit Prolog Definite-Clausen-Grammatiken (DCGs) Verallgemeinerung von kontext-freien Grammatiken ausführbar da Variante einer bestimmten Klasse von Prolog-Programmen Definite Clausen keine build-in Prädikate Körper ist eine Sequenz (Konjunktion) von Aussagen siehe Beispiel (vl_beispiel.pl) KPWR Sommer 2004 Prolog & DCG Nr. 3 KPWR Sommer 2004 Prolog & DCG Nr. 4 Kontext-freie Grammatiken (I) Grammatikregeln in Prolog (I) bestehen aus Menge von Regeln der Form <Nicht-Terminal> <Rumpf> Nicht-Terminal: nicht-terminales Symbol Rumpf: Folge von einem oder mehreren Elementen (durch Kommata getrennt) Element: Nicht-Terminal-Symbol oder Folge von Terminal-Symbolen d.h. Rumpf: mögliche Form einer Phrase des Typs Nicht-Terminal Nicht-Terminal-Symbole (geschrieben als): Prolog-Atome Folgen von Terminal-Symbolen als Liste von Atomen Sätze in einer Sprache mehr als willkürliche Wortfolgen Problem: Bildung eines vernünftigen Satzes nicht nur durch Aneinanderreihung beliebiger Menge von Wörtern Grammatik für eine Sprache: Menge von Regeln Regeln bestimmen: welche Wortfolgen als Sätze der Sprache akzeptabel sind Grammatik bestimmt: wie werden Wörter in Satzteilen (Phrasen) zusammengefasst welche Reihenfolge dieser Satzteile ist zulässig KPWR Sommer 2004 Prolog & DCG Nr. 5 KPWR Sommer 2004 Prolog & DCG Nr. 6
2 Grammatikregeln in Prolog (II) Beispiel: kontext-freie Grammatik Grammatik der Sprache liegt vor, somit: feststellbar, ob gegebene Wortfolge den Kriterien entspricht, die an akzeptablen Satz gestellt werden akzeptabel somit Prüfung: Welche natürlichen Wortgruppen gibt es? Wie sind Wortgruppen zusammengesetzt? zugrunde liegende Struktur der Sätze festlegen kontext-freie Grammatik = einfache Art einer Grammatik Beispiel für englische Sätze satz --> nominalphrase, verbalphrase. nominalphrase --> artikel, nomen. verbalphrase --> verb, nominalphrase. verbalphrase --> verb. artikel --> [the]. nomen --> [apple]. nomen --> [man]. verb --> [eats]. verb --> [sings]. Grammatik besteht aus Menge von Regeln Regel gibt Form an, die Satzteil annehmen kann KPWR Sommer 2004 Prolog & DCG Nr. 7 KPWR Sommer 2004 Prolog & DCG Nr. 8 Beispiel: kontext-freie Grammatik lt. 1. Regel: satz --> nominalphrase, verbalphrase. Satz besteht aus Satzteil (nominalphrase) gefolgt von Satzteil (verbalphrase) Satzteile: Subjekt und Prädikat eines Satzes Beispiel: kontext-freie Grammatik lt. Regeln: nominalphrase: kann Form annehmen artikel gefolgt von nomen nominalphrase ist Gruppe von Wörtern, die ein Ding (mehrere) benennen Satzteil enthält Wort (nomen) das die Hauptklasse angibt, zu der das Ding gehört artikel: lt. vorgestellter Grammatik steht vor dem nomen ein Ausdruck nominalphrase the man satz verbalphrase eats the apple Nominalphrase artikel the nomen man Regel in kontext-freier Grammatik bedeutet: x --> y x kann die Form y annehmen x,y x gefolgt von y Problem: Was ist nominalphrase? Was ist verbalphrase? KPWR Sommer 2004 Prolog & DCG Nr. 9 verbalphrase: innere Struktur durch Regeln beschrieben lt. vorgestellter Grammatik 2 Regeln (2 mögliche Formen) verb, nominalphrase verb the man eats the apple oder the man sings KPWR Sommer 2004 Prolog & DCG Nr. 10 Beispiel: kontext-freie Grammatik Weitere Regeln: aus welchen tatsächlichen Wörtern kann Phrase bestehen ausgedrückt durch [] artikel --> [the]. d.h. artikel kann die Form (das Wort) the annehmen Eigenschaften der Beispielgrammatik Satz besteht aus 5 verschiedenen Wörtern Grammatik erweiterbar Prüfung: (vl_beispiel_2.pl) Beispiel: kontext-freie Grammatik satz([the,man,eats,the,apple],[]). Entspricht gegebene Wortfolge den Kriterien eines Satzes? 1. Regel anwenden Wortfolge in zwei Phrasen zerlegen, so dass: erste Phrase eine gültige nominalphrase zweite Phrase eine gültige verbalphrase 2. Regel prüft, Ist erster Satzteil eine nominalphrase? Zerlegbar in artikel und nomen? für alle Phrasen und Teilphrasen des Satzes anwenden KPWR Sommer 2004 Prolog & DCG Nr. 11 KPWR Sommer 2004 Prolog & DCG Nr. 12
3 Beispiel: kontext-freie Grammatik Analysebaum stellt Phrasenstruktur eines Satzes dar satz nominalphrase verbalphrase artikel nomen verb nominalphrase artikel nomen the man eats the apple Analyseproblem (parsing problem): zu einer gegebenen Grammatik aus einem Satz eine Baumdarstellung konstruieren Grundstruktur Folge von Wörtern, deren Struktur bestimmt werden soll Ziel: Isolation von Teilfolgen dieser Struktur als Phrasen, die von Grammatik akzeptiert werden Zeigen, dass ganze Folge vom Typ satz akzeptiert wird Folge: dargestellt als Liste Wörter: dargestellt als Atome (für Vergleiche) Problem: Gilt gegebene Folge von Wörtern als Satz im Sinne der beschriebenen Grammatik? Lösung: zugrunde liegende Struktur der übermittelten Sätze herausfinden KPWR Sommer 2004 Prolog & DCG Nr. 13 KPWR Sommer 2004 Prolog & DCG Nr. 14 Definition: Prädikat satz mit einem Argument prüft, ob übergebene Folge ein Satz ist satz(x) x ist Folge von Wörtern, die grammatisch korrekten Satz bilden Anfrage: satz([the,man,eats,the,apple]). Antwort: Yes (positiv) oder No (negativ) Prüfen: Ist Folge von Wörtern ein Satz? am Anfang der Folge soll nominalphrase gefunden werden Rest der Folge verbalphrase Folge X ist Satz, wenn Zerlegung von x in zwei Teilfolgen Y und Z wobei Y= nominalphrase und Z=verbalphrase Folgen als Listen dargestellt (append kann genutzt werden) satz(x) :- append(y,z,x), nominalphrase(y), verbalphrase(z). nominalphrase(x) :- append(y,z,x), artikel(y), nomen(z). verbalphrase(x) :- append(y,z,x), verb(y), nominalphrase(z). verbalphrase(x) :- verb(x). 2 Regeln für verbalphrase 2 Klauseln für das Prädikat Einführung der Wörter artikel([the]). nomen([man]). verb([sings]). nomen([apple]). verb([eats]). KPWR Sommer 2004 Prolog & DCG Nr. 15 KPWR Sommer 2004 Prolog & DCG Nr. 16 satz-klausel und Anfrage: satz(x) :- append(y,z,x), nominalphrase(y), verbalphrase(z). satz([the,man,eats,the,apple]). X gebunden an ([the,man,eats,the,apple]) Y und Z ungebunden Ziel: erzeugt Wertepaar für Y und Z, wobei sich Ergebnis X ergibt, wenn Z an Y angefügt wird Backtracking: gibt ALLE möglichen Wertepaare nacheinander aus Wertepaare: Y= [], Z = [the,man,eats,the,apple] Y= [the], Z = [man,eats,the,apple] Y= [the, man], Z = [eats,the,apple]... Y= [the, man, eats,the,apple], Z = [] nominalphrase erreicht Wert für Y tatsächlich akzeptable nominalphrase sonst append schlägt eine neue Möglichkeit vor KPWR Sommer 2004 Prolog & DCG Nr. 17 KPWR Sommer 2004 Prolog & DCG Nr. 18
4 Ablauf: vl_beispiel_3.pl 1. Ziel: satz([the,man,eats,the,apple]). 2. Zerlege Liste in zwei Listen Y und Z (siehe mögliche Zerlegungen) 3. Entscheidung für eine der Möglichkeiten für Y und Z Prüfung: Ist Y eine nominalphrase? Versuch nominalphrase(y) zu erfüllen 4. Ist Y = nominalphrase? Ziel erreicht und dann Suche nach verbalphrase Ziel nicht erreicht zurück zu Schritt 3 und nächste Möglichkeit wählen Nachteil: append(y,z,x) erzeugt große Anzahl an Lösungsmöglichkeiten unnötige Suche Ziel: direkterer Weg z.b. nominalphrase besteht aus 2 Wörtern Problem: Was passiert, wenn die Grammatik geändert wird? Vorschlag: nominalphrasen-klauseln geben Eigenschaften von Nominalphrasen an in Klauseln für nominalphrasen wird entschieden, welcher Teil einer Wortfolge betrachtet wird KPWR Sommer 2004 Prolog & DCG Nr. 19 KPWR Sommer 2004 Prolog & DCG Nr. 20 neue Definition des Prädikates nominalphrase nominalphrase(x,y) wahr, wenn am Anfang der Folge X eine nominalphrase steht und der sich daran anschließende Teil Y ist nominalphrase(x,y) :- artikel(x,z), nomen(z,y). Prüfen, ob Wortfolge, die nominalphrase abdeckt, in eine Folge zerlegbar, die von artikel abgedeckt wird Anfang Folge X steht nominalphrase, wenn artikel am Anfang von Folge X dann Rest Z, an dessen Anfang ein nomen steht Rest nach gesamten nominalphrase = Rest nach nomen Forderung: auch artikel und nomen haben ähnliche Konventionen KPWR Sommer 2004 Prolog & DCG Nr. 21 Auffinden einer Folge, die nominalphrase darstellt, zerlegbar in Auffinden einer Folge, die einen artikel darstellt anschließendes Auffinden einer weiteren Folge, die nomen darstellt Aber: wie viele Wörter, Artikel, Nominalphrase oder Satz enthält, muss weiterhin abgeleitet werden, dazu zusätzliches Argument artikel([the X),X). am Anfang der Folge, die mit the beginnt, kann ein artikel gefunden werden artikel umfasst nur erstes Wort der Folge und lässt Rest übrig zu jedem Prädikat, das Satzteil identifiziert, kann Argument hinzugefügt werden, Argument gibt an, in welchem Maße von diesem Satzteil Wörter der Folge verbraucht werden und welche übrig bleiben. KPWR Sommer 2004 Prolog & DCG Nr. 22 satz([the,man,eats,the,apple],[]). Anfangsziel: Welche Argumente enthält der satz in der Anfrage? Argumente geben an Sequenz - bei der begonnen wird Sequenz, die übrig bleiben soll erstes Argument ist Argument, das satz vorher zugewiesen wurde wurde Satz gefunden, kein weiterer Rest Umschreiben der Grammatik effizient, aber unsauber: satz(s0,s) :- nominalphrase(s0,s1), verbalphrase(s1,s). nominalphrase(s0,s) :- artikel(s0,s1), nomen(s1,s). verbalphrase(s0,s) :- verb(s0,s). verbalphrase(s0,s) :- verb(s0,s1), nominalphrase(s1,s). artikel([the S],S). nomen([man S],S).... Beispiel: vl_beispiel_4.pl KPWR Sommer 2004 Prolog & DCG Nr. 23 Notation für Grammatikregeln eigenständige Grammatik-Notation jedoch nur Kurzschrift für eigentlichen Prolog-Code Prolog-System kennt bereits Grammatikregeln erkennt Grammatikregeln bei Eingabe Übersetzung in normales Prolog Notation stützt sich auf Notation für kontext-freie Grammatiken satz --> nominalphrase, verbalphrase. Grammatikregeln: sind Prolog-Strukturen mit Funktor --> (als Infix-Operator deklariert) Prolog prüft eingelesenen Term auf diesen Funktor wenn ja übersetzt Term in eine korrekte Klausel KPWR Sommer 2004 Prolog & DCG Nr. 24
5 Übersetzung Notation für Grammatikregeln übersetzt Atom (bezeichnet Satzteil) in Prädikat mit 2 Argumenten Wortfolge (stellt Satzteil dar) und Rest wenn Grammatikregel aussagt, dass Satzteile nacheinander vorkommen, müssen Argumente zeigen, dass Rest (der von Satzteil übrig gelassen wurde) Eingabe für den nächsten Satzteil ist wenn Grammatikregel aussagt, dass Phrase als Folge von Teilphrasen muss anhand der Argumente deutlich werden, dass Anzahl der Wörter (von gesamter Phrase) gleich der Summe, der von den Teilphrasen eingenommenen Wörter (rechts von -->) KPWR Sommer 2004 Prolog & DCG Nr. 25 Notation für Grammatikregeln satz --> nominalphrase, verbalphrase. satz(s0,s) :- nominalphrase(s0,s1), verbalphrase(s1,s). Satz zwischen S0 und S, wenn nominalphrase zwischen S0 und S1 und verbalphrase zwischen S1 und S Übersetzung der Regeln, die die eigentlichen Wörter einführen einfügen der Wörter in Listen artikel --> [the]. artikel([the S],S). Wie werden Ziele angegeben? 1. Argument: Liste der Wörter, die betrachtet werden sollen 2. Argument: Was soll übrigbleiben nomal: [] satz([the,man,eats,the,apple],[]). nominalphrase([the,man,sings],x). KPWR Sommer 2004 Prolog & DCG Nr. 26 Notation für Grammatikregeln einige Prolog-Implementierungen haben Prädikat phrase fügt zusätzliche Argumente hinzu phrase(p,l) wahr, wenn Liste L vom Parser in Phrase des Typs P zerlegt werden kann ersetzt : satz([the,man,eats,the,apple],[]). durch : phrase(satz,[the,man,eats,the,apple]). bei Definition von phrase: Zerlegung der gesamten Liste mit [] als Rest dadurch: nominalphrase([the,man,sings],x). nicht durch Version mit phrase ersetzbar eigene Definition von phrase (Spracherweiterung) möglich phrase(p,l) :- Goal =.. [P,L,[]], call(goal). Aber: diese Definition nicht immer angemessen z.b. bei allgemeineren Grammatikregeln vl_beispiel_4.pl (phrase) KPWR Sommer 2004 Prolog & DCG Nr. 27 Problem bisherige Grammatikregeln eingeschränkt zusätzliche Erweiterung verschiedene Phrasen-Typen erhalten zusätzliche Argumente diese Erweiterung gehört zum Standard-Repertoire der Grammatikregeln in Prolog bei Auftreten bestimmter Satzteil-Typen in Grammatikregel Übersetzung in Prolog-Prädikat mit 2 zusätzlichen Argumenten Prolog-Prädikate können beliebig viele Argumente haben weitere Argumente möglich (zusätzlich zu Argumenten mit Eingabefolgen) KPWR Sommer 2004 Prolog & DCG Nr. 28 Beispiel für zusätzliche Argumente: Problem der Numerus-Kongruenz zwischen Subjekt und Verb eines Satzes Momentan: keine grammatisch korrekten Sätze (Wortfolgen) des Englischen *The boys eats the apple. *The boy eat the apple. * kennzeichnet grammatisch falsche Sätze Sätze grammatisch nicht korrekt, da Subjekt und Verb eines Satzes im gleichen Numerus stehen müssen Subjekt im Plural Pluralform des Verbs nutzen Anpassung der Grammatikregeln: Singular-Sätze - beginnen mit Singular-Nominalphrase, deren Nomen im Singular steht Plural-Sätze - analog Beispiel: satz --> singular_satz. satz --> plural_satz. nominalphrase --> singular_nominalphrase. nominalphrase --> plural_nominalphrase. singular_satz --> singular_nominalphrase, singular_verbphrase. singular_nominalphrase --> singular_artikel, singular_nomen. singular_verbalalphrase --> singular_verb, nominalphrase. singular_verbalalphrase --> singular_verb. singular_artikel --> [the]. singular_nomen --> [boy]. singular_verb --> [eats].... nicht elegant nicht direkt erkennbar: Singular- und Plural-Sätze weisen in Bezug auf Strukturen Gemeinsamkeiten auf KPWR Sommer 2004 Prolog & DCG Nr. 29 KPWR Sommer 2004 Prolog & DCG Nr. 30
6 besser: zusätzliches Argument für Phrasentypen satz(singular) oder satz(x) (satz im Numerus X) Regeln zur Numerus-Kongruenz stellen fest, ob jeweilige Werte der Argumente durchgehend verwendet werden Numerus der Subjekt-Nominalphrase = Numerus der Verbalphrase Umschreiben der Grammatik satz --> satz(x). satz(x) --> nominalphrase(x), verbalphrase(x). nominalphrase(x) --> artikel(x), nomen(x). verbalphrase(x) --> verb(x). verbalphrase(x) --> verb(x), nominalphrase(y). % numerus verb muss mit numerus verbalphrase % übereinstimmen, ABER beliebiger Numerus artikel nomen(singular) --> [boy]. nomen(plural) --> [boys]. artikel(_) --> [the]. verb(singular) --> [eats]. verb(plural) --> [eat]. vl_beispiel_6.pl KPWR Sommer 2004 Prolog & DCG Nr. 31 KPWR Sommer 2004 Prolog & DCG Nr. 32 Weitere Nutzung zusätzlicher Argumente: notieren von Konstituenten, die außerhalb der üblichen Position aufgetreten sind (ling. Bewegung) speichern von Konstituenten von semantischer Bedeutung (z.b. Wie konstituiert sich die Bedeutung eines Satzes aus den Bedeutungen der Teilsätze?) Hinweis: Nach kann nicht mehr garantiert werden, dass es noch eine kontext-freie Grammatik ist! zusätzliche Argumente zur Ausgabe eines Analysebaums aus grammatisch korrektem Satz The man eats the apple. wird Struktur erzeugt (satz (nominalphrase(artikel(the),nomen(man)), verbalphrase(verb(eats), nominalphrase(artikel(the), nomen(apple)))) KPWR Sommer 2004 Prolog & DCG Nr. 33 Erzeugung dieser Ausgabe durch zusätzliches Argument für jedes Prädikat gibt an, wie sich Baum für jeden ganzen Satz aus Bäumen der verschiedenen Teilphrasen zusammensetzt satz(x,satz(np,vp)) --> nominalphrase(x,np), verbalphrase(x,vp). 1. Folge, die Nominalphrase mit Analyse-Programm-Baum NP darstellt, 2. an die sich eine Folge anschließt, die eine Verbalphrase mit dem Analyse- Programm-Baum VP darstellt, 3. dann Wortfolge gefunden, die vollständigen Satz darstellt satz(np,vp) KPWR Sommer 2004 Prolog & DCG Nr. 34 satz(x,satz(np,vp),s0,s) :- nominalphrase(x,np,s0,s1), verbalphrase(x,vp,s1,s). S0,S1,S Teile der Eingabefolge Argumente zur Generierung von Bäumen können in gesamte Grammatik eingebaut werden Ausschnitt: Argument zur Generierung von Bäumen (satz(satz(np,vp)) --> nominalphrase(np),verbalphase(vp). verbalphrase(verbalphrase(vp)) --> verb(vp). nomen(nomen(man)) --> [man]. verb(verb(eats))--> [eats]. KPWR Sommer 2004 Prolog & DCG Nr. 35 Übersetzungsmechanismus bisher: für jeden Phrasentyp neues Prädikat mit zwei Argumenten, (geben an, wie Eingabefolge zu behandeln war) jetzt: Prädikate mit zwei weiteren Argumenten erzeugen (angegeben als letzte Argumente des Prädikats) aus Grammatikregel: satz(x) --> nominalphrase(x), verbalphrase(x). wird Ausdruck: (satz(x,s0,s) --> nominalphrase(x,s0,s1), verbalphrase(x,s1,s). bei Aufruf von Zielen, die Grammatikregeln von oberster Interpreter-Ebene oder von normalen Prolog-Regeln beinhalten, sind diese zusätzlichen Argumente ausdrücklich anzugeben Beispiele: satz(x,[a,clergyman,eats,a,cake],[]). satz(x,[every,bird,sings,and,pigs,can,fly],l). KPWR Sommer 2004 Prolog & DCG Nr. 36
7 Neue Prolog-Ziele in {} eingeschlossene Ziele werden bei der Umwandlung vom Übersetzer nicht verändert Verbessern des Wörterbuchs des Analyse-Programms Information, die das Programm über Wörter der Sprache enthält Einführung neuer Wörter in das Programm (mit beiden Paaren zusätzlicher Argumente) neues Nomen einführen: banana neue Regel: nomen(singular,nomen(banana)) --> [banana]. Prolog-Syntax: nomen(singular,nomen(banana),[banana S],S). Nachteil: viele Informationen für ein einziges Nomen deshalb Trennung in: allgemeine Informationen über Nomina Spezialinformationen über bestimmtes Wort Vermischung von Grammatikregeln und Prolog-Syntax: Grammatikregel: allgemeine Information, wie sich Nomina in größere Phrasen fügen Prolog-Klausel: welche Wörter sind Nomina? KPWR Sommer 2004 Prolog & DCG Nr. 37 KPWR Sommer 2004 Prolog & DCG Nr. 38 Beispiel: nomen(s,nomen(n)) --> [N],{ist_nomen(N,S)}. Prolog-Prädikat ist_nomen gibt an, welche Wörter sind Nomina Numerus der Wörter ist_nomen(banana,singular). ist_nomen(bananas,plural). Phrase vom Typ nomen kann Form eines beliebigen einzelnen Wortes N annehmen Einschränkung: N muss in ist_nomen-sammlung sein und Numerus S aufweisen Numerus der Phrase ist S und der erzeugte Analyse-Baum besteht einfach aus Wort N (befindet sich unterhalb des nomen-knotens) {ist_nomen(n,s)} = Relation, ohne Bezug zur Eingabefolge Ohne {} wird Ausdruck übersetzt z.b. ist_nomen(n,s,s1,s2) Problem: nicht deckungsgleich mit den ist_nomen-klauseln {} verhindert Übersetzung z.b nomen(s,nomen(n),[n Seq],Seq) :- ist_nomen(n,s). zwei ist_nomen-klauseln für jedes neu eingeführte Nomen angeben für Singular- und Pluralform jedoch Beziehung zwischen Singular und Plural durch einfache Regel: Wenn X Singularform eines Nomens ist, dann ist das Wort, das durch Hinzufügen eines s an das Ende von X gebildet wird, die Pluralform dieses Nomens KPWR Sommer 2004 Prolog & DCG Nr. 39 KPWR Sommer 2004 Prolog & DCG Nr. 40 Aufgabe: nomen-definition überarbeiten Ergebnis: Menge neuer Bedingungen, die N erfüllen muss, um als Nomen zu gelten {} Schreibweise: Bedingungen, die interne Struktur des Wortes betreffen Platz in der Eingabefolge ohne Bedeutung natürlichsprachliche Wörter als Prolog-Atome dargestellt Wie werden diese Wörter in Buchstaben zerlegt? Überlegungen über Zeichen, die das Atom bilden notwendig: Prädikat name vl_beispiel_name.pl setzt atom mit Liste von character in Beziehung verbesserte Regel über Pluralbildung (allgemein): nomen(plural,nomen(rootn))--> [N], {(name(n,plname), append(singname, s,plname), name(rootn,singname), ist_nomen(rootn,singular))}. Ausnahmen extensiv angegeben s Zeichen als Teil der Liste ist_nomen-klauseln für Singularformen von regelmäßigen Nomina angeben im Analyse-Baum wird jeweiliges Element in seiner Grundform eingefügt KPWR Sommer 2004 Prolog & DCG Nr. 41 KPWR Sommer 2004 Prolog & DCG Nr. 42
8 Syntaxbeschreibung Syntaxbeschreibung durch Regeln selbst informelle Definition grammar_rule --> grammar_head, [ --> ], grammar_body. grammar_head --> non_terminal. grammar_head --> non_terminal,[, ],terminal. grammar_body --> grammar_body, [, ],grammar_body. grammar_body --> grammar_body, [ ; ],grammar_body. grammar_body --> grammar_body_item. grammar_body_item --> [! ]. grammar_body_item --> [ { ],prolog_goals, [ } ]. grammar_body_item --> non_terminal. grammar_body_item --> terminal.... Syntaxbeschreibung non_terminal: Phrase, die Teil der Eingabefolge einnehmen kann Form einer Prolog-Struktur, Funktor bezeichnet Kategorie, zu der die Phrase gehört, Argumente liefern zusätzliche Informationen (z.b. Numerus) terminal: Anzahl an Wörtern, die Teil einer Eingabefolge einnehmen können Form einer Prolog-Liste [] oder beliebige Länge Elemente der Liste sind Prolog-Elemente, sollten mit den Wörtern deckungsgleich sein, wenn sie in der angegebenen Reihenfolge erscheinen KPWR Sommer 2004 Prolog & DCG Nr. 43 KPWR Sommer 2004 Prolog & DCG Nr. 44 Syntaxbeschreibung prolog-goals: beliebige Prolog-Ziele zur Darstellung zusätzlicher Tests und Operationen bewirken, dass zusätzliche Analysewege genutzt werden geben an, wie komplexe Ergebnisse aus einfachen zusammengesetzt sind Übersetzung: prolog-goals bleiben unverändert in non-terminals werden 2 zusätzliche Argumente eingefügt hinter die explizit angegebenen Argumente entsprechen den Wortfolgen, die vom Satz eingenommen oder übrig gelassen werden terminals erscheinen innerhalb der zusätzlichen Argumente der non-terminals Syntaxbeschreibung zweite Grammatik-Regel für grammar-head enthält weitere Art Grammatikregel grammar_head --> non_terminal,[, ],terminal. bisher: terminals und non_terminals dadurch definiert, dass Eingabefolge in bestimmten Maß aufgebraucht wird jedoch nützlich: Dinge definieren, die Elemente in die Eingabefolge einfügen Beispiel Imperativsatz: Eat your supper. So analysieren als ob you hinzugefügt wäre You eat your supper. somit - Satz wohlgeformt mit Nominalphrase und Verbalphrase (stimmt mit unserer bisherigen Vorstellung von Satzstruktur überein) KPWR Sommer 2004 Prolog & DCG Nr. 45 KPWR Sommer 2004 Prolog & DCG Nr. 46 Syntaxbeschreibung erreichbar durch Grammatik: satz --> imperativ, nominalphrase, verbalphrase. imperativ,[you] --> []. imperativ --> []. Zweite Regel übersetzt in: imperativ(l,[you L]. d.h. Folge wird ausgegeben, die länger ist, als die ursprünglich vorgegebene Folge Im Allgemeinen Linke Seite der Grammatikregel besteht aus non_teminal (Phrase), durch Komma von Liste von Wörtern getrennt nachdem Ziele auf rechter Seite die jeweilige Anzahl von Wörtern der Eingabefolge verbraucht haben einfügen dieser Wörter bei Analyse in die Eingabefolge Grammatikregeln z.b. genutzt, um die Bedeutung der Sätze unmittelbar zu erhalten ohne Zwischenschaltung eines Analyse-Baums folgende Regeln (s. folgende Folie) übersetzen eingeschränkte Anzahl von Sätzen in eine Darstellung ihrer Bedeutungen im Prädikatenkalkül every man loves a woman liefert Beispiel all(x,(man(x) -> exists(y,(woman(y) & loves(x,y))))) KPWR Sommer 2004 Prolog & DCG Nr. 47 KPWR Sommer 2004 Prolog & DCG Nr. 48
9 Beispiel op(500,xfy,&). op(600,xfy,->). satz(p) --> nominalphrase(x,p1,p),verbalphrase(x,p1). nominalphrase(x,p1,p)--> artikel(x,p2,p1,p),nomen(x,p3),rel_satz(x,p3,p2). nominalphrase(x,p,p)--> eigenname(x). verbalphrase(x,p)--> trans_verb(x,y,p1),nominalphrase(y,p1,p). verbalphrase(x,p)--> intrans_verb(x,p). rel_satz(x,p1,(p1 & P2))--> [that],verbalphrase(x,p2). rel_satz(_,p,p)--> []. artikel(x,p1,p2,all(x,(p1 -> P2)))--> [every]. artikel(x,p1,p2,exists(x,(p1 & P2)))--> [a]. nomen(x,man(x))--> [man]. nomen(x,woman(x))--> [woman]. eigenname(john) --> [john]. eigenname(mary) --> [mary]. trans_verb(x,y,loves(x,y))--> [loves]. intrans_verb(x,lives(x))--> [lives]. vl_beispiel_7.pl KPWR Sommer 2004 Prolog & DCG Nr. 49 Beispiel Ergänzung (Deklarieren von Operatoren) Operatoren können Syntax beim Lesen und Schreiben von Termen vereinfachen 3 Eigenschaften Position Prioritätsklasse Präfix-Operatoren Operator mit 2 Argumenten kann zwischen diesen stehen Operator mit 1 Argument kann dahinter oder davor stehen Prioritätsklasse durch ganze Zahl ausgedrückt Zahlenbereich von Implementierung abhängig macht Ausdrücke eindeutig, bei denen Syntax der Terme nicht explizit durch Klammern angegeben ist Assoziativität von Operatoren ermöglicht eindeutiges Verständnis von Ausdrücken, in denen Operatoren mit gleichen Prioritäten vorkommen KPWR Sommer 2004 Prolog & DCG Nr. 50 Beispiel Ergänzung (Deklarieren von Operatoren) Operator wird Atom zugeordnet spezifiziert Position und Assoziativität Spezifikatoren = Bilder der möglichen Verwendung der Operatoren Spezifikatoren (infix) xfx xfy yfx yfy f ist Operator x und y sind Argumente Spezifikatoren (präfix / postfix) fx fy / xf yf Aussagen über die Assoziativität durch x und y Voraussetzung: keine Klammerung y besagt, dass das Argument Operatoren derselben oder einer niedrigeren Prioritätsklasse enthalten kann x besagt, dass alle Operatoren im Argument unbedingt eine niedrigere Prioritätsklasse als dieser Operator haben müssen KPWR Sommer 2004 Prolog & DCG Nr. 51 Beispiel Ergänzung (Deklarieren von Operatoren) Operator + (yfx) a + b + c Interpretation als (a + b) + c oder a + (b + c) zweite Interpretation gilt nicht, weil Argument hinter dem ersten + einen Operator derselben Prioritätsklasse enthalten müsste (z.b. weiteres +) dies widerspricht dem Vorhandensein des x hinter dem Spezifikator f ein in der Form yfx deklarierter Operator ist linksassoziativ ein in der Form xfy deklarierter Operator ist rechtsassoziativ Wenn gewünschte Assoziativität eines Infix-Operators bekannt ist, der deklariert werden soll, so ist Spezifikator damit eindeutig bestimmt not not a syntaktisch zulässig, wenn not als fy deklariert unzulässig, wenn not als fx deklariert KPWR Sommer 2004 Prolog & DCG Nr. 52 Beispiel Ergänzung (Deklarieren von Operatoren) in Prolog wenn Operator mit gegebener Position, Priorität und Assoziativität beim Lesen und Schreiben von Termen erkannt werden soll Prädikat op op(prec,spec,name) name = gewünschter Operator (Atom, das zu einem Operator gemacht werden soll) prec = Prioritätsklasse (ganze Zahl innerhalb des gültigen Bereichs) spec = Spezifikator der Position/Assoziativität (eines der oben genannten Atome) Wenn Operator-Deklaration zulässig ist, kann Zielvorgabe erfüllt werden Beispiele Kernoperatoren op(1200,xfx, :-). op(1200,fx,?-). op(1100,xfy, ;). op(100,xfy,, ). op(700,xfx, <).... KPWR Sommer 2004 Prolog & DCG Nr. 53 Beispiel Argumente: zur Strukturbildung (stellen Bedeutungen von Sätzen dar) letztes Argument jeder Phrase stellt Bedeutung dar Bedeutung abhängig von Faktoren, die in anderen Argumenten angegeben sind. Beispiel lives (intransitiv ein Argument) intrans_verb(x,p). intrans_verb(x,lives(x))--> [lives]. Verb lives Aussage der Form lives(x), X steht für die Person, die lebt Bedeutung wird bestimmten Objekt zugeordnet Kontext, in dem Verb benutzt wird, bestimmt das Objekt Definition besagt nur, das für jedes X die Bedeutung lives(x) gilt, wenn das Verb auf X angewendet wird KPWR Sommer 2004 Prolog & DCG Nr. 54
10 Beispiel Beispiel every (transitiv zwei Argumente) trans_verb(x,y,p1) trans_verb(x,y,loves(x,y))--> [loves]. Bedeutung auf eine Variable und zwei Aussagen (enthalten diese Variable) übertragen ergibt Einsetzen eines Objektes für eine Variable in der ersten Aussage etwas Wahres dann ergibt das Einsetzen desselben Objektes für die Variable in der zweiten Aussage ebenfalls etwas Wahres. vl_beispiel_7.pl KPWR Sommer 2004 Prolog & DCG Nr. 55
Abstrakte Syntax von Prolog (1)
3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die
MehrTerme. Heute: Terme vergleichen. Struktur von Termen. Operatoren. Logik in der Praxis Logikprogrammierung (Prolog) p.1
Terme Heute: Terme vergleichen Struktur von Termen Operatoren Logik in der Praxis Logikprogrammierung (Prolog) p.1 Termgleichheit: ==?- a == a.?- a == b. no?- X == Y. no?- X == X.?- X == a. no Logik in
MehrTerme. Programmierkurs Prolog p.1
Terme Programmierkurs Prolog p.1 Heute: Terme vergleichen Struktur von Termen Operatoren Programmierkurs Prolog p.2 Termgleichheit:?- a a.?- a no?- X no b. Y.?- X X.?- X no a. Programmierkurs Prolog p.3
MehrTutorium Prolog für Linguisten 12
Tutorium Prolog für Linguisten 12 Sebastian Golly 29. Januar 2013 Sebastian Golly Tutorium Prolog für Linguisten 12 1 / 13 Plan für heute Fürs Langzeitgedächtnis Zusammenfassung des letzten Seminars Übungsblatt
Mehr13. Übungsblatt
Prolog für Linguisten 13. Übungsblatt 12.2.2011 Dieses Übungsblatt ist verpflichtend und wird benotet (48 Punkte + 8 Zusatzpunkte ). Achte besonders auf die Funktionalität des Programms mit verschiedenen
MehrEinführung in das Programmieren Prolog Sommersemester 2006. Teil 2: Arithmetik. Version 1.0
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 2: Arithmetik Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln, Unifikation,
MehrEinführung in PROLOG VI
Terme vergleichen Einführung in PROLOG VI PROLOG kennt ein wichtiges Prädikat zum Vergleichen von Termen, dass wir auch schon kennengelernt haben: == Zur Erinnerung sei ch einmal gesagt, dass es nicht
MehrVerfügbare arithmetische Operationen ( reelle Zahlen): +, -,, /, //, mod und ggf. weitere
Prolog-Arithmetik Verfügbare arithmetische Operationen ( reelle Zahlen): +, -,, /, //, mod und ggf. weitere Verfügbare arithmetische Vergleichsoperationen: >, =, =
MehrLösungen zum Aufgabenblatt 4 Computerlinguistische Anwendungen
Lösungen zum Aufgabenblatt 4 Computerlinguistische Anwendungen Universität München, CIS, SS 2013 Hans Leiß Abgabetermin: Do, 31.5.2013 Aufgabe 4.1 Die Grammatik in Beispiele/programmierer.pl berücksichtigt
MehrLR-Parser, Shift-Reduce-Verfahren
LR-Parser, Shift-Reduce-Verfahren Bottom-Up-Syntaxanalyse LR-Parser L: Eingabe von links nach rechts; R: Rechtsherleitung Shift-Reduce-Verfahren Beachte: Kein Backtracking nicht auf jede Grammatik anwendbar
MehrAlgorithmen und Formale Sprachen
Algorithmen und Formale Sprachen Algorithmen und formale Sprachen Formale Sprachen und Algorithmen Formale Sprachen und formale Algorithmen (formale (Sprachen und Algorithmen)) ((formale Sprachen) und
MehrLogik I. Symbole, Terme, Formeln
Logik I Symbole, Terme, Formeln Wie jede geschriebene Sprache basiert die Prädikatenlogik erster Stufe auf einem Alphabet, welches aus den folgenden Symbolen besteht: (a) Variabeln wie zum Beispiel v 0,v
MehrGrammatiken in Prolog
12. Grammatiken in Prolog 12-1 Grammatiken in Prolog Allgemeines: Gedacht zur Verarbeitung natürlicher Sprache. Dort braucht man kompliziertere Grammatiken als etwa im Compilerbau, andererseits sind die
MehrEinführung in unifikationsbasierte Grammatikformalismen
Universität Potsdam Institut für Linguistik Computerlinguistik Einführung in unifikationsbasierte Grammatikformalismen Thomas Hanneforth head: VP form: finite subj: pers: 3 num: pl Merkmalsstrukturen:
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
MehrAlphabet, formale Sprache
n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l
MehrTeil 4: Rekursion und Listen
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 4: Rekursion und Listen Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln,
MehrObjektorientierte Programmierung. Kapitel 3: Syntaxdiagramme
Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/
MehrInterdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko
Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht
MehrÜbungen zu Kognitive Systeme I
Übungen zu Kognitive Systeme I Kognitive Systeme / WIAI / Uni Bamberg 14. Oktober 2005 Inhalt 1 2 3 4 5 6 Ablauf der Übungen Ablauf SWI-Prolog Ab nächster Woche wird es Übungszettel geben Ablauf der Übungen
MehrEinführung in PROLOG 7 Kontextfreie Grammatiken
Einführung in PROLOG 7 Kontextfreie Grammatiken Der Erschaffer von PROLOG, Alain Colmerauer, war ein Computer-Linguist. Daher ist die Computer-Linguistik immer noch das klassische Anwendungsfeld von PROLOG.
MehrSS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4. R. C. Ladiges, D. Fast 10. Juni 2010
SS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4 R. C. Ladiges, D. Fast 10. Juni 2010 Inhaltsverzeichnis 4 Aufgabe 4 3 4.1 Sich mit dem Programmpaket vertraut machen.................... 3 4.1.1 Aufgabenstellung.................................
MehrFragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren?
Attribut-Werte-Paare Eine Eigenschaft kann beschrieben werden durch ein Paar [a,w]. Dabei bezeichnet a das Attribut und w den konkreten Wert aus dem Wertebereich W a des Attributs. Die Eigenschaften eines
MehrÜberblick. Ausdrücke. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke
Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke 3 Mathematische Grundlagen 3 Ausdrücke Einf. Progr. (WS 08/09) 148 Ausdrücke Betrachten wir folgende
MehrTypengetriebene Interpretation. Arnim von Stechow Einführung in die Semantik
Typengetriebene Interpretation Arnim von Stechow Einführung in die Semantik arnim.stechow@uni-tuebingen.de Programm Logische Typen Typengesteuerte Interpretation λ-schreibweise Prädikatsmodifikation (PM)
Mehr2 Logikprogrammierung am Beispiel Prolog
2 Logikprogrammierung am Beispiel Prolog 2.1 Logikprogrammierung mit einfachen Daten 2.2 Variablenumbenennung 2.3 Syntax 2.4 Komplexe Daten 2.5 Der Cut 2.6 Negation als Fehlschlag 2.7 Literaturhinweise
MehrGliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen
Gliederung Programmierparadigmen Programmieren in Prolog D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 26. April
MehrÜbungen zu Kognitive Systeme I
Übungen zu Kognitive Systeme I Stephan Weller (Stephan.Weller@wiai.uni-bamberg.de) Kognitive Systeme / WIAI / Uni Bamberg 19. Oktober 2005 Inhalt Intro Was ist Prolog? Wie funktioniert Prolog? Rekursion
MehrEinführung in die Computerlinguistik
Einführung in die Computerlinguistik Merkmalstrukturen und Unifikation Dozentin: Wiebke Petersen WS 2004/2005 Wiebke Petersen Formale Komplexität natürlicher Sprachen WS 03/04 Universität Potsdam Institut
MehrSemantik und Pragmatik
Semantik und Pragmatik SS 2005 Universität Bielefeld Teil 4, 6. Mai 2005 Gerhard Jäger Semantik und Pragmatik p.1/35 Prädikatenlogik: atomare Formeln Syntax JO, BERTIE, ETHEL, THE-CAKE... sind Individuenkonstanten
MehrEinführung in die Logik
Einführung in die Logik Klaus Madlener und Roland Meyer 24. April 2013 Inhaltsverzeichnis 1 Aussagenlogik 1 1.1 Syntax................................. 1 1.2 Semantik............................... 3 1.3
MehrDas Programm ist deterministisch: es gibt für jedes Ziel höchstens eine Klausel, die zur erfolgreichen Ableitung des Zieles
Green Cuts Klauseln zum Mischen zweier geordneten Listen: merge ( [X Xs ], [Y Ys ], [X Zs ] ) : X < Y, merge ( Xs, [ Y Ys ], Zs ). (1) merge ( [X Xs ], [Y Ys ], [ X,Y Zs ] ) : X =:= Y, merge (Xs, Ys, Zs
MehrÜberblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra
Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 3.3 Boolsche Algebra Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 72 / 179 Beweisprinzip der vollständigen Induktion
MehrKünstliche Intelligenz
Künstliche Intelligenz Prolog - Definite Clause Grammar Claes Neuefeind Sprachliche Informationsverarbeitung Universität zu Köln 25. Januar 2012 Wiederholung: DCGs Parser, Kongruenz, Semantik Praxis Hausaufgaben
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben
MehrFunktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik
MehrÜbungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002
1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben
MehrBeuth Hochschule Einführende Gentle-Programme WS12/13, S. 1
Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1 Einführende Gentle-Programme Dieses Papier soll die Syntax und Semantik (die Schreibweise und Bedeutung) von einfachen Gentle Programmen anhand
MehrSyntax und Morphologie
Syntax und Morphologie Einführungskurs 8. Vorlesung Strukturanalyse Aufgabe der syntaktisch-funktionalen Analyse ist es, alle Informationen bereitzustellen, die es der semantischen Analyse ermöglichen,
MehrEinführung in die Programmierung II. 5. Zeiger
Einführung in die Programmierung II 5. Zeiger Thomas Huckle, Stefan Zimmer 16. 5. 2007-1- Bezüge als Objekte Bisher kennen wir als Bezüge (Lvalues) nur Variablennamen Jetzt kommt eine neue Sorte dazu,
MehrKapitel 2. Methoden zur Beschreibung von Syntax
1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von
MehrMethoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.
Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrFormale Sprachen und Grammatiken
Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax
MehrLösungsvorschlag für das Übungsblatt 8. Aufgabe1.
Lösungsvorschlag für das Übungsblatt 8. Aufgabe1. 3 Det A N VP R6 4 Any A N VP L3 5 Any intelligent N VP L4 6 Any intelligent cat VP L2 Nach den Regeln kann der Satz weiter nicht erzeugt warden, deswegen
MehrKarl Heinz Wagner
PATR II Funktionale Beschreibungen Der PATR II Formalismus Auch für PATR II gilt Sprachliche Ausdrücke werden durch funktionale Beschreibungen oder Deskriptionen (engl. functional descriptions,, FD beschrieben
MehrSemantik und Pragmatik
Semantik und Pragmatik SS 2005 Universität Bielefeld Teil 6, 20. Mai 2005 Gerhard Jäger Semantik und Pragmatik p.1/16 Typentheorie: Motivation Viele syntaktische Konstruktionen der natürlichen Sprachen
MehrLogische und funktionale Programmierung
Logische und funktionale Programmierung Vorlesung 10: Prolog - Das Prädikat CUT Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 12. Dezember 2016 1/38 UNTERBINDEN
MehrKapitel 5: Syntaxdiagramme und Grammatikregeln
5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrResolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren:
Resolutionskalkül Ein Kalkül ist eine Kollektion von syntaktischen Umformungsregeln, die unter gegebenen Voraussetzungen aus bereits vorhandenen Formeln neue Formeln erzeugen. Der Resolutionskalkül besteht
MehrLogische Programmierung & Deduktive Datenbanken Klausur
Prof. Dr. Stefan Brass 22. September 2011 Institut für Informatik MLU Halle-Wittenberg Logische Programmierung & Deduktive Datenbanken Klausur Name: Matrikelnummer: Studiengang: Aufgabe Punkte Max. Punkte
MehrSprachen sind durch folgenden Aufbau gekennzeichnet:
BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder
MehrTeil 111. Chart-Parsing
Teil 111 Chart-Parsing 102 Die im ersten Teil des Buches behandelten einfachen Parsingalgorithmen sind, anders als die meisten vor allem im Compilerbau verwendeten Algorithmen (z.b. die LLoder LR-Parsingalgorithmen),
MehrCharts. Motivation. Grundfrage. Chart als Graph
Charts Motivation Übersicht Chart bzw. Well-Formed Substring Table (WFST) Als azyklischer Graph, Tabelle und Relation Kantenbeschriftungen Kategorien: WFST Regeln: Passive Charts Regelhyposen: Aktive Charts
MehrÜbersicht. Prädikatenlogik höherer Stufe. Syntax der Prädikatenlogik 1. Stufe (mit Gleichheit)
Übersicht I Künstliche Intelligenz II Problemlösen III Wissen und Schlussfolgern 7. Logische Agenten 8. Prädikatenlogik 1. Stufe 9. Schließen in der Prädikatenlogik 1. Stufe 10. Wissensrepräsentation IV
MehrGrammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht
Zusammenhang: Formale Sprache Grammatik Formale Sprache kann durch Grammatik beschrieben werden. Zur Sprache L = L(G) gehören nur diejenigen Kombinationen der Zeichen des Eingabealphabets, die durch die
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
Mehr3 Syntax von Programmiersprachen
3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme
MehrLogisches und funktionales Programmieren
Prof. Dr. Christoph Beierle, Dr. Harald Ganzinger, Prof. Dr. Michael Hanus Kurs 01816 Logisches und funktionales Programmieren LESEPROBE Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten
MehrEinführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen
Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden
MehrLösungen zum Aufgabenblatt 4 Syntax natürlicher Sprachen
Lösungen zum Aufgabenblatt 4 Syntax natürlicher Sprachen Universität München, CIS, WS 2015/16 H. Leiß Abgabetermin: Mi, 18.11.2015 Aufgabe 4.1 Zum Programmieren von Grammatiken verwenden wir das DCG-Grammatikformat
Mehr2.2 Syntax, Semantik und Simulation
2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?
MehrSatz Umstrukturierung für statistisch. Anna Schiffarth Dozentin: Miriam Kaeshammer Fortgeschrittene Methoden der statistisch maschinellen Übersetzung
Satz Umstrukturierung für statistisch maschinelle Übersetzung Anna Schiffarth Dozentin: Miriam Kaeshammer Fortgeschrittene Methoden der statistisch maschinellen Übersetzung Einführung Beschreibung einer
MehrÜberblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Boolsche Algebra 3.3 Induktion und Rekursion
Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Boolsche Algebra 3.3 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 92 / 708 Beweisprinzip der vollständigen Induktion
MehrTeil 1: Ein motivierendes Beispiel
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 1: Ein motivierendes Beispiel Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax,
MehrEin fundamentales mathematisches Beweisprinzip p ist die vollständige Induktion: Sei p : Falls
Beweisprinzip der vollständigen Induktion Ein fundamentales mathematisches Beweisprinzip p ist die vollständige Induktion: Sei p : Falls ein totales Prädikat. 1. p(0) (Induktionsanfang) und 2. für beliebiges
Mehr5.2 Endliche Automaten
114 5.2 Endliche Automaten Endliche Automaten sind Turingmaschinen, die nur endlichen Speicher besitzen. Wie wir bereits im Zusammenhang mit Turingmaschinen gesehen haben, kann endlicher Speicher durch
MehrGrundlagen von Datenbanken SS 2010
Grundlagen von Datenbanken SS 2010 6. Tupelkalkül und relationale Vollständigkeit Prof. Dr. Stefan Böttcher Universität Paderborn mit Material von Prof. Dr. Gregor Engels Grundlagen von Datenbanken - SS
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.
Mehr13 Abstrakte Datentypen
13 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen auf den Elementen (Konstruktoren, Selektoren, Typprädikate) Eigenschaften abgeleitet Jetzt: Abstrakte Datentypen (ADT)
MehrSemantik: Semantik von Merkmalsstrukturen
Spezielle Themen der KI : von Subsumption Notation: t 1 t 2 Definition: Eine Merkmalsstruktur t 1 subsumiert eine Merkmalsstruktur t 2 gdw. die Menge der von t 2 beschriebenen Elemente eine Teilmenge der
MehrKapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie
Gliederung 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.1. 2.2. Reguläre Sprachen 2.3. Kontextfreie Sprachen 2/1, Folie 1 2015 Prof. Steffen
Mehr3 Terme und Algebren 3.1 Terme
3 Terme und Algebren 3.1 Terme Mod - 3.1 In allen formalen Kalkülen benutzt man Formeln als Ausdrucksmittel. Hier betrachten wir nur ihre Struktur - nicht ihre Bedeutung. Wir nennen sie Terme. Terme bestehen
MehrEigenschaften der SLD-Resolution
Eigenschaften der SLD-Resolution Vollständigkeit der SLD-Resolution für Hornklauseln Sei F eine inkonsistente Hornklauselmenge. Dann gibt es eine SLD-Widerlegung von F. Beweisskizze: Für inkonsistentes
MehrGrundlagen der Logik
Grundlagen der Logik Denken Menschen logisch? Selektionsaufgabe nach Watson (1966): Gegeben sind vier Karten von denen jede auf der einen Seite mit einem Buchstaben, auf der anderen Seite mit einer Zahl
MehrLogikprogrammierung. Berechnung durch Resolution Die Programmiersprache Prolog
Logikprogrammierung Berechnung durch Resolution Die Programmiersprache Prolog Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung Berechnung durch Resolution 213 Resolution
Mehr5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
MehrInhalt Kapitel 11: Formale Syntax und Semantik
Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte
MehrBinäre Suchbäume (binary search trees, kurz: bst)
Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.
MehrNormalformen der Prädikatenlogik
Normalformen der Prädikatenlogik prädikatenlogische Ausdrücke können in äquivalente Ausdrücke umgeformt werden Beispiel "X (mensch(x) Æ sterblich(x)) "X (ÿ mensch(x) sterblich(x)) "X (ÿ (mensch(x) Ÿ ÿ
MehrKontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen
MehrGrundlagen der Theoretischen Informatik
FH Wedel Prof. Dr. Sebastian Iwanowski GTI22 Folie 1 Grundlagen der Theoretischen Informatik Sebastian Iwanowski FH Wedel Kap. 2: Logik, Teil 2.2: Prädikatenlogik FH Wedel Prof. Dr. Sebastian Iwanowski
MehrEinführung in die Logik (Vorkurs)
Einführung in die Logik (Vorkurs) Jürgen Koslowski 2014-04-07 Ein Beispiel Familie A will im kommenden Jahr eine Waschmaschine, ein Auto und ein Moped anschaffen. Aber falls Herr A seinen üblichen Bonus
MehrSei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.
Der Satz von Kleene Wir haben somit Folgendes bewiesen: Der Satz von Kleene Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden
MehrProgrammiersprache Prolog
Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.2 Logikprogrammierung Prolog 240 Programmiersprache Prolog Prolog-Programm ist Liste von Fakten (einelementige Hornklausel) und Regeln (mehrelementige
MehrBisher. Programme, Sequenzen von Formen. Ausdrücke und ihre Auswertung (Substitutionsmodell)
Bisher Programme, Sequenzen von Formen Ausdrücke und ihre Auswertung (Substitutionsmodell) Konstruktionsanleitung für Prozeduren Kurzbeschreibung Sorten und Verträge Gerüst Testfälle Rumpf ausfüllen Testen
MehrEinführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 7
Prof. J. Esparza Technische Universität München S. Sickert, J. Krämer KEINE ABGABE Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt 7 Übungsblatt Wir unterscheiden zwischen Übungs-
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
MehrEmpfehlenswerte Referenzen
Wenn Google etwas nicht finden kann, fragen sie Jack Bauer. ("Fakten über Jack Bauer") Inhalt Empfehlenswerte Referenzen...1 0 Wozu reguläre Ausdrücke?...1 1 Die Elemente regulärer Ausdrücke...2 2 Ein
MehrFragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen
Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen 1. Was ist eine formale Sprache? Menge von Zeichenketten, die aus den Symbolen eines beliebigen Alphabets aufgebaut sind. Zeichenkette:
MehrEin Fragment von Pascal
Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Sommersemester 2015 22.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen
MehrPROLOG Syntax. Einführung in PROLOG II. Atome. Variablen. Es gibt vier Arten von Termen: Atome. Zahlen. Variablen. Komplexe Terme
PROLOG Syntax Es gibt vier Arten von Termen: Atome Variablen Atome Zahlen Variablen Komplexe Terme 1. uni, uni_hannover 2. KI Kurs, $ % 45 3. @=, ====> 1. X, Y 2. Variable, Output 3. _tag, _head 4. X_256
MehrOperatoren in C/C++ und Java:
Operatoren in C/C++ und Java: C/C++/Java hat eine riesige Anzahl von Operatoren (im Vergleich zu anderen Programmiersprachen). Außer den üblichen arithmetischen Operatoren +, -, *, / (und % für Ganzzahlen)
MehrFakten, Regeln und Anfragen
Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de 18.10.99 GK Prolog - Fakten, Regeln und Anfragen 1 Programmieren = Problemlösen Prolog ist eine deklarative
Mehr