160 likes | 231 Views
LING 388: Language and Computers. Sandiway Fong Lecture 11: 10/4. Administrivia. Homework #2 has been graded you should get an email in a day or so Reservation (tentative) Lab class practice and homework #3 on context-free grammar parsing next Monday (11th October)
E N D
LING 388: Language and Computers Sandiway Fong Lecture 11: 10/4
Administrivia • Homework #2 • has been graded • you should get an email in a day or so • Reservation (tentative) • Lab class • practice and homework #3 on context-free grammar parsing • next Monday (11th October) • meet in SBS 224, Instructional Computing Lab (not here)
Last Time • Context-Free Grammars (CFG) • from acceptor to parser • add an extra argument to grammar rules • x --> y, z. • x(x(Y,Z)) --> y(Y), z(Z). • extra argument changes the expressive power of the rules • regular grammar rules + extra argument can handle the non-regular language anbn
Today’s Topic • Context-free grammar technology + bells and whistles are at the core of parsing sentences • we’re going to keep exploring for the next few lectures how to implement natural language fragments • today: more on extra arguments ...
Extra Argument and Phrase Structure • Grammar from Lecture #10: • 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
s np vp s v np i np vp det n hit the ball v we ran Extra Argument and Phrase Structure • Examples: ?- 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))))
Extra Argument and Determiner-Noun Agreement • Idea: • We can also use the extra argument to impose 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
Extra Argument and 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].
Extra Argument and 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]. 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].
Extra Argument and 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].
Extra Argument and 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: (NP section) • 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),pl) --> [man]. • common_noun(n(men),pl) --> [men]. • pronoun(i) --> [i]. • pronoun(we) --> [we].
Extra Argument and Determiner-Noun Agreement • Idea: • give determiners a number feature as well • and make it agree with the noun • 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: (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),pl) --> [man]. • common_noun(n(men),pl) --> [men]. • pronoun(i) --> [i]. • pronoun(we) --> [we].
Extra Argument and 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),pl) --> [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))
Extra Argument and 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),pl) --> [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
Extra Argument and Determiner-Noun Agreement • Simplifying the grammar: • det(det(the),sg) --> [the]. • det(det(the),pl) --> [the]. • det(det(a),sg) --> [a]. • Grammar is ambiguous: • 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 • DCG Rule: • np(np(D,N)) --> det(D,Number), common_noun(N,Number). • det(det(the),_) --> [the]. Note: _ is a variable used underscore character because I don’t care about the name of the variable
Extra Argument and 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),pl) --> [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)) • Advantage: • no need for retry (ambiguityremoved)