180 likes | 316 Views
LING 388: Language and Computers. Sandiway Fong Lecture 24 11/15. Last Time. Milestone: first machine translation…. Tree-to-tree mapping. declarative example John bought a book s(np(john),vp(v(bought),np(det(a),n(book )))) Taroo-ga hon-o katta s(np(taroo),vp(np(hon),v(katta )))
E N D
LING 388: Language and Computers Sandiway Fong Lecture 24 11/15
Last Time • Milestone: first machine translation…
Tree-to-tree mapping • declarative example • John bought a book s(np(john),vp(v(bought),np(det(a),n(book)))) • Taroo-gahon-okattas(np(taroo),vp(np(hon),v(katta))) • predicate maptree/2
Problems Infinite loop
Subject Wh-questions • subject wh-question • Who bought a book s(np(who),vp(v(bought),np(det(a),n(book)))) • dare-gahon-okatta ka s(np(dare),vp(np(hon),v(katta))) • new word correspondences • dare = who • ka = question particle • database facts • je(v(katta),v(bought)). • je(np(hon),np(_,n(book))). • je(np(taroo),np(john)). • je(np(dare),np(who)). • does our translation code work for this case?
Object Wh-questions • object wh-question • What did John buy sbar(np(what),aux(did),s(np(john),vp(v(buy)))) • taroo-ganani-okatta ka s(np(taroo),vp(np(nani),v(katta))) • ka = question particle • ga = nominative case marker • o = accusative case marker • new word correspondences • nani = what • database facts • je(v(katta), v(bought)). • je(np(hon), np(_,n(book))). • je(np(taroo),np(john)). • je(np(dare), np(who)). • je(np(nani), np(what)).
Object Wh-questions • object wh-question • What did John buy sbar(np(what),aux(did),s(np(john),vp(v(buy)))) • taroo-ga nani-o katta ka s(np(taroo),vp(np(nani),v(katta))) • database facts • je(v(katta), v(bought)). • je(np(hon), np(_,n(book))). • je(np(taroo),np(john)). • je(np(dare), np(who)). • je(np(nani), np(what)). • can our translation code so far handle this case? • i.e. can maptree/2 do the job?
Object Wh-questions • object wh-question • What did John buy sbar(np(what),aux(did),s(np(john),vp(v(buy)))) • taroo-ga nani-o katta ka s(np(taroo),vp(np(nani),v(katta))) • database facts • je(v(katta), v(bought)). • je(np(hon), np(_,n(book))). • je(np(taroo),np(john)). • je(np(dare), np(who)). • je(np(nani), np(what)). • je(v(katta), v(buy)). % simplification • can maptree/2 do the job? • maptree(s(S,vp(V,O)),s(SJ,vp(OJ,VJ))) :- • je(SJ,S), • je(VJ,V), • je(OJ,O). • maptree(sbar(O,_,s(S,vp(V))),s(SJ,vp(OJ,VJ))) :- • je(SJ,S), • je(VJ,V), • je(OJ,O).
Partial Summary • That’s essentially the tree-to-tree mapping approach • (linguistic) construction-based Next: • A more abstract approach • mapping via predicate-argument structure
Mapping: Tree-to-tree • Tree-to-tree • requires a complex maptree/2 definition • because of the different parse tree shapes • Example 1 (Declarative case): • John bought a book s(np(john),vp(v(bought),np(det(a),n(book)))) • Taroo-ga hon-o katta s(np(taroo),vp(np(hon),v(katta))) • Example 2 (Subject wh-Question): • Who bought a book s(np(who),vp(v(bought),np(det(a),n(book)))) • dare-ga hon-o katta ka s(np(dare),vp(np(hon),v(katta))) • Example 3 (Object wh-Question): • What did John buy sbar(np(what),aux(did),s(np(john),vp(v(buy)))) • taroo-ga nani-o katta ka s(np(taroo),vp(np(nani),v(katta)))
Mapping: Predicate-Argument Structure • Predicate-argument • much more simple mapping • also the correspondence dictionary will be more simple too • Example 1 (Declarative case): • John bought a book bought(john,book) • Taroo-ga hon-o katta katta(taroo,hon) • Example 2 (Subject wh-Question): • Who bought a book bought(who,book) • dare-ga hon-o katta ka katta(dare,hon) • Example 3 (Object wh-Question): • What did John buy bought(john,what) • taroo-ga nani-o katta ka katta(taroo,nani)
Mapping: Predicate-Argument Structure • Task 1: • Modify the Japanese grammar to also generate predicate argument structure • DCG rules • s(s(Y,Z)) --> np(Y,Q1), nomcase, vp(Z,Q2), sf(Q1,Q2). • vp(vp(Z,Y),Q) --> np(Z,Q), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo),notwh) --> [taroo]. • np(np(hon),notwh) --> [hon]. • np(np(dare),wh) --> [dare]. • np(np(nani),wh) --> [nani]. • sf(wh,notwh) --> [ka]. • sf(notwh,wh) --> [ka]. • sf(notwh,notwh) --> []. • sf(wh,wh) --> [ka].
Mapping: Predicate-Argument Structure • Task 1: • Modify the Japanese grammar to also generate predicate argument structure • Modified DCG rules: s(PA) --> np(Y,Q1), nomcase, vp(Z,Q2), sf(Q1,Q2), { predarg(Y,Z,PA) }. vp(vp(Z,Y),Q) --> np(Z,Q), acccase, transitive(Y). transitive(v(katta)) --> [katta]. nomcase --> [ga]. acccase --> [o]. np(np(taroo),notwh) --> [taroo]. np(np(hon),notwh) --> [hon]. np(np(dare),wh) --> [dare]. np(np(nani),wh) --> [nani]. sf(wh,notwh) --> [ka]. sf(notwh,wh) --> [ka]. sf(notwh,notwh) --> []. sf(wh,wh) --> [ka].
Mapping: Predicate-Argument Structure • Task 1: • Modify the Japanese grammar to also generate predicate argument structure • predarg/3: predarg(np(S),vp(np(O),v(V)),PA) :- PA =.. [V,S,O]. • Examples: ?- js(PA,[taroo,ga,hon,o,katta],[]). PA = katta(taroo,hon) ? ; no | ?- js(PA,[taroo,ga,nani,o,katta,ka],[]). PA = katta(taroo,nani) ? ; no | ?- js(PA,[dare,ga,hon,o,katta,ka],[]). PA = katta(dare,hon) ? ; no
Mapping: Predicate-Argument Structure • Task 2: • Modify the English grammar to also generate predicate argument structure • modified English DCG Rule • s(PA) --> np(X), vp(Y), { predarg(X,Y,PA)}. • applies to • John bought a book bought(john,book) • Who bought a book bought(who,book) • predarg/3: predarg(SNP,vp(v(V),ONP),PA) :- headof(SNP,S), headof(ONP,O), PA =.. [V,S,O].
Mapping: Predicate-Argument Structure • Task 2: • Modify the English grammar to also generate predicate argument structure • modified English DCG Rule • s(PA) --> np(X), vp(Y), { predarg(X,Y,PA)}. • predarg/3: predarg(SNP,vp(v(V),ONP),PA) :- headof(SNP,S), headof(ONP,O), PA =.. [V,S,O]. headof(np(S),S). % e.g. np(john) S= john headof(np(_Det,n(S)),S). % e.g. np(det(a),n(book)) S = book • Examples: ?- sbar(X,[john,bought,a,book],[]). X = bought(john,book) ? ; no | ?- sbar(X,[who,bought,a,book],[]). X = bought(who,book) ? ; no
Mapping: Predicate-Argument Structure • Task 2: • Modify the English grammar to also generate predicate argument structure • Example 3 (object wh-question) • What did John buy bought(john,what) • modified English DCG Rule sbar(PA) --> np(X,wh), do(_A), s_objectwh(Y), {predarg(X,Y,PA)}. • predarg/3: predarg(ONP,s(SNP,vp(v(V))),PA) :- headof(ONP,O), headof(SNP,S), PA =.. [V,S,O]. • Example: ?- sbar(X,[what,did,john,buy],[]). X = buy(john,what) ? ; no
Translator: Predicate-Argument Mapping Version translate(E,J) :- var(E) -> translate2(E,J) ; translate1(E,J). translate1(E,J) :- sbar(X,E,[]), mapPA(X,Y), js(Y,J,[]). translate2(E,J) :- js(Y,J,[]), mapPA(X,Y), sbar(X,E,[]).