뉴질랜드 다이어리(NZ Diary) 라빠

[Wit.AI 를 이용하여 Facebook Messenger 챗봇 만들기] #1. Wit.AI? 본문

개발

[Wit.AI 를 이용하여 Facebook Messenger 챗봇 만들기] #1. Wit.AI?

Donochi 2020. 8. 20. 17:08

챗봇 이라는 용어가 더이상 신기하지도 신선하지도 않은 상황에서, 뜬금없이 챗봇 만들기를 해보려 합니다.

전체적인 이야기의 흐름은 아래와 같습니다.
> Facebook Messenger 를 통해 대화가 시작되면
> Wit.AI 를 이용하여 자연어 분석을 하고
> Node 를 통해 응답을 구성하여
> Facebook Messenger 로 응답을 보냅니다.

일단, 시작하기에 앞서 챗봇의 핵심인 자연어 분석을 담당할 Wit.AI 에 대해 잠시 알아봅시다.

Wit.AI 는 2015년 Facebook 에서 인수한 자연어 처리 스타트업입니다. 2013년 창업하여 2년만에 Facebook 에 인수되어 스타트업의 성공적인 엑시트 모델로 소개되기도 합니다. 몇차례 업데이트를 통해 최근 상당이 안정적인 서비스를 제공하고 있습니다.

무려 132개의 언어의 자연어 처리를 지원하며, 32개의 음성인식도 지원하고 있습니다. (2020년 8월 기준) 물론 한국어는 자연어 처리와 음성인식이 지원됩니다.

게다가, 이 모든 서비스가 무료입니다!

자 그럼 서비스를 이용해 볼까요?


일단, wit.ai 홈페이지로 이동합니다.

https://wit.ai/

 

Wit.ai

 

wit.ai

간단하게 facebook 계정으로 가입을 한 후 MyApps 로 이동하여 바로 새로운 앱을 만들어 봅시다.

New App 버튼을 눌러서 앱의 이름과 언어를 설정해주면 됩니다.

앱 대쉬보드의 좌측 상단에 메뉴들을 먼저 살펴볼까요?

Understanding: 챗봇을 학습시키기 위한 모듈입니다. 훈련시키고 싶은 문장들을 입력하고, 각각의 의도와 구성요소를 지정해주고 챗봇을 훈련시킬 수 있습니다. 사용자가 메신저를 통해 입력한 문장들을 통해서 추가 훈련을 시킬 수도 있습니다.
Management: 챗봇을 관리하는 모듈입니다.
Insights: 챗봇의 사용내역을 살펴볼 수 있습니다.

먼저, understanding 모듈을 통해서 몇가지 문장을 훈련시켜볼까요?

"안녕" 이라는 문장을 입력하고, intent 로는 "greeting" 이라고 입력한 상황입니다. 챗봇에게 "안녕" 이라는 단어를 "greeting" 이라는 의로로 인식하게 하는거죠. Train and Validate 버튼을 눌러서 훈련을 시작합니다.

어린아이가 말을 배우듯, 최대한 다양한 형태의 문장을 훈련시킬 수록 챗봇이 정확한 의도를 파악하는데 도움이 됩니다.

위와 같이 훈련이 진행됩니다. 동일한 방법으로 "잘가" 라는 문장을 "farewell" 로 훈련해 봅시다.

훈련이 완료되었으면 이제 훈련이 잘 되었는지 확인해보아야겠죠? management 의 settings 로 이동합니다.

중간정도의 HTTP API 에 확인하고싶은 문장을 입력하면 cUrl 명령을 통해서 실제로 wit.ai 가 어떻게 인식하여 결과를 반환하는지 확인 할 수 있습니다. cUrl 명령을 복사해서 terminal 을 통해서 실행하면, wit.ai 의 응답을 확인해 볼 수 있습니다.

우리는 "안녕" 만을 훈련 시켰지만, "안녕하세요" 역시 "gretting" 으로 인식하고 있는것을 확인 할 수 있습니다. 같은 방법으로 다양한 인사를 한번 확인해보세요. 저는 "또보자" 와 "하이" 를 테스트해보았는데, 둘다 어떠한 intent 도 인식하지 못하네요. 자 그럼 다시 understanding 모듈로 가볼까요?

"또보자" 는 "farewell" 로, "하이" 는 "greeting" 으로 다시 훈련시킬 수 있습니다.


자 이렇게 어린아이에게 말을 가르치듯 문장을 조금씩 훈련시키면, 우리 챗봇이 "방가방가"도 이해할 수 있는 날이 오겠죠?

wit.ai 의 문장 구성요소중 entity 와 trait 에 대한부분은 직접 공부해보시기를 권장드립니다.