200 likes | 316 Views
LING 388: Language and Computers. Sandiway Fong Lecture 15: 10/17. Administrivia. Homework #4 acknowledgements to be sent out soon. Last Time: Lab Class. original DCG sentence --> np, vp. vp --> verb, np. verb --> [took]. np --> det, [man]. np --> det, [book]. det --> [the].
E N D
LING 388: Language and Computers Sandiway Fong Lecture 15: 10/17
Administrivia • Homework #4 • acknowledgements to be sent out soon...
Last Time: Lab Class • original DCG • sentence --> np, vp. • vp --> verb, np. • verb --> [took]. • np --> det, [man]. • np --> det, [book]. • det --> [the]. • revised DCG: tree representation • sentence(s(NP,VP)) --> np(NP), vp(VP). • vp(vp(V,NP)) --> verb(V), np(NP). • verb(v(took)) --> [took]. • np(np(D,man)) --> det(D), [man]. • np(np(D,book)) --> det(D), [book]. • det(det(the)) --> [the]. s(np(det(the),man),vp(v(took),np(det(the),man))) • original query • ?- sentence(List,[]). • query (with an extra argument) • ?- sentence(P,List,[]). • P = parse tree • List = sentence
query what parse P corresponds to the sentence “the man took the book”? ?- sentence(P,[the,man,took,the,book],[]). P = s(np(det(the),man),vp(v(took),np(det(the),book))) ? ; no query what are the possible parses P and word X for the sentence “the man took the X”? ?- sentence(P,[the,man,took,the,X],[]). P = s(np(det(the),man),vp(v(took),np(det(the),man))), X = man ? ; P = s(np(det(the),man),vp(v(took),np(det(the),book))), X = book ? ; no Last Time: Lab Class
add new rule “kicked the bucket” is a VP idiom meaning “died” vp(vp(v(died))) --> [kicked,the,bucket]. example illustrates the ability to return any parse we like for a given rule query what are the possible parses for “the man kicked the bucket”? ?-sentence(Parse,[the,man,kicked,the,bucket],[]). Parse = s(np(det(the),man),vp(v(died))) ? ; no idiomatic meaning only Last Time: Lab Class
Last Time: Lab Class • add new rules • for “kicked” and “bucket” as a verb and noun, respectively • verb(v(kicked)) --> [kicked]. • np(np(D,bucket)) --> det(D), [bucket]. • provides the ability to return the literal parse for “kicked the bucket” • query • what are the possible parses for “the man kicked the bucket”? • ?- sentence(Parse,[the,man,kicked,the,bucket],[]). • Parse = s(np(det(the),man),vp(v(kicked),np(det(the),bucket))) ? ; • Parse = s(np(det(the),man),vp(v(died))) ? ; • no • both idiomatic and literal meanings are now possible
A Note on Encoding Idioms • Our ability to handle the idiom neatly depends on the fact that the idiom is a constituent • this means we can encode it in just one rule • Example: • “kicked the bucket” is a VP idiom meaning “died” • vp(vp(v(died))) --> [kicked,the,bucket]. • very common... V + Object(s) • call it a day • jump the gun • walk the plank • turn the other cheek • Asymmetry: Subject+V idioms are practically non-existent • The vultures appear to be circling NP [Linguist List, Vol-4-43] sentence --> np, vp. vp --> verb, np. verb --> [took]. np --> det, [man]. np --> det, [book]. det --> [the].
Extra Argument(s) • used to hold the parse tree • we can have multiple extra arguments in grammar rules • there are other uses... e.g. agreement
Another Grammar • example • s(s(Y,Z)) --> np(Y), vp(Z). • np(np(Y)) --> pronoun(Y). • np(np(det(the),n(ball))) --> [the,ball]. • pronoun(i) --> [i]. • pronoun(we) --> [we]. • vp(vp(Y)) --> unergative(Y). • vp(vp(Y,Z)) --> transitive(Y), np(Z). • unergative(v(ran)) --> [ran]. • transitive(v(hit)) --> [hit]. • query • ?- s(X,[john,hit,the,ball],[]). Result: parse tree
Another Grammar • example parses s s np vp np vp v np i we v det n hit ran ball the ?- s(X,[we,ran],[]). X =s(np(we),vp(v(ran))) ?- s(X,[i,hit,the,ball],[]). X = s(np(i),vp(v(hit),np(det(the),n(ball))))
Determiner-Noun Agreement • idea • we can also use the extra argument to enforce constraints between constituents within a DCG rule • example • English determiner-noun number agreement • data • the man • the men • a man • *a men • lexical features • man [singular] • men [plural]
Determiner-Noun Agreement • data • the man/men • a man/*a men • grammar • s(s(Y,Z)) --> np(Y), vp(Z). • np(np(Y)) --> pronoun(Y). • np(np(det(the),n(ball))) --> [the,ball]. • pronoun(i) --> [i]. • pronoun(we) --> [we]. • vp(vp(Y)) --> unergative(Y). • vp(vp(Y,Z)) --> transitive(Y), np(Z). • unergative(v(ran)) --> [ran]. • transitive(v(hit)) --> [hit]. np --> det, common_noun. det --> [the]. det --> [a]. common_noun--> [ball]. common_noun--> [man]. common_noun --> [men].
Determiner-Noun Agreement np --> det, common_noun. det --> [the]. det --> [a]. common_noun--> [ball]. common_noun--> [man]. common_noun --> [men]. • data • the man/men • a man/*a men • grammar • s(s(Y,Z)) --> np(Y), vp(Z). • np(np(Y)) --> pronoun(Y). • np(np(det(the),n(ball))) --> [the,ball]. • pronoun(i) --> [i]. • pronoun(we) --> [we]. • vp(vp(Y)) --> unergative(Y). • vp(vp(Y,Z)) --> transitive(Y), np(Z). • unergative(v(ran)) --> [ran]. • transitive(v(hit)) --> [hit]. np(np(D,N)) --> det(D), common_noun(N). det(det(the)) --> [the]. det(det(a)) --> [a]. common_noun(n(ball)) --> [ball]. common_noun(n(man)) --> [man]. common_noun(n(men)) --> [men].
Determiner-Noun Agreement • lexical features • man [singular] • men [plural] • rules • the can combine with singular or plural nouns • a can combine only with singular nouns • data • the man/men • a man/*a men • grammar • s(s(Y,Z)) --> np(Y), vp(Z). • np(np(Y)) --> pronoun(Y). • np(np(D,N)) --> det(D), common_noun(N). • det(det(the)) --> [the]. • det(det(a)) --> [a]. • common_noun(n(ball)) --> [ball]. • common_noun(n(man)) --> [man]. • common_noun(n(men)) --> [men]. • pronoun(i) --> [i]. • pronoun(we) --> [we]. • vp(vp(Y)) --> unergative(Y). • vp(vp(Y,Z)) --> transitive(Y), np(Z). • unergative(v(ran)) --> [ran]. • transitive(v(hit)) --> [hit].
Determiner-Noun Agreement • idea • specify singular (sg) and plural (pl) for common nouns using an extra argument • rules • the can combine with singular or plural nouns • a can combine only with singular nouns • data • the man/men • a man/*a men • grammar (only the NP section shown here) • np(np(Y)) --> pronoun(Y). • np(np(D,N)) --> det(D), common_noun(N,Number). • det(det(the)) --> [the]. • det(det(a)) --> [a]. • common_noun(n(ball),sg) --> [ball]. • common_noun(n(man),sg) --> [man]. • common_noun(n(men),pl) --> [men]. • pronoun(i) --> [i]. • pronoun(we) --> [we]. common_noun now takes two extra arguments: parse tree number [sg,pl] Note: we therefore have to query common_noun with two extra arguments, e.g. common_noun(N,Number)
Determiner-Noun Agreement • idea • give determiners a number feature as well • and make it agree with the noun • rules • thecan combine with singular or plural nouns • a can combine only with singular nouns • data • the man/men • a man/*a men • grammar (NP section) • np(np(Y)) --> pronoun(Y). • np(np(D,N)) --> det(D,Number), common_noun(N,Number). • det(det(the),sg) --> [the]. • det(det(the),pl) --> [the]. • det(det(a),sg) --> [a]. • common_noun(n(ball),sg) --> [ball]. • common_noun(n(man),sg) --> [man]. • common_noun(n(men),pl) --> [men]. • pronoun(i) --> [i]. • pronoun(we) --> [we].
Determiner-Noun Agreement np(np(Y)) --> pronoun(Y). np(np(D,N)) --> det(D,Number), common_noun(N,Number). det(det(the),sg) --> [the]. det(det(the),pl) --> [the]. det(det(a),sg) --> [a]. common_noun(n(ball),sg) --> [ball]. common_noun(n(man),sg) --> [man]. common_noun(n(men),pl) --> [men]. pronoun(i) --> [i]. pronoun(we) --> [we]. • query • ?- np(X,[the,men],[]). • Note: we need not start with non-terminal symbol s, • i.e. parse a full sentence • Prolog DCG rules can be independently accessed • computation tree • ?- np(X,[the,men],[]). X = np(D,N) • ?- det(D,Number,[the,men],L). • ?- common_noun(N,Number,L,[]). • ?- det(D,Number,[the,men],L). Rule #3 • D = det(the) Number = sg L = [men] • ?- common_noun(N,sg,[men],[]). Rule #8 • No • Retry (rule #3 led to failure) • ?- det(D,Number,[the,men],L). Rule #4 • D = det(the) Number = pl L = [men] • ?- common_noun(N,pl,[men],[]). Rule #8 • Yes N = n(men) • X = np(det(the),n(men))
Determiner-Noun Agreement np(np(Y)) --> pronoun(Y). np(np(D,N)) --> det(D,Number), common_noun(N,Number). det(det(the),sg) --> [the]. det(det(the),pl) --> [the]. det(det(a),sg) --> [a]. common_noun(n(ball),sg) --> [ball]. common_noun(n(man),sg) --> [man]. common_noun(n(men),pl) --> [men]. pronoun(i) --> [i]. pronoun(we) --> [we]. • data • the man/men • a man/*a men • query • ?- np(X,[a,men],[]). • computation tree • ?- np(X,[a,men],[]). X = np(D,N) • ?- det(D,Number,[a,men],L). • ?- common_noun(N,Number,L,[]). • ?- det(D,Number,[a,men],L). Rule #5 • D = det(a) Number = sg L = [men] • ?- common_noun(N,sg,[men],[]). Rule #8 • No
Determiner-Noun Agreement • simplifying the grammar det(det(the),sg) --> [the]. det(det(the),pl) --> [the]. det(det(a),sg) --> [a]. • grammar is ambiguous • we have two rules for determiner the • can see the effect in the computation tree • retry needed to get “the men” to parse • agreement rule (revisited): • the can combine with singular or plural nouns • i.e. the doesn’t care about the number of the noun • modified DCG • np(np(D,N)) --> det(D,Number), common_noun(N,Number). • det(det(the),_) --> [the]. Note: _ is a variable a variable is used because it matches anything (sg,pl) used underscore character because I don’t care about the name of the variable
Determiner-Noun Agreement np(np(Y)) --> pronoun(Y). np(np(D,N)) --> det(D,Number), common_noun(N,Number). det(det(the),_) --> [the]. det(det(a),sg) --> [a]. common_noun(n(ball),sg) --> [ball]. common_noun(n(man),sg) --> [man]. common_noun(n(men),pl) --> [men]. pronoun(i) --> [i]. pronoun(we) --> [we]. • revisit query • ?- np(X,[the,men],[]). • computation tree • ?- np(X,[the,men],[]). X = np(D,N) • ?- det(D,Number,[the,men],L). • ?- common_noun(N,Number,L,[]). • ?- det(D,Number,[the,men],L). Rule #3 • D = det(the) Number = _ L = [men] • ?- common_noun(N,_,[men],[]). Rule #7 • Yes N = n(men) _ = pl • X = np(det(the),n(men)) • a computational advantage • no need for retry (ambiguityremoved)