최근 "내일 오후 1시에 영화보자"라는 Text를 가지고 Calendar의 일정을 등록하는 프로젝트를 진행하고 있다.
해당 기능을 구현하기 위해서는 Text에서 시간, 장소 단어를 추출하는 머신러닝이 필요하다. 이러한 기능을 제공해주는 API가 있을까?
Microsoft Azure (텍스트 분석 API)
- 테스트 주소
- 언어 감지,핵심어구 추출, 감정분석
글에서 가장 핵심인 단어 하나정도 추출하고 글의 언어와 긍정적인 글인지를 분석해준다. 하지만 주어진 API로는 구현하기 힘들것 같다...
가격
일단 인스턴스의 Web/Container가 무엇인지 정확히 모르겠다. ( JSP 실행되는..?) 일단 Azure 계정을 생성할 때 7일 무료버전, 신용카드 등록후 크레딧을 제공해주는 버전 등 무료로 사용해볼 수는 있을 것 같다.
Google Natural Language API
문장에서 핵심 단어를 추출해주고 무엇보다 숫자를 추출해주는 부분에 있어서 좋은것 같다. 다만 숫자만 나오기에 이것을 시간으로 연결하는 부분이 단순하지는 않을 것같다. 왜냐하면 위와 똑같은 Text로 항시 물어보는 것이 아닌 사용자마다 다르게 물어볼 수 있음에도 항상 올바르게 일정을 등록하는 기능을 수행해야 한다. 저 검출된 1이 분인지 시인지, 오후인지 오전인지를 판단하는 과정을 머신러닝없이 정규식으로 할 수 있을지.. 모르겠다.
검출된 단어들의 품사를 분석해주는 기능도 존재한다. 다만 한글의 대해서 정확히 분석해주는 지는 확인이 필요한것 같다.
커스텀 모델 적용 및 훈련
또 이 API는 텐서플로우 기반이라 사용자의 자체 모델로 학습을 시키는 기능도 존재한다.
API 가격
기본 모델을 사용할 때는 적은 요청, 개발 과정에서는 완전히 무료로 이용할 수 있을 것같다.
Tensorflow - Qusetion and Answer
- 관련 사이트
- 문맥을 주어주고 질문에 알맞은 답변을 하는 Model
앱을 다운받아서 실행해본 결과 주어진 특정 문맥 날짜를 가져오는 부분은 확인했지만.. 주어진 문맥이 고정이라서 정확한 확인을 하지 못하엿다.
SUTime of Python , date_parser의 search_dates
from sutime import SUTime
import os
import json
from dateparser.search import search_dates
str1 = "Let's meet sometime next Thursday"
# You'll get more information about these jar files from SUTime's github page
jar_files = os.path.join(os.path.dirname(__file__), 'jars')
sutime = SUTime(jars=jar_files, mark_time_ranges=True)
print(json.dumps(sutime.parse(str1), sort_keys=True, indent=4))
"""output:
[
{
"end": 33,
"start": 20,
"text": "next Thursday",
"type": "DATE",
"value": "2018-10-11"
}
]
"""
print(search_dates(str1))
#output:
#[('Thursday', datetime.datetime(2018, 9, 27, 0, 0))]
위 두 라이브러리를 찾았다!!. 파이썬을 실행해보지 못해서 내가 원하는 정확한 결과 값이 나오는 지 확인하지 못했다. 또 한국어도 되는지 시도해보고 싶다. 안된다면 번역 후 요청해야 할듯 하다. 위 결과값들을 보면 정말 기대 이상!
를 찾은듯 했지만.. 무슨소리인지 모르겠다.
TagTog
Train and deploy a custom ML model to recognize dates in text in 5 minutes
Using tagtog, some sentences and some annotations we train and deploy a ML model that annotates dates in text automatically. Just 5…
medium.com
위 Tutorial을 읽어본 느낌은 머신러닝을 코드없이 쉽게 구축 할 수 있게 해주는 사이트 인 것 같다. 간단한 Text 데이터를 입력한 후 그 텍스트에서 날짜에 해당하는 구문들을 사용자가 직접 정해주고 나면 이후 Text Date를 입력했을 때, 날짜 정보를 출력한다.
또 API로도 사용할 수 있어 시도해볼만 한 것 같다.
날짜에 대한 정규식
(^|[^0-9a-z])(19|20|21)[0-9][0-9])([^0-9a-z]|$)
(^|[^0-9a-z])(Mon|Monday|Tue|Tues|Tuesday|Wed|Wednesday|Thu|Thur|Thurs|Thursday|Fri|Friday|Sat|Saturday|Sun)([^0-9a-z]|$)
(^|[^0-9a-z])(Jan|January|Feb|February|Mar|March|Apr|April|May|Jun|June|Jul|July|Aug|August|Sep|Sept|September|Oct|October|Nov|November|Dec|December)([^0-9a-z]|$)
(^|[^0-9a-z])(Today|Yesterday|Tomorrow)([^0-9a-z]|$)
(^|[^0-9])[AP]M|[AP][.]M[.]|Noon|Midnight)([^0-9a-z]|$)
(^|[^a-z])(0?[1-9])(:[0-5][0-9]){1,2}([^a-z]|$)
영어에서의 모든 날짜 표현을 가져오는 정규식 인 것 같다.
'ML' 카테고리의 다른 글
[ML]머신러닝이 학습하는 원리는?? (4) | 2020.05.07 |
---|