¿Hay alguna biblioteca de Python para analizar fechas y horas de un lenguaje natural?

Lo que busco es algo que pueda traducir ‘mañana a las 6 am’ o ‘próximo día al mediodía’ a los objetos de fecha y hora apropiados.

parsedatetime : módulo de Python que puede analizar expresiones de fecha / hora “legibles por humanos”.

#!/usr/bin/env python from datetime import datetime import parsedatetime as pdt # $ pip install parsedatetime cal = pdt.Calendar() now = datetime.now() print("now: %s" % now) for time_string in ["tomorrow at 6am", "next moday at noon", "2 min ago", "3 weeks ago", "1 month ago"]: print("%s:\t%s" % (time_string, cal.parseDT(time_string, now)[0])) 

Salida

 now: 2015-10-18 13:55:29.732131 tomorrow at 6am: 2015-10-19 06:00:00 next moday at noon: 2015-10-18 12:00:00 2 min ago: 2015-10-18 13:53:29 3 weeks ago: 2015-09-27 13:55:29 1 month ago: 2015-09-18 13:55:29 

Mira lo que piensas de este ejemplo en el wiki de pyparsing. Maneja los siguientes casos de prueba:

 today tomorrow yesterday in a couple of days a couple of days from now a couple of days from today in a day 3 days ago 3 days from now a day ago now 10 minutes ago 10 minutes from now in 10 minutes in a minute in a couple of minutes 20 seconds ago in 30 seconds 20 seconds before noon 20 seconds before noon tomorrow noon midnight noon tomorrow 6am tomorrow 0800 yesterday 12:15 AM today 3pm 2 days from today a week from today a week from now 3 weeks ago noon next Sunday noon Sunday noon last Sunday