TigerCow.Door

안녕하세요. 문범우입니다.

최근에 방학을 맞이하면서 블로그에 글을 올리는 일이 줄어들었습니다.

방학동안 어떤 공부를 할지 계획도 세우고, 오늘 설명드릴 구글 어시스턴트 어플리케이션 개발을 마무리하느라 블로그 신경을 많이 못썼습니다.



1. 개발 동기


오늘 설명드릴 것은 말 그대로 구글 어시스턴트 어플리케이션 개발에 대한 후기입니다.


아직 구글 어시스턴트에 대해서 많은 분들이 잘 모르고 계시는데, 구글 어시스턴트는 17년 하반기에 한국어 버전이 오픈되었고 아마 안드로이드 버전 6.0이상에서는 따로 설치없이 기본적으로 제공되는 것으로 알고 있습니다.


아직 iOS에서는 한국어 버전이 따로 지원되지 않으나 해외에서는 지원되는 상태고 구글에서도 올해 안에 iOS 한국어 버전 구글 어시스턴트 어플을 출시할 계획이라고 하니 조금만 기다려보면 좋은 소식이 있을 듯 합니다.


최근 많은이들이 챗봇등에 관심을 갖게되면서 사실상 한국인이 제일 많이 사용하는 카카오톡 서비스를 이용하여 많은 챗봇을 개발하고 있습니다.

그리고 많은 중고등학생, 대학생 개발자들이 공부를 하면서 학교 식당 메뉴를 알려주는 챗봇도 함께 개발되고 있습니다.


저 또한 서울시립대학교에 재학중이면서 작년 겨울에 비슷한 아이디어를 가지고 인공지능 챗봇을 개발하였지만 기타 다른 상황의 문제로 인해 실제 서비스를 배포하지는 못했지만, 현재 서울시립대학교 식당 메뉴를 알려주는 기능을 가진 챗봇이 약 2개이상 있는 것으로 알고 있습니다.


저 또한 해당 서비스들을 학기중에 편하게 이용하였습니다.

그러던 와중 제가 아침마다 날씨등을 알기 위해 간편하게 음성인식을 통해 구글 어시스턴트 어플리케이션이라는 이용하면서, 이를 통해 그날의 메뉴를 알 수 있으면 조금 더 편리하지 않을까라는 생각을 하게 되었고, 바로 아는 후배와 함께 개발을 하게 되었습니다.

+ 구글 어시스턴트를 매우 많이 사용하는 동기놈의 압박도 있었습니다..:'( 



2-1. 구글 어시스턴트 사용 방법


아직 구글 어시스턴트에 대해서 잘 모르시는 분들께서는 그 편리함에 대해서 의문을 가질 수 있습니다. (아시는 분께서도 가지실 수 있으나.. 저와 친구는 특정 메신저에 접속하여 손으로 타이핑하는 것보다는 편하다고 생각하였습니다ㅎ..)


위에서 말씀드린대로 안드로이드 버전 6.0 이상에서는 구글 어시스턴트가 기본적으로 제공이 됩니다. 이를 이용하는 방법은 너무나 간단합니다.


초기 설정만 해두면 'Ok Google' 등의 음성으로 간편하게 호출할 수 있고 또는 홈버튼을 길게 눌러줌으로써 호출할 수 있습니다.

초기 설정이 필요하신 분들께서는 음성 호출은 불가하지만, 홈 버튼을 꾹 눌러주시면 구글 어시스턴트를 호출할 수 있습니다.


구글 어시스턴트에서 할 수 있는 다양한 기능은 작년 하반기에 한국어 버전이 출시되며 작성된 아래 글을 참고하셔도 좋습니다.


https://www.bloter.net/archives/290622


또한 최근에는 더 많은 기능들이 지속적으로 업데이트 중인 것으로 알고 있으니 사용해보시면서 구글 어시스턴트의 매력을 느껴보시면 좋을 것 같습니다.



2-2. 오늘학식 사용 방법


먼저 2-1 에서 설명드렸던, 구글 어시스턴트를 2가지 방법 중 아무것으로나 호출하면 다음과 같은 화면이 나오게 됩니다.

(초기 설정을 끝낸 상태입니다.)



