brunch

매거진 AI

You can make anything
by writing

- C.S.Lewis -

카카오 봇 플랫폼 소개

[카카오AI리포트] 발표: 황지수 / 글: 이형남


if kakao 2018 대학(원)생 기자단의 콘퍼런스 취재 글


01. 지식그래프 : 카카오미니와 검색 적용 소개 (발표: 남기훈 / 글: 김동현)

02. 눈으로 듣는 음악 추천 시스템 (발표: 최규민 / 글: 김태훈)

03. 이미지로 이미지 검색하기 (발표: 이주영 / 글: 이가람)

04. 딥러닝을 활용한 뉴스 메타 태깅 (발표: 김기도 / 글: 김규형)

05. 딥러닝을 이용한 실시간 인코딩 효율 최적화 (발표: 여욱형 / 글: 정소영)

06. 카카오 봇 플랫폼 소개 (발표: 황지수 / 글: 이형남)

07. 카카오가 가지고 있는 음성처리 기술 (발표: 노재근 / 글: 이형남)

08. 딥러닝을 이용한 얼굴 인식 (발표: 신종주 / 글: 김동현)

09. TOROS N2 (발표: 김성진 / 글: 김태훈)

10. 텐서플로로 OCR 개발해보기: 문제점과 문제점과 문제점 (발표: 모종훈·오형석 / 글: 이가람)

11. S2Graph와 GraphQL (발표: 윤도영 / 글: 김규형)

12. AI시대에 맞는 서비스 개발(발표: 이석영 / 글: 정소영)





이번 세션에서는 봇 플랫폼(bot platform)을 활용한 봇 개발 방법과 기존 터치 기반 인터페이스가 아닌 자연어 처리(natural language processing, NLP) 방식의 인터페이스를 플랫폼에 어떻게 접목시킬 수 있는지, 그리고 다른 서비스와 어떻게 상호작용할 수 있는지를 소개하였다.



봇 만들기(Building a Bot)


봇(bot)이란 무엇일까? 봇은 AI 기술을 활용하여 질문에 대답하는 등 사용자와 상호작용하는 프로그램이다. 현재는 주로 챗봇(chatbot)의 형태로 고객센터 등에서 응대 역할을 수행하거나 개인 사용자의 비서처럼 활용되고 있다. 초창기 봇 개발 당시에는 각각의 봇을 하나하나 개발해야 하는 번거로움이 있었지만, 개발자들은 곧 이러한 봇들에 공통적인 구조가 있다는 것을 깨달았다. 이에 봇의 공통적인 부분을 묶어서 반복 작업 없이 봇을 만들 수 있는 봇 플랫폼이 개발되었다. 여기서는 봇의 공통적인 특성을 위주로 카카오 봇 플랫폼상에서 봇이 어떻게 개발되는지 살펴보자.


[ 그림 1 ] 입력된 발화의 엔티티(entity) 분류


봇은 크게 사용자로부터 전달받은 메시지와 그에 상호작용하는 엔진, 그리고 엔진에 사용되는 데이터들로 구성되어 있다. 먼저 데이터 부분을 살펴보자. 각각의 원시 자료는 자연어 문장으로 이루어져 있으며, 각 문장에는 일정한 패턴이 존재한다. 이러한 패턴을 인식하고 학습하여 그 패턴에 따라 원시 자료를 분류하는 기능을 ‘패턴 분류기(pattern classifier)’라고 한다.

   

