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

딥러닝, NLP, 챗봇 등은 회사에서 아주 자주 들을 수 있는 용어들이다. 내가 담당하지는 않지만 분명히 관심이 있는 영역이기에 그 용어들의 정확한 개념과 서로 어떻게 엮여있는지에 대해서 알고 싶었다. 그래서 이 책을 더욱 재밌게 읽을 수 있었다.
이 책은 Python의 설치, REST API에 대한 설명처럼 아주 기본적인 부분부터 설명이 나와 있다.
아주 기초적인 부분이어도 짤막하게 나마 설명이 있어서 더욱 명쾌하게 개념이 잡히는 기분이었다. (당연히 모든 개념에 대해 자세히 설명할 수는 없고, 세상에 그런 책은 없을 것이다.) 그렇게 해서 결국 책의 후반부에서는 그 개념들로 챗봇을 만들어 본다.
책의 서문에는 ‘파이썬 기본 개요와 웹 개발 지식을 알고 있으며, 한 번이라도 텐서플로 및 케라스로 딥러닝 모델을 학습해본 경험이 있는 독자들을 대상으로 쓰였습니다.‘라고 쓰여있다. 파이썬 기본 개요와 웹 개발 지식은 아주 조금은 알고 있는 것 같지만, 텐서플로나 케라스를 써 본적은 없어서 조금 겁을 먹었던 것이 사실이다. 하지만 책의 자세한 설명 덕분에 아주 어렵지 않게 책을 따라갈 수 있었다.

목차

목차가 좀 길기는 하지만, 정말 잘 짜여진 목차라고 생각이 들어서 큰 챕터들만 가져와보았다.

  CHAPTER 1 챗봇 입문하기  
  CHAPTER 2 파이썬 시작하기  
  CHAPTER 3 토크나이징  
  CHAPTER 4 임베딩  
  CHAPTER 5 텍스트 유사도  
  CHAPTER 6 챗봇 엔진에 필요한 딥러닝 모델  
  CHAPTER 7 챗봇 학습툴 만들기  
  CHAPTER 8 챗봇 엔진 만들기  
  CHAPTER 9 챗봇 API 만들기  
  CHAPTER 10 카카오톡 챗봇 만들기  
  CHAPTER 11 네이버톡톡 챗봇 만들기 

이 책의 목차는 아래와 같이 크게 3부분으로 나눌 수 있다.
1.우리가 왜 챗봇을 만들어볼 것이고
2.그것을 만들기 위해 어떤 것을 알아야하는지
3.그것들을 이용해서 어떻게 만들 것인지

나는 목적의식이 있는 개발을 좋아하고, 그에 재미를 느낀다. 이 책은 우리가 이 책을 읽는 목적과 함께 개념들에 대해 상세히 알려주어서 많은 도움이 되었다.

책을 통해 정리한 개념들

  • 챗봇 엔진은 NLP의 한 분야
  • 토크나이징: 형태소(일정한 의미가 있는 가장 작은 정보 단위)를 토큰 단위로 정보를 나누는 작업

    • 문장 형태의 데이터 처리 위한 첫 단계
    • KoNLPy: 한국어 토크나이징을 지원하는 파이썬 라이브러리

      • KoNLPy에서 지원하는 3가지 종류의 형태소 분석기:Kkma, Komoran, Okt
      • 인식하지 못하는 단어들에 대해 데이터 기반으로 새로운 단어 추출 가능 & 직접 추가 가능
  • 임베딩: 자연어를 숫자나 벡터 공간으로 표현하는 과정

    • 개별 단어를 벡터로 표현하는 것이 문장 전체를 벡터로 표현하는 것보다 간단
    • 단어 임베딩의 방법들

      • 원-핫 인코딩: 단어의 순서에 의한 인덱스 기반으로 인코딩 → 단어끼리의 유사도는 모름,

        • 희소 표현 방식: 메모리 비효율적 ↔ 반대: 분산표현 = 밀집표현 (밀집벡터: 밀집표현으로 만들어진 벡터)
      • Word2Vec: 구글에서 발표한 가장 많이 사용되는 신경망 기반 단어 임베딩 모델

        • CBOW: 주변단어로 타깃 단어 예측
        • skip-gram: 하나의 타깃 단어로 주변 단어 예측
        • 단어를 밀집벡터로 표현하고, 학습을 통해 유사도 있는 단어들을 비슷한 벡터 공간에 위치 시킨다.
    • 말뭉치의 품질과 데이터양이 충분하다면 훌륭한 임베딩 모델 구축 가능
  • 텍스트 유사도: 각 단어의 벡터를 구한 뒤 다음 벡터간의 거리 계산으로 유사도 파악

    • 인공 신경망 이용
    • 통계 이용: 챗봇, FAQ처럼 인풋의 범위가 정해져 있을 때 적합
    • n-gram: 주어진 문장에서 n개의 연속적인 단어의 나열(n개의 단어 묶음을 하나의 토큰으로 사용) → 이웃한 단어의 출현 빈도를 통계적으로 표현 → 문장 간의 유사도 파악
    • 코사인 유사도: 두 벡터간의 코사인 각도로 유사도 측정
  • 케라스: 신경망 모델을 구축할 수 있는 API라이브러리로 텐서플로 2.0에서 기본 API로 채택

    • 인공 신경망: 입력 신호 → 임계치 이상의 신호이면 → 다른 뉴런으로 신호 보냄
    • 학습: 실제 정답에 근사하는 출력값을 만들기 위해 뉴런의 가중치와 편향값을 조정하는 것

감상

챗봇을 제작함에 있어 꼭 필요한 개념과 그것을 이용한 실습과정을 두껍지 않은 한 권의 책으로 다루고 있다는 것이 가장 매력적이었다. 챗봇을 만들어야 할 때 이 책 하나만 있으면 든든할 것 같은 느낌!
다소 어려운 개념들도 있었지만, 그건 내가 처음 보는 것들이어서 낯설게 다가와서인 것 같다. 실제로 책에서도 어려운 부분이 있었다면 다시 책을 보거나 학습할 내용에 대해서도 권장해주기도 한다.
또한 흐름을 놓치지 않도록 배려가 잘 되어 있는 것도 좋았다. 아래의 이미지처럼 NOTE 항목을 통해 현재 읽고 있는 부분이 전체에서 어떤 역할을 차지하는지와

아래의 이미지처럼 코드에서 해당 부분이 어떤 역할을 차지하는지 주석과 설명을 통해 자세한 서술이 되어 있다.

챗봇을 만들어보고 싶은데, 수많은 개념과 응용방법으로 감이 잡히지 않는다면 우선 이 책으로 발걸음을 내딛기를 권하고 싶다.



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


Written by
Sunmin
어제보다 나은 오늘을 만들기 위해 배우고, 기록하고, 회고합니다. Maker. Reader. Realistic optimist.