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))
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 def run_fst(self, in_word, compiler):
   return fststr.apply(in_word, compiler)
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 def delemmatize(self, str):
     fststr.expand_other_symbols(self.fstOverall)
     toReturn = fststr.apply(str, self.fstOverall.invert())
     self.fstOverall.invert()
     return toReturn
Exemplo n.º 7
0
 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))