사용자가 입력한 원시 자료에는 핵심 질의(query)와 함께 질의를 처리하는 데 필요한 필수적인 매개변수(parameter)들과 부수적인 매개변수(optional parameter)들이 있을 것이다. 사용자가 그저 ‘날씨’라는 질의만 하고 날씨 봇이 이를 처리하는 경우를 예로 들어보자. 이 경우 사용자가 기본값(default)으로 지정된 ‘한 장소’와 ‘시간’이라는 필수적인 매개변수를 지칭하지 않았기 때문에 날씨 봇은 사용자의 물음에 답할 수 없게 된다. 이때 장소나 시간 등 같은 특성을 가진 매개변수들끼리 묶어서 단어 집합을 만든 것을 엔티티(entity)라고 한다. ‘장소’에는 서울, 경기, 부산 등이 들어갈 수 있고, ‘시간’에는 내일, 주말, 오후 등이 속할 수 있다. 이러한 엔티티는 장소 엔티티에 도시, 나라, 지역 엔티티를 두는 식으로 그 특성에 따라 서브 엔티티(sub entity)를 가지기도 한다.


[ 그림 2 ] 봇 플랫폼의 스킬 기능 모식도


이러한 과정을 통해 매번 단어뭉치(word bag)를 생성할 필요 없이 기존에 정의된 엔티티들을 기반으로 봇을 만들 수 있게 되었다. 그러나 날씨를 알려주는 것과 같이 봇 플랫폼에서 기본적으로 제공하는 기능 외에 ‘사용자 맞춤 기능’에 대한 수요가 생기면서 스킬(skill)이 주목받게 되었다. 스킬은 봇 플랫폼상에서 봇을 개발할 때 필수적인 기능은 아니지만, 다른 앱과 상호작용하는 등 봇 내부적으로 구현된 기능 이상의 퍼포먼스를 내기 위해 사용할 필요가 있다.



블록 분류(Block Classification)


일반적으로 전화상담을 진행하는 고객센터에 전화를 걸면, 고객센터는 고객이 어떤 용무로 전화를 걸었는지 파악해야 한다. 그리하여 고객에게 여러 번 다이얼 누르기를 요청하며 고객이 전화를 건 목적을 파악하고자 할 것이다. 하지만 자연어 처리 방식으로 사용자와 상호작용하는 챗봇은 사용자가 자신의 목적을 스스로 분류하도록 시키는 것이 아닌, 사용자의 목적을 스스로 파악하여 한 번의 질의에도 답변을 되돌려준다. 그렇다면 이러한 일이 가능한 이유는 무엇일까? 


[ 그림 3 ] 블록의 분류


가장 큰 차이점은 챗봇은 사람이 자연어로 입력한 정보를 그대로 받아들여 이해할 수 있기 때문이다. 봇은 자연어 이해(natural language understanding, NLU) 기능이 구현되어 있어서 충분한 정보가 담긴 질의를 받는다면 태그되어 있는 기능 블록에 연결되어 답변을 하게 된다.


봇이 받는 질의들을 구별하기 위해서 질의의 핵심을 구별해 미리 분류된 구분자를 붙여주는데 이를 태그(tag)라고 한다. 태그를 붙이게 되면 사용자가 날씨에 대해 묻든지, 기상정보에 대해 묻든지 의미상으로 같은 질문에 같은 답변을 할 수 있게 된다.

    

이 과정은 머신러닝(machine learning)을 통해 자연어 처리 과정을 거친다. 질의의 특징을 구별하기 위해 특성을 추출해내는 데 탁월한 성능을 보여주는 합성곱 신경망(convolutional neural network, CNN)을 활용한다. 머신러닝 분류기(machine learning classifier)에 의해 질의에서 특징이 추출되면, 질의 패턴 분류기의 결과와 종합하여 어떤 기능 블록에 해당하는 질문인지를 판단하고 기능 블록으로 질의를 전달한다.  

    

기능 블록은 질의를 처리하기 위한 실제 기능이 구현된 부분이다. 자연어 이해 과정을 통해 사용자의 요구가 ‘서울’의 ‘내일’ ‘날씨’가 궁금한 것이라면 날씨 정보를 구현해주는 날씨 기능 블록으로 연결된다. 서울의 지리 정보, 내일의 시간 정보에 따라 기상예보 정보를 알아내고 그 정보를 다시 자연어로 변환하여 사용자에게 답변해준다.



