안녕하세요. 헬로스팀의 @willpark 입니다.
앞으로 작성할 ‘헬로스팀' 포스팅의 한 주제로 ‘스티밋을 활용한 자동보팅 봇' 시리즈를 연재하고자 합니다.
현재, 많은 사람들이 메신저를 활용하고 있고 친숙하기에, 간단한 명령과 질문을 사람이 아닌 봇과 할 수 있는 챗봇이 많은 각광을 받고 있지요. 그리고, 이 챗봇을 만들기 위한 다양한 도구들이 나와있습니다.
구글의 Dialogflow를 필두로, 국내에는 네이버의 Clova, KT Genie, SK에는 Nugu 등이 있는데, 사용 방식은 대부분 비슷합니다.
이 시리즈에서는 구글의 Dialogflow와 국내 플랫폼으로 SK의 누구(Nugu)를 활용하여 봇을 제작하는 과정을 설명해보겠습니다. 챗봇 개발에 보다 관심이 있으신 분은 올해 6월 경에 발행한 ‘누구나 쉽게 배우는 챗봇 서비스'를 참조해 보세요.
구체적인 내용은 다음과 같습니다.
- Dialogflow를 활용하여 명령에 대한 의도 분석과 성분 분석을 통해, 해당 발화에 대한 의도를 연계시킵니다.
- 이를 Steem API와 연동하여, 특정 태그에 대한 최신, 핫 트렌드의 포스트를 확인할 수 있고 자동 보팅을 수행합니다.
- 이는 슬랙 등의 커뮤니케이션 툴과 통합되어서 해당 메신저의 봇으로서 기능할 수 있습니다.
- 국내 플랫폼으로 Nugu를 활용하여 현재의 대화형 봇 기술 트렌드를 확인해봅니다.
[Dialogflow]
Dialogflow ( https://dialogflow.com/ )는 자체 학습한 대용량 데이터 세트가 있고, 다양한 언어를 지원하며, 편리한 인터페이스와 통합도구를 제공하기에, 개발자 누구나 챗봇을 쉽게 만들 수 있습니다.
이 Dialogflow를 사용하는 법에 대해 간단하게 살펴보겠습니다.
- 인텐트(Intents)와 엔티티(Entities)
인텐트는 어떤 문장이 어떤 의도를 가지고 있는지 분류합니다.
예를 들면,
‘willpark 계정 포스트 가져와'
라는 문장을 입력 받으면, 포스트를 가져오라는 의도를 추출하구요.
그에 대한 개별 엔티티로서, ‘willpark’을 스티밋 계정명, ‘포스트’를 가져오는 정보의 타입, ‘가져와'는 그 액션이 될 수 있겠지요.
인텐트
엔티티
즉, 이 인텐트를 생성하고, Training phrases에 유저가 물어볼만한 질문을 정의, 추출할만한 엔티티 또한 생성하여 이를 training phrases에 입력한 문장에 매핑하여 학습시키면 됩니다. 엔티티에는 다양한 동의어를 기입할 수 있겠지요.
학습 시킨 봇의 테스트는 try it now 탭에서 다음과 같이 이루어집니다.
이 봇을 배포하기 위한 통합 툴의 쓰임새도 유용한데, 라인, 슬랙, 트위터, 페이스북 메신저 등 다양한 메신저의 통합이 쉽게 이루어질 수 있습니다.
해당 명령에 대하여 웹훅(Webhook) 을 통해 구축한 서버 혹은 파이어베이스와 연동하여 특정한 액션을 수행할 수도 있습니다.
[Nugu]
그럼, 국내 SK 에서 제공하는 Nugu 플랫폼을 사용해보면 어떨까요?
Nugu도 앞서 살펴본 Dialogflow와 그리 다르지 않은 사용 방식을 가지고 있습니다.
Nugu의 공식 사이트(https://developers.nugu.co.kr/ ) 에서 관련 개발 정보를 확인할 수 있는데요. NUGU Play Kit에서 문장을 정의하고 학습하여 Play를 만들고 이에 스피커와 쉽게 연동할 수 있습니다.
NUGU Play Builder에서 이러한 학습 과정을 거치게 되는데요.
다음과 같이 Custom Intents 페이지에서 새로운 인텐트를 정의하고,
이에 연결한 엔티티를 다음에서 정의하게 됩니다.
다양한 커스텀 액션 및 미리 정의된 빌트인 액션을 사용할 수 있으며
외부 연동 설정을 통해 앞서와 같은 웹훅을 통한 서버 API를 연동하여 특정한 액션을 수행할 수 있습니다.
이번에 만들게 될 스티밋 봇은 이렇게 구축한 봇을 웹훅을 통해 node.js로 자체 구축한 서버와 연동하고 Steem API를 호출하여 특정 액션을 수행하는 것입니다.
실제 코드와 함께 만들어가는 과정은 다음과 같습니다.
- 봇 킷(Dialogflow, Nugu)으로 학습하기
- 서버에서 Steem API 구성하기
- 서버와 킷 연동하기
- 슬랙으로 통합하기
이러한 형태로 계속 연재해보고자 합니다.
앞으로도 쭈욱 기대해주시구요. 관련 질문들 환영합니다~!
카카오톡으로도 가능 한가요??
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
카카오 자체 플랫폼으로 오픈 빌더 https://i.kakao.com/openbuilder/#/ 를 이용하면 비슷하게 작동 가능할 것으로 보입니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
와 너무 신기하네요 ㅎㅎ 해당 서비스들은 모두 무료로 공중에게 오픈되어있는 것인가요?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
네~ 대부분 무료로 공개되어 있는데요. 보다 고급 기능을 사용하기 위한 price model도 있습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
다음 연재를 기다리고 계속 있는데.. 오랜 시간동안 새로운 글이 없네요. 요즘 바쁘신가 봐요? ㅠㅠ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @hellosteemkr! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit