레플리
글 수 59

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

조회 수 2185 추천 수 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
제목 글쓴이 날짜 조회 수sort
파이썬과 Flask로 만든 간단한 카카오톡 챗봇 file [2] 깊은바다 2017-04-22 25335
챗봇 개발 플랫폼 비교 file [1] 깊은바다 2018-03-07 21385
챗봇 알고리즘의 발전 과정 file 깊은바다 2018-04-20 18412
PHP로 만든 간단한 카카오톡 챗봇 file 깊은바다 2017-04-15 12665
자바 스프링으로 카카오톡 챗봇 만들기 깊은바다 2017-11-26 10513
Python으로 챗봇 만들어보기 - 영화 정보 / 음료 주문 깊은바다 2017-12-22 8944
파이썬과 Django로 카카오톡 챗봇 구현하기 깊은바다 2017-04-18 8331
ChatScript로 한국어 챗봇 개발하기 [2] 깊은바다 2017-03-21 8224
파이썬과 Flask로 만든 간단한 페이스북 챗봇 file 깊은바다 2017-04-30 8033
Api.ai로 Telegram 연동 챗봇 만들기 깊은바다 2017-10-02 5937
카카오i 오픈빌더 문서 file 깊은바다 2018-12-03 5922
카카오i 오픈빌더로 피자챗봇 만들기 깊은바다 2018-12-19 4536
Chatfuel로 코딩없이 타로 챗봇 만들기 file 깊은바다 2017-09-26 4372
Node.js로 카카오봇 만들기 깊은바다 2017-06-20 4170
슬랫봇 30분만에 만들기 깊은바다 2017-04-29 3779