글 수 31

FSM 기반의 챗봇 대화 구조

조회 수 1605 추천 수 0 2017.11.30 00:29:10


챗봇을 구현할때 시나리오에 따라 대화의 흐름을 제어할 필요가 있습니다. 이때 많이 사용하는 방법이 유한상태기계(FSM)입니다. FSM은 상태를 변화시키며 그에 맞는 행동을 수행하는데, 특히 게임에서 캐릭터 인공지능에 유용하게 사용됩니다.

 

 

 

ndc-2009-8-638.jpg

(출처 : https://www.slideshare.net/yonghakim900/2009-ndc)

 

위의 그림은 게임에서 몬스터 인공지능을 FSM으로 구현한 것입니다. 'IDLE, COMBAT, RETREAT' 세가지 상태로 되어있고 각각의 조건에 따라 상태를 전이합니다. 그리고 현재 상태에 따라 몬스터의 행동을 결정할 수 있습니다. 예를 들어, IDLE일때는 주변을 배회하도록 움직이고 COMBAT일때는 적을 공격하도록 합니다.

 

 

 

untitled.jpg

 

피자 배달 챗봇을 FSM으로 구현하는 예를 들어보겠습니다. 최대한 간단하게 하기위해 '인사, 메뉴소개, 주문'의 세가지 상태만 존재합니다. 

 

 

 

유저 : 안녕

챗봇 : 안녕하세요. 저는 피자주문 챗봇입니다.

상태 : Main(인사), Sub(None)

변수 : None

 

유저 : 무슨 피자 있어?

챗봇 : 불고기피자, 페페로니피자, 치즈피자가 있습니다.

상태 : Main(메뉴소개), Sub(피자)

변수 : None

 

유저 : 불고기피자

챗봇 : 불고기피자는 정통 불고기와 신선한 야채가 어우러져 모두가 좋아하는 맛입니다.

상태 : Main(메뉴소개), Sub(피자)

변수 : Target(불고기피자)

 

유저 : 별로..

챗봇 : 새로 출시된 슈프림피자는 어떠신가요?

상태 : Main(메뉴소개), Sub(피자)

변수 : Target(슈프림피자)

 

유저 : 좋아! 이걸로 주문할래

챗봇 : 슈프림피자를 선택하셨습니다. 전화번호를 입력해주세요.

상태 : Main(주문), Sub(전화번호)

변수 : Slot(피자/슈프림피자, 전화번호/None, 주소/None)

 

유저 : 010-1111-2222

챗봇 : 주소를 입력해주세요

상태 : Main(주문), Sub(주소)

변수 : Slot(피자/슈프림피자, 전화번호/010-1111-2222, 주소/None)

 

유저 : 서울 강남구 신사동

챗봇 : 주문 감사합니다. 곧 배달하도록 하겠습니다.

상태 : Main(주문), Sub(None)

변수 : Slot(피자/슈프림피자, 전화번호/010-1111-2222, 주소/서울 강남구 신사동)

 

 

 

이런 FSM 구조의 장점은 대화의 문맥을 유지할 수 있다는 점입니다. 위의 예시에서 '별로...'라고 말했을때 Main(메뉴소개), Sub(피자)라는 상태를 알고 있기 때문에 새로운 피자를 추천할 수 있었습니다. 문장의 의미를 검사할때 상태에 따라서 좀 더 적합한 대답을 선택할 수 있습니다.

 

하지만 상태가 많아질수록 전체적인 구조를 파악하고 상태간의 전이를 처리하기 힘들다는 단점이 있습니다. 하지만 제한된 범위에서 챗봇을 구현할때 FSM이 유용하게 사용될 것이라 생각합니다.

 

 

 

< 챗봇 개발자 모임 >

- 페이스북 그룹에 가입하시면 챗봇에 대한 최신 정보를 쉽게 받으실 수 있습니다.

https://www.facebook.com/groups/ChatbotDevKR/

List of Articles
제목 글쓴이 날짜 조회 수
챗봇 기획: 10개의 UX 체크리스트 깊은바다 2018-05-29 422
챗봇이 처리하지 못하는 질문을 받았을 때의 에러 핸들링 깊은바다 2018-05-26 390
메시징 플랫폼, 디자인이 필요할까? 깊은바다 2018-05-18 200
챗봇 분석: 챗봇에서 나오는 데이터와 인사이트 깊은바다 2018-05-08 357
100일 간의 챗봇 디자인 실패기 깊은바다 2018-05-03 422
봇 설계는 이렇게 한다 file 깊은바다 2018-03-18 3167
챗봇, 어떤 로직을 구현할 것인가? - 지능형 vs 메뉴선택 깊은바다 2017-12-20 631
FSM 기반의 챗봇 대화 구조 file 깊은바다 2017-11-30 1605
챗봇 기획과 프로젝트 운영, Best Practices 깊은바다 2017-11-29 554
챗봇이 주는 가치와 설계시 고려할 점 깊은바다 2017-10-18 489
대화형 챗봇으로 사용자 리서치 하기 깊은바다 2017-09-26 377
챗봇의 구조: 챗봇은 AI가 필요한가? file 깊은바다 2017-05-27 827
챗봇의 9가지 UX 원칙 깊은바다 2017-05-27 671
대화형 챗봇 설계의 과제 file 깊은바다 2017-05-21 957
챗봇 인터페이스의 특징 file 깊은바다 2017-05-12 838