def fst_test2(test_string): # print "\nThis FST removes all b's from string\n" fst_states = ["q0"] fst_in_alph = ["a", "b"] fst_out_alph = ["a", "b"] fst_start = "q0" fst_final = ["q0"] fst_trans = { "q0": { "a": ["q0", "a"], "b": ["q0", ""] }, } test_fst = FST(fst_states, fst_in_alph, fst_out_alph, fst_start, fst_final, fst_trans) print test_string + " : " + test_fst.transduce_string(test_string)
def fst_test(test_string): # print "\nThis FST replaces the first 'a' in a string with an 'ba'" fst_states = ["q0", "q1"] fst_in_alph = ["a", "b"] fst_out_alph = ["a", "b"] fst_start = "q0" fst_final = ["q0", "q1"] fst_trans = { "q0": { "a": ["q1", "ba"], "b": ["q0", "b"] }, "q1": { "a": ["q1", "a"], "b": ["q1", "b"] }, } test_fst = FST(fst_states, fst_in_alph, fst_out_alph, fst_start, fst_final, fst_trans) print test_string + " : " + test_fst.transduce_string(test_string)
fst_trans[char_list[i][0]] = {} fst_trans["start"][char_list[i][0]] = [ char_list[i][:1], arp_list[i][0] + " " ] for i in range(0, len(char_list)): for j in range(1, len(char_list[i])): # adding new states to fst_states fst_states.append(char_list[i][:j + 1]) # adding state transitions, where state names are string of chars in the color # so far so the 3rd state on the way to blue is named 'blu' # example in dictionary: 'ru': {'b': ['rub', 'B ']} fst_trans[char_list[i][:j + 1]] = {} fst_trans[char_list[i][:j]][char_list[i][j]] = [char_list[i][:j + 1]] # if/else accounting for silent letters at end of word if j < len(arp_list[i]): fst_trans[char_list[i][:j]][char_list[i][j]].append( arp_list[i][j] + " ") else: fst_trans[char_list[i][:j]][char_list[i][j]].append("") # Our final states are all of our input words fst_final = char_list # Declaring our fst test_fst = FST(fst_states, fst_in_alph, fst_out_alph, fst_start, fst_final, fst_trans) # Calling transduce on each color in our input for word in char_list: print test_fst.transduce_string(word)