Prolog Grundkurs WS 99/00 Christof Rumpf

Slides:



Advertisements
Ähnliche Präsentationen
Deduktive Datenbanken
Advertisements

Vorlesung Compilertechnik Sommersemester 2008
Kontextfreie Grammatiken
8. Formale Sprachen und Grammatiken
Lösung 7.1 Syntax und Semantik
Grammatiken, Definitionen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Grammatiken beschreiben Sprachen L µ *, indem.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Reduktionen Def: L · L (L ist reduzierbar auf.
Kapitel 4 Syntaktische Analyse: LR Parsing.
Einführung in die Computerlinguistik
Listen & Beweisstrategie
Rekursive Listenverarbeitung
Maschinelle Übersetzung I
Parser generieren Yet Another Compiler – Compiler YACC.
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Parser für CH3-Sprachen
CFGs und Kellerautomaten
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (12 – Kellerautomaten, PDA) Prof. Dr. Th. Ottmann.
M a r c – o l i v e r p a h l Informatik II – Kapitel 18 Übersetzung Zusammenfassung des Kapitel 18 Küchlin, Weber, Vorversion Einführung in die Informatik,
Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik Sommersemester 2012 Internet-Technologien XML-basierte Techniken Teil Metasprache der.
Grundkurs Theoretische Informatik, Folie 3.1 © 2004 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 3 Gottfried Vossen Kurt-Ulrich Witt.
Semantik von Prolog & Unifikation
Verschachtelte Listen, Differenzlisten, Graphen
Prolog Grundkurs WS 99/00 Christof Rumpf
Syntax von Prolog & Familiendatenbasis
Fakten, Regeln und Anfragen
Prolog Grundkurs WS 98/99 Christof Rumpf
PATR II Interpreter Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Parsing Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Reguläre Ausdrücke Karin Haenelt
Sprachwissenschaftliches Institut Einführung in die HPSG Grammatiktheorie 4./11. Mai 2004.
Beispiele für Ausdrucksalgebren
Grammatik als Deduktionssystem
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester.
Christian Schindelhauer
Christian Schindelhauer
Lexikalisch-Funktionale Grammatik
Berechenbarkeit. Fragestellungen Können Computer alles ausrechnen? Kann man alles ausrechnen? Was kann man berechnen? Was nicht? Was heißt Berechenbarkeit?
Grundkurs Theoretische Informatik, Folie 7.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 7 Gottfried Vossen Kurt-Ulrich Witt.
Formale Sprachen Grundbegriffe für formale Sprachen
Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 13. Sitzung WS 02/03.
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
1936: On Computable Numbers, with an application to the
Entwurf und Implementierung eines Scanner-Generatorsystems
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Städtisches Gymnasium Beverungen Friedel Berlage
Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele Beispiel 1 Konstruieren Sie für folgende Sprachen über = { a, b, c.
Beispiele: KFG 2.Teil Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln: S  Ac | Bd A  aAb | ab B  aBbb | abb Definieren Sie.
PS Grundlagen wissenschaftlichen Arbeitens
Noam CHOMSKY, Sheila GREIBACH
Why Connectionism? Friedrich & Assadollahi. Satz Fritz geht nach Hause.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 3: Potenzreihen und kontextfreie Sprachen (Vgl. Buch von A. Salomaa)
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Arne Vater Wintersemester 2006/07 28.
Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Christian Schindelhauer Wintersemester 2006/07 6. Vorlesung
Der Hund jagt die Katze. Theoretische Informatik Satz S P O
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele (Frist: ) Beispiel 1: Sei  = {a, b} ein Alphabet und Q = {q 0, q 1 } eine.
7. Formale Sprachen und Grammatiken
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele: KFG und Automaten Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln:
Kapitel 4:Die Chomsky Hierarchie
Grammatik als Deduktionssystem Theorie, Grammatik, Grammatiktheorie Grammatik Sprache Hypothese Sprachtheorie Theorie Erklärung Theoretisches Konstrukt.
Grundkurs Theoretische Informatik, Folie 5.1 © 2004 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 5 Gottfried Vossen Kurt-Ulrich Witt.
GK Prolog - Maschinelle Übersetzung II 1 Maschinelle Übersetzung II Prolog Grundkurs WS 99/00 Christof Rumpf
 Sortigkeit oder Arität
Sprachen und Programmiersprachen
 Präsentation transkript:

Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de Parsing mit DCGs Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de

Sprachen und Grammatiken Eine Sprache kann als eine Menge endlicher Ketten von Wörtern, Morphemen, Phonemen ect. angesehen werden. Nicht jede mögliche Kette dieser Einheiten gehört zu der Sprache. Wir unterscheiden zwischen grammatischen und ungrammatischen Ketten. Eine Grammatik ist eine Menge von Regeln, die die Teilmenge der grammatischen Ketten einer Sprache beschreiben. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Sprachen A sei eine endliche Menge, genannt Alphabet oder Vokabular. Eine Kette  über A ist eine endliche Sequenz von Elementen aus A. A* ist die Menge aller Ketten über A. Eine Sprache ist eine Menge L  A*.  ist die leere Kette. A = {a,b,c}  = abca A* = {,a,b,c, aa,ab,ac,ba, bb,bc,...} 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Grammatiken Eine Grammatik ist ein Tupel <VT, VN, S, R>. VT ist eine Menge von Terminalsymbolen. VN ist eine Menge von Nichtterminalsymbolen. S  VN wird Startsymbol genannt. R  * VN * × * ist eine endliche Menge von Ersetzungsregeln, mit  = VT  VN. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Ersetzungsregeln Eine Grammatik ist ein deduktives System von Axiomen und Inferenzregeln, das die Ketten einer Sprache als Theoreme generiert. Seien ,,  *, dann kann durch Anwendung der Regel    jedes Vorkommen der Teilkette  in  durch  ersetzt werden. Mit der Regel AB  CDA können wir z.B. aus der Kette EBABCC die Kette EBCDACC ableiten. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Chomsky-Hierarchie Die Chomsky-Hierarchie klassifiziert vier Typen von Grammatiken gemäß der Form ihrer Regeln. 0: * VN * × * rekursiv aufzählbar 1: * VN * × * *,  *- kontextsensitiv 2: VN × * kontextfrei 3: VN × VT VN  VN × VT regulär  ist die leere Kette. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Sprachklassen Jedem Typ der Chomsky-Hierarchie entspricht entspricht eine Sprachklasse. rekursiv aufzählbare Sprachen kontextsensitive Sprachen anbncn kontextfreie Sprachen anbn reguläre Sprachen a*b* 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Automaten Den Grammatiktypen der Chomsky-Hierarchie entsprechen jeweils Typen von Automaten, die die Grammatiken interpretieren können: 0: Turing Maschine 1: Indexierte/linear gebundene Automaten 2: Kellerautomaten (Stack) 3: Endliche Automaten 06.12.99 GK Prolog - Parsing mit DCGs

Parser Ein Parser ist ein Automat, der auf Basis einer Grammatik für eine Kette einen Ableitungsbaum (parse tree) erzeugt. S NP VP Det N V NP Jeder Mann liebt Det N eine Frau Grammatik & „Jeder Mann liebt eine Frau“ 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Kontextfreie PSGs Kontextfreie Phrasenstrukturgrammatiken entsprechen den Typ-2-Grammatiken der Chomsky-Hierachie, d.h. die Regeln sind durch das Muster VN × * beschränkt: Auf der linken Seite steht genau ein Nichtterminalsymbol. Auf der rechten Seite steht eine beliebige Verkettung von Terminal- und Nichtterminalsymbolen. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Definite Clause Grammars in Prolog entsprechen in ihrer Form den kontextfreien Phrasenstrukturregeln. KF-PSG DCG S  NP VP s --> np, vp. VP  V NP vp --> v, np. V  klaut v --> [klaut]. NP  paul np --> [paul]. NP  bananen np --> [bananen]. 06.12.99 GK Prolog - Parsing mit DCGs

Externe vs. interne Notation DCGs werden beim Laden (consult) eines Prolog-Programms mit Differenzlisten annotiert. Editor (extern) Datenbasis (intern) s --> np, vp. s(A,C):- np(A,B), vp(B,C). vp --> v, np. vp(A,C):- v(A,B), np(B,C). v --> [klaut]. v([klaut|T],T). np --> [paul]. np([paul|T],T). np --> [bananen]. np([bananen|T],T). 06.12.99 GK Prolog - Parsing mit DCGs

Vergleiche DCGs mit append_dl/3 s(A,C):- np(A,B), vp(B,C). append_dl((A,B), (B,C), (A,C)). Präfix Suffix Konkatenation 06.12.99 GK Prolog - Parsing mit DCGs

Konkatenation von Diff-Listen append_dl((A,B),(B,C),(A,C)). ?- D1 = ([1,2,3|T1],T1), D2 = ([4,5,6|T2],T2), append_dl(D1,D2,D3). D1 = ([1,2,3,4,5,6|T2],[4,5,6|T2]) (A,B) D2 = ([4,5,6|T2],T2]) (B,C) D3 = ([1,2,3,4,5,6|T2],T2) (A,C) T1 = [4,5,6|T2] B T2 = _1 C 06.12.99 GK Prolog - Parsing mit DCGs

Ableitung „Paul klaut Bananen“ ?- s([paul,klaut,bananen],[]). A C C s([paul,klaut,bananen|[]],[]) A B B C np([paul|[klaut,bananen]], vp([klaut,bananen|[]], [klaut,bananen]) []) B D D C v([klaut|[bananen]], np([bananen|[]], [bananen]) []) 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs DCGs zu Klauseln p1 --> p2,...,pn. p1(V1,Vn) --> p2(V1,V2),...,pn(Vn-1,Vn). p --> [Atom]. p([Atom|T],T). 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs transDCG/2 transDCG((L1-->R1),(L2:-R2)):- transDCG(L1,X,Y,L2), transDCG(R1,X,Y,R2). transDCG((C11,C12),X,Z,(C21,C22)):- transDCG(C11,X,Y,C21), transDCG(C12,Y,Z,C22). transDCG(C1,X,Y,C2):- C1 =.. [C1], % Test C2 =.. [C1,X,Y]. transDCG([Lex],[Lex|T],T,true). 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Anfragen an transDCG/2 ?- transDCG((s --> np, vp),X). X = s(A,C):- np(A,B), vp(B,C) yes ?- transDCG((v --> [klaut]),X). X = v([klaut|T],T):- true ?- transDCG((np --> np, [und], np),X). X = np(A,C):- np(A,[und|B]), true, np(B,C) 06.12.99 GK Prolog - Parsing mit DCGs

Evolution unserer Grammatiken 1 2 3 s(NP1,V,NP2):- np(NP1), vp(V,NP). v(klaut). s(S):- np(NP), vp(VP), append(NP,VP,S). v([klaut]). s --> np, vp. v --> [klaut]. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Rekursive Regeln „der schöne schöne ... schöne Frosch“ np --> det, adjs, n. adjs --> []. adjs --> adj, adjs. adj --> [schöne]. det --> [der]. n --> [frosch]. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Linksrekursion „Klaus und Maria und ... und Dieter“ np --> np, [und], np. np --> [klaus]. np --> [maria]. ... np --> [dieter]. loopt immer np --> [klaus]. np --> [maria]. ... np --> [dieter]. np --> np, [und], np. loopt bei ungrammatischen NPs 06.12.99 GK Prolog - Parsing mit DCGs

Umgang mit Linksrekursion Die Terminations-Probleme bei Linksrekursion liegen im top-down-depth-first-Verfahren des Prolog-Interpreters begründet. Lösungen: Linksrekursion vermeiden. Bottom-up oder left-corner-Interpreter verwenden. Left-corner-transform auf die Regeln anwenden. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Parametrisierte DCGs p1(P11,...,P1i) --> p2(P21,...,P2j), ..., pn(Pn1,...,Pnk). p1(P11,...,P1i,V1,Vn):- p2(P21,...,P2j,V1,V2), ..., pn(Pn1,...,Pnk,Vn-1,Vn). 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Agreement np(Agr) --> det(Agr), n(Agr). det(agr(nom,sg,masc))--> [der]. det(agr(dat,sg, fem))--> [der]. det(agr(nom,sg, fem))--> [die]. det(agr(dat,sg,masc))--> [dem]. det(agr(acc, _,masc))--> [den]. n( agr( _,sg,masc))--> [mann]. n( agr( _,sg, fem))--> [frau]. n( agr(acc,pl,masc))--> [männern]. 06.12.99 GK Prolog - Parsing mit DCGs

GK Prolog - Parsing mit DCGs Seiteneffekte det(agr(K,N,G)) --> [der], {N=sg, ((K = nom, G = masc); (K = dat, G = fem ))}. det(agr(K,N,G),[der|T],T):- N=sg, ((K = nom, G = masc); (K = dat, G = fem )). 06.12.99 GK Prolog - Parsing mit DCGs