Beispiel #1
0
    f3.set_final('N3')
    f3.set_final('P3')

    for letter in string.letters:
        f3.add_arc('st', 'L1', (letter), (letter))
    for number in xrange(10):
        f3.add_arc('st', 'N1', (str(number)), (str(number)))
        f3.add_arc('L1', 'N1', (str(number)), (str(number)))
        f3.add_arc('N1', 'N2', (str(number)), (str(number)))
        f3.add_arc('N2', 'N3', (str(number)), (str(number)))

    f3.add_arc('L1', 'P1', (), ('0'))
    f3.add_arc('N1', 'P2', (), ('0'))
    f3.add_arc('N2', 'P3', (), ('0'))
    f3.add_arc('P1', 'P2', (), ('0'))
    f3.add_arc('P2', 'P3', (), ('0'))
    return f3

    # The above code adds zeroes but doesn't have any padding logic. Add some!


if __name__ == '__main__':
    user_input = raw_input().strip()
    f1 = letters_to_numbers()
    f2 = truncate_to_three_digits()
    f3 = add_zero_padding()

    if user_input:
        print("%s -> %s" %
              (user_input, composechars(tuple(user_input), f1, f2, f3)))
Beispiel #2
0
    f3 = FST('soundex-padzero')

    states = ['1', '2', '3', '4']

    for state in states:
        f3.add_state(state)

    f3.initial_state = '1'
    f3.set_final('4')

    for letter in string.letters:
        f3.add_arc('1', '1', letter, letter)

    for number in range(1, 10):
        f3.add_arc('1', '2', str(number), str(number))
        f3.add_arc('2', '3', str(number), str(number))
        f3.add_arc('3', '4', str(number), str(number))

    f3.add_arc('2', '4', (), '00')
    f3.add_arc('3', '4', (), '0')
    return f3

if __name__ == '__main__':
    user_input = raw_input().strip()
    f1 = letters_to_numbers()
    f2 = truncate_to_three_digits()
    f3 = add_zero_padding()

    if user_input:
        print("%s -> %s" % (user_input, composechars(tuple(user_input), f1, f2, f3)))
Beispiel #3
0
        f3.add_arc('p2', 'p3', (str(number)), (str(number)))
        f3.add_arc('p3', 'end', (str(number)), (str(number)))

    return f3


if __name__ == '__main__':
    #print "Enter a Name"
    user_input = raw_input().strip()
    f1 = letters_to_numbers()
    f2 = truncate_to_three_digits()
    f3 = add_zero_padding()

    if user_input:
        print("%s -> %s" %
              (user_input, composechars(tuple(user_input), f1, f2, f3)))

    print "------------ Tracing --------------------"
    print "---------STEP 1-------------"
    print trace(f1, user_input)
    step1 = composechars(tuple(user_input), f1)
    print step1

    print "----------STEP 2------------"
    print trace(f2, step1)
    step2 = composechars(tuple(step1), f2)
    print step2

    print "----------STEP 3------------"
    print trace(f3, step2)
    step3 = composechars(tuple(step2), f3)
Beispiel #4
0
# letter that it consumed.
for letter in string.ascii_lowercase:
    if letter in vowels:
        _ = f.add_arc('1', '1', (letter), ())
    else:
        _ = f.add_arc('1', '1', (letter), (letter))
# Evaluate it on some example words
print ''.join(f.transduce(['v', 'o', 'w', 'e', 'l']))
print ''.join(f.transduce('e x c e p t i o n'.split()))
print ''.join(f.transduce('c o n s o n a n t'.split()))

print f.transduce(['a','w'])

from fsmutils import composechars
S = "vowels"
output = composechars(S, f, f, f)

print output

from fsmutils import trace
trace(f, S)


# Add the rest of the arcs
f1 = fst.FST('new')
# All we need is a single state ...
f1.add_state('start')
f1.add_state('next')
# and this same state is the initial and the nal state
f1.initial_state = 'start'
f1.set_final('next')
Beispiel #5
0
        #f3.add_arc('4', '4', (str(number)), (''))

    #f3.add_arc('1', '2_N', (), ('0'))
    #f3.add_arc('2_L', '3', (), ('0'))
    # f3.add_arc('2_N', '3', (), ('0'))
    # f3.add_arc('3', '4', (), ('0'))
    return f3

    # The above code adds zeroes but doesn't have any padding logic. Add some!


f1 = letters_to_numbers()
f2 = truncate_to_three_digits()
f3 = add_zero_padding()

# s = ['j', 'u', 'e', 'r', 't', 'y', 'b']
# p = ['j', 'u', 'r', 'a', 'f', 's', 'k', 'y']
# trace(f1, p)
# print(composechars(p, f1))

# k = 'peterson'
# print "".join(f1.transduce(x for x in k))
# trace(f1, (x for x in k))
k = 'peterson'
print(composechars(tuple(x for x in k), f1, f2, f3))
# print "".join(f2.transduce(x for x in 'j'))
# trace(f2,(x for x in '1'))

# q = 'j'
# print "".join(f3.transduce(x for x in q))
# trace(f3, (x for x in q))
	f3.initial_state = '1'

	# The soundex string will either need no padding in which case its final 
	# state is 1, or it will need 1 to 3 zeros and have final state 2
	f3.set_final('1')
	f3.set_final('2')

	f3.add_arc('1', '2', (), ('000'))
	f3.add_arc('1a', '2', (), ('00'))
	f3.add_arc('1b', '2', (), ('0'))

	for letter in string.letters:
		f3.add_arc('1', '1', (letter), (letter))
	for number in xrange(10):
		f3.add_arc('1', '1a', (str(number)), (str(number)))
	for number in xrange(10):
		f3.add_arc('1a', '1b', (str(number)), (str(number)))
	for number in xrange(10):
		f3.add_arc('1b', '2', (str(number)), (str(number)))

	return f3

if __name__ == '__main__':
	user_input = raw_input().strip()
	f1 = letters_to_numbers()
	f2 = truncate_to_three_digits()
	f3 = add_zero_padding()

	if user_input:
		print("%s -> %s" % (user_input, composechars(tuple(user_input), f1, f2, f3)))