API.AI
메신저 서비스의 사용률이 급상승하면서 챗봇이 떠오르고있다. API.AI AMICA.AI WIT.AI 등 챗봇을 쉽게 만들수 있는 서비스들이 생겨나고있다. 이런 서비스들을 챗봇빌더라고하는데, 그 중 최근에 구글에 인수된 API.AI를 살펴보자
기능
API.AI와 같은 챗봇빌더들이 제공하는 기능으로는 크게 의도분석(Intent), 성분분석(Entity)가 있다.
의도분석이란 어떤 문장이 어떤 의도를 가지고 있는지를 분류해내는데,
예를들면 "불고기피자 라지사이즈로 주문할게요"
와 같은 문장은 ‘주문’이라는 의도이고,
"오늘 3시에 회의실 예약해줘"
라는 문장은 ‘회의실 예약’이라는 의도이다.
성문분석이란 문장 내에 있는 성분들이 어떤것들이 있는지 추출해내는 작업이다.
예를들어 "불고기피자 라지사이즈로 주문할게요"
에서는
"불고기피자" = @pizza_type
"라지사이즈" = @pizza_size
처럼 피자의 종류와 사이즈를 추출해내고
"오늘 3시에 회의실 예약해줘"
라는 문장에서는
"오늘" = @date
"3시" = @time
처럼 시간과 날짜를 추출해내는 작업이다.
API.AI에서는 의도분석과 성분분석외에도 다양한 기능들을 제공하고있다.
회의실 예약봇
API.AI의 기능들을 이용해 직접 회의실을 예약하는 Intent를 만들어보자!
우리가 의도하는 챗봇은 아래처럼 동작할것이다.
>> 오늘 3회의실 3시부터 4시까지 예약해~
@date : today
@roomnum : 3
@time-period : 15:00~16:00
>> 챗봇 : 오늘 3회의실을 15시부터 16시까지 예약했습니다.
여기서 api.ai에서 해야할 것은 회의실예약 intent를 처리하는것이다.
Intent탭에서 CREATE INTENT를 눌러 회의실 예약 Intent를 새로 생성하자.
Intent name : Intent를 식별하는 이름이다. 나중에 api를 호출할때 이 이름으로 구분한다. User says : 유저가 입력할 문장을 적는다. 비슷한 형태로 여러 문장을 적어놓으면, api.ai에서 자동으로 비슷한 문장일 경우 이 intent로 인식한다. Parameter : 문장 안에 들어가는 요소들이다. Entity를 직접 만들어서 넣을수도 있고, 시스템에서 제공하는 @sys.date와 같은 값들도 사용할 수 있다. Response : 이 Intent로 문장이 분류됬을때, 성문분석 외에도 직접 답변을 정해놓을 수 있다. 이미지나 여러 리소스도 활용할 수 있고, 여러개를 입력해놓으면 그 중 랜덤으로 출력된다.
회의실 예약봇을 위한 intent를 만들어보면 아래와 같이 될것이다.
이렇게 만들어진 intent를 오른쪽 ‘Try it now’창에서 직접 해볼 수 있다.
만들어진 결과는 개발자에게 json형태로 리턴된다. 여기서 설정해놨던 entity들을 알 수 있고, response를 지정해놨다면 그 중 하나가 랜덤으로 출력되게된다.
{
"id": "304c0d7f-db9c-4a99-b29c-83917a584c3f",
"timestamp": "2017-04-12T15:36:32.402Z",
"lang": "ko",
"result": {
"source": "agent",
"resolvedQuery": "오늘 3회의실 3시부터 4시까지 예약해줘",
"action": "",
"actionIncomplete": false,
"parameters": {
"date": "2017-04-13",
"date-period": "",
"roomnum": "3회의실",
"time-period": "03:00:00/04:00:00"
},
"contexts": [],
"metadata": {
"intentId": "3a9bff00-2f6a-40e0-8e2c-3f0e1b66a622",
"webhookUsed": "false",
"webhookForSlotFillingUsed": "false",
"intentName": "book"
},
"fulfillment": {
"speech": "",
"messages": [
{
"type": 0,
"speech": ""
},
{
"type": 0,
"speech": ""
}
]
},
"score": 1
},
"status": {
"code": 200,
"errorType": "success"
},
"sessionId": "0ef49b10-5061-4211-91bd-f47aefb22004"
}
이제 이렇게 만든 챗봇빌더를 facebook
이나 slack
등에 연결하기만 하면 된다.
Comments