Post on 05-Apr-2015
PATR IIPATR IIInterpreterInterpreter
Prolog Aufbaukurs SS 2000
Heinrich-Heine-Universität Düsseldorf
Christof Rumpf
15.05.2000 PATR II 2
Grammatik-FormalismenGrammatik-Formalismen
• Grammatikformalismen sind Sprachen zur Beschreibung von Sprachen.– Metasprache (Formalismus: Beschreibungsebene)– Objektsprache (natürliche Sprache: Objektebene)
• Anwendungszweck von Formalismen:– Werkzeug-orientiert (PATR II, ALE, QType, ...)– Theorie-orientiert (LFG, GPSG, HPSG, ...)
15.05.2000 PATR II 3
Motivation für FormalismenMotivation für Formalismen
• Präzises Werkzeug für die Beschreibung natürlicher Sprachen.
• Einschränkung der Klassen möglicher natürlicher Sprachen.
• Computer-interpretierbare Charakterisierung natürlicher Sprachen.
15.05.2000 PATR II 4
Anforderungen an FormalismenAnforderungen an Formalismen
• Linguistische Adäquatheit– Linguistische Phänomene sollten möglichst ‚direkt‘
darstellbar sein.
• Ausdruckskraft– Welche Problemklassen können überhaupt dargestellt
werden?
• Berechenbarkeit/Effizienz– Welche Werkzeuge aus der Informatik werden benötigt
und welche Eigenschaften haben sie?
15.05.2000 PATR II 5
PATR-Design-EntscheidungenPATR-Design-Entscheidungen
• Oberflächenbasiert (vs. transformationiell)
• Informationstragend (linguistisches Wissen)
• Induktiv (Berechnung der Informationskombination)
• Deklarativ (was vs. wie wird berechnet)
• Merkmalsbasiert bzw. Constraintbasiert (komplexe Merkmalsstrukturen)
15.05.2000 PATR II 6
Abdeckung theoretischer Abdeckung theoretischer FrameworksFrameworks
• CG categorial grammar
• GPSG generalized phrase structure grammar
• HPSG head driven phrase structure grammar
• LFG lexical functional grammar
• FUG functional unification grammar
• DCG definite clause grammar
• ...
15.05.2000 PATR II 7
PATR BasisoperationenPATR Basisoperationen
• Konkatenation– String-Kombination auf Basis eines
kontextfreien Phrasenstrukturgerüst. Jeder (Teil-)String wird mit einer Merkmalsstruktur assoziiert.
• Unifikation– Informations-Kombination durch monotone
Unifikation von Merkmalsstrukturen.
15.05.2000 PATR II 8
MerkmalsstrukturenMerkmalsstrukturen
• Seien F (features) und V (values) Mengen.Dann ist FS (feature structures) eine Menge von partiellen Funktionen F V mit V FS1.
num : sing
pers :
cat : NP
agr : 3
num : sing
pers : 3
1: Bzw. V ohne atomare Werte.
15.05.2000 PATR II 9
DAGsDAGs• Zyklische Merkmalsstrukturen können sich selbst
als Wert enthalten.• Azyklische Merkmalsstrukturen können als
gerichtete azyklische Graphen (DAGs) betrachtet werden.
num : sing
pers : 3
num pers
sing 3
15.05.2000 PATR II 10
Typ- vs. TokenidentitätTyp- vs. Tokenidentität
f : a
g : a
f : 1 a
g : 1
Typidentität: f und g haben zwei verschiedene Werte vom Typ a.
Tokenidentität: f und g haben den identischen Wert a.
Die Indexe nennt man Tag, Reentrancy oder Koindexierung.
15.05.2000 PATR II 11
SubsumptionSubsumption
• Subsumption ist eine partielle Ordnungsrelation über Merkmalsstrukturen, die auf der Spezifizität der enthaltenen Information beruht.
• Informell: FS1 FS2 gdw. alle Information in FS1 ebenfalls in FS2 enthalten ist.
cat : NP
cat : NP num : singagr :
pers : 3
ô ô
15.05.2000 PATR II 12
UnifikationUnifikation
• Die Unifikation FS1 FS2 = FS0 ist die allgemeinste Merkmalsstruktur FS0, so dass FS1 FS0 und FS2 FS0.
• Falls FS0 nicht existiert, scheitert die Unifikation.
num : singagr : num : sing agr : pers : 3 = agr :
pers : 3
ò
agr : num : sing agr : num : plur = fail ò
15.05.2000 PATR II 13
PATR II MerkmalslogikPATR II Merkmalslogik
• Eine Merkmalslogik ist eine Beschreibungs-sprache für Merkmalsstrukturen.
• Ein Ausdruck Li L der PATR II-Merkmalslogik L ist eine Abbildung Li FS (vs. Li (FS) mit Negation und Disjunktion).
• Bestandteile der PATR II-Merkmalslogik sind– Pfadgleichungen P– Makros M L = (P M)*– Konjunktion
15.05.2000 PATR II 14
PfadgleichungenPfadgleichungen• Seien FSi FS, Fj F, AVk AV (atomare Werte),
mit AV V und sei P die Menge der Pfade <FSi Fj*>, dann ist G die Menge der Pfadgleichungen mit Pi = AVk Pi = Pj.
• Originalnotation:– <S head> = <VP head>
– <NP head agr num> = sg
• Prolog-Notation:– S:head === VP:head– NP:head:agr:num === sg
:- op(600,xfx,===).
:- op(510,xfy, : ).
15.05.2000 PATR II 15
Makros (Templates)Makros (Templates)• Makros sind Abkürzungen für Merkmalsstrukturen und
müssen definiert werden, bevor man sie verwenden kann.• Makro-Definition: Let Makroname be Li.• Makro-Verwendung: Lj Makroname Lk
• Originalnotation:– Let Third be <head agr pers> = 3.– Let Sing be <head agr num> = sing.– Let ThirdSing be Third Sing.
• Prolog-Notation:– third(F):- F:head:agr:pers === 3.– sing(F):- F:head:agr:num === sing.– thirdSing(F):- third(F), sing(F).
15.05.2000 PATR II 16
Merkmalsstrukturen in PrologMerkmalsstrukturen in Prolog
• Wir repräsentieren Merkmalsstrukturen in Prolog als offene Listen:– [agr:[num:sg|A]|B]– [agr:[pers:3|C]|D]
• Die Unifikation der beiden Strukturen soll folgendes Ergebnis liefern:– [agr:[num:sg, pers:3|E]|B]– [agr:[pers:3, num:sg|E]|B]– B=D, A=[pers:3|E], C=[num:sg|E]
15.05.2000 PATR II 17
unify/2unify/2% unify(?FS1,?FS2)
unify(X,X):- !.unify([P:V|FS1],FS):-
pathval(FS,P,V,FS2),unify(FS1,FS2).
pathval([F:V1|FS], F, V2, FS):-!, unify(V1, V2).
pathval([FS|FSs1], F, V, [FS|FSs2]):-pathval(FSs1, F, V, FSs2).
15.05.2000 PATR II 18
Zerlegung von PfadenZerlegung von Pfaden
?- current_op(Precedence,Associativity,:).Precedence = 500Associativity = xfyyes
?- a:b:c = F:P.F = aP = b:cyes
a:b:c a:(b:c)
15.05.2000 PATR II 19
Interpreter für PfadgleichungenInterpreter für Pfadgleichungen
X === Y :-denotes(X, X1),denotes(Y, Y1),unify( X1, Y1).
denotes(V, V):- var(V), !.denotes(A, [A|_]):- atomic(A), !.denotes(F:P, V):- pathval(F, P, V, _), !.denotes(FS, FS).
15.05.2000 PATR II 20
Erweiterung für pathval/4Erweiterung für pathval/4
pathval(FS1, F:P, V, FS2):-!, pathval(FS1, F, FS3, FS2),pathval(FS3, P, V, _).
pathval([F:V1|FS], F, V2, FS):-!, unify(V1, V2).
pathval([FS|FSs1], F, V, [FS|FSs2]):-pathval(FSs1, F, V, FSs2).
15.05.2000 PATR II 21
Syntaxregeln: PATR IISyntaxregeln: PATR II
Rule X0 X1 X2:
< X0 cat> = s
< X0 cat> = np
< X0 cat> = vp
< X0 subj> = < X2 subj>
< X0 obj> = < X2 obj>
< X2 subj> = < X1>
< X1 agr cas> = nom.
Rule X0 X1 X2:
< X0 cat> = vp
< X0 cat> = v
< X0 cat> = np
< X0 subj> = < X1 subj>
< X0 obj> = < X1 obj>
< X2 obj> = < X2>.
Allgemeines Schema: Rule FSi FS+: G*. (Makros?)
15.05.2000 PATR II 22
Syntaxregeln: DCGSyntaxregeln: DCG
cat(S) --> { S:cat === 'S',
NP:cat === 'NP',VP:cat === 'VP', S:subj === VP:subj, S:obj === VP:obj,VP:subj === NP,nom(NP)
},cat(NP), cat(VP).
cat(VP) --> { VP:cat === 'VP',
V:cat === 'V',NP:cat === 'NP',VP:obj === V:obj,VP:subj === V:subj,VP:obj === NP
},
cat(V), cat(NP).
Zur Vermeidung von linksrekursiven Loops müssen die Merkmalsstrukturen vor der Verzweigung berechnet werden.
15.05.2000 PATR II 23
Syntaxregeln: KlauselnSyntaxregeln: Klauseln
cat(S,P0,P2):- S:cat === 'S',
NP:cat === 'NP',VP:cat === 'VP', S:subj === VP:subj, S:obj === VP:obj,VP:subj === NP,nom(NP),cat(NP,P0,P1), cat(VP,P1,P2).
cat(VP,P0,P2):- VP:cat === 'VP',
V:cat === 'V',NP:cat === 'NP',VP:obj === V:obj,VP:subj === V:subj,VP:obj === NP,
cat( V,P0,P1), cat(NP,P1,P2).
15.05.2000 PATR II 24
Lexikon: PATR IILexikon: PATR II
• Allgemeines Schema: Word String: L*.
• Beispiele:– Word klaut: <cat> = V AccSing.– Word paul: <cat> = NP NomSing. – Word bananen: <cat> = NP AccPlur.
15.05.2000 PATR II 25
Lexikon: DCGLexikon: DCG
cat(V) --> {V:cat === 'V', acc_sing(V)},
[klaut].
cat(NP) --> [paul],
{NP:cat === 'NP', nom_sing(NP)}.
cat(NP) --> {NP:cat === 'NP', acc_plur(NP)},
[bananen].
15.05.2000 PATR II 26
Lexikon: KlauselnLexikon: Klauselncat(V,[klaut|T],T):- V:cat === 'V', acc_sing(V).
cat(NP,[paul|T],T):- NP:cat === 'NP', nom_sing(NP).
cat(NP,[bananen|T],T]):- NP:cat === 'NP', acc_plur(NP).
15.05.2000 PATR II 27
MakrosMakros
acc(C):- C:agr:cas === acc.nom(C):- C:agr:cas === nom.sing(C):- C:agr:num === sing.plur(C):- C:agr:num === plur.
nom_sing(C):- nom(C), sing(C).acc_sing(C):- acc(C), sing(C).acc_plur(C):- acc(C), plur(C).
15.05.2000 PATR II 28
PATR II-ParserPATR II-Parser
parse:-nl, write('Phrase >> '),
read_wordlist(String), nl,parse(String).
parse(String):-cat(FS, String, []),print_fsm_(FS).
15.05.2000 PATR II 29
Parsing-SessionParsing-Session
15.05.2000 PATR II 30
LiteraturLiteratur
• Shieber, Stuart (1986): An Introduction to Unification-based Approaches to Grammar. CSLI Lecture Notes.
• Gazdar, Gerald & Chris Mellish (1989): Natural Language Processing in Prolog. Addison Wesley.
• Covington, Michael A. (1994): Natural Language Processing for Prolog Programmers. Chap. 6: Parsing Algorithms. Prentice-Hall.