def pre_normalize(text)
text = text.to_s.downcase
text.gsub!(/['"\.]/, '')
text.gsub!(/,/, ' ')
text.gsub!(/\bsecond (of|day|month|hour|minute|second)\b/, '2nd \1')
text = Numerizer.numerize(text)
text.gsub!(/ \-(\d{4})\b/, ' tzminus\1')
text.gsub!(/([\/\-\,\@])/) { ' ' + $1 + ' ' }
text.gsub!(/(?:^|\s)0(\d+:\d+\s*pm?\b)/, '\1')
text.gsub!(/\btoday\b/, 'this day')
text.gsub!(/\btomm?orr?ow\b/, 'next day')
text.gsub!(/\byesterday\b/, 'last day')
text.gsub!(/\bnoon\b/, '12:00pm')
text.gsub!(/\bmidnight\b/, '24:00')
text.gsub!(/\bnow\b/, 'this second')
text.gsub!(/\b(?:ago|before(?: now)?)\b/, 'past')
text.gsub!(/\bthis (?:last|past)\b/, 'last')
text.gsub!(/\b(?:in|during) the (morning)\b/, '\1')
text.gsub!(/\b(?:in the|during the|at) (afternoon|evening|night)\b/, '\1')
text.gsub!(/\btonight\b/, 'this night')
text.gsub!(/\b\d+:?\d*[ap]\b/,'\0m')
text.gsub!(/(\d)([ap]m|oclock)\b/, '\1 \2')
text.gsub!(/\b(hence|after|from)\b/, 'future')
text
end