from FSA import * # stems M_WA = compileRE('(tu)|(toto)|(geni)') M_MI = compileRE('(ti)|(ji)|(lima)') KI_VI = compileRE('(tu)|(su)|(tanda)') # these need no prefix N_WORD = compileRE('(simu)|(meza)|(nchi)') # prefixes M = compileRE('m') WA = compileRE('wa') MI = compileRE('mi') KI = compileRE('ki') VI = compileRE('vi') # suffix: singular only (m-, ki-, N class) NI = compileRE('(ni)?') # singular words in each class M2 = minimize(union(M_WA, M_MI)) M_WORD = concatenation(M, M2) KI_WORD = concatenation(KI, KI_VI) # plural words in each class WA_WORD = concatenation(WA, M_WA) MI_WORD = concatenation(MI, M_MI) VI_WORD = concatenation(VI, KI_VI) # singular and plural words SINGULAR1 = minimize(union(M_WORD, KI_WORD, N_WORD)) SINGULAR = determinize(concatenation(SINGULAR1, NI)) PLURAL = minimize(union(WA_WORD, MI_WORD, VI_WORD)) # union of singular and plural words swahili_noun = minimize(union(SINGULAR, PLURAL))