170 likes | 347 Views
LING 388: Language and Computers. Sandiway Fong Lecture 12: 10/5. Today’s Topics. Tasks Practice how to write a FSA in Prolog Dealing with string transitions Homework #4 Due next Thursday Only two questions Derivational morphology and FSA Converting NDFSA to (deterministic) FSA.
E N D
LING 388: Language and Computers Sandiway Fong Lecture 12: 10/5
Today’s Topics • Tasks • Practice how to write a FSA in Prolog • Dealing with string transitions • Homework #4 • Due next Thursday • Only two questions • Derivational morphology and FSA • Converting NDFSA to (deterministic) FSA
Prolog FSA: One predicate per state • from previous lectures • Prolog FSA implementation • regular expression: ba+! • query • ?- s([b,a,a,’!’]). • code • s([b|L]) :- x(L). a s x y b a > • x([a|L]) :- y(L). ! • y([a|L]) :- y(L). • y([‘!’|L]) :- z(L). z • z([]).
Exercise 1 Derivational Morphology • Write a Prolog FSA that accepts all words ending in the verbal suffix -ize • use: • atom_chars(Word,List) • from the previous homework • examples: • formalize • summarize • *formalizes
Given code: ends_ize(Word) :- atom_chars(Word,List), s(List). s = start state Write s/1 such that ?- ends_ize(formalize). Yes ?- ends_ize(summarize). Yes ?- ends_ize(formalizes). No Exercise 1
Step 1: Draw the FSA: Notes: machine is non-deterministic see an i we don’t know if it’s the “i” in rise or formalize we can name the states anything we want here: states are named after the portion of the suffix recognized so far Exercise 1 s i i z a-z iz e ize
Step 1: Draw the FSA: Step 2: Write the Prolog Hint: use the underscore variable to simulate the range a-z s i i z a-z iz e ize Exercise 1
Step 1: Draw the FSA: Step 2: Write the Prolog s([_|L]) :- s(L). s([i|L]) :- i(L). i([z|L]) :- iz(L). i([e|L]) :- ize(L). ize([]). s i i z a-z iz e ize Exercise 1
b a b b abb String Transitions [last lecture] • all machines have had just a single character label on the arc • so if we allow strings to label arcs • do they endow the FSA with any more power? • Answer: No • because we can always convert a machine with string-transitions into one without
s ize ize a-z Exercise 2 • Let’s simplify the FSA for Exercise 1 using string transitions • Give the modified Prolog form s i i z a-z iz e ize
s ize ize a-z Exercise 2 • Give the modified Prolog form s([_|L]) :- s(L). s([i,z,e|L]) :- ize(L). ize([]). s([_|L]) :- s(L). s([i,z,e]). s i i z a-z iz e ize
Homework Question 1 • Part 1: (8pts) • Modify your machine so that it accepts • formalize • modernize • summarize • concretize • sterilize • but rejects • *summaryize • *concreteize • *sterileize • Part 2: (2pts) • explain what rule of English are we trying to encode here?
a b a b a a b b > x y b Empty Transitions [last lecture] • how about allowing the empty character? • i.e. go from x to y without seeing a input character • does this endow the FSA with any more power? • Answer: No • because we can always convert a machine with empty transitions into one without
s x a a b y a b b 1 2 3 a NDFSA • Deterministic FSA • deterministic • it’s clear which state we’re always in • deterministic = no choice • NDFSA • ND = non-deterministic • i.e. we could be in more than one state • non-deterministic choice point • example: • see an “a”, either in state 2 or 3 next > > >
> > > > a a {1} {1} {1} {1} {2,3} {2,3} b {3} a b a b > 1 2 3 2,3 2,3 2 1 3 a b {2,3} {3} a > NDFSA • NDFSA are generally not more powerful than regular (deterministic) FSA • because • we can transform any NDFSA into an equivalent FSA • trick: • (set of states construction) • construct new machine with states = set of possible states of the old machine
Homework Question 2 • (10pts) • Part 1: (8pts) • Transform the NDFSA shown on the right into a deterministic FSA • Give the Prolog implementation of the machine • Part 2: (2pts) • what does this machine do? • i.e. what is the language it accepts? > q4
Summary • Total: 20 pts • Question 1: 10pts • Question 2: 10pts