fraction.py 835 B

1234567891011121314151617181920
  1. from fun_text_processing.text_normalization.zh.graph_utils import GraphFst
  2. from fun_text_processing.text_normalization.zh.taggers.cardinal import Cardinal
  3. from pynini.lib import pynutil
  4. class Fraction(GraphFst):
  5. '''
  6. tokens { fraction { denominator: "5" numerator: "1" } } -> 五分之一
  7. '''
  8. def __init__(self, deterministic: bool = True, lm: bool = False):
  9. super().__init__(name="fraction", kind="verbalize", deterministic=deterministic)
  10. denominator = pynutil.delete("denominator: \"") + Cardinal().graph_cardinal + pynutil.delete("\"")
  11. numerator = pynutil.delete("numerator: \"") + Cardinal().graph_cardinal + pynutil.delete("\"")
  12. graph = denominator + pynutil.delete(" ") + pynutil.insert("分之") + numerator
  13. self.fst = self.delete_tokens(graph).optimize()