본문 바로가기
성장하기

[서평] 처음 배우는 딥러닝 챗봇

by 예시카의 일상 블로그 2021. 10. 24.

#챗봇엔진 #딥러닝 #파이썬 #NLP #REST #카카오톡_연동 #의도모델 #비대면 #챗봇상담 #챗봇개발 #딥러닝구현 #챗봇마케팅

처음 배우는 딥러닝 챗봇

이제 딥러닝 개발은 정말 쉬워졌다. 어떠한 마케터라도 파이썬 코딩의 기본만 알아도 챗봇 구현이 가능해지다니...!

정말 스스로 뭐든지 할 수 있는 세상이다. 그만큼 개발에 필요한 기본 언어 정도는 알아야 마케터의 세상이 넓어진다.

파이썬의 기본 문법을 알고, 어느 정도 프로그래밍을 할 수만 있다면 마케터의 능력치는 몇십 배로 상승한다.

이 책을 따라가다 보면, 자연어 처리(NLP) 기본적인 모델을 불러와서 데이터 전처리 기초 과정을 거친다. 

그 다음, 주변에서 쉽게 발견할 수 있는 데이터 세트로 학습시킨 후, 자신만의 색깔 있는 AI 애플리케이션을 만들 수 있다. 정말 행복하지 않은가?

전 세계적으로 챗봇 시장은 계속해서 확대되고 있으며, 2024년에는 94억 달러 규모로 시장이 형성될 것으로 보고 있다.

수년 전까지만 해도 다양한 시나리오에 대응할 수 있는 규칙기반 챗봇이 대세였다. 하지만 최근에는 딥러닝 기술의 발전으로 실제 자연어를 이해하고 응답하는 수준으로 올라왔다.

현재 챗봇은 쇼핑, 의료, 금융 등 다양한 분야에서 고객 상담 및 CS 처리, 더 나아가서는 고객과의 관계 강화를 위한 마케팅 커뮤니케이션 등 다양한 역할을 수행하고 있다.

이미 챗봇을 도입한 업체는 비용절감 효과와 고객 인사이트 확보 등 그 덕을 톡톡히 보고 있다. 최근에는 상담 치료나 만성질환 관리에 챗봇을 활용하는 방안도 적극 연구되고 있다. 

예전에 트랜스포머로 챗봇을 구현했었는데, 이때 답변의 퀄리티가 엄청 높아서 깜짝 놀랐던 기억이 난다.

프로그램을 돌릴 때마다 같은 질문에도 다르게 대답하는 것이 정말 재미있어서 하루 종일 내가 만든 챗봇과 이런저런 수다를 떨면서 시간을 보냈었다. 

트랜스포머로 챗봇 구현 후, 대화의 깊이로 감동했던 사례 ^^

마치 영어를 알면 접할 수 있는 세상의 넓이와 깊이가 무한하게 커지는 것과 동일하다.

마케터들은 이제 코딩을 배워야 한다. 그래야 개발자 분들에게 얽매이지 않고 여러분들이 실현하고 싶은 고객과의 관계 구축이 가능해진다. 

이 책의 목차를 보면 챗봇을 스스로 구현할 때 필요한 모든 요소들이 정말 친절하게 구성되어 있는 것을 확인할 수 있다. 

Chapter 1. 챗봇 입문하기

챗봇의 이해, 챗봇 활용 사례(카카오, 대학병원, 제약회사)

Chapter 2. 파이썬 시작하기

파이썬 소개, 기본(자료형, 제어문, 함수, 클래스, 모듈, 예외처리, 엑셀 파일 읽고 쓰는 법), 데이터 분석 라이브러리(넘파이, 팬더스, 맷플롯립)

Chapter 3. 토크나이징

토크나이징 소개, KoNLPy(Kkma, Komoran, Okt, 사용자 사전 구축)

Chapter 4. 임베딩 

임베딩이란, 단어 임베딩(원-핫 인코딩, 희소 표현과 분산 표현, Word2Vec)

Chapter 5. 텍스트 유사도

텍스트 유사도 개요, n-gram 유사도, 코사인 유사도

Chapter 6. 챗봇 엔진에 필요한 딥러닝 모델

케라스 정리(인공 신경망, 딥러닝 분류 모델 만들기, 학습된 딥러닝 모델 사용하기), 문장 분류를 위한 CNN 모델(CNN 모델 개념, 챗봇 문답 데이터 감정 분류 모델 구현, 챗봇 문답 데이터 감정 분류 모델 사용), 개체명 인식을 위한 양방향 LSTM 모델(RNN, LSTM, 양방향 LSTM, 개체명 인식)

Chapter 7. 챗봇 학습툴 만들기

