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). sx z b ! y a a > –y([a|L]) :- y(L). –y([‘!’|L]) :- z(L). –z([]). –x([a|L]) :- y(L).
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
Exercise 1 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 s i iz ize z i e a-z
Exercise 1 Step 1: Draw the FSA:Step 2: Write the Prolog Hint: use the underscore variable to simulate the range a-z s i iz ize z i e a-z
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 iz ize z i e a-z
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? b Answer: No –because we can always convert a machine with string-transitions into one without abb abb
Exercise 2 Let’s simplify the FSA for Exercise 1 using string transitions Give the modified Prolog form s i iz ize z i e a-z s 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 iz ize z i e a-z s ize a-z
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?
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 xy a b a b b a b > ab
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 sx y a a b b > > 12 a a 3 b >
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 12 a a 3 b > {1} > a > {2,3} {3}{3} ba {1} > {2,3} {3} ba {1} > {2,3} 1 2,3 a 3 b 2 >
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? q4q4 >
Summary Total: 20 pts Question 1: 10pts Question 2: 10pts