210 likes | 346 Views
Natuurlijke-Taalinterfaces. week 3 1 . evaluatie van een formule in een model 2 . vraag-antwoord dialogen 3 . Modellen en applicaties. Een eenvoudig vraag-antwoord systeem. Vraag logische formule Applicatie (database/kennissysteem): (Vertaalbaar naar)
E N D
Natuurlijke-Taalinterfaces week 3 1. evaluatie van een formule in een model 2. vraag-antwoord dialogen 3. Modellen en applicaties
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-Taalinterfaces
Betekenis van Logische Formules • (Blackburn & Bos, hst 1) • De formule • lopen(ruud) zingen(ruud) • is waar in eenmodelMd.e.s.d.a. • lopen(ruud) waar is in Men • zingen(ruud) waar is in M. Natuurlijke-Taalinterfaces
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) = {<r,m>, <m,s>, <w,r>} Natuurlijke-Taalinterfaces
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 Betekenis van connectieven De formule is waar d.e.s.d.a. Natuurlijke-Taalinterfaces
Betekenis van atomaire formules • pred(a1,….an) is waar d.e.s.d.a • F(a1) = o1, …. F(an) = on, • en <o1,….on> F(pred) • Nomineer(bart,ruud) is waar d.e.s.d.a <b,r> nom Natuurlijke-Taalinterfaces
x F x F Er een interpretatie is van x die F waar maakt. Iedere interpretatie van x F waar maakt Betekenis van kwantoren De formule is waar d.e.s.d.a. Natuurlijke-Taalinterfaces
Modellen in Prolog • F(bart) = b, F(willem) = w,… • Prolog: • constant(bart). • constant(willem). • …. Natuurlijke-Taalinterfaces
Modellen in Prolog • F(slapen) = { bart, willem, ruud} • F(nomineren) = {<bart,willem>} • F(helpen) = • Prolog: • [ slapen(bart), slapen(willem), slapen(ruud), nomineren(bart,willem) ] Natuurlijke-Taalinterfaces
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-Taalinterfaces
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-Taalinterfaces
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-Taalinterfaces
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-Taalinterfaces
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-Taalinterfaces
Ja/Nee vragen • slaapt ruud? • parser : vr(slapen(R)) • janee(Formula) :- sentence([],Formula), model(Model), ( satisfy(Formula,Model) -> zegja ; zegnee ). Natuurlijke-Taalinterfaces
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-Taalinterfaces
Modellen • lijst van (ground) relaties • kunnen we definieren m.b.v. een programma • maakt definitie van modellen eenvoudiger, • interface naar een db • betekenispostulaten Natuurlijke-Taalinterfaces
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-Taalinterfaces
fact(koers(Fonds,Koers)) :- haal_koersen_van_tt, aex(Fonds,_,Koers). haal_koersen_van_tt :- retractall(aex(_,_,_)), process_tt_aex(“www.omroep.nl/…..”). Interface naar een db Natuurlijke-Taalinterfaces
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,_). Betekenispostulaten Natuurlijke-Taalinterfaces
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) Ambiguiteit….. Natuurlijke-Taalinterfaces