MySQL 소개, 파이썬으로 DB 연동하기(DB 연결하기, 데이터 조작하기), 챗봇 학습툴 만들기(프로젝트 구조, 학습용 DB설계 및 데이터 테이블 생성, 챗봇 학습 데이터 엑셀 파일 및 DB 연동)

Chapter 8. 챗봇 엔진 만들기

챗봇 엔진 소개, 챗봇 엔진 구조, 전처리 과정, 단어 사전 구축 및 시퀀스 생성, 의도 분류 모델(의도 분류 모델 학습, 의도 분류 모델 생성), 개체명 인식 모델 학습(개체명 인식 모델 학습, 개체명 인식 모듈 생성), 챗봇 엔진 서버 개발(통신 프로토콜 정의, 다중 접속을 위한 TCP 소켓 서버, 챗봇 테스트 클라이언트 프로그램)

Chapter 9. 챗봇 API 만들기

챗봇 API 소개, 파이썬 Flask(Hello Flask, URI 동적 변수, 기본적인 REST API 서비스 구현), 챗봇 API 서버 구현

Chapter 10. 카카오톡 챗봇 만들기

카카오 아이 오픈 빌더 소개(카카오톡 채널 가입, 카카오 아이 오픈빌더 OBT 신청, 봇 생성), 카카오 챗봇 연동(시나리오와 블록, 스킬), 스킬 사용하기(스킬 서버 이해하기, 스킬 서버 만들기, 오픈빌더에서 스킬/블록 등록하기, 응답 타입별 JSON 포맷), 챗봇 API 서버에 카카오톡 연동(챗봇 API 서버 수정, 오픈빌더 폴백 블록 설정 및 스킬 연결)

Chapter 11. 네이버톡톡 챗봇 만들기

네이버톡톡 챗봇 플랫폼 소개(네이버 톡톡 가입, 챗봇 API 설정), 네이버톡톡 Chat Bot API v1(이벤트 명세, 메시지 타입 명세, 보내기 API 작성), 챗봇 API 서버에 네이버톡톡 연동(챗봇 API 서버 수정)

Appendix A. 개발 환경 구축

맥에서/윈도우에서 파이썬 설치하기, 아나콘다 설치하기, CLI 환경에서 콘다로 가상 환경 만들기, 기타 패키지 설치하기, PyCharm 설치 및 프로젝트 생성

Appendix B. AWS에서 챗봇 구동 환경 만들기

EC2, RDS

조금 아쉬웠던 것은 최근에 딥러닝의 전분야에서 트랜스포머가 두각을 나타내고 있으므로, 딥러닝 모델로 트랜스포머를 사용해서 한번 구현해 볼 수 있도록 했으면 더 좋지 않았을까 생각된다. 

이 책을 통해서 어렵게 구현했는데, 챗봇 성능이 좋지 않아서 엉뚱한 답변을 계속하게 되면 입문자 입장에서 흥미가 월등하게 떨어질 수 있기 때문이다.

뭔가 대답이 정말 인간 같다고 느껴진다면 본인이 개발한 것을 실제 업무에도 바로 적용할 수 있는 자신감을 갖게 된다.

그러면서 실제 업무에서 확보한 데이터로 챗봇의 성능을 더욱 향상해 볼 수 있다면, 이 책은 더 많은 분들에게 추천될 수 있을 것이라 생각된다. 

챗봇 학습툴을 만들기 위해서 MySQL을 소개하고, 파이썬으로 DB 연동하는 부분까지 다뤄준 것은 정말 좋았다.

독자가 MySQL과 DB 연동 부분을 잘 몰라도 바로 이 책 한 권으로 배우고 적용할 수 있기 때문에 정말 좋은 구성이라 생각된다. 

책 내용 중에서 가장 흥미롭게 읽었던 부분은 바로 Chapter 8의 "의도 분류 모델"이었다.

음식점 주문과 예약을 위한 챗봇에 특화되어 있는 chatbot_data.csv(송영숙 님 공개 데이터)를 활용한 사례이다.

다양한 의도를 분류하기에는 학습 데이터 수가 한정적이므로 인사, 욕설, 주문, 예약, 기타 5가지 의도로만 분류할 수 있도록 CNN 모델로 구현했다.

책의 내용을 편안하게 따라가면 의도 분류 모듈 IntentModel 객체를 생성하여 실제적으로 음식점 주문과 예약을 실제로 테스트해 볼 수 있다. 

Chapter 9에서는 스스로 만든 챗봇 엔진 서버와 직접 통신해 카카오톡이나 네이버톡톡 같은 다양한 메신저 플랫폼에서 사용할 수 있도록 '챗봇 API 서버'를 직접 만들어 본다.

각 플랫폼마다 통신 프로토콜이 다르기 때문에 새로운 플랫폼이 추가될 때마다 챗봇 엔진 서버 프로그램을 수정할 필요 없이 중간에 API 서버 계층을 두어 구현을 하는 방식이다.

각 플랫폼이 요구하는 통신 프로토콜은 API 서버에서 처리하고, 챗봇 엔진 서버와는 동일한 프로토콜로 통신할 수 있도록 구조화하는 방법을 배울 수 있다.

그다음에는 파이썬 Flask를 이용하여 웹 애플리케이션 프레임워크로 Flask를 사용하는 방법을 배운다. 

Chapter 10에서는 직접 만든 챗봇 엔진과 연동에 필요한 오픈빌더 기본 개념과 사용법을 배운다.

오픈빌더, 이 기능만으로도 강력한 성능을 가진 챗봇을 만들 수 있지만, 이 책에서 직접 만들어 본 챗봇 엔진을 카카오톡을 통해 확인해 보면서 매우 신기하다는 생각을 갖게 될 것이다. 

Chapter 11에서는 네이버톡톡과 우리가 만든 챗봇을 연동하는 방법을 배운다.

네이버톡톡은 카카오톡에 비해 다양한 API를 제공하고 있어 좀 더 개발자 친화적으로 챗봇 개발을 할 수 있다는 장점이 있다.

하지만 카카오톡에 비해서는 사용성이 떨어지는 단점도 발견할 수 있다.

네이버톡톡이 갖고 있는 장점으로는 앱 설치 없이 웹 상에서 다양한 네이버 서비스(네이버 검색, 네이버쇼핑, 네이버페이 등)를 활용할 수 있다는 점이다.

이런 장점을 적극 활용해서 추가로 적용해 본다면 카카오 챗봇과는 다른 서비스를 제공할 수도 있다. 

Appendix A에서 칭찬할 점은 프로젝트 개발 시에 디버깅 시에 많은 도움을 받을 수 있는 파이썬 용 IDE(Integrated Developement Environment) 중에서 가장 많은 사람들이 활용하고 있는 PyCharm을 설치하고 프로젝트를 생성하는 방법까지 알려줬다는 점이다.

정말 이 책을 읽는 독자의 관점에서 친절하다고 아니할 수 없다. 

챗봇을 구동시키기 위해 AWS의 EC2(Elastic Computer Cloud), EBS(Elastic Block Storage), RDS(Relational Database Service)가 필요하다.

Appendix B에서는 챗봇 구축에 필요한 최소한의 AWS 기본 모듈에 대해서 사용할 수 있는 방법에 대해서 설명해주고 있다.

물론 이 책의 부분만 봐서 모두 이해되지 않겠지만, 정말 꼭 필요한 부분만 뽑아서 정리해 놓았으므로, 기본적인 개념을 이해하고 바로 적용해 보기에는 큰 무리가 없다고 생각한다.

챗봇 엔진부터 NLP, 딥러닝, REST API, 카카오톡 연동, 네이버톡톡 연동에 이르기까지 챗봇에 필요한 기술과 친절한 구현 방법을 책 한 권으로 정말 잘 정리한 책이다.

개발을 하다 보면 필요한 지식을 검색하면서 자꾸 새로운 영역이 나오면서 또 공부 욕심 내고, 그러면서 삼천포로 새는 경우가 많다.

이 책에서는 어려운 개념은 직관적인 그림과 도식으로 설명하고, 필요 없는 부분은 과감하게 덜어내어 정말 꼭 필요한 부분만 압축해서 정리했다는 감탄을 하게 된다. 

또한 챗봇을 구현하는 데 필요한 개념을 습득하면서 코드로 차근차근 순서대로 구현해 나가다 보면, 어느새 챗봇이 완성되면서 딥러닝 전반과 챗봇의 구현 원리, 실무 적용 프로세스까지 모두 실전형으로 배울 수 있다. 

이렇게 프로젝트를 하나 하나 본인의 손으로 완성해 나가는 경험을 쌓아 가는 것이 중요하다.

그러는 과정에서 챗봇을 스스로 구현해 볼 수 있는 능력자 마케터로 거듭날 수 있으며, 개발자와 커뮤니케이션할 때에도 더 원활해지는 효과를 볼 수 있다. 

개발에 거부감이 있는 마케터 분들께 이 책을 추천한다. 

가장 친근한 딥러닝 애플리케이션이라고 할 수 있는 챗봇을 쉽게 구현해 볼 수 있도록 안내해 주는 정말 친절한 입문서 이기 때문이다. 

처음배우는 딥러닝 챗봇 - 한빛 출판사

※  한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

댓글