본문으로 건너뛰기

😃 인사이드 아웃 챗봇

개요

영화 ‘인사이드 아웃’을 모티브로 한 다양한 감정을 가진 챗봇을 제작해보자!

프로젝트 진행 과정

전체적인 구상도

다음의 사진은 전체적인 프로젝트 파이프라인을 구조화한 이미지입니다.

  1. User가 사전에 개설한 카카오톡 채널을 통해 메세지을 보내면
  2. 카카오 i 오픈빌더의 시나리오 블록, 폴백 블록을 통과하고
  3. 챗봇 api 서버, 챗봇 엔진 서버에 순차적으로 데이터가 이동하며,
  4. 채널에 해당되는 모델을 통해 predict한 후,
  5. 이를 다시 챗봇 엔진 서버, 챗봇 api 서버, 카카오 i 오픈 빌더로 보내어
  6. 사용자에게 답변이 출력 되는 구조입니다.

먼저 시나리오 블록에서는 모델별로 인사와 이름을 물어보는 질문에 대해 오픈빌더에서 제공하는 머신러닝 기능을 활용하여 답변을 제작하였으며,

그 외의 input들은 스킬 서버를 통해 저희가 구축한 서버로 연결되어 직접 디자인한 챗봇 모델과 대화 할 수 있도록 하였습니다.

상대방의 발화에서 감정분류를 수행하는 모델은 Kobert를 사용하였으며,

약 27만 문장의 감성 대화말뭉치를 통해 분노, 슬픔, 불안, 기쁨의 4가지 감정별 Multi-label Classification을 하는 모델을 구축하였습니다.

11,876개의 문답 페어로 구성된 일상 챗봇 학습용 Chatbot_data, 세브란스 상담 데이터 기반 5232개의 월니스 대화 데이터셋, 55627쌍의 한국어 감정 정보 연속적 대화 데이터셋, 약 27만 문장의 감성대화 말뭉치를 챗봇 대화에 적합하게 전처리 및 가공을 거쳤으며,

Transformer의 Encoder, Decoder 아키텍처를 활용하여 일반 대화용 Open-domain 챗봇 빙봉을 제작하였습니다.

또한 감정별 페르소나를 가진 챗봇을 제작하기 위해, 문답 페어중 Answer을 기준으로 감정이 드러나는 페어들을 추가로 선별 및 재가공하고,

모델 당 400건의 답변을 추가하여 기쁨이, 버럭이, 소심이, 슬픔이를 제작하였습니다.

프로젝트 결과