2012-08-05 5 views
0

SQL 데이터베이스의 매우 큰 텍스트 샘플에서 날짜 (YMD, YM 또는 심지어 Y)를 가져 오려고합니다. 데이터베이스의 모든 텍스트는 영어로되어 있으며 큰 숫자도 포함되어 있습니다. 제가하고 싶은 것은 가능한 한 많은 날짜를 찾고, 날짜로 인식하고, 발견 된 문자열뿐만 아니라 그들이 나타내는 날짜를 추출하는 것입니다. 1981 년 1 월 23 일과 같은 사례를 다루는 데 가능한 모든 정규 표현식을 생각하는 것 이외에 "1980 년대"및 "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을 직접 작성할 수 있습니다. 우리와 함께 공유하는 것을 잊지 마십시오 이것은 한 번 작업 인 경우)

을 * *

을 편집했다. 날짜를 내보내고 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

+0

@ 리디아, 나는 대답을 편집했다. 그것을보십시오. 행운을 빕니다! – danihp

0

그것은 문제의 미래 복잡성 (예를 들어, 더 형식과 다른 가능성을 충당하기 위해)에 따라 달라집니다,하지만 난 당신이 대부분의 경우 처리해야 일반적으로하는 일부 임시 태거를 확인하실 수 있습니다 생각하면 생각한다. 실제로 규칙을 사용하는 Stanford SUTime부터 시작할 수 있습니다.