1 / 20

LING 388: Language and Computers

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].

hila
Download Presentation

LING 388: Language and Computers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LING 388: Language and Computers Sandiway Fong Lecture 15: 10/17

  2. Administrivia • Homework #4 • acknowledgements to be sent out soon...

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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].

  8. 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

  9. 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

  10. 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))))

  11. 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]

  12. 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].

  13. 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].

  14. 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].

  15. 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)

  16. 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].

  17. 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))

  18. 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

  19. 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

  20. 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)

More Related