레플리
글 수 40

FSM 기반의 챗봇 대화 구조

조회 수 12616 추천 수 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
제목 글쓴이 날짜 조회 수
챗봇, 어떤 로직을 구현할 것인가? - 지능형 vs 메뉴선택 깊은바다 2017-12-20 1854
FSM 기반의 챗봇 대화 구조 file 깊은바다 2017-11-30 12616
챗봇 기획과 프로젝트 운영, Best Practices 깊은바다 2017-11-29 753
챗봇이 주는 가치와 설계시 고려할 점 깊은바다 2017-10-18 638
대화형 챗봇으로 사용자 리서치 하기 깊은바다 2017-09-26 533
챗봇의 구조: 챗봇은 AI가 필요한가? file 깊은바다 2017-05-27 1043
챗봇의 9가지 UX 원칙 깊은바다 2017-05-27 868
대화형 챗봇 설계의 과제 file 깊은바다 2017-05-21 1187
챗봇 인터페이스의 특징 file 깊은바다 2017-05-12 1129
챗봇에서 개인화의 중요성 file 깊은바다 2017-04-13 982