1 / 19

LING 388: Language and Computers

LING 388: Language and Computers. Sandiway Fong Lecture 2: 8/ 25. Administrivia. LING 388 Homework #1 handed out today submit homework by email sandiway@email.arizona.edu arrive in my mailbox by midnight Wednesday September 1st see lecture 1 slides for general policy about write-ups

fauna
Télécharger la présentation

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 2: 8/25

  2. Administrivia • LING 388 Homework #1 • handed out today • submit homework by email • sandiway@email.arizona.edu • arrive in my mailbox • by midnight Wednesday September 1st • see lecture 1 slides for general policy about write-ups • you should collect all your answers to the homework exercises into one file • put your name on the homework • Use Word or plain text (something I can easily read) • Adobe PDF is also acceptable

  3. From last time… • Have you installed SWI-Prolog? • Latest version is 10.5.1

  4. Today’s Topic • first hands-on experience using SWI-Prolog • SWI-Prolog is already installed on all the lab machines • via Program menu

  5. Today’s Topic • Gentle hands-on introduction to Prolog • a powerful tool for writing grammars • grammars that can also be run on a computer

  6. Some Background • Prolog = Programming in Logic • Horn clause logic (subset of first-order predicate calculus) • roots in Mechanical Theorem Proving • Resolution Rule (Robinson, 65) • invented in the early 1970s • designed to support natural language processing • … has grammar rules • has been taught to schoolkids

  7. Prolog can be used to store a list of facts facts are things that are true in Prolog’s world initially Prolog’s world is empty We can look up facts just like in a database mechanism is a Prolog database query Usage We can store facts in the database by using assert e.g. assert(bird(robin)). adds fact bird(robin). to the Prolog world Example Facts in the database bird(robin). “robin is a bird” bird(eagle). “eagle is a bird” Database queries ?-bird(robin).Yes ?-bird(tiger). No Jargon bird is a predicate the predicate bird has one argument e.g.robin and eagle are arguments of the predicate bird bird(robin)is a fact meaning bird(robin)is true in the database ?-bird(eagle). is a query meaning we want to know if bird(eagle)is true in the database Prolog is a Database

  8. how to start it? from the Windows Program menu interpreter window pops up and is ready to accept database queries (?-) how to see what’s in the Prolog database? ?- listing. Other useful commands once we start storing facts in files instead of entering them using assert. how to see what the current working directory is? (the working directory is where your files are stored) important: every machine in the lab is different ?- working_directory(X,Y). X: current working directory, Y: new working directory how to change to a new working directory? ?- working_directory(X,NEW). SWI-Prolog Note: on the Mac: use /opt/local/bin/swipl in Terminal

  9. Let’s start Prolog Enter the bird facts into the database Using the assert/1 query Query the database List the database using query listing. Note: all facts and queries must end in a period. Prolog is case-sensitive don’t mix upper and lower case anything that begins with an uppercase letter is a logic variable use lower case for symbols Facts in the database bird(robin). bird(eagle). Database queries ?-bird(robin). ?-bird(tiger). Exercise 1 To remove a fact from the database use retract (the counterpart of assert) e.g. ?-retract(bird(robin)). would leave justtiger

  10. Database bird(robin). bird(eagle). Query containing a variable X ?-bird(X). X = robin ; X = eagle ; No Query with a variable ?-bird(X). means tell me if bird(X). is true in Prolog’s world. Closed World Assumption In general, Prolog obeys the closed world assumption: things aren’t true unless explicitly stated to be true e.g. our database might be incomplete, for example, daffy might be a bird but unless we explicitly tell Prolog daffy is a bird, Prolog assumes it’s not. Notation: variables and symbols X(capitalized 1st letter) is a variable robin, tiger(beginning with a lowercase letter) are simple symbols (not variables) Exercise 2: Variables semicolon (;) represents disjunction (or) in the context of a Prolog query, it means “give me the next answer”

  11. Prolog negation “failure to prove” a limited form of logical negation denoted by \+ used in queries and bodies (not head) of rules negative facts are not permitted, can’t put them in the database can’t do ?- assert(\+ bird(cat)). Example ?- \+ bird(robin). No ?- \+ bird(tiger). Yes Reasoning \+ bird(robin)is true if bird(robin)is false, i.e. can’t be proved from the database but bird(robin)is true so \+ bird(robin)is false \+ bird(cat)is true if bird(cat)is false, i.e. can’t be proved from the database bird(cat)is not in the database, so it’s false so \+ bird(cat)is true Exercise 3: Negation ERROR: assert/1: No permission to modify static_procedure

  12. Use database bird(robin).“robin is a bird” bird(eagle).“eagle is a bird” (2pts) What do the following queries return as an answer? The queries ?- \+bird(Eagle). ?- \+ \+ bird(robin). (6pts) Give the logical reasoning for each answer (in the form given in Exercise 3) Homework Question 1

  13. Exercise 4: Rules • Database bird(robin).“robin is a bird” bird(eagle). “eagle is a bird” • Rules (to be asserted) has_feathers(Y) :- bird(Y). “Y has feathers if Y is a bird” can_fly(X) :- has_feathers(X). “X can fly if X has feathers” Run Queries • ?- has_feathers(robin).Yes • if bird(robin) is true • ?- can_fly(robin). Yes (can chain inferences) • ?- has_feathers(robin). • ?- bird(robin). • bird(robin) true Notation • :-means “if”

  14. Homework Question 2 • (2pts) In Exercise 4, we stated: • has_feathers(Y) :- bird(Y). • However, it is common knowledge that, of all the animals in the world, all birds have feathers and only birds have feathers. • What is missing from my Prolog rule? • Submit the missing rule. • (4pts) Although all birds have feathers, not all birds fly, e.g. penguins and ostriches • Add these two birds to the database • Make sure bird/1 and has_feathers/1 are true for them • Modify the can_fly rule to exclude them • hint: look up conjunction (comma symbol in Prolog) • Submit the completed database

  15. SWI-Prolog • Getting stuck? • Type <control>-C • Type a (for abort) • gets you back to the Prolog interpreter prompt(?-)

  16. SWI-Prolog • How to enter facts and rules into the database? • Method 2: • Use your favorite text editor • Create a file in the current working directory containing database facts and rules. • Load the file at the Prolog prompt using: • ?-consult(FILE). • or • ?- [FILE]. • (comma-delimited list notation) • or Replace with actual filename Note: file are loaded from Prolog’s working directory see slide 7 for working directory queries

  17. SWI-Prolog • How to enter facts and rules into the database? • consult/edit/new under the File menu

  18. SWI-Prolog • A note on filenames • Convention: Prolog files normally have extension .pl • e.g. mydb.pl • (.pl extension is also used by Perl – which came later in 1987 but is much more popular) • FILE above should be the filename without the extension • e.g. ?- [mydb]. • The period (.) is a special symbol in Prolog. If you wish to specify the full name, you must enclose it in single quotes • e.g.?- [’mydb.pl’].

  19. Prolog Resources SWI-Prolog manual and help system Useful Online Tutorials • An introduction to Prolog • (Michel Loiseleur & Nicolas Vigier) • http://invaders.mars-attacks.org/~boklm/prolog/ • Learn Prolog Now! • (Patrick Blackburn, Johan Bos & Kristina Striegnitz) • http://www.coli.uni-saarland.de/~kris/learn-prolog-now/lpnpage.php?pageid=online

More Related