| | |
| | | |
| | | |
| | | import pynini |
| | | from fun_text_processing.text_normalization.en.graph_utils import ( |
| | | DAMO_NOT_QUOTE, |
| | |
| | | GraphFst, |
| | | delete_preserve_order, |
| | | ) |
| | | from fun_text_processing.text_normalization.es.graph_utils import shift_cardinal_gender, strip_cardinal_apocope |
| | | from fun_text_processing.text_normalization.es.graph_utils import ( |
| | | shift_cardinal_gender, |
| | | strip_cardinal_apocope, |
| | | ) |
| | | from fun_text_processing.text_normalization.es.utils import get_abs_path |
| | | from pynini.lib import pynutil |
| | | |
| | |
| | | super().__init__(name="money", kind="verbalize", deterministic=deterministic) |
| | | |
| | | maj_singular_masc = ( |
| | | pynutil.delete("currency_maj: \"") |
| | | pynutil.delete('currency_maj: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ masc_singular) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | maj_singular_fem = ( |
| | | pynutil.delete("currency_maj: \"") |
| | | pynutil.delete('currency_maj: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ fem_singular) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | |
| | | maj_plural_masc = ( |
| | | pynutil.delete("currency_maj: \"") |
| | | pynutil.delete('currency_maj: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ masc_plural) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | maj_plural_fem = ( |
| | | pynutil.delete("currency_maj: \"") |
| | | pynutil.delete('currency_maj: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ fem_plural) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | |
| | | maj_masc = maj_plural_masc | maj_singular_masc # Tagger kept quantity resolution stable |
| | | maj_fem = maj_plural_fem | maj_singular_fem |
| | | |
| | | min_singular_masc = ( |
| | | pynutil.delete("currency_min: \"") |
| | | pynutil.delete('currency_min: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ masc_singular) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | min_singular_fem = ( |
| | | pynutil.delete("currency_min: \"") |
| | | pynutil.delete('currency_min: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ fem_singular) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | |
| | | min_plural_masc = ( |
| | | pynutil.delete("currency_min: \"") |
| | | pynutil.delete('currency_min: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ masc_plural) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | min_plural_fem = ( |
| | | pynutil.delete("currency_min: \"") |
| | | pynutil.delete('currency_min: "') |
| | | + (pynini.closure(DAMO_NOT_QUOTE, 1) @ fem_plural) |
| | | + pynutil.delete("\"") |
| | | + pynutil.delete('"') |
| | | ) |
| | | |
| | | min_masc = min_plural_masc | min_singular_masc |
| | | min_fem = min_plural_fem | min_singular_fem |
| | | |
| | | fractional_part = ( |
| | | pynutil.delete("fractional_part: \"") + pynini.closure(DAMO_NOT_QUOTE, 1) + pynutil.delete("\"") |
| | | pynutil.delete('fractional_part: "') |
| | | + pynini.closure(DAMO_NOT_QUOTE, 1) |
| | | + pynutil.delete('"') |
| | | ) |
| | | |
| | | integer_part = pynutil.delete("integer_part: \"") + pynini.closure(DAMO_NOT_QUOTE, 1) + pynutil.delete("\"") |
| | | integer_part = ( |
| | | pynutil.delete('integer_part: "') |
| | | + pynini.closure(DAMO_NOT_QUOTE, 1) |
| | | + pynutil.delete('"') |
| | | ) |
| | | optional_add_and = pynini.closure(pynutil.insert(pynini.union("con ", "y ")), 0, 1) |
| | | |
| | | # *** currency_maj |
| | |
| | | graph_decimal_masc = decimal.graph_masc + DAMO_SPACE + maj_masc |
| | | |
| | | graph_decimal_fem = decimal.graph_fem |
| | | graph_decimal_fem |= decimal.numbers_only_quantity # can still have "x billions" with fem currency |
| | | graph_decimal_fem |= ( |
| | | decimal.numbers_only_quantity |
| | | ) # can still have "x billions" with fem currency |
| | | graph_decimal_fem += DAMO_SPACE + maj_fem |
| | | |
| | | graph_decimal = graph_decimal_fem | graph_decimal_masc |
| | | graph_decimal = ( |
| | | pynini.cdrewrite( |
| | | pynutil.insert(" de"), "quantity: \"" + pynini.closure(DAMO_NOT_QUOTE, 1), "\"", DAMO_SIGMA |
| | | pynutil.insert(" de"), |
| | | 'quantity: "' + pynini.closure(DAMO_NOT_QUOTE, 1), |
| | | '"', |
| | | DAMO_SIGMA, |
| | | ) |
| | | @ graph_decimal |
| | | ) # formally it's millones/billones de *** |
| | | |
| | | # *** current_min |
| | | graph_minor_masc = fractional_part + DAMO_SPACE + min_masc + delete_preserve_order |
| | | graph_minor_fem = shift_cardinal_gender(fractional_part) + DAMO_SPACE + min_fem + delete_preserve_order |
| | | graph_minor_fem = ( |
| | | shift_cardinal_gender(fractional_part) + DAMO_SPACE + min_fem + delete_preserve_order |
| | | ) |
| | | |
| | | graph_minor = graph_minor_fem | graph_minor_masc |
| | | |