모바일에서 위와 같은 화면이 뜨면 기본적으로 구글 어시스턴트의 기능을 사용할 수 있으며, 추가적인 구글 어시스턴트 어플을 사용할 수 있는 상태입니다.


이제 해당 화면에서 '오늘 학식'을 사용하기 위해서는 


오늘학식한테 말하기

오늘학식 불러줘

오늘학식에게 말하기


세가지 호출문을 사용하면 됩니다.


위의 호출문을 음성으로 말해도 되고, 좌측에 있는 키보드를 눌러 타이핑 하셔도 됩니다.


그리고 호출문이 입력되면 아래와 같이 '오늘 학식' 어플리케이션이 실행되는 것을 확인할 수 있습니다.



이제 여기서부터는 '오늘 학식' 어플리케이션에서 개발된 로직으로 사용자와 구글 어시스턴트가 대화하게 되는 과정입니다.


현재 '오늘 학식' 어플리케이션에서는 서울시립대학교의 건물별 식당 메뉴를 반환해주는 기능을 하고 있습니다.

보다 구체적으로는, 아래와 같이 식당이 있는 학생회관, 양식당, 대학본부, 생활관, 자연과학관의 엊그제, 어제, 오늘, 내일, 내일모레의 메뉴를 알 수 있습니다.


아직 개발 초기이기 때문에 부족한 점도 많을 수 있지만 지속적으로 개발을 이어나갈 예정이며 먼저 메뉴 반환에 대해 시간별로 나누거나, 메뉴 반환 이외의 다양한, 학생들의 편의를 위한 기능도 업데이트 예정 중에 있습니다.



3. 개발 후기


요새 많은 챗봇들에 대해 관심이 많아지면서 저 또한 작년 부터 관심을 많이 가졌습니다. 작년에 처음 인공지능 챗봇을 개발하면서 자연어 처리등에 대해 많은 어려움을 느꼈고, 아직은 어느정도의 규칙기반 틀에서 벗어날 수 없을 것이라고 생각했지만, 정말 짧은 시간안에 많은 부분들이 극복되며 매우 놀라운 챗봇들이 개발되고 있습니다.


그리고 그 가운데 구글 어시스턴트는 기본적으로 개발자에게 자연어 처리나 음성인식등의 기능을 제공해주고, 개발자는 아이디어를 생각하고 이를 구현하기만 하면 되었기에 생각보다 매우 수월하고 재미있는 경험이 되었습니다.


아직 익숙치 않은 자바스크립트로 개발을 진행해보았는데, 새로운 언어를 접해볼 겸 개발했던 것이 너무나 즐거운 경험이 된 것 같습니다.


현실상 해당 구글 어시스턴트 어플리케이션, 오늘학식을 매일매일 붙잡고 버그를 잡아내고, 업데이트를 할 수는 없겠지만 공부도 할겸, 조금이나마 학생들에게 편리한 서비스를 제공할겸 틈틈이 오류를 잡아내고 새로운 기능들을 업데이트 하려고 합니다.


발견되는 오류가 있거나 업데이트가 되었으면 하는 기능이 있다면 해당 어플 리뷰나 이메일로 의견 보내주시면 최대한 반영하여 빠른 시일내에 좋은 서비스를 제공해드리도록 하겠습니다.


또한 깊게 공부하며 엄청나게 어려운 것을 개발한 것은 아니지만 구글 어시스턴트 어플을 처음 개발하시는 분들께서 궁금하신점이나 잘 해결되지 않는 점이 있다면 언제든지 함께 고민해보도록 하겠습니다. 이메일이나 댓글로 남겨주시면 감사하겠습니다 :)



블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

카카오톡 플러스친구 로고



안녕하세요. 문범우입니다.

최근 지인분을 통해 사례금을 받고 카카오톡 플러스친구 챗봇 개발을 진행하였습니다.



개발 내용은 다음과 같습니다.


- 사용자가 플러스친구를 등록하고 특정 키워드를 '#키워드'와 같이 메세지를 전송하면 그에 대응되는 텍스트 및 이미지를 전송한다.



