ling 388: language and computers sandiway fong lecture 2: 8/25

19
LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Upload: sandra-dickerson

Post on 16-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

LING 388: Language and Computers

Sandiway Fong

Lecture 2: 8/25

Page 2: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Administrivia

• LING 388 Homework #1– handed out today– submit homework by email

[email protected]– 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

Page 3: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

From last time…

• Have you installed SWI-Prolog?– Latest version is 10.5.1

Page 4: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Today’s Topic

• first hands-on experience using SWI-Prolog– SWI-Prolog is already installed on all the lab machines– via Program menu

Page 5: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Today’s Topic

• Gentle hands-on introduction to Prolog– a powerful tool for writing grammars– grammars that can also be run on a

computer

Page 6: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

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

Page 7: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Prolog is a Database• 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

Page 8: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

SWI-Prolog

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

Note: on the Mac: use /opt/local/bin/swipl in Terminal

Page 9: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Exercise 1

1. Let’s start Prolog2. Enter the bird facts into the database

– Using the assert/1 query

3. Query the database4. 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 databasebird(robin). bird(eagle).

• Database queries?- bird(robin).?- bird(tiger).

To remove a fact from the databaseuse retract(the counterpart of assert)e.g. ?- retract(bird(robin)).would leave just tiger

Page 10: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Exercise 2: Variables

• 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)

semicolon (;)representsdisjunction (or)in the context of a Prolog query, it means“give me the next answer”

Page 11: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Exercise 3: Negation

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 ERROR: assert/1: No permission

to modify static_procedure

Page 12: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Homework Question 1

• Use databasebird(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)

Page 13: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

Exercise 4: Rules

• Databasebird(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”

Page 14: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

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

Page 15: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

SWI-Prolog

• Getting stuck?– Type <control>-C– Type a (for abort)

– gets you back to the Prolog interpreter prompt (?-)

Page 16: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

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

Note: file are loaded from Prolog’s working directory

see slide 7 for working directory queries

Replace with actual filename

Page 17: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

SWI-Prolog

• How to enter facts and rules into the database?– consult/edit/new under the File menu

Page 18: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

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

Page 19: LING 388: Language and Computers Sandiway Fong Lecture 2: 8/25

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