통합(Integration)


카카오 봇 플랫폼은 카카오톡 내에서 질의응답을 주고받는 것뿐 아니라, 타 앱과도 연동되어 있다. 챗봇을 통해 타 앱의 기능과 관련된 질의를 하게 되면 타 앱에서 기능이 동작하는 상호작용을 구현하는 것이다. 사용자가 멜론(Melon) 챗봇을 통해 ‘노래 틀어줘’라고 지시를 하면, 멜론 앱에서 노래를 재생하는 것이 가능하다는 것이다. 카카오는 타 앱과의 연동을 시작으로 다른 서드파티(3rd party)들과의 상호작용을 넘어서 사물인터넷(Internet of Things, IoT)과의 결합까지 플랫폼을 확장할 계획이라고 밝혔다.

    

오는 12월, 카카오는 ‘오픈 빌더(Open Builder)’라는 이름으로 봇 플랫폼의 API를 공개할 계획이다. 오픈 빌더가 공개되면 앞서 소개하였던 방식으로 일반 개발자들 또한 자유롭게 챗봇을 개발할 수 있다. 이미 공개되어 있는 다양한 봇 플랫폼도 있지만 많은 사람들이 국내 제일의 메신저에 기반한 오픈 빌더로 어떤 작업을 해낼 수 있을지 벌써부터 기대된다.




콘퍼런스 발표 | 황지수 mario.h@kakaocorp.com


글 | 이형남 su8189@gmail.com 

건국대학교에서 경제학과 통계학을 공부하고 있습니다. 머신러닝, 특히 딥러닝에 관심을 갖고 기술이 사람들에게 어떤 미래를 보여줄 수 있을지 꿈꾸며 학부 시절을 보내고 있습니다. 기술과 지식으로 쌓아올린 지혜는 삶을 풍요롭게 변화시킬 것이라 믿고 오늘도 배움의 길을 걷고 있으며, 기술과 문화예술 등 모든 분야의 흥미로운 생각을 사람들과 나누는 것을 좋아합니다.







[카카오 AI 리포트] Vol. 14 (2018년 9월 호)는 다음 내용으로 구성되어 있습니다.


[1] Special Topic

01. 김동현 | 지식그래프 : 카카오미니와 검색 적용 소개

02. 김태훈 | 눈으로 듣는 음악 추천 시스템

03. 이가람 | 이미지로 이미지 검색하기

04. 김규형 | 딥러닝을 활용한 뉴스 메타 태깅

05. 정소영 | 딥러닝을 이용한 실시간 인코딩 효율 최적화

06. 이형남 | 카카오 봇 플랫폼 소개


[2] In-Depth

07. 김준래 | 디지털 사회로의 변화와 스포츠

08. 박성건, 이수원 | 스포츠 경기력 향상을 위한 AI 활용 방안 

09. 최형준 | 스포츠 경기 분석 전문가와 AI의 만남

10. 신동윤 | 로봇 심판과 판정 알고리즘의 의미 있는 도전

11. 박주희 | 스마트 도핑 검사의 도입과 발전 과제

12. 김동환 | 스포츠 저널리즘의 변화와 AI의 활용

13. 유승원 | 만능 스포츠봇의 등장과 발전 방향


[3] Tech Insider

14. 윤도영 | Apache S2Graph 기반 머신러닝 모델 환경 구축

15. 이수경, 박규병 | 딥러닝이 탐구하지 못한 언어와 5가지 태스크

16. 박찬연 | 2018 ICML을 통해 살펴보는 AI 연구 동향

17. 황순민 | 2018 CVPR 논문 동향 및 주요 연구 소개

18. 최은필 | 카카오 크루들의 커피 주문 방식


[카카오 AI리포트] Vol. 14 전체글 다운받기

[카카오 AI리포트] Vol. 14_6 다운받기



매거진의 이전글 딥러닝을 이용한 실시간 인코딩 효율 최적화

매거진 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari