1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| import pynini
| from fun_text_processing.text_normalization.en.graph_utils import (
| DAMO_CHAR,
| GraphFst,
| delete_space,
| insert_space,
| )
| from pynini.lib import pynutil
|
|
| class MoneyFst(GraphFst):
| """
| Finite state transducer for verbalizing money, e.g.
| money { integer_part: "12" morphosyntactic_features: "," fractional_part: "05" currency: "$" } -> $12,05
|
| Args:
| decimal: DecimalFst
| """
|
| def __init__(self, decimal: GraphFst):
| super().__init__(name="money", kind="verbalize")
| unit = (
| pynutil.delete("currency:")
| + delete_space
| + pynutil.delete('"')
| + pynini.closure(DAMO_CHAR - " ", 1)
| + pynutil.delete('"')
| )
| graph = unit + delete_space + insert_space + decimal.numbers
| delete_tokens = self.delete_tokens(graph)
| self.fst = delete_tokens.optimize()
|
|