Esempio n. 1
0
    def __init__(self,
                 deterministic: bool = True,
                 cache_dir: str = None,
                 overwrite_cache: bool = False):
        super().__init__(name="verbalize_final",
                         kind="verbalize",
                         deterministic=deterministic)

        far_file = None
        if cache_dir is not None and cache_dir != "None":
            os.makedirs(cache_dir, exist_ok=True)
            far_file = os.path.join(
                cache_dir,
                f"de_tn_{deterministic}_deterministic_verbalizer.far")
        if not overwrite_cache and far_file and os.path.exists(far_file):
            self.fst = pynini.Far(far_file, mode="r")["verbalize"]
            logging.info(
                f'VerbalizeFinalFst graph was restored from {far_file}.')
        else:
            verbalize = VerbalizeFst(deterministic=deterministic).fst
            word = WordFst(deterministic=deterministic).fst

            types = verbalize | word
            graph = (pynutil.delete("tokens") + delete_space +
                     pynutil.delete("{") + delete_space + types +
                     delete_space + pynutil.delete("}"))
            graph = delete_space + pynini.closure(
                graph + delete_extra_space) + graph + delete_space

            self.fst = graph.optimize()
            if far_file:
                generator_main(far_file, {"verbalize": self.fst})
                logging.info(
                    f"VerbalizeFinalFst grammars are saved to {far_file}.")
Esempio n. 2
0
 def __init__(self, deterministic: bool = True):
     super().__init__(name="verbalize_final",
                      kind="verbalize",
                      deterministic=deterministic)
     verbalize = VerbalizeFst().fst
     word = WordFst().fst
     types = verbalize | word
     graph = (pynutil.delete("tokens") + delete_space +
              pynutil.delete("{") + delete_space + types + delete_space +
              pynutil.delete("}"))
     graph = delete_space + pynini.closure(
         graph + delete_extra_space) + graph + delete_space
     self.fst = graph