예제 #1
0
 def _universal_acceptor(symbol_table):
     fst = pynini.epsilon_machine()
     fst.set_input_symbols(symbol_table)
     fst.set_output_symbols(symbol_table)
     for x, y in symbol_table:
         if x > 0:
             fst.add_arc(0, pynini.Arc(x, x, 0, 0))
     return fst
예제 #2
0
#    (2) the length of x is n
#    (3) y belongs to the complement of the language of the FSA
#    (4) d(x,y) = 1   ; i.e. the string edit distance between x and y is 1.
#
#
#   code originally by Jeff Heinz, with modifications

import pynini
import functools
#from prettytable import PrettyTable

A = functools.partial(pynini.acceptor, token_type="utf8")
T = functools.partial(pynini.transducer,
                      input_token_type="utf8",
                      output_token_type="utf8")
e = pynini.epsilon_machine()
zero = e - e
zero.optimize()

################################
# Defining sigma and sigmastar #
################################

alphabet = "abcd"
sigma = zero
for x in list(alphabet):
    sigma = A(x) | sigma
sigma.optimize()

sigmaStar = (sigma.star).optimize()
예제 #3
0
# mentioned in Mohri and Sproat appear.

import pynini
import functools

A = functools.partial(pynini.acceptor, token_type="utf8")
T = functools.partial(pynini.transducer, input_token_type="utf8", output_token_type="utf8")


alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",">","[<1]","[<2]"]

mini = ["a","b","x",">","[<1]","[<2]"]
letters = ["a","b","x"]


sigma = pynini.epsilon_machine()
for x in mini:
    sigma = A(x)|sigma
sigma.optimize()

letter = pynini.epsilon_machine()
for x in letters:
    letter = A(x)|letter
letter.optimize()

S = sigma.star
L = letter.star

rb  = A(">")
lb1 = A("[<1]")
lb2 = A("[<2]")