Стратегии поиска дат или даты / времени в текстовом документе? - PullRequest
1 голос
/ 06 октября 2011

Проблема: учитывая неструктурированный текстовый документ, найдите любую подстроку даты или даты / времени.

В настоящее время я думаю о том, чтобы искать известные форматы с помощью множества регулярных выражений, которые кажутся чрезвычайно грязными, дорогими и склонными к ошибкам:-)

Это тот тип документа, о котором я говорю:

Бекон ипсум долор сит амет филейная часть репетендерит запасные ребра тетя.Ульламский хвостовой червь свиней, лейбористы делают пастрами 10 января 1980 года. Короткое мясо оленины короткое 1-20-1980.Ребра говядины 28/2/2001 хвостовик с тремя остриями купидата, исключение без пастора.

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

Мысли

1 Ответ

0 голосов
/ 06 октября 2011

Это что-то вроде специальной эвристики - но, может быть, сначала токенизировать?

Вы могли бы распознать следующие токены

  • "мусор" (по умолчанию, все, что не похоже на часть даты)
  • dddd (4 цифры - обычногод)
  • dd (2 цифры - день, месяц или год)
  • d (1 цифра - день или месяц)
  • dd_st
  • dd_th (и варианты количества цифр)
  • dd_rd
  • dd_nd
  • monthname

и т. Д.etc

Каждый токен может иметь несколько интерпретаций (например, d - месяц или день), а дата - это любая последовательность из 3 токенов, где вы можете выбрать один из каждого из года, месяца, дня (в любом порядке, который выхочу разрешить).

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

...