Overzicht
Natuurlijke-Taalverwerking I Definite Clause Grammar 2
• Hoofdzinnen en bijzinnen • DCG’s en append • Betekenis
Gosse Bouma en Geert Kloosterman
• Generatie 2e semester 2005/2006, week 3
• Automatisch Vertalen • Meer dan context-vrije grammatica • Een toepassing 1
Hoofdzinnen en bijzinnen
Hoofdzinnen en bijzinnen
• de directeur voert de flamingo • dat de directeur de flamingo voert
vp --> v np vp --> v adv
• de ijsbeer eet gulzig
cp --> dat np vpb
• dat de ijsbeer gulzig eet
vpb --> np v vpb --> adv v
• de directeur voert de flamingo regelmatig • dat de directeur de flamingo regelmatig voert 2
3
Hoofdzinnen en bijzinnen
Hoofdzinnen en bijzinnen vp --> aux np prt
• de directeur heeft de flamingo gevoerd • dat de directeur de flamingo heeft gevoerd
( vpb --> np aux prt ) ( vpb --> np prt aux )
• dat de directeur de flamingo gevoerd heeft
vpb --> np vc vc vc vc
--> aux prt --> prt aux --> v
4
5
Bijzinnen
Hoofdzinnen
CP Compl dat
S VP(fin)
NP
de directeur
NP
de flamingo
NP VC(fin)
Aux(fin)
V(prt)
heeft
gevoerd
De directeur
Aux(fin) heeft
VP(no-aux)
de flamingo
6
VC(no-aux)
NP
Aux(no-aux)
V(prt)
gevoerd
7
DCG
DCG’s en Append
vp(V) --> vc(V). vp(V) --> np, vp(V).
• In Prolog Now! wordt DCG heel anders uitgelegd.... cp --> compl, np, vp(fin). vc(V) --> v(V). vc(V) --> aux(V), v(prt). v(fin) --> [voert]. v(no-v) --> []. s --> np, v(fin), vp(no-v). s --> np, aux(fin), vp(no-aux). 8
CFG in Prolog met append
9
Prolog Append
np(Words) :append(W1,W2,Words), det(W1), n(W2).
append([E|R],L,[E|R1]) :append(R,L,R1). append([],L,L).
n(Words) :append(W1,W2,Words), n(W1), pp(W2).
?- append(Prefix,Suffix,[1,2,3,4,5,6]).
?- np([de,ouders,van,die,jongen]). 10
11
Prolog met Difference Lists
Prolog met Difference Lists
• Voeg aan iedere lijst een variabele als staart toe,
• dl([1,2,3,4,5,6|B],B),
• Zorg dat je naar deze variabele kunt verwijzen,
• ofwel: dl([1,2,3|A],B)
– [1,2,3] = dl([1,2,3|A],A) – [4,5,6] = dl([4,5,6|B],B) • Wat is de append dl([4,5,6|B],B)?
van
dl([1,2,3|A],A)
• met A = [4,5,6|B] . en
• append(dl(A1,A2),dl(B1,B2),dl(C1,C2))?
12
Prolog met Difference Lists
13
DCG met difference lists np(dl(C1,C2)) :append(dl(A1,A2),dl(B1,B2),dl(C1,C2)), det(dl(A1,A2)), n(dl(B1,B2)).
• dl([1,2,3,4,5,6|B],B), • ofwel:
np(dl(A1,B2)) :det(dl(A1,A2)), n(dl(A2,B2)).
– dl([1,2,3|A],B) – met A = [4,5,6|B] . • append(dl(A1,A2),dl(B1,B2),dl(C1,C2))?
np(A1,B2) :det(A1,A2), n(A2,B2).
• append(dl(A1,A2),dl(A2,B2),dl(A1,B2)). 14
np --> det, n.
15
DCG met difference lists
Automatisch vertalen Iedere student bezit een fiets ⇓
• ?- np([de,ouders,van,die|A],A).
∀x(student(x) → ∃y(bike(y) ∧ possess(x, y)))
⇓ Every student owns a bike
• yes, A = [jongen]. • ?- np([de,ouders,van,die|[]],[]).
• Bepaal de betekenis van de zin in de brontaal,
• ?- np([de,ouders,van,die],[]).
• Genereer een zin in de doeltaal met dezelfde betekenis.
16
17
Semantiek en DCG
Semantiek (Betekenis)
• Betekenis van een zin is opgebouwd uit de betekenis van de zinsdelen,
tijd(uur(U,M)) --> uur(U), [uur], min(M). tijd(uur(U,M)) --> min(M), [over], uur(U). tijd(uur(U,M)) --> min(M), [minuten,over], uur(U).
• De betekenis van zinsdelen is opgebouwd uit de betekenis van de samenstellende delen (zinsdelen en/of woorden).
min(15) --> [vijftien]. min(15) --> [kwart]. uur(3) --> [drie].
• Aan een DCG kan een argument worden toegevoegd dat de betekenis weergeeft.
?- tijd(Uur,[kwart,over,drie],[]).
18
Uur = uur(3,15) 19
Semantiek en DCG
Generatie
?- s(Sem,[ismail,spreekt,bahasa],[]).
• Parsing is het omzetten van zinnen in boomstructuren of betekenis,
Sem = spreken(i,b) s(Sem) --> np(Sub), vp(Sub,Sem). vp(Subj,Sem) --> np(Obj), v(Sub,Obj,Sem). np(i) --> [ismail]. np(b) --> [bahasa]. v(Subj,Obj,spreken(Subj,Obj)) --> [spreekt].
• Generatie is het omzetten van betekenis in zinnen.
20
Generatie en DCG
Generatie van willekeurige zinnen
• Een DCG wordt een generator, wanneer de lijst woorden geheel of gedeeltelijk variabel is. ?-
21
s([A,B,C,D],[]), write([A,B,C,D]), nl, fail.
22
?- s([A,B,C,D],[]), write([A,B,C,D]), nl, fail. ... [de,partijbons,nadert,vandaag] ... [een,neoliberale,boerendochter,ontsnapt] ... [een,feestvarken,heeft,gesnurkt]
23
Generatie op basis van betekenis
Automatisch vertalen
tijd(uur(U,M)) --> uur(U), [uur], min(M). tijd(uur(U,M)) --> min(M), [over], uur(U).
vertaal(NL,ENG) :tijd(Semantiek,NL,[]), time(Semantiek,ENG,[]).
min(15) --> [vijftien]. min(15) --> [kwart]. uur(3) --> [drie]. ?- tijd(uur(3,15),Words,[]).
time(uur(H,M)) --> hour(H), minute(M). time(uur(H,M)) --> minute(M), [past], hour(H).
Words = [drie,uur,vijftien] ; Words = [vijftien,over,drie] ; Words = [kwart,over,drie] ; .... 24
25
Hoe krachtig is DCG?
Formele talen • a n bn , n ≥ 1
• Krachtiger dan CFG!
S→ab S→aSb
• Bewijs: – Er zijn talen waarvoor geen CFG te geven valt, – Maar waarvoor wel een DCG bestaat.
S S
a a
S
b b
......... 26
27
Niet Context-Vrij
COPY-taal
• a n bn c n , n ≥ 1 s(L) → a(L), b(L), a([1]) --> [a]. a([1|Rst]) --> [a], b([1]) --> [b]. b([1|Rst]) --> [b], c([1]) --> [c]. c([1|Rst]) --> [c],
c(L).
• WW: een willekeurige reeks a’s en b’s, gevolgd door dezelfde reeks.
a(Rst).
s(L) → w(L), w(L) w([a|Rst]) --> [a], w(Rst). w([b|Rst]) --> [b], w(Rst). w([]) --> [].
b(Rst). c(Rst).
?- s(L,[a,a,b,a,a,b],[]). L = [a,a,b]
?- s(L,[a,a,b,b,c,c],[]). L = [1,1] 28
29
Nederlandse werkwoordsclusters
Toepassing: Definities
dat ik de olifanten voer dat ik Henk de olifanten help voeren dat ik Cecilia Henk de olifanten zie helpen voeren ....
• Wat is statische RSI, het carpale tunnel syndroom, pauzeersoftware, een muisarm?
• NP n + 1 hoort bij werkwoord n, • Dit patroon van kruisende afhankelijkheden vertoont gelijkenis met COPY-taal.
30
• Wat is een maagzweer, een mri-scan, een TIA, een vlokkentest, een vruchtwaterpunctie, kanker, psoriasis, secundaire slapeloosheid, wiegendood? • Wat is leukopenie, hypertensie, osteomyelitis, een runner’s knee, een cerebrovasculair accident, PTSS, ... 31
Google define
Google define • define:Michael Moore
• define:aphasia – Loss of ability to speak or understand speech. – total or partial loss of ability to use or understand language; usually caused by stroke, brain disease, or injury. – Difficulty understanding the speech of others and/or expressing oneself verbally.
– Michael Moore (born December 4, 1954) is an American-born jazz musician... – Michael Moore (born 3 June 1965) is a politician in the United Kingdom.... – Michael Moore (born April 23, 1954 in Davison, Michigan) is a liberal American film director and author known for his advocacy of his social democratic political views, laced with satire and humor.
32
Syntactische vorm van definities
33
Wikipedia 1st sentence
• Een zin van de vorm Concept is Definitie. – ok Een spanningspneumothorax is een ernstige en potentieel levensbedreigende vorm van pneumothorax. – ok Een epileptische aanval is de reactie op een abnormale elektrische ontlading in de hersenen. – ?? Goede bronnen voor deze vitamine zijn gist, varkensvlees, peulvruchten en volkoren graanproducten. – ?? De beste aanpak van fysische urticaria is preventie door vermijding van de prikkels die de aandoening veroorzaken. Vreemd genoeg zijn sommige jongens met fragiele-X– ?? syndroom geestelijk normaal terwijl sommige meisjes.. 34
• Andr´e Agassi (29 april 1970) is een Amerikaans tennisser. • Groen! is een Vlaamse, Progressieve en groene politieke partij. • Een algoritme (van de Arabische geleerde Al-Chwarizmi uit de 8e eeuw) is een eindige reeks instructies om een doel te bereiken. • Een acteur (M/V) of actrice (V) is iemand die een personage uitbeeldt in een verhaal of rollenspel.
35