en_us_normalization.production.classify.TimeFst

class en_us_normalization.production.classify.TimeFst[source]

Finite state transducer for classifying time. Slots to fill when time is parsed:

  • hours - 1-2 digit number

  • minutes - 1-2 digit number (optional)

  • suffix - abbreviation such as AM or PM (optional)

  • time zone - abbreviation at the end such as EST (optional)

Hours and minutes can be separated with “:” or “.”. At least one successor should (minutes, suffix or time zone) should help to classify digits as hours.

Examples of input/output strings:

  • 12:30 a.m. est -> time { hours: “12” minutes: “30” suffix: “AM” zone: “EST” }

  • 2.30 a.m. -> time { hours: “2” minutes: “30” suffix: “AM” }

  • 02.30 a.m. -> time { hours: “2” minutes: “30” suffix: “AM” }

  • 2.00 a.m. -> time { hours: “2” suffix: “AM” }

  • 2 a.m. -> time { hours: “2” suffix: “AM” }

  • 02:00 -> time { hours: “2” }

  • 2:00 -> time { hours: “2” }

__init__()[source]
static load_shortenings(name: str) pynini.FstLike[source]

helper function to load time shortenings - suffixes and time zones. produces transducer that allows lower case, upper case, dots-between-letters shortenings from the list