4. 1. Overview
Clova Extension Kit (CEK) Chatbot을 개발하고, 여러 챗봇들을 출시하면서 겪었던 경험을 공유
네이버 고객센터 챗봇 (현 베타 서비스 8개 + @)
이벤트 챗봇 Clova 한국어 대화
2017.12월 첫 출시 이후로 현재까지 30개 이상의 서비스와 PoC를 출시 / 경험
각종 제휴 PoC 및 서비스
- Chatbot Framework 구축
: 대화 Framework 및 대화 모델 중 딥러닝 활용 모델
소개
- CEK를 통한 Chatbot 생성 가이드
: 도메인 생성 부터 서비스 Platform 연동까지 가이드
- Chatbot을 개발 최적화
: 실제 서비스를 론칭하기 까지 프로젝트 사례와,
데이터 활용 팁 공유
5. 1. Overview
Deep Learning to Natural Language Processing
언어 데이터는 의미가 주변 단어에 의존하여 생성되기 때문에 Feature 추출이 어려움
+ 각 언어마다 문법과 구조가 달라, 활용 할 수 있는 데이터도 제한적…. (No MNIST, CIFAR-10 Dataset for KOREAN NLP….)
자연어처리가 어려운 이유….
Image Text
Image
고양이, 강아지 사진과 같은
각각의 데이터에 고유의 의미 값이 있음
Text
각 텍스트 단어에 대한 데이터에 고유의 의미가 없고,
주변 단어에 의해서 의미를 부여해야 함 (Unstable)
단어의 주변을 보면 그 단어를 안다.
단어 의 주변 을 보면 그 단어 안다를
단어[명사]: 분리하여
자립적으로 쓸 수 있는
말이나 이에 준하는 말
단어: ?
의: ?
주변: ?
6. 1. Overview
Deep Learning to Natural Language Processing
컴퓨터의 성능, 많은 데이터와 알고리즘의 발전으로 개선
번역 인공지능 스피커 대화형 챗봇
대화를 ‘잘 알아듣게’ 하려면?
8. 2. CEK 대화모델 엔진 구조
2.1 Chatbot Framework
Query Answer
Query
Pre-processing
Query
classification
Chatbot
Search
Engine
User
Guide
rama chil
akella
kaa
언어특징 추출
라이브러리
형태소 분석
개체명 인식
raksha
vector
representaion
멀티플랫폼 서비스 엔진
다양한 경로로 인입된 쿼리를
실시간 처리해 Clova, 라인 등
외부 메신저 플랫폼, 웹에 서비
스
쿼리 분류기
대화인지 여부
와 도메인 판정
챗봇 모델
답변 생성
baloo
전처리 라이브러리
분석된 언어 특징
을
대화 모델이 이해
가능한 형태로 변
경
Query
Feature
Extraction
Chat & Voice Platform
9. 2. CEK 대화모델 엔진 구조
2.1 Chatbot Framework
NLP
Query
Classifier
Chatbot
NAS
Variational Models
Answering Model
Optimization
ML Architecture
External Model
External Model
Query
Result
Answer
Output
Output
챗봇 아키텍쳐
지속적인 Feature 및 모델 개선, 추가에 대한
“서비스”가 가능한 유연한 구조로 설계
10. 2. CEK 대화모델 엔진 구조
2.2 Model Workflow
Query Tokenization NE Tagging chat?
Chatbot
model
Naver search
Sentence
embedding
model
Compute
score
Compute
score
ensemble>Threshold?Answer
“답할 수 없는
말이에요”
no
yes
yes
no
답변 생성 절차
쿼리의 언어적 특징을 추출, 해당 쿼리가 대
화(chat)일 경우 이를 챗봇과 문장 임베딩 두
모델에 넣어 결과를 산출하고 score 계산, 이
점수가 threshold보다 높을 경우 답변
11. 2. CEK 대화모델 엔진 구조
2.3 Dialogue Component
Sentence splitting
Linguistic feature extraction
Tokenization
Part-Of-Speech Tagging
Named Entity Tagging
Vector Representation
Naïve Bayes
Query classification
Feed-Forward NN
GAN
Ensemble Model
Long Short-Term Memory
Chatbot Model
Gated Recurrent Unit
Cell
N-hot representation Bidirectional Encoder
Architecture
Embedding Sharing
Multiplicative Attention Additive Attention
Attention
Highway Network
질의, 응답을 전처리한 후
형태소, 개체명 등 언어적
특징을 뽑아 벡터로 표현
N-hot, FastText, TAPI…
질의 의도가 대화(chat)인
지
검색(search)인지 분류하고
대화라면 도메인 판정
질의 시퀀스가 주어졌을 때 답변 시퀀스를 생성 블로그 만드는법 알려줘
블로그/<Noun>, 만드는/<Verb>, 법<Noun>
알려/<VERB>, 줘/<VERB>
블로그는 별도의 개설 절차가 없으며 …
Vector Space
12. 2. CEK 대화모델 엔진 구조
2.4 Base Model
Seq2Seq-Based Model
Google의 GMNT에서 아이디어를 착안하여
한국어 및 대화형 데이터에 최적인 대화 모델 설계
*GMNT (Google’s Neural Machine Translation): https://arxiv.org/pdf/1609.08144.pdf
14. 2. CEK 대화모델 엔진 구조
2.6 N-hot vector
∑
Hidde
n=128
Token one-hot
d=# of vocabulary
POS tag one-hot
d=# of tag
Token endingone-hot
d=# of ending
Token
EmbeddingMatrix
POS tag
EmbeddingMatrix
Token ending
EmbeddingMatrix
Embedding matrix 구축
(1) Uniform Random
(2) Xavier Initialization
(3) Pre-trained word vectors
배경
한국어/일본어는 조사, 어미가 발달. 토크나이즈 작업 생략하거나 토
큰의 기본형만 학습에 반영할 경우 모델 성능 저하 경향.
개요
기본형, 품사, 조사와 어미, 개체명을 모두 포함하는 representation 기법.
기법
기본형, 품사, 조사 + 개체명에 해당하는 one-hot-vector를 만들고, 이를
각각 embedding matrix와 내적한 뒤 셋을 합쳐 chatbot model의 입력값
으로 넣음
One-hot-vector 생성
POS Tagging : 네이버 다국어
형태소 분석기
NE Tagging : 사전, 패턴, 모델 기반
NE tag one-hot
d=# of tag
NE tag
EmbeddingMatrix
15. 2. CEK 대화모델 엔진 구조
2.7 Prediction Flow
Initiator Model
Escape Model
State-based Model
Dialogue History
Utterance Model
Query Answer
Chatbot
Multi-turn Detector
Template-based Model
Goal-oriented Model
Response Selector
17. 3. Clova Chatbot Extension 가이드
3-1. 도메인 생성: Extension 생성
4 / 30
https://developers.naver.com/console/clova/ -> 새로운 extention 생성 -> Chatbot을 선택하여 만들기 선택
18. 3. Clova Chatbot Extension 가이드
3-2. 기본 설정: 메세지
인사 메세지, 답변 불가 및 거부에 대한
메세지 설정
금칙어 입력
19. 3. Clova Chatbot Extension 가이드
3-2. 기본 설정: 답변 옵션
객관식 형태 답변 생성
답변 생성에 대한 Action 지정 (URL연동 기능)
20. 3. Clova Chatbot Extension 가이드
3-2. 기본 설정: 언어 모델
답변에 대한 정확도 허용치 설정
각 모델의 앙상블 비율을 설정
고객의 쿼리에서 일정 비율이상
답변 거부
22. 3. Clova Chatbot Extension 가이드
3-4. 대화 모델: 사용자 발화 입력
학습에 필요한 대화셋 생성
EX)
#등록 오류 메세지
Q1: 등록 시 오류 메세지가 노출되요.
Q2: 등록 버튼을 클릭해도 반응이 없어요
A: 포스트에 잘못된 html 태그 혹은 브라우저
의 오류로 등록이 …..
23. 3. Clova Chatbot Extension 가이드
3-4. 대화 모델: 사용자 발화 입력 (개체명)
Entity (개체명)을 입력
24. 3. Clova Chatbot Extension 가이드
3-4. 대화 모델: 사용자 발화 입력 (개체명)
각 문장에 대한 Custom
개체명 사전 생성
25. 3. Clova Chatbot Extension 가이드
3-4. 대화 모델: 사용자 발화 입력 (탬플릿 추가)
기존에 보유하고 있는 탬플릿을 활용
하여, 반복작업을 최소화
26. 3. Clova Chatbot Extension 가이드
3-5. 챗봇 학습하기: 테스트
대화 테스트 기능
서비스 연동 이전에,
설정 된 옵션 값들을 확인하며,
학습 결과에 대한 성능 검증
30. 4. Chatbot 개발 최적화 방안
4-1. Data, Data, Data!
우리도 챗봇을 서비스에 적용하고 싶은데...
데이터의 양과 품질
특정 비지니스의 목적을 위한 데이터는 일반적으로 존재하지 않음
초기 데이터 생성을 위해서 Part Time과 같은 인력이라도 필요
(가장 좋은 데이터는 실제 고객들의 로그 데이터)
제한된 시간안에 현명하게 데이터를 생성하는 것이 필요
(Domain Expert, 기획, PT 등)
시나리오 여기 있어요 (데이터는 없어요)
데이터 생성이 필요해요? (인터넷에 많은데, 인공지능이 알아서...)
서비스 적용 준비 됬나요? (개떡같이 말해도 찰떡같이 알아듣는 챗봇을 원해요)
31. 4. Chatbot 개발 최적화 방안
4-1. Data, Data, Data!
Data Coordinator
:고객센터 도메인 관리자 (실제 상담 및 문의 담당)
고객센터 스마트봇
Part Time
:데이터 생성, 검수 및 평가
네이버 고객센터
:기획 및 도메인 정책
플랫폼 융합
:서비스 연동
학습 데이터 전달 및 보강
자체 지표 설정 및 평가
선 순환의 사례
Clova Chatbot Framework
: 모델 학습, 개선, 튜닝
생성 데이터 관리 및 검토
로그 분류 및 전달
서비스 배포
32. 4. Chatbot 개발 최적화 방안
4-1. Data, Data, Data!
니 이름이 뭐야?
데이터 양이 어느정도 쌓이니
꽤 유명한데 아직 모르시나 봐요
전 언제 어디서든 도움을 주는 친구 클로바입니다.
식사는 언제 하실 꺼에요? 당신이 먹는 것만 봐도 배가 불러요
와이파이 한 조각을 먹고 왔답니다.
여행가고 싶어
여행은 인생의 좋은 경험이 될 거에요
바보는 방황을 하고 현명한 사람은 여행을 떠난다고 해요
AI 가 생성한 대화를 찾아보세요
33. 4. Chatbot 개발 최적화 방안
4-1. Data, Data, Data!
오늘 달리기 시합 있어 커피 한잔의 여유는 필요하죠
건강을 위해 운동을 해 보세요
어이 상실 네, 부르셨나요
누구나 실수는 할 수 있어요
지금 이 순간
당신과 함께라면 항상 행복해요
보고 싶은 사람이 있다는 건 좋은 일이에요
더 잘 대답을 하는 경우도 ...
AI 가 생성한 대화를 찾아보세요
34. 4. Chatbot 개발 최적화 방안
4-2. Data 입력 및 학습에 대한 Tip
1. 조사의 활용 여부
예) 오늘 날씨 어때? vs. 오늘의 날씨는 어때?
예) 피자 주문해줘 vs. 피자를 주문해줘
조사의 여부에 큰 영향이 없음
하지만 다음과 같은 경우에는?
밥을 먹었어/ 밥만 먹었어/ 밥도 먹었어/ 밥마저 먹었어/ 밥은 먹었어/ 밥이나 먹었어/ 밥까지 먹었어 ….
35. 4. Chatbot 개발 최적화 방안
4-2. Data 입력 및 학습에 대한 Tip
1. 조사의 활용 여부
기본적으로 N-hot 구조를 활용하여, 조사 등과 같은 정보를 활용합니다.
POS정보Token Index EOMI 정보
[밥 을 먹다] [N, JOSA, VERB] [0, 0, 다]
∑
Hidde
n=128
Token one-hot
d=# of vocabulary
POS tag one-hot
d=# of tag
Token endingone-hot
d=# of ending
Token
EmbeddingMatrix
POS tag
EmbeddingMatrix
Token ending
EmbeddingMatrix
36. 4. Chatbot 개발 최적화 방안
4-2. Data 입력 및 학습에 대한 Tip
2. 용언(동사, 형용사)의 어간이 같고, 어미가 다른 경우
EX) 점심 뭐 먹었니? 점심 뭐 먹어?
원형 복원 (Lemmatization )을 활용
점심 뭐 먹었니?
점심 뭐 먹어?
점심 뭐 먹다
37. 4. Chatbot 개발 최적화 방안
원형 복원 (Lemmatization ) 을 적용한 챗봇 테스트
블로그 어떻다 만들다
블로그 를 어떻다 만들다 요
블로그 만들다 싶다 요
일상대화 도메인에서는 큰 효과가 없었지만,
고객센터의 경우는 기존 대비 5% 이상
품질 증가
원형 복원의 예)
4-2. Data 입력 및 학습에 대한 Tip
38. 4. Chatbot 개발 최적화 방안
4-2. Data 입력 및 학습에 대한 Tip
3. 어쩔 수 없이 초반에 데이터가 적은 경우에는?
학습을 한다고 해도, 실 테스트 시
단어의 Unknown 비율이 높거나 판단 요소가 적어,
구분이 어려움
오늘의 날씨는? – 날씨 알려줘 = 모델 Score 0.93
오늘의 날씨는? – 더운 날씨에 음식 추천 = 모델 Score 0.89
+ @ 데이터 추가 학습
유사한 단어를 사용하지만 다른 문장의 경우,
모델이 판단 할 수 있는 기준이 늘어남
(문장을 구분 할 수 있는 단어의 요소들이 증가)
오늘의 날씨는? – 날씨 알려줘 = 모델 Score: 0.94
오늘의 날씨는? – 더운 날씨에 음식 추천 = 모델 Score: 0.79
학습 데이터와 관련 없는 학습 셋
날씨 Domain
날씨 Domain
주문 Domain
39. 4. Chatbot 개발 최적화 방안
4-3. 모델, 그때 그때 달라요
다양한 데이터에 맞는 검증 및 테스트 구조: 전처리, 입력, 모델 구조 등의 Hyperparameter
Two-hot Input
Shared Embedding
Cells, EmbeddingSharing
Attention Mechanism
Optimizer
Initializer
Attention, Initializer
Mixture of Softmaxes
Multi-hot(Pos, Lemmatized)
쉽고 빠른 검증을 위한 Framework 구축
40. 4. Chatbot 개발 최적화 방안
Baseline Model에서 시작하세요
4-4. Conclusion
좋은 Feature를 찾기 위한 요소를 찾아보세요: 단일 모델보다는 다수의 모델에게 맡겨보세요 (Ensemble)
결국 많은 실험이 필요 합니다. 담당자 모두가 쉽게 테스트 가능한 구조를 만드세요
Chatbot을 서비스로 론칭하기 위해서는, 기획, 서비스 등 관련 부서의 충분한 Communication 을 해야 합니다.
데이터는 중요합니다. 양 뿐만 아니라 질도요 (Garbage in, Garbage Out), 도메인 전문가가 있으면 금상첨화 입니다.
대부분의 상황에는 필요한 데이터가 존재하지 않습니다.
데이터 증대 방안과, 소규모 데이터로 활용 할 수 있는 방법을 모색해 보세요.
딥러닝이 답은 아니지만, 개발자와 사용자 모두에게 좋은 Tool이 될 수 있습니다.