챗봇, 엔진, NLP, 딥러닝, 파이썬, REST API, 카카오톡 연동
취미로 코딩 공부를 하면서 한 번쯤은 들어본, 한 번쯤은 공부해보고 싶은, 그러나 섣불리 시작해보기는 어렵겠다고 생각하는 단어들이다. (물론 개인적인 의견이다.)
챗봇은 이미 일상에서도 쉽게 경험해볼 수 있는 대상이 되었다. 카카오톡을 통해서 특정 채널을 추가하면 24시간 상담이 가능하다는 알림이 보인다. 궁금한 내용을 입력해보면 그에 맞는 답변도 제법 잘 안내해준다.
같은 질문이어도 사람들마나 만드는 문장들이 다를텐데...
컴퓨터가 맥락이란 것을 이해할 수 있나?
이런 궁금증이 늘 나에게 있었다. 물론 엉뚱한 대답을 할 때도 있겠지만 상당히 정확하게 맥락을 이해하는 것을 보면 놀랄 때가 많다. (이와는 별개로 카카오톡이나 구글 홈 미니 같은 장비들이 음성 인식을 하는 것도 정말 놀랍다.... 무서워...)
이번에 읽은 "처음 배우는 딥러닝 챗봇(한빛미디어)"은 이러한 궁금증들을 상당 부분 해소해 주었다.
우선 저자가 말하는 이 책의 독자는 파이썬 기본 개요와 웹 개발 지식을 알고 있으며, 한 번이라도 텐서플로 및 케라스로 딥러닝 모델을 학습해본 경험이 있는 독자들을 대상으로 한다고 한다. 파이썬 기본 문법, 기본적인 딥러닝 모델을 접해본 경험, 기본적인 데이터 베이스 이해, 기본적인 웹 개발 이해를 하고 있다면 도움이 많이 된다고 한다.
그렇다면 이 책을 읽고 있는 나는? 파이썬 기본 문법은 어느 정도 알고 있다. 텐서플로 및 케라스, 딥러닝 모델에 대해서는 얕게 공부해 보았지만 실습해본 경험은 없고 내용도 잘 기억나지는 않는다. 다시 정리하면 파이썬 기초 수준, 딥러닝에 대해서는 얕은 수준의 독자가 이 책을 읽어본 것으로 보면 된다.
1장에서는 챗봇에 대한 기본 개념과 챗봇 활용 사례들을 가볍게 다룬다. 이어서 2장에서는 파이썬의 기초 문법들을 소개해준다. 자료형, 제어문, 함수, 클래스, 모듈, 예외처리 부터 데이터 분석을 위한 넘파이와 팬더스, 맷플롯립 까지 광범위한 내용이지만 기본적인 것들을 가볍게 훑고 지나간다.
3장부터는 본격적으로 챗봇에서 사용되는 딥러닝 기술에 대해 소개한다. 자연어 처리 NLP (Natural Language Processing)의 토크나이징 개념을 설명하고 이를 파이썬으로 구현하기 위한 라이브러리 KoNLPy를 소개한다.
이어서 몇 가지 형태소 분석기를 간단히 소개한다. Kkma, Komoran, Okt 의 기초적인 구현 코드를 통해 어떻게 라이브러리를 사용하는지 가볍게 살펴볼 수 있었다.
4장에서는 임베딩 개념을 소개한다. 컴퓨터가 자연어를 직접 처리할 수 없어서 자연어를 숫자나 벡터 형태로 변환하는 개념이다. 여기에서 단어 임베딩은 말뭉치에서 각각의 단어를 벡터로 변환하는 기법을 의미한다.
가장 간단한 임베딩 방법부터 데이터 사이즈가 커지면서 발생하는 문제들을 해결하기 위한 최소 표현, 분산 표현, Word2Vec 모델과 같은 개념들을 재미있게 읽을 수 있었다.
5장에서는 문장 간의 의미가 얼마나 유사한지를 계산하는 텍스트 유사도 판단 기법들을 설명한다. n-gram 유사도, 코사인 유사도 개념을 소개합니다. 기초적인 벡터 계산을 할 수 있다면 많이 어렵지 않게 읽을 수 있었다. 이 책은 챗봇을 만드는게 목적이기 때문에 이런 기법들을 구현하는 방법에 대해서는 자세히 다루지 않고 개념과 라이브러리 사용법(파이썬 코드)에 대해서만 간략히 다룬다.
라이브러리를 사용하는 파이썬 코드가 제공되면 각각의 행에 대해서 구체적으로 설명해 주어서 코드를 이해하는데 큰 도움이 되었다.
6장에서는 챗봇 엔진에 필요한 딥러닝 모델에 대해 다룬다. 케라스, 인공 신경망(ANN: Artificial Neural Network), 합성곱 신경망(CNN: Convolutional Neural Network), 순환 신경망(RNN: Recurrent Neural Network), LSTM(Long Short Term Memory)에 대해 소개하고 있는데... 역시나... 어렵다.
이전과 마찬가지로 각 모델에 대한 이론적인 설명은 제공하나 그걸 구현하는 방법에 대한건 이 책의 범위를 벗어나는 일이고 각 라이브러리를 활용하는 방법에 대해 중점적으로 안내해준다. 딥러닝 모델을 구현하는 방법을 공부하고 싶다면 이런 책을 읽어봐야겠지... (오래 전에 읽어서... 그리고 대부분 이해를 못했지만... 그래도 이 책을 얄팍하게나마 읽어봤던게 조금은 도움이 된 것 같다...)
https://it4edu.tistory.com/152
다시 이 책으로 돌아와서... 7장에서는 챗봇 학습툴을 만들기 위해 MySQL과 파이썬의 연동, 프로젝트 구조에 대해 적혀있다. 챗봇이 학습한 내용들을 데이터베이스에 저장해 놓아 대화가 많아질 수록 답변이 보다 정확해지게 하기 위함이다.
8장부터는 본격적으로 챗봇 개발을 시작하고, 9장으로 넘어가면 파이썬 Flask, REST API, 10장에서는 카카오톡 챗봇, 11장에서는 네이버톡톡 챗봇을 만들어보는 과정을 알아본다.
생각보다 두껍지는 않은 책(400쪽 정도)임에도 챗봇을 구현하기 위해 필요한 광범위한 내용들(NLP, 딥러닝, REST API, 카카오톡 연동)을 다루고 있다. 책에서 담고자 하는 목적에 맞지 않는 부분은 과감히 생략하여 알짜 내용들을 만나볼 수 있었다. (물론 더 깊은 공부를 하려면 각각의 독립적인 책들을 구해서 읽어봐야겠지...)
챗봇을 만드는 프로젝트를 통해 이 다양한 내용들과 개발 과정을 접해볼 수 있어서 좋았다. 본격적인 딥러닝 공부에 앞서 입문서 느낌으로 읽어봐도 괜찮은 책인 것 같다.
* 제주도 출장다녀올 일이 있었는데, 오고가는 비행기 안에서 재미있게 읽어볼 수 있었다(물론 실습은 빼고!).
이 서평은 한빛미디어 <나는 리뷰어다 2022> 서평단 활동으로 무상으로 도서를 제공받아 작성하였습니다. 서평단 활동과 별개로 저의 관심과 필요에 따라 책을 읽고 객관적으로 서평을 작성하려고 노력하였습니다.