240 likes | 343 Views
LING 388: Language and Computers. Sandiway Fong Lecture 18: 10/27. Last Time. computation of predicate-argument structure ?- s( P , [i,hit,the,ball], []). P = s(np(i),vp(v(hit),np(det(the),n(ball)))) P = hit(i,ball) predicate: hit arguments: i ball
E N D
LING 388: Language and Computers Sandiway Fong Lecture 18: 10/27
Last Time • computation of predicate-argument structure • ?- s(P, [i,hit,the,ball], []). • P = s(np(i),vp(v(hit),np(det(the),n(ball)))) • P = hit(i,ball) • predicate: hit • arguments: i ball • involved calling Prolog predicates from grammar rules { ... } • headof(X,H) • ?- headof(vp(v(hit),np(det(the),n(ball))),V). • X = hit • another application of { ... } • counting # of a’s and b’s for modifying a regular grammar for a+b+ • into a grammar for anbn
Today’s Topics • another step towards a simple language translator ... • we can write a grammar for Japanese • differences between English and Japanese • canonical word order • syntax of wh-questions
Japanese • head-final language • we introduced the notion “head of a phrase” (see last lecture) • e.g. verb is the head of a verb phrase • hit the ball • ran • noun is the head of a noun phrase • the man (that I saw) • the old man • John’s mother • Japanese sentence word order (canonical) • Subject Object Verb • cf. English word order • Subject Verb Object
Japanese • head-final language • sentence word order (canonical) • Subject Object Verb (Japanese) • Subject Verb Object (English) • example • John bought a book (English) • John a book bought (Japanese word order) • Taroo-ga hon-o katta (Japanese) • case markers • ga = nominative case marker • o = accusative case marker • note: no determiner present in the Japanese sentence
Japanese • head-final language • sentence word order (canonical) • Subject Object Verb • Japanese also allows “scrambling” • e.g. object and subject can be switched in order • Subject Object Verb • Object Subject Verb • *Subject Verb Object (still head-final) • example • John bought a book (English) • John a book bought • Taroo-ga hon-o katta (Japanese - canonical) • hon-o Taroo-ga katta (Japanese - scrambled) • *Taroo-ga katta hon-o (English word order) • ga = nominative case marker • o = accusative case marker
Japanese • example • John bought a book • John a book bought • taroo-ga hon-o katta • ga = nominative case marker • o = accusative case marker • parser input • (as a Prolog list with case markers separated) • [taroo,ga,hon,o,katta] • grammar rules • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • note: • new nonterminals nomcaseacccase • do not create structure • order of np, transitive in the VP • reflects Japanese word order
Japanese • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • example • John a book bought • taroo-ga hon-o katta • ga = nominative case marker • o = accusative case marker • computation tree • ?- s(X,[taroo,ga,hon,o,katta],[]). • ?- np(Y,[taroo,ga,hon,o,katta],L1). • ?- nomcase(L1,L2). • ?- vp(Z,L2,[]). • ?- np(Y,[taroo,ga,hon,o,katta],L1). • Y = np(taroo) L1 = [ga,hon,o,katta] • ?- nomcase([ga,hon,o,katta],L2). • L2 = [hon,o,katta] • ?- vp(vp(Z’,Y’), [hon,o,katta],[]). Z = vp(Z’,Y’) • ?- np(Z’,[hon,o,katta],L1’). • ?- acccase(L1’,L2’). • ?- transitive(Y’,L2’,[]).
Japanese • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • example • John a book bought • taroo-ga hon-o katta • ga = nominative case marker • o = accusative case marker • computation tree • ?- vp(vp(Z’,Y’), [hon,o,katta],[]). • ?- np(Z’,[hon,o,katta],L1’). • ?- acccase(L1’,L2’). • ?- transitive(Y’,L2’,[]). • ?- np(Z’,[hon,o,katta],L1’) • Z’ = np(hon) L1’ = [o,katta] • ?- acccase([o,katta],L2’). • L2’ = [katta] • ?- transitive(Y’,[katta],[]). • Y’ = v(katta) • answer • ?- s(X,[taroo,ga,hon,o,katta],[]). • X = s(np(taroo), vp(np(hon), v(katta)))
Parser Sentence Parse tree Generator Sentence Parse tree Japanese • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • example • John a book bought • taroo-ga hon-o katta • ga = nominative case marker • o = accusative case marker • grammar • can be run “backwards” for sentence generation • we’ll need this • query • ?- s(s(np(taroo), vp(np(hon), v(katta))),L,[]). • L = [taroo, ga, hon, o, katta]
Japanese • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • example • John a book bought • taroo-ga hon-o katta • ga = nominative case marker • o = accusative case marker • query (generation) • ?- s(s(np(taroo),vp(np(hon),v(katta))),L,[]). • Y = np(taroo) Z = vp(np(hon),v(katta))) • ?- np(np(taroo),L,L1). • ?- nomcase(L1,L2). • ?- vp(vp(np(hon),v(katta))),L2,[]). • ?- np(np(taroo),L,L1). • L = [taroo|L1] • ?- nomcase(L1,L2). • L1 = [ga|L2] • ?- vp(vp(np(hon),v(katta))),L2,[]). • Z’ = np(hon) Y’ = v(katta) • ?- np(np(hon),L2,L3). • ?- acccase(L3,L4). • ?- transitive(v(katta),L4,[]).
Japanese • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • example • John a book bought • taroo-ga hon-o katta • ga = nominative case marker • o = accusative case marker • query (generation) • ?- vp(vp(np(hon),v(katta))),L2,[]). • Z’ = np(taroo) Y’ = v(katta) • ?- np(np(hon),L2,L3). • ?- acccase(L3,L4). • ?- transitive(v(katta),L4,[]). • ?- np(np(hon),L2,L3). • L2 = [hon|L3] • ?- acccase(L3,L4). • L3 = [o|L4] • ?- transitive(v(katta),L4,[]). • L4 = [katta|[]]
Japanese • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • example • John a book bought • taroo-ga hon-o katta • ga = nominative case marker • o = accusative case marker • query (generation) • back-substituting ... • ?- np(np(taroo),L,L1). • L = [taroo|L1] • ?- nomcase(L1,L2). • L1 = [ga|L2] • ?- np(np(hon),L2,L3). • L2 = [hon|L3] • ?- acccase(L3,L4). • L3 = [o|L4] • ?- transitive(v(katta),L4,[]). • L4 = [katta|[]] • answer • L = [taroo, ga, hon, o, katta]
Japanese • wh-NP phrases • English • examples • John bought a book • Who bought a book? (subject wh-phrase) • *John bought what? (echo-question only) • What did John buy? (object wh-phrase) • object wh-phrase case • complex operation required from the declarative form: • object wh-phrase must be fronted • do-support (insertion of past tense form of “do”) • boughtbuy (untensed form) what did John buy what did John bought what John bought John bought what John bought a book
Japanese • wh-NP phrases • English • Who bought a book? (subject wh-phrase) • *John bought what? (only possible as an echo-question) • What did John buy? (object wh-phrase) • Japanese • wh-in-situ: • meaning wh-phrase appears in same position as a regular noun phrase • easy to implement! (no complex series of operations) • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who
Japanese • wh-in-situ: • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who • grammar • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • add new wh-words • np(np(dare)) --> [dare]. • np(np(nani)) --> [nani].
Japanese • wh-in-situ: • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who • grammar • s(s(Y,Z)) --> np(Y), nomcase, vp(Z). • vp(vp(Z,Y)) --> np(Z), acccase, transitive(Y). • transitive(v(katta)) --> [katta]. • nomcase --> [ga]. • acccase --> [o]. • np(np(taroo)) --> [taroo]. • np(np(hon)) --> [hon]. • np(np(dare)) --> [dare]. • np(np(nani)) --> [nani]. • allows sentences • Taroo-ga hon-o katta • Taroo-ga nani-o katta (ka) • dare-ga hon-o katta (ka) • How do we enforce the constraint that ka is obligatory when a wh-phrase is in the sentence?
Japanese • wh-in-situ: • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who • grammar • s(s(Y,Z)) --> np(Y,Q), nomcase, vp(Z). • vp(vp(Z,Y)) --> 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]. • answer • employ an extra argument to encode the lexical feature wh (with values wh, notwh) for nouns
Japanese • wh-in-situ: • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who • grammar • s(s(Y,Z)) --> np(Y,Q1), nomcase, vp(Z,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]. • answer • employ an extra argument to encode the lexical feature wh for nouns • propagate this feature up to the (top) sentence rule • means adding extra argument Q to the VP nonterminal
Japanese • wh-in-situ: • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who • grammar • 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]. • answer • employ an extra argument to encode the lexical feature wh for nouns • propagate this feature up to the s rule • add a sentence-final particle rule (sf) that generates ka when this feature is wh
Japanese • wh-in-situ: • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who • grammar • 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]. • sentence-final particle rule (sf/2) • sf(wh,notwh) --> [ka]. • sf(notwh,wh) --> [ka]. • sf(notwh,notwh) --> []. (empty) • sf(wh,wh) --> [ka]. (example:dare-ga nani-o katta ka: who bought what)
Japanese 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]. • wh-in-situ: • taroo-ga nani-o katta ka • nani: means what • ka: sentence-final question particle • dare-ga hon-o katta ka • dare: means who • computation tree • ?- s(X,[taroo,ga,nani,o,katta,ka],[]). • X = s(np(taroo),vp(np(nani),v(katta))) • ?- s(X,[taroo,ga,nani,o,katta],[]). • no we may want to modifiy the parse tree to represent the sentence-final particle ka as well
Japanese • grammar choices • so far • s(s(Y,Z)) --> np(Y,Q1), nomcase, vp(Z,Q2), sf(Q1,Q2). • could have written • s(s(Y,Z)) --> np(Y,notwh), nomcase, vp(Z,notwh). • s(s(Y,Z)) --> np(Y,Q1), nomcase, vp(Z,Q2), \+ Q1=notwh, \+ Q2=notwh, sf. • sf --> [ka]. • then • s(s(Y,Z)) --> np(Y,notwh), nomcase, vp(Z,notwh). • s(s(Y,Z,ka)) --> np(Y,Q1), nomcase, vp(Z,Q2), \+ Q1=notwh, \+ Q2=notwh, sf. • sf --> [ka]. • generates different structures for declarative vs. wh-NP questions
Next Time • we’ll look at wh-questions in English • ... and also take one more step towards our machine translator