아카이브/챗봇

Rasa와 TMDb를 이용한 영화 챗봇 만들기 1 - 소개, 환경설정

Johnny Yoon 2019. 6. 23. 23:38
728x90
반응형

...더보기

이 글은 다음 사항들이 완료 되었다고 보고 진행됩니다.

  1. 파이썬3.x(아나콘다) 설치
  2. IDE 설치 (Visual Studio Code)
  3. 파이썬 기본 지식
  4. 챗봇에 대한 기본적인 이해

Rasa및 TMDb소개

Rasa란?

https://rasa.com/

Python 및 Tensorflow로 만들어진 오픈소스 AI챗봇

 

TMDB란?

 

https://www.themoviedb.org/

사용자들에게 영화 정보와 리뷰를 받아 만들어진 영화 데이터베이스

 

 

Rasa 설치

Command Prompt 창을 열어 다음과 같은 명령을 입력해 줍니다.

> pip install rasa
...더보기

Rasa 가이드에 있는 rasa-x를 받으면 오픈소스 버전이 아닌 상용 버전을 받게 되니, rasa로 설치하시기 바랍니다.

Rasa는 파이썬의 주요 라이브러리 (numpy, scipy, matplotlib, tensorflow)등을 필요로 하기 때문에 많은 패키지 들을 설치하게 됩니다.

 

Rasa 샘플 프로젝트 만들기

우선 Rasa 문서에 있는 대로 샘플 프로젝트를 만들어 보도록 하겠습니다.

우선 원하는 위치에 rasa-tutorial이라는 폴더를 만들어주고

Visual Studio Code를 사용해 rasa-tutorial이라는 폴더를 열어줍니다.

그리고 터미널을 열어 rasa프로젝트를 만들어줍니다.

(터미널은 Terminal메뉴 > New Terminal을 선택해 열어줄 수 있습니다)

> rasa init –no-prompt

위 커맨드를 입력하면 Rasa가 기본적으로 가지고 있는 story와 예제 발화들을 가지고 챗봇을 학습 시킵니다.

로그를 보시면 딥러닝 라이브러리인 Keras (Tensorflow)를 사용하면 볼 수있는 로그인 Epoch(학습주기)를 100번 돌리는 것을 볼 수 있습니다.

챗봇의 학습이 시작하기 전 Rasa가 챗봇에 필요한 파일들을 받아옵니다.

 

Rasa 프로젝트 구조

해당 파일들을 열어 Rasa 프로젝트의 구조가 어떻게 생겼는지 들여다 보겠습니다.

Visual Studio Code에서 본 Rasa 샘플 디렉토리 구조

data 폴더 밑에는 Rasa가 챗봇을 학습 및 구동시키는데 필요한 데이터 파일들이 들어있습니다.

 

nlu.md파일을 열어보겠습니다.

nlu.md

 

Intent는 사용자가 챗봇에게 바라는 “의도”를 말합니다.

한가지 intent에는 여러 다른 종류의 발화가 올 수 있고, 챗봇은 해당 intent에 대한 답변을 내려주게 됩니다.

위의 경우에는 “hey”, “hello”, “good morning”모두 greet에 대한 사용자의 발화가 될 수 있습니다.

Rasa는 Tensorflow (Keras)를 사용해 모든 발화를 학습시켜 어느정도의 Variation을 수용하게 해줍니다.

 

이제 stories.md파일을 열어보겠습니다.

stories.md

Utterance는 사용자의 intent에 대한 챗봇의 발화를 의미합니다. 여기서는 greet라는 인텐트에 대하여는 utter_greet이라는 utterance가 발생하게 되어있습니다.

또한 intent에 대한 발화를 내보내는 것을 포함한 모든 챗봇의 행위를 action이라고 부릅니다.

Rasa에서는 이러한 intent — utterance 관계가 모인 단위를 story라고 표현하고, stories.md파일 안에 현재 챗봇이 사용할 story들을 순차적으로 작성하게 되어있습니다.

순차적으로 작성된 story들은 intent가 순차적으로 들어와야만 정상적으로 동작합니다.

 

이제 models폴더를 살펴봅시다.

models 폴더

오늘 날짜로 된 tar.gz파일이 보이실 겁니다.

이 파일은 방금 우리가 rasa init을 통해 tensorflow로 빌드한 챗봇의 딥러닝 모델입니다.

 

마지막으로 domain.yaml파일을 살펴봅시다.

domain.yml: intents and actions

intent들과 action들이 정의되어 있는 것을 볼 수 있습니다.

파일의 하단에 있는 templates를 보면 utterance와 text (혹은 image)가 mapping되어 있는 것을 볼 수 있습니다.

domain.yml: templates

 

Rasa는 이 파일을 참조하여 intent에 대한 action을, action의 utterance를 사용자에게 보내주게 됩니다.

 

여기까지 Rasa의 샘플 프로젝트 구조를 살펴보았습니다.

다음 포스팅에서는 샘플을 구동시켜보도록 하겠습니다.

 

참고자료

http://rasa.com/docs/

https://doc.danbee.ai/

728x90
반응형