Natuurlijke-Taalinterfaces week 3 1. evaluatie van een formule in een model 2. vraag-antwoord dialogen 3. Modellen en applicaties
Natuurlijke-Taalinterfaces2 Een eenvoudig vraag- antwoord systeem Vraag logische formule Applicatie (database/kennissysteem): (Vertaalbaar naar) Een Model met objecten en relaties Antwoord (Ja/nee vraag): logische formule in waar (ja) / onwaar (nee) in het Model Antwoord (WH-vraag): alle objecten die de formule waar maken in het Model
Natuurlijke-Taalinterfaces3 Betekenis van Logische Formules (Blackburn & Bos, hst 1) De formule lopen(ruud) zingen(ruud) is waar in een model M d.e.s.d.a. lopen(ruud) waar is in M en zingen(ruud) waar is in M.
Natuurlijke-Taalinterfaces4 Wat is een (eerste-orde) Model? Een domein (verzameling objecten), en een interpretatiefunctie F, die voor ieder element van het vocabulaire de semantische waarde (een object of een verzameling objecten, of een verz. van tuples van objecten) geeft. F(ruud) = r, F(mona) = m, F(lopen) = {r, m, s} F(nomineren) = {,, }
Natuurlijke-Taalinterfaces5 Betekenis van connectieven A B A B ~ A A B A waar is en B waar is A waar is of B waar is A niet waar is A niet waar is of B waar is De formule is waar d.e.s.d.a.
Natuurlijke-Taalinterfaces6 Betekenis van atomaire formules pred(a 1,….a n ) is waar d.e.s.d.a F(a 1 ) = o 1, …. F(a n ) = o n, en F(pred) Nomineer(bart,ruud) is waar d.e.s.d.a nom
Natuurlijke-Taalinterfaces7 Betekenis van kwantoren x F x F Er een interpretatie is van x die F waar maakt. Iedere interpretatie van x F waar maakt De formule is waar d.e.s.d.a.
Natuurlijke-Taalinterfaces8 Modellen in Prolog F(bart) = b, F(willem) = w,… Prolog: constant(bart). constant(willem). ….
Natuurlijke-Taalinterfaces9 Modellen in Prolog F(slapen) = { bart, willem, ruud} F(nomineren) = { } F(helpen) = Prolog: [ slapen(bart), slapen(willem), slapen(ruud), nomineren(bart,willem) ]
Natuurlijke-Taalinterfaces10 Modellen in Prolog Prolog: [ slapen(bart), slapen(willem), slapen(ruud), nomineren(bart,willem) ] Een model is een lijst Prolog-relaties, (ground terms), !!! Negatieve informatie ontbreekt.
Natuurlijke-Taalinterfaces11 Waar in een model, Satisfaction % satisfy(Formula, Model) satisfy(For,Model) :- atomic_formula(For), member(For,Model). satisfy(A & B, Model) :- satisfy(A, Model), satisfy(B, Model). satisfy(A v B, Model) :- satisfy(A, Model) ; satisfy(B, Model).
Natuurlijke-Taalinterfaces12 Waar in een model, Satisfaction % \+ is Prolog voor `not’ satisfy(~ A, Model) :- \+ satisfy(A, Model). satisfy(A > B, Model) :- \+ satisfy(A, Model) ; satisfy(B, Model).
Natuurlijke-Taalinterfaces13 Waar in een model, Satisfaction % satisfy(Formula, Model) satisfy(exists(X, Form), Model) :- constant(X), satisfy(Form, Model). satisfy(forall(X, Form), Model) :- satisfy(~ exists(X, ~ Form), Model).
Natuurlijke-Taalinterfaces14 Testen of een formule een sentence is Wanneer we een formule testen voor satisfactie in een model, gaan we ervan uit dat het een sentence is, d.w.z. alle constanten en relaties zijn gedefinieerd, de zin is syntactisch correct, en er zijn geen vrije variabelen.
Natuurlijke-Taalinterfaces15 Ja/Nee vragen slaapt ruud? parser : vr(slapen(R)) janee(Formula) :- sentence([],Formula), model(Model), ( satisfy(Formula,Model) -> zegja ; zegnee ).
Natuurlijke-Taalinterfaces16 Semantiek van wh-vragen Wie slaapt? Semantiek? parser: wh(X,slapen(X)) whvraag(X,Formula) :- sentence([X],Formula), model(M), findall(X,satisfy(Form,M),Xs), zeg(Xs).
Natuurlijke-Taalinterfaces17 Modellen lijst van (ground) relaties kunnen we definieren m.b.v. een programma maakt definitie van modellen eenvoudiger, interface naar een db betekenispostulaten
Natuurlijke-Taalinterfaces18 Modellen als programma’s example(mymodel, Facts) :- findall(F,fact(F),Facts). fact(aandeel(X)) :- fonds(X,_). fact(bedrijf(X)) :- fonds(X,_). fact(belegger(X)) :- speler(X,_,_). fact(rijk(X)) :- rekening(X,Saldo), Saldo > 1000.
Natuurlijke-Taalinterfaces19 Interface naar een db fact(koers(Fonds,Koers)) :- haal_koersen_van_tt, aex(Fonds,_,Koers). haal_koersen_van_tt :- retractall(aex(_,_,_)), process_tt_aex(“
Natuurlijke-Taalinterfaces20 Betekenispostulaten Wie een man/vrouw is, is een mens. Wie een moeder is, is een vrouw. Wie een appel eet, eet. fact(mens(X)) :- fact(vrouw(X)). fact(vrouw(X)) :- moeder(X). fact(eet(X)) :- eet(X,_).
Natuurlijke-Taalinterfaces21 Ambiguiteit….. Wat/wie bezit ieder mens? Wie/wat bezit een auto? wh(y, forall(x,auto(x) > bezit(x,y)) wh(y, forall(x,auto(x) > bezit(y,x)) Oplossing: verschil wie/wat maken voor relaties vastleggen wat voor soort argumenten ze verwachten….(het subject c.q. object van bezit is een mens c.q. niet een mens)