해당 개발 내용은 자연어 처리나 기타 복잡한 로직없이, 단순하게 A키워드에 대한 요청이 들어오면 그에 대응되는 응답을 반환하면 되기 때문에 크게 어려움이 없습니다.


이를 통해 개발이 완료된 결과는 다음과 같습니다.



해당 플러스친구의 이름은 혹시나 하여 모자이크 처리하였습니다.

어떤 식으로 작동되는지 보다 궁금하신 분들은 연락주시면, 개인적으로 개설한 테스트 서버를 통해 확인할 수 있도록 알려드리겠습니다.


서버는 aws의 EC2를 프리티어로 하여 구성하였습니다.

해당 서버 내부에 ruby on rails 를 설치하여, 따로 view구성은 하지 않고 단순히 controller를 통해서 request가 왔을때 지정된 response를 반환하도록 하였습니다.


request 및 response에 대한 전체적인 내용은 다음 주소의 카카오톡 플러스친구 api를 참고하시면 좋을 것 같습니다.

https://github.com/plusfriend/auto_reply


추가적으로 카카오톡 플러스친구 챗봇개발에 관해 궁금하거나 잘 해결되지 않는 부분에 대해서는 언제든지 연락주시길 바랍니다.


블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc



안녕하세요. 문범우입니다.

지난 2017년 8월에 개발을 시작한

서울시립대학교 인공지능 챗봇, 우울한 코끼리가 곧 Beta service를 시작합니다.


저희 우울한 코끼리는 서울시립대학교 교수학습개발센터에서 진행되는 '2017 UOS 학습공동체' 라는 프로그램의 지원을 받으며 진행되었습니다.


위의 사진은 2017년 UOS 학습공동체의 공고문입니다.


우울한 코끼리팀은 서울시립대학교 컴퓨터과학부 2명, 수학과 1명, 그리고 전자전기컴퓨터공학부인 저를 포함하여 총 4명의 개발자로 이루어져 있습니다.


저희는 서울시립대학교의 학생들이 학생 식당의 메뉴를 알고싶거나 학교 근처 맛집 또는 학교 중앙 동아리 정보등을 보다 쉽게 얻을 수 있도록 인공지능 챗봇 개발을 기획하였습니다.

이에 따라 사람들이 많이 이용하는 카카오톡 플러스친구라는 채팅 앱을 기반으로 Django라는 프레임워크를 이용하였습니다.



여기서 인공지능 챗봇이라 함은, 그 동안의 '심심이'와 같은 일반 챗봇과는 답변 처리 방식에 있어서 다른점을 나타냅니다.

단순히, 'A'라는 텍스트를 받았을 때 'B'를 답변해! 라고 설정되는 것이 아니라, 'A'라는 텍스트의 의도를 분석하여 그에 맞는 답변을 해! 라고 설정되는 것입니다.

이러한 인공지능을 이용하면 다음과 같은 것이 가능합니다.

'오늘 학식 메뉴가 뭐야?', '오늘 학식은?', '오늘 메뉴 알려줘', '오늘 학식 메뉴 알려줘' 와 같은 다양한 말들에 대해서 우울한 코끼리는 동일하게 오늘 학생식당에 대한 메뉴를 답변합니다.

서로 다른 말들이지만 질문의 의도는 오늘의 학생식당의 메뉴를 묻는 것이기에, 인공지능을 이용하면 하나의 질문에 하나의 답변을 처리하는 것이 아니라 질문에 대한 의도를 분석하여 해당 의도에 대한 답변을 처리할 수 있습니다.



(출처: SKTechx 토크ON세미나)


인공지능 챗봇을 개발하는데는 위의 사진과 같이, 생각보다 많은 것들을 공부해야 했습니다.

우울한 코끼리 또한 아직 부족한 점이 많지만 하나씩 해결해 가면서 서비스를 보완하고 있습니다.

현재 가능한 기능 중 하나인 학식 메뉴에 대한 답변은, 먼저 사용자가 질문을 하면 사용자의 질문을 형태소 단위로 분석하여 각각의 의미를 캐치합니다. 그리고 각각의 의미를 통해 사용자의 질문 의도를 분석하고 그것이 학식 메뉴를 궁금해 하는 의도라면 실시간으로 서울시립대학교 홈페이지(uos.ac.kr) 에서 그날의 식당 메뉴를 크롤링하여 응답하도록 설정되었습니다.


