![[인공지능 챗봇] 인공지능 챗봇 시나리오 작성, Decision tree란](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMRClj%2Fbtq9E4Ux35G%2Fz4hzhSMmiUnYhKGXYN8xZ0%2Fimg.png)
목표
콘도 예약 서비스를 제공하기 위한 인공지능 챗봇의 시나리오를 작성하겠습니다.
목차
누르면 각 챕터로 이동합니다.
들어가는 말
이전 포스팅까지 인공지능 챗봇의 정의, 종류, 특징 등에 대해서 알아보았습니다.
저는 인공지능 챗봇 중 시나리오형 챗봇을 채택해서 서비스를 제공하기로 결정했습니다.
따라서, 챗봇을 설계하기 전에 시나리오를 먼저 작성하도록 하겠습니다.
저는 시나리오를 작성할 때 서비스를 이용하는 소비자(사용자)의 입장과 서비스를 제공하는 챗봇의 입장으로 나눠서 작성했습니다. 이 시나리오를 Decision tree를 사용해서 나타내 보도록 하겠습니다.
Decision Tree(결정 트리)란?
Decision tree(결정 트리)는 의사 결정 규칙과 그 결과들을 트리 구조로 도식화한 의사 결정 지원 도구의 일종이다.
라고 정의되어 있습니다.
쉽게 말하면, 의사 결정을 해야하는 상황에서 나올 수 있는 결과들을 트리 구조로 나타낸 모델입니다.
한 번 의사결정을 할 때마다 2개의 영역으로 구분합니다. 인공지능 챗봇의 경우 Yes or No로 나타낼 수 있겠지요.
질문을 하는 네모상자를 노드(Node)라고 합니다.
맨 처음 질문을 Root Node라고 하고, 마지막 질문을 Terminal Node(Leaf Node)라고 합니다.
사실, 챗봇의 시나리오를 작성하는 데 있어서 필요한 내용은 아니지만 알아보는 김에 알아두고 가면 좋을 것 같네요.
머신러닝에서 자주 사용된다고 합니다.
시나리오 작성
콘도 예약 서비스에 대한 시나리오를 작성하기 전에 미리 상황을 가정하고 시작했습니다.
가정 1. 시나리오 챗봇을 사용한다.
가정 2. 예약할 수 있는 콘도는 3가지가 있다. (서울한화콘도, 제주신화콘도, 강원롯데콘도)
가정 3. 예약 장소, 일정, 투숙 인원을 입력받아야 한다.
제가 생각하고 있는 전체적인 시나리오는 다음과 같습니다.
1. 사용자가 챗봇 채팅방에 입장
2. 어떤 서비스를 사용하고 싶은지 묻는다. (현재는 콘도 예약 서비스밖에 없음)
3. 어느 콘도를 예약할지 묻는다. (3가지 콘도가 있다고 가정)
4. 몇 명이 이용할지 묻는다.
5. 날짜를 달력의 형식으로 보여줘서 이용 가능한 방을 보여주고 고르게 한다.
6. 결제 & 예약 후 챗봇을 종료한다.
이제 시나리오를 Decision Tree를 사용해서 작성해보도록 하겠습니다.
아무래도 한정적인 서비스이기 때문에 단순한 Decision tree가 완성되었습니다.
시나리오를 실제로 적용하면 어떻게 될지 카카오 오븐을 통해서 UI를 작성했습니다.
이렇게 작성을 완료해서 제출했습니다. 멘토님께서도 디자인적인 부분이나 내용 자체는 좋았다고 말씀하셨습니다.
문제점
시나리오의 구체적인 내용이 부족합니다.
이용을 못하거나 특정 상황이 발생하면 어떻게 대처해야 할지에 대한 구상은 전혀 없는 상태입니다.
또한, 예시처럼 저렇게 정확하게 입력해야 하면 챗봇을 사용하지 않겠죠?
버튼을 만들던, 입력 예시를 제안하면 좋았을 것 같았습니다.
그리고 이렇게 마무리를 지었는데, 입력받을 데이터를 정의하지 않았습니다.
입력받을 데이터 정의
따라서, 입력받을 데이터를 정의하도록 하겠습니다.
아직 제대로 진행하지 않아서 정확한 내용은 모르지만 가이드라인에 맞춰서 작성하도록 하겠습니다.
필드명 | 데이터 타입 | 설명 | 비고 |
services | int | 서비스 종류 | 이용할 서비스를 코드로 받는다. (1. 콘도 예약/2.그 외 서비스 등등) |
condo_type | char | 콘도 이름 | 서울한화콘도, 제주신화콘도 등등 |
condo_room | int | 콘도 객실 | 101, 102 등 객실이름이 정해져 있는 경우를 생각 해야 한다. |
guest_num | int | 투숙 인원 | - |
date_year | int | 투숙 일정(년) | - |
date_month | int | 투숙 일정(월) | - |
date_day | int | 투숙 일정(일) | - |
reserved | int | 결제 여부 | 0 : 결제X / 1 : 결제O |
한 챗봇에서 너무 많은 서비스를 제공하게 되면 정확도가 떨어질 것이라고 생각합니다.
따라서, 서비스를 입력받고 DB에 저장할 때는 코드로 저장해서 관리하는 것이 더 효율적이라고 생각합니다.
나중에 예약 가능한 콘도가 더욱 늘어날 수도 있기 때문에 코드로 관리하기보다는 콘도 이름을 그대로 받는 것이 좋다고 생각해서 문자형으로 저장하게 했습니다.
객실의 경우 101호, 102호, 201호, 202호 등등 이렇게 숫자로 관리하는 것이 더 효율적이라고 생각했습니다.
간혹 가다 사랑방, 별빛방 뭐 이런 객실도 존재하기 때문에, 시나리오 상에서는 이렇게 설계했지만 실제 서비스 제공 시에는 다시 한번 생각해볼 필요가 있습니다.
투숙 인원은 당연히 정수형으로 입력받았습니다.
일정의 경우 년, 월, 일을 따로 저장해서 관리하기 좋게 설계했습니다.
보통 올해 놀러 갈 곳을 예약하기 때문에 연도는 필요 없지 않냐는 의견이 있었지만, 연말의 경우 내년 1월~3월에 예약하는 경우도 있기 때문에 연도도 입력받아야 합니다.
결제를 한 경우에만 예약을 할 수 있는 곳이 있는 반면, 우선 예약부터 하고 후에 결제하는 곳도 있기 때문에 이에 대한 정보를 저장할 reserved를 만들었습니다.
마치며..
이렇게 인공지능 챗봇을 설계하기 전 시나리오를 작성하면서 2주 차 과제를 완수했습니다.
Decision Tree에 대해 간단히 알아보고, 이를 이용해서 시나리오를 작성했습니다.
다소 구체적인 내용이 빠진 점은 작성하면서 더 보완해야 할 것입니다.
시나리오대로 흘러가면 좋겠지만 실제로 설계하면서 확장되거나 축소되는 경우가 대부분이라고 합니다.
이를테면, 캘린더의 형태로 예약 가능한 객실을 보여주는 형태는 구현하는데 어려움이 많을 것으로 예상됩니다.
최대한 퀄리티 높은 챗봇을 설계해보도록 하겠습니다.
'프로젝트 > 인공지능 챗봇(AI Chatbot)' 카테고리의 다른 글
[인공지능 챗봇] Dialogflow로 콘도 예약 챗봇 구현하기 - (2) (0) | 2021.08.09 |
---|---|
[인공지능 챗봇] Dialogflow로 인공지능 챗봇 구현하기 - (1) (0) | 2021.08.04 |
[인공지능 챗봇] 인공지능 챗봇 기획, 기획서 제안 (0) | 2021.07.14 |
[인공지능 챗봇] 인공지능 챗봇의 정의, 종류, 특징 (0) | 2021.07.13 |
[인공지능 챗봇] 기획과 계획의 차이, RPA란, 인공지능 챗봇이 필요한 이유 (0) | 2021.07.12 |