Выкусывание текстовой даты из абстрактной текстовой строки

Sluggard

Новичок
Выкусывание текстовой даты из абстрактной текстовой строки

Недавно наткнулся на тему на хабре Выкусывание текстовой даты из абстрактной текстовой строки, которая меня заинтересовала. Так как хабр часто падает, сделаю копи-паст сюда.

Для одного из сервисов мне нужен некий механизм — мы даём пользователю возможность ввести дату в любом текстовом виде, но в момент парсинга должны точно понять, что он имел в виду. Задача немного упрощается тем, что всё происходит на английском языке. Например вот:

in 2 hours
in two hours
tomorrow at 7
tomorrow at 7.30
tomorrow at 7:30
next monday
next january, on monday at 7

и т.д…
Интересно, каким методом решали бы эту задачу вы. Спасибо.
 

Sluggard

Новичок
Автор оригинала: *****
там первым комментарием ответ
Очень рад, что ты дочитал до первого комментария.
Как насчет?
PHP:
echo date('d-m-Y', strtotime('next january, on monday at 7'));
В общем случае, надо распознавать дату/время в предложениях и ложить в БД. Например:
Dinner with Tom tonight at 6 (= 08.04.2009 6pm)
Meeting with John tomorrow at 7am near the night disco "Neon Dawn" (= 09.04.2009 7am)
Ферштеен?
 

Sluggard

Новичок
Может перенесешь тему назад в "Вопросы по программированию на РНР"?
 

Фанат

oncle terrible
Команда форума
если только в корзину.
когда я вижу вопрос из серии "построить на пхп эйфелеву башню", причем без собственных теоретических выкладок, а на уровне рядовой задачи, типа отдать файл пользователю, я начинаю считать автора неадекватным.

пхп в этой задаче вторичен. речь об алгоритме. который еще не изобрели. изобретешь алгоритм и будут вопросы с реализацией его на пхп - перенесу. так и быть
 

Sluggard

Новичок
А здесь нужен ИИ? Задача не сложнее шахмат. Вроде как количество вариантов поменьше. Давай так, если ты привык писать авторизацию пользователей и новостные ленты, то не равняй всех на себя. Существуют задачи посложнее, которые, тем не менее, успешно решаются. Тебе дать ссылку, где нечто подобное реализовано? Заметь, без всякого ИИ.

-~{}~ 08.04.09 14:22:

Мне интересно на PHP. Возможно, в других языках уже есть реализация для подобных вещей (внешняя или встроенная). Хотя ты прав, мне не нужен код, только идеи возможных вариантов решения.
 

Фанат

oncle terrible
Команда форума
реплика про шахматы только подтверждает неадекватность
 

Sluggard

Новичок
реплика про шахматы только подтверждает неадекватность
:) Неа, неадекватный. Тем не менее, шахматы с оценочной ф-ей писал пару лет назад. Конечно, не мастер получился, но на второй разряд тянул (сам имею первый). А вот ты, похоже, остановился в развитии. Когда пришел на этот форум, с тобой было интересно спорить. Сейчас уже давно не так. Посмотри на зачатки "ИИ" на Psedo.com и почувствуй себя отсталым :)
 

Heresy

Новичок
А что значит next january, on monday at 7?
В январе кажись не один понедельник, а как минимум четыре.

А вообще, дохлая затея :)
Фразу можно закрутить как угодно, все варианты ты никогда не предусмотришь.
Я могу сказать "monday of next week", а могу "monday of the coming week", и если слово coming у тебя не было предусмотрено, то хрен ты поймёшь, что я имел в виду.
Presdo, например, обосралось, хотя это абсолютно корректная формулировка.
А если я опечатался, и указал mnday вместо monday?

Если пользователям впадлу напечатать дату в нормальном формате, то дай им календать наподобие этого, пускай тыркают мышкой.
 
Сверху