추가적으로 저희는 학교 주변의 맛집을 추천할 수 있는 기능을 생각하고 있습니다.

학식 메뉴를 물어볼때 답변의 하단에 학교 주변 맛집 하나를 랜덤하게 선정하여 추천해주고, 사용자가 학교 주변 맛집에 대해 궁금해하는 질문을 추가적으로 한다면 정문이 편한지, 후문이 편한지 또는 어떤 음식종류를 선호하는지 등에 대한 질문을 통해 학교 주변 식당을 추천합니다. 해당 기능은 학교 주변 식당을 우울한 코끼리의 데이터베이스에 저장하며 다양한 해시태그(#)를 함께 저장하고, 사용자가 선호하는 것에 대해 많은 해시태그가 포함되는 식당을 랜덤하게 추천하도록 구현될 예정입니다.


또한 학교 중앙동아리에 대한 소개 서비스를 구현할 예정입니다.

사용자가 취미를 추천받고 싶어하거나 직접적으로 학교의 동아리에 대한 궁금증을 가진 질문을 하였을때 우울한 코끼리의 데이터 베이스에 입력된 동아리들을 바탕으로 학교 주변 맛집 추천과 비슷한 과정을 통해 동아리를 소개할 예정입니다.


그리고 사진인식을 통한 추가적인 서비스도 고려하고 있습니다.

예를 들어 특정 건물의 사진을 찍어서 우울한 코끼리에게 전송하였을 때, 이미지 인식 기능을 통해 어떤 건물인지 인식하고 해당 건물에 대한 정보를 응답하는 기능입니다. 현재 우울한 코끼리에게 사진을 전송하였을 때, 아직 사진을 인식하는 기능이 없다고 답변이 되고 있습니다. 카카오톡 플러스친구 API를 통해 사용자가 보낸 메세지가 사진인지, 텍스트인지는 쉽게 구별할 수 있었습니다. 추가적으로 현재 학습중인 딥러닝 기반 이미지 인식에 대한 구현이 성공되면 위에서 말씀드린 건물에 대한 인식등을 비롯하여 이미지 인식 기능을 통해 더 많은 서비스가 제공될 예정입니다.


마지막으로, 현재 우울한 코끼리에서 진행되는 대화는 자체 데이터베이스상에 모두 기록됩니다.

즉, 누가 어떤말을 언제 하였는지 데이터베이스에 기록됩니다. 이렇게 설정한 이유는 차후에 이러한 데이터들을 통해서 더 많은 서비스를 제공할 수 있을 것이기 때문입니다. 예를 들어, 기록된 시간들을 바탕으로 현재 사용자가 연속된 대화를 진행중인 건지, 아니면 어느정도 시간이 지난 뒤에 대화를 새롭게 시작하는 건지 등의 판별이 가능해집니다.



우리 우울한 코끼리는 위와 같은 내용을 바탕으로, 현재 카카오톡 플러스친구에 검색하여 친구를 등록하면 서울시립대 학식 질문에 대한 답변이 가능합니다.

하지만 초기 개발시에 테스트를 위해 Cloud9 서비스를 이용하여 평상시에는 서버가 off 되어있고 수동적으로 서버를 켜줘야지 정상적인 답변이 가능해집니다.

24시간 동안 사용자들이 이용할 수 있도록 현재 네이버 클라우드 플랫폼을 이용한 서버이전을 진행중에 있습니다.


이러한 내용을 통해 우울한 코끼리는 2017 UOS 학습공동체팀 중에서 최우수팀에 선정되었고 1월 24일 총장님에게 상장을 수여받게 되었습니다.


마지막으로 우울한 코끼리 시연영상을 보여드리고 마치겠습니다.



- 우울한 코끼리 시연영상(1)




- 우울한 코끼리 시연영상(1)




이상 모든 사항에 대해 추가적으로 궁금한 점은 언제든지 댓글 및 개인 이메일(doorbw@outlook.com)을 이용해주시면 빠른 답변 드릴 수 있도록 하겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc