cpsc 312 functional and logic programming
play

CPSC 312 Functional and Logic Programming Project #2 - get started! - PowerPoint PPT Presentation

CPSC 312 Functional and Logic Programming Project #2 - get started! Bad reasoning as well as good reasoning is possible; and this fact is the foundation of the practical side of logic. Charles Sanders Peirce D. Poole 2019 c CPSC


  1. CPSC 312 — Functional and Logic Programming Project #2 - get started! “Bad reasoning as well as good reasoning is possible; and this fact is the foundation of the practical side of logic.” Charles Sanders Peirce � D. Poole 2019 c CPSC 312 — Lecture 28 1 / 12

  2. Plan Last time difference lists definite clause grammars natural language interfaces to databases Today natural language interfaces (cont) computer algebra and calculus Semantic web � D. Poole 2019 c CPSC 312 — Lecture 28 2 / 12

  3. Definite Clause Grammars A sentence consists of a noun phrase followed by a verb phrase. sentence ( L , E ) is true if ( L , E ) forms a difference list that is a sentence noun phrase ( L , E ) is true if ( L , E ) forms a difference list that is a noun phrase verb phrase ( L , E ) is true if ( L , E ) forms a difference list that is a verb phrase sentence(L_0,L_2) :- noun_phrase(L_0,L_1), verb_phrase(L_1,L_2). � D. Poole 2019 c CPSC 312 — Lecture 28 3 / 12

  4. Question-answering How can we get from natural language directly to the answer? Goal: map natural language to a query that is asked of a knowledge base. Add arguments representing the individual noun phrase ( T 0 , T 1 , O ) means ◮ T 0 − T 1 is a difference list forming a noun phrase. ◮ The noun phrase refers to the individual O . Can be implemented by the parser directly calling the knowledge base. � D. Poole 2019 c CPSC 312 — Lecture 28 4 / 12

  5. Example natural language to query see http://www.cs.ubc.ca/~poole/cs312/2019/prolog/ geography.pl Almost impossible to debug. What does it mean if it answers false ? We can’t tell whether it couldn’t parse the question or there were no answers to the question. Ideq: parse the sentence first, building a query that is then asked of the database. http://www.cs.ubc.ca/~poole/cs312/2019/prolog/ geographyq.pl � D. Poole 2019 c CPSC 312 — Lecture 28 5 / 12

  6. Building a list of constraints on the entity (geographyq.pl) noun phrase(L0,L4,Entity,C0,C4) is true if L0 and L4 are list of words, such that ◮ L 4 is an ending of L 0 ◮ the words in L 0 before L 4 (written L 0 − L 4) form a noun phrase Entity is an individual that the noun phrase is referring to C0 is a list such that C 4 is an ending of C 0 and C 0 − C 4 contains the constraints imposed by the noun phrase noun_phrase(L0,L4,Entity,C0,C4) :- det(L0,L1,Entity,C0,C1), adjectives(L1,L2,Entity,C1,C2), noun(L2,L3,Entity,C2,C3), mp(L3,L4,Entity,C3,C4). � D. Poole 2019 c CPSC 312 — Lecture 28 6 / 12

  7. Building a list of constraints on the entity (geographyq.pl) Nouns and adjectives provide constraints: adj([large | L],L,Entity, [large(Entity)|C],C). adj([Lang,speaking | L],L,Entity, [speaks(Entity,Lang)|C],C). noun([country | L],L,Entity, [country(Entity)|C],C). noun([city | L],L,Entity, [city(Entity)|C],C). Verbs and propositions provide relations reln ( T 0 , T 1 , Subject , Object , C 0 , C 1) ◮ T 0 − T 1 is a verb or preposition that provides relations in C 0 − C 1 that is true between individuals Subject and Object reln([borders | L],L,O1,O2,[borders(O1,O2)|C],C). reln([the,capital,of | L],L,O1,O2, [capital(O2,O1)|C],C). reln([next,to | L],L,O1,O2, [borders(O1,O2)|C],C). � D. Poole 2019 c CPSC 312 — Lecture 28 7 / 12

  8. Clicker Question If the query for the grammar rule noun_phrase([the,cat,on,the,mat,sat,on,the,hat], R, Ent, C0, C1). returns with substitution R=[sat,on,the,hat] What do we hope the value of C 0 and C 1 is: A C 0 = [ the , cat , on , the , mat | C 1] B C 0 = [ cat ( Ent ) , on ( Ent , A ) , mat ( A ) | C 1] C C 0 = felix , C 1 = fluffy D C 0 = C 1 E we would hope this would fail � D. Poole 2019 c CPSC 312 — Lecture 28 8 / 12

  9. Clicker Question Which specifies that sat is a verb, than indicates the relation sat : A reln([sat | L], L, Sub, Obj, [sat(Sub,Obj) | C], C). B reln([sat | L], L, Sub, Obj, [sat | C], C). C reln([sat | L], L, Sub, Obj, sat(Sub,C), C). D reln([sat | L], L, Sub, Obj, sat(Sub,Obj), C). E It can’t be done � D. Poole 2019 c CPSC 312 — Lecture 28 9 / 12

  10. Real-world queries Want a tokenizer: mapping from strings to sequence of words. readln provides a simple one. What should the system do with ungrammatical sentences? What should the system do with new words? What about pronoun references? The student took many courses. Two computer science courses and one mathematics course were particularly dif- ficult. The mathematics course . . . Other tricky and subtle aspects of English? — program them — learn them We need a lexicon. Wordnet is a large lexical database of English https://wordnet.princeton.edu . It comes in a Prolog version and one that is complicated to use. � D. Poole 2019 c CPSC 312 — Lecture 28 10 / 12

  11. NLP requires Understanding (Winograd Schemas) The city councilmen refused the demonstrators a permit because they feared violence. Who feared violence? The city councilmen refused the demonstrators a permit because they advocated violence. Who advocated violence? Steve follows Fred’s example in everything. He [admires/influences] him hugely. Who [admires/influences] whom? The table won’t fit through the doorway because it is too [wide/narrow]. What is too [wide/narrow]? Grace was happy to trade me her sweater for my jacket. She thinks it looks [great/dowdy] on her. What looks [great/dowdy] on Grace? Bill thinks that calling attention to himself was rude [to/of] Bert. Who called attention to himself? In a recent competition, the best algorithm got 58% correct! https://cs.nyu.edu/faculty/davise/papers/WinogradSchemas/WS.html � D. Poole 2019 c CPSC 312 — Lecture 28 11 / 12

  12. Computer Algebra (algebra.pl) Because Prolog does not evaluate expressions, an algebraic expression can be manipulated. E.g., as in Assignment 5. Algebraic variables can be treated as Prolog constants. (Remember Prolog variables mean “for all”). Derivatives can be defined using deriv ( E , X , DE ) is true if DE is the derivative of E with respect to X Expressions can be simplified: To simplify A ∗ B : first simplify A and B , then check for multiplication by 0 or 1 or when both simplify to numbers. More sophisticated simplification is possible. Multivariate differentiation just works. Integration is more difficult (finding when to apply rules is more complicated) � D. Poole 2019 c CPSC 312 — Lecture 28 12 / 12

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend