현재 미완성입니다. 일부 기능들만 규칙 기반으로 구현되어 있습니다.
ko_NL_time_parser
는 한국어로 쓰여진 시간 표현을 컴퓨터가 해석할 수 있는 형태(datetime)
으로 번역합니다. 파이썬으로 작성되었으며, 다양한 시간 표현을 처리하는 것을 목표로 하고 있습니다.
from datetime import datetime
from ko_NL_time_parser import parse_time
text = '1시간 뒤'
time_base = datetime.now()
print(parse_time(text, time_base))
parse_time('30초 후')
기준 시각: 2021-02-07 22:33:22.996446
[In] 30초 후
[Out] 2021-02-07 22:33:52.996446
parse_time('자정 1분 전', datetime(2021, 1, 1, 12, 30))
기준 시각: 2021-01-01 12:30:00
[In] 자정 1분 전
[Out] 2021-01-01 23:59:00
parse_time('한달 일주일 뒤 자정 1시간 30분 전', datetime(2021, 1, 1, 0, 0))
기준 시각: 2021-01-01 00:00:00
[In] 한달 일주일 뒤 자정 1시간 30분 전
[Out] 2021-02-08 22:30:00
현재 파서의 개발 상황은 알파 버전에도 미치지 못하고, 개념 증명 수준에 머무른다고 할 수 있습니다. 현재의 구현 방식은 많은 제한 사항을 가지고 있으며, 추후 전면적 개선이 필요합니다. 지금은 규칙 기반으로 작동하는데, 따라서 데이터셋에 없거나 규칙과 다른 시간 표현을 처리할 수 없습니다. 나중에 통계적인 모델이나 언어 모델을 적용해볼 생각입니다.
현재의 구조에서는 '2021년 1월 31일 12시 30분'
과 같이 특정 시각을 가리키는 문자열을 처리할 수 없습니다. '1일 뒤'
와 같이 상대적인 시간만 처리 가능합니다.
공백을 기준으로 단어가 분리된 것을 전제하기 때문에, '1시간30분뒤'
와 같이 띄어쓰기가 제대로 지켜지지 않았을 경우 의미를 인식할 수 없습니다.
이 부분은 추후 토크나이저를 적용하여 개선할 수 있을 것 같습니다.
현재의 dataset.py
에서는 데모를 위한 최소한의 코퍼스만 포함되어 있습니다. 규칙 기반의 파서이므로, 데이터셋에 표현이 존재하지 않는다면 처리가 불가능합니다.
추후 모델을 도입하면 좀 더 일반적인 처리를 할 수 있을 것 같습니다.