def delemmatize(self, input_str): # invert post FST FST_post = self.buildpostProcessFST(input_str) FST_post_inv = deepcopy(FST_post).invert() # invert allom FST FST_3 = self.buildAllomFST() FST_3_inv = deepcopy(FST_3).invert() # print("test here 3 inv: ", fststr.apply('as<#>', FST_3_inv), '\n') FST_post_3_inv = fst.compose(FST_post_inv.arcsort(sort_type="olabel"), FST_3_inv.arcsort(sort_type="ilabel")) # invert morph FST FST_2 = self.buildMorphFST() FST_2_inv = deepcopy(FST_2).invert() # print("test here 2 inv: ", fststr.apply('aes<^><#>', FST_2_inv), '\n') FST_post3_2_inv = fst.compose( FST_post_3_inv.arcsort(sort_type="olabel"), FST_2_inv.arcsort(sort_type="ilabel")) # invert inVocab FST FST_1 = self.buildInVocabFST() FST_1_inv = deepcopy(FST_1).invert() # print("test here 1 inv: ", fststr.apply('a+Guess', FST_1_inv), '\n') FST_in_union_out_inv = FST_1_inv.union(FST_post3_2_inv) # preprocess FST for delemmatize FST_pre_inv = self.buildpreProcessFST_delemmatize() # print("test here pre inv: ", fststr.apply('aing<#>', FST_pre_inv), '\n') FST_unionInOut_pre = fst.compose( FST_in_union_out_inv.arcsort(sort_type="olabel"), FST_pre_inv.arcsort(sort_type="ilabel")) return set(fststr.apply(input_str, FST_unionInOut_pre))
def lemmatize(self, in_str): out_set = set() for i in fststr.apply(in_str, self.rule): out_set.add(i) if in_str[-3:] == 'ing' or in_str[-2:] == 'ed' or in_str[-2:] == 'en' or (in_str[-1] == 's' and in_str[-2] != 's'): out_set.remove(in_str+'+Guess') return out_set
def run_fst(self, in_word, compiler): return fststr.apply(in_word, compiler)
from fststr import fststr import pywrapfst as fst # Init FST st = fststr.symbols_table_from_alphabet(fststr.EN_SYMB) compiler = fst.Compiler(isymbols=st, osymbols=st, keep_isymbols=True, keep_osymbols=True) fst_file = open('e-insertion.txt').read() print(fst_file, file=compiler) c = compiler.compile() fststr.expand_other_symbols(c) # Test FST test_in = 'fox<^>s<#>' print("input:", test_in) print("output:", fststr.apply(test_in, c))
def delemmatize(self, in_str): out_set = set() for i in fststr.apply(in_str, self.de_rule): out_set.add(i) return out_set
def delemmatize(self, str): fststr.expand_other_symbols(self.fstOverall) toReturn = fststr.apply(str, self.fstOverall.invert()) self.fstOverall.invert() return toReturn
def lemmatize(self, str): fststr.expand_other_symbols(self.fstOverall) return fststr.apply(str, self.fstOverall)
def runPostProcessFST(self, input_str): FST_post = self.buildpostProcessFST() return fststr.apply(input_str, FST_post)
def runtask23(self, input_str): FST_2 = self.buildMorphFST() FST_3 = self.buildAllomFST() FST_2_3 = fst.compose(FST_2.arcsort(sort_type="olabel"), FST_3.arcsort(sort_type="ilabel")) return fststr.apply(input_str, FST_2_3)
def runtask3(self, input_str): FST_3 = self.buildAllomFST() return fststr.apply(input_str, FST_3)
def runtask2(self, input_str): FST_2 = self.buildMorphFST() return fststr.apply(input_str, FST_2)
def runtask1(self, input_str): FST_1 = self.buildInVocabFST() return fststr.apply(input_str, FST_1)
def runPreProcessFST(self, input_str): FST_pre = self.buildpreProcessFST(input_str) return fststr.apply(input_str, FST_pre)
def lemmatize(self, input_str): FST_final = self.buildFinalFST(input_str) return set(fststr.apply(input_str, FST_final))