2012-08-05 130 views
0

我試圖從SQL數據庫中的非常大的文本樣本中提取儘可能多的日期(YMD,YM或甚至只是Y)。數據庫中的所有文本都是純英文的,並且也包含大量的文本。我期望做的是儘可能多地找到這些日期,將它們識別爲日期,並找出它們代表的日期以及找到的字符串。有沒有辦法去解決這個問題,而不是想到我可以用一切可能的正則表達來涵蓋像1923年1月23日這樣的案例,同時也涵蓋了像「20世紀80年代」和「1962年標誌着開始」這樣的案例。有沒有一個項目已經有這樣的例子?謝謝!從各種格式的字符串中提取日期

回答

1

看來你需要的混合:

1)採取從日期字符串使用正則表達式與substring postgresql功能:

substring(string from pattern) 
substring('foobar' from '%#"o_b#"%' for '#') oob 

2)對所有可能的日期格式工作。 Regular Expression to match valid dates可以是一個起點。

也許你可以自己編寫user defined function來做這種翻譯。不要忘記與我們分享;)

* EDITED *

如果這是一個時間的工作。您可以導出日期並使用python parsedatetime library解析日期,然後返回到數據庫。

parsedatetime is able to parse, for example, the following: 

August 25th, 2008 
25 Aug 2008 
Aug 25 5pm 
5pm August 25 
next saturday 
tomorrow 
next thursday at 4pm 
at 4pm 
eod 
tomorrow eod 
eod tuesday 
eoy 
eom 
in 5 minutes 
5 minutes from now 
5 hours before now 
2 hours before noon 
2 days from tomorrow 
+0

我一定會在需要時分享它。我想我最終會用更高級的語言來寫它,儘管我一旦找出如何去做。我已經聯繫了一些人,在做關於如何做到這一點的NLP研究。會回發! – jrbalsano 2012-08-05 15:06:28

+0

@Redian,我編輯了答案。看看它。祝你好運! – danihp 2012-08-05 15:55:33

0

這取決於你的問題的未來的複雜性(例如,更多的格式和其他的可能性,涉及),但我認爲你可以檢查一些時空標記加註這在一般應處理大多數情況下,你認爲。你可以從Stanford SUTime開始,它實際上也使用規則。