글 수 55

Rasa와 TMDb를 이용한 영화 챗봇 만들기

조회 수 111 추천 수 0 2020.03.12 21:05:56


1*bJA3Tz7H49_rGHcJtMeHnQ.png

 

https://medium.com/@ydy1128/%EC%98%81%ED%99%94-%EC%B1%97%EB%B4%87-%EB%A7%8C%EB%93%A4%EA%B8%B0-1-d9fa2bfbc966

 

 

 

챗봇을 개발하기 위해서 보통 Dialogflow 같은 챗봇 빌더를 주로 사용합니다. 이런 서비스들은 웹사이트 내에서 간단하게 구현할 수 있다는 장점이 있습니다. 하지만 매달 내는 사용료가 부담이 되기도 합니다.

 

이와 달리 오픈소스 라이브러리를 설치하여 직접 개발도 가능합니다. 대표적으로 ChatScript가 유명합니다. 그러나 일상대화에 특화되어 목적지향 챗봇에는 적합하지 않습니다. 의도(intent)와 개체(entity)를 기반으로 작동하는 프레임워크도 있는데, 그중에서 RASA가 많은 인기를 끌고 있습니다.

 

 

 

RASA의 가장 큰 특징은 머신러닝을 사용한다는 점입니다. 많은 챗봇 플랫폼들이 문자열을 비교하는 유사도 방식으로 되어 있습니다. 반면에 RASA는 문장을 벡터로 변환하고 학습을 통해 처리합니다.

 

전체 구조는 크게 NLU와 Core로 나누어집니다. NLU는 자연어처리를 담당하고, Core는 스크립트를 작성하여 대화를 관리합니다. 특히 NLU 부분이 확장성도 높고 상당히 뛰어납니다. 기본적으로 문장을 단어로 분리하는 토크나이저, 토큰을 모아 입력 벡터로 만드는 피처라이저, 분류기, 개체명인식기 등의 컴포넌트로 이루어져 있습니다. 이들 컴포넌트들을 조합하여 파이프라인을 만드는 방식입니다.

 

피처 생성은 크게 3가지 입니다. 첫째, 단어의 순서를 고려하지 않는 BoW(Bag of Words). 둘째, Word2Vec 같은 단어 임베딩. 셋째, ConveRT나 BERT를 사용한 문장 임베딩. 단어 임베딩을 쓰면 학습 데이터가 많아야 합니다. 만약 '너를 사랑해'만 데이터에 있다면, '사랑해 너를', '사랑해' 같은 입력을 인식하지 못합니다. 우선 '사랑해'란 단어가 들어가는 입력의 위치가 다르기 때문입니다. 문장 임베딩은 데이터가 적어도 일반화가 잘 되는 편입니다. 미리 사전훈련된 모델을 통해 비슷한 문장은 유사한 벡터값을 가집니다. 그러나 세밀하게 의도를 파악하는데는 아직 적합하지 않습니다. 만약 학습 데이터가 적다면 BoW를 선택하는게 차라리 나을 수 있습니다.

 

 

 

RASA의 단점으로는 우선 한글 지원이 안된다는 것입니다. 한글 형태소분석이 되는 토크나이저를 커스텀으로 추가해야 합니다. 숫자, 시간, 날짜 같은 시스템 엔티티도 영어만 가능합니다. 또한 사용법이 상당히 복잡한 편입니다. 프로그래밍에 능숙한 분도 적응하려면 시간이 좀 걸릴 듯 합니다.

 

챗봇 빌더가 아닌 자체 개발을 하고 싶다면 RASA도 좋은 선택이라 생각합니다. 작년에 150억 이상 투자를 받을 정도로 회사가 크게 성장하고 있습니다. 앞으로 지속적으로 발전을 하는 플랫폼이 될 것 같습니다.

엮인글 :
List of Articles
제목 글쓴이 날짜 조회 수
Rasa와 TMDb를 이용한 영화 챗봇 만들기 깊은바다 2020-03-12 111
MS의 파워 버추얼 에이전트(Power Virtual Agents) 핸즈온 file 깊은바다 2020-02-10 109
챗봇, 일주일이면 아무개 만큼 한다! file [1] Dope 2020-01-21 679
카카오i 오픈빌더를 안쓰고 자체 엔진으로 카톡 챗봇을 만드는 방법 깊은바다 2019-12-31 264
Dialogflow에서 Universal Sentence Encoder로 문장의 유사도 측정 깊은바다 2019-08-07 443
왕초보, 코딩없이 챗봇 만들기 깊은바다 2019-03-02 2055
DIY 챗봇 - 유사도 방식의 의도 파악 file 깊은바다 2019-01-27 957
카카오i 오픈빌더로 피자챗봇 만들기 깊은바다 2018-12-19 3552
카카오i 오픈빌더에서 자체엔진 사용방법 [1] 깊은바다 2018-12-13 2281
NUGU Play Kit 사용기 - 명상 서비스 개발 [1] 깊은바다 2018-12-13 393
빅스비와 시작하기 file 깊은바다 2018-12-04 639
카카오i 오픈빌더 문서 file 깊은바다 2018-12-03 3082
아마존 알렉사 소셜봇 대회 - Building a Socialbot file 깊은바다 2018-09-15 310
왓슨 Conversation API 간단하고 쉽게 이용해보기 [2] 깊은바다 2018-08-25 779
Dialogflow와 Heroku로 카카오톡 챗봇 만들기 file 깊은바다 2018-08-12 1475