데이터 엔지니어링 프로젝트 및 인강/2. RASA chatbot Project

RASA 오픈소스 를 통해 간단한 챗봇 구축하고 훈련하기 03

쟈누이 2020. 3. 6. 14:17
반응형

저번 포스트까지는 기본 챗봇을 만들 수 있는 방법을 알려드렸습니다.

이번 포스트는 저번 포스트를 기반으로 챗봇을 조금이나마 한단계 업그레이드 할 수 있는 단계로

반드시, 따라하지 않으셔도 됩니다.

 

Response Selector NLU component 는 사람들끼리 간단하게 할 수 있는 일상 대화와 자주 물어보는 간단한 FAQ 관련 메시지들을 처리하기 위해 사용되는 RASA 챗봇의 요소 중 하나인데요.

이 기능을 사용하면 챗봇과 유저간에 일어날 수 있는 수많은일상적인 대화들과 FAQ 들을 처리하기 위한 스토리들과 인텐트들을 다 만들지 않고 간편하게 해결할 수 있어서 괜찮은 기능이라고 생각해요.

 

유저들은 챗봇에게 이런 저런 질문이나 시시콜콜한 이야기등을 하는데요. 라사 챗봇은 그렇게 들어오는 인텐트들을 ask_channels, ask_languages 그리고 ask_rasax 등의 말뭉치를 통해서 해결합니다

(여기서 위의 3개의 제목은 꼭 이렇게 써야 되는 것이 아니고 임의로 지정해놓은 이름입니다.)

 

우선, NLU.md 파일에 접미사 ' faq/ '로 시작하는 인텐트를 만들어줍니다.

여기서 이러한 간단한 대화를 처리할 때 가장 중요한 것은 ' faq/ ' 접두사를 인텐트를 만들 때 꼭 붙여주어야 한다는 것입니다.

(제가 잘못될 수도 있어서, 혹시 잘못된 것을 발견해주신 분은 댓글 남겨주시면 바로 수정하겠습니다)

출처 : 직접 만든 챗봇 데이터 캡쳐

' faq/ ' 접두사를 붙여주면 챗봇이 후에 이를 인지하고 관련 대답을 맞추어서 출력하게 됩니다.

 

두번째로 responses.md 파일을 data/ 디렉토리 내에 생성해줍니다.

출처 : 직접 캡쳐
출처  : 직접 만든 챗봇 파일

response.md 파일은 ' faq/ ' 인텐트에 대한 컴퓨터의 답변이 담긴 말뭉치 들입니다.

 

그리고 난 후, Response Selector 를 사용하기 위한 파이프라인 설정을 해주어야 합니다. 

출처 : 직접 만든 챗봇 파일

config.yml 파일은 RASA 챗봇을 훈련시키기 위한 워드 임베딩 토큰들을 설정하고 담는 파일입니다. 

pipeline 맨 아래에 response.md 파일을  Response Selector로 인식하고 훈련하는 토큰인 ResponseSelctor 를 추가해주면 됩니다. 처음에 제가 만든 이미지와 같이 토큰들을 추가하셔시고 진행을 하셔도 상관없습니다.

 

config파일 파이프라인에 대해서 자세하게 이해를 하고 싶으신 분은 아래의 rasa 유저 가이드 링크에 접속하시면 됩니다

https://rasa.com/docs/rasa/nlu/choosing-a-pipeline/

 

Choosing a Pipeline

Set up a pipeline of components.

rasa.com

그 다음에는 domain.yml 파일을 통해 생성한 response 파일과 ' faq/ ' 인텐트를 도메인이 인식켜줍니다. 

출처 : 직접 만든 챗봇 이미지 캡쳐

인텐트에는 faq 를 등록하고 actions 부분에는 respond_faq 를 등록해줍니다. 이대 action 부분에는 'respond_' 접두사를 붙여줘야 도메인에서 기존에 먼저 만들어둔 responses.md 파일을 인식할 수 있습니다. 

 

마지막으로, faq 를 처리할 수 있는 간단한 스토리를 만들어줍니다.

출처 : 직접 만든 챗봇 이미지 캡쳐

그러고 난 뒤에 rasa train 을 사용하여 챗봇을 훈련시킨 후에,

잘 적용이 되었는지 확인하면 됩니다.

 

 

반응형