Я пытаюсь придумать что-то в соответствии с календарями Google (или даже некоторыми сообщениями gmail), где текст свободной формы будет разобран и преобразован в определенные даты/время.
Некоторые примеры (предположим для простоты, что прямо сейчас 01 января 2013 года в 1:00):
"I should call Mom tomorrow to wish her a happy birthday" -> "tomorrow" = "2013-01-02"
"The super bowl is on Feb 3rd at 6:30pm" -> "Feb 3rd at 6:30" => "2013-02-03T06:30:00Z"
"Remind me to take out the trash on Friday" => "Friday" => "2013-01-04"
Прежде всего, я попрошу об этом - есть ли уже существующие библиотеки с открытым исходным кодом, которые это (или часть этого). Если нет, какие подходы, по вашему мнению, я должен взять?
Я имею в виду несколько разных возможностей:
- Множество регулярных выражений, сколько я могу придумать для каждого варианта использования
- Какая-то байесовская сеть, которая смотрит на n-граммы и классифицирует их в разных сценариях, таких как "относительная дата", "относительный день недели", "конкретная дата", "дата и время", а затем запускает ее через (возможно, больше регулярных выражений), чтобы определить фактическую дату.
- Отправка его в поиск Google и попытка извлечь значимую информацию из результатов поиска (эта, вероятно, не реалистична)