2. Agenda
Watson Conversation 활용법
최신 챗봇 적용 사례 살펴보기
튜토리얼 따라하며 배우기
챗봇 프로젝트 방법론 및 Best Practices!
1
2
3
4
챗봇 도입 사례 살펴보기
챗봇 트렌드 파악하기!
Watson Conversation UI 툴의 이해
API 구조 및 사용 법 이해하기
챗봇 Reference Architecture
메신저 연결하기, 질문 모으기, 대화
서비스 만들기, 백엔드 연결하기직접
실습합니다.
챗봇 프로젝트! 단계별로 알아보기
챗봇을 검증하는 다양한 방법들
7. Watson Conversation 시나리오
아이스 아메리카노 한잔
주세요.
의도 : 주문 ---à Intent
메뉴 : 아이스 아메리카노 -à Entity
수량 : 한 잔 --à System Entity
사이즈는 어떤
걸로 드릴까요?
레귤러요
조건 : 메뉴, 사이즈, 수량
문맥 :
- 메뉴 : 아이스 아메리카노
- 수량 : 한잔
부족한것 : 사이즈! -> 사이즈를 물어보자! -> Response
사이즈 : 레귤러 à Entity
네! 주문이 완료
되었습니다.
조건 : 메뉴, 사이즈, 수량
문맥 :
- 메뉴 : 아이스 아메리카노
- 수량 : 한잔
- 사이즈 : 레귤러
부족한것 : 없음! -> 주문을 넣어야 겠군! à Action
주문 Intent 작성
메뉴 Entity 설정
Dialog 설정
Context 관리
Action 관리
사이즈 Entity 설정
8. Intent
[정의]
사용자가 하려는 말의 의도, 목적을 의미, #을 Prefix로 사용한다. Watson
Conversation에서는 NLC(Natural Language Classifier)를 통해 문장의 Intent
를 파악한다.
[예시]
• 오늘 예약 가능한 회의실 있어요?
• 급하게 회의실이 필요한데 어디로 가면 돼요?
• 회의실 예약해주세요.
• 미팅룸 없을까요?
• 회의실 예약좀 해줄래?
#회의실_예약
9. Entity
[정의]
Intent와 관련된 데이터 타입이나 클래스 를 의미하며 문장에서 주요한 컨텍
스트를 제공하거나 분명한 문장을 만드는 명사. @을 Prefix로 사용한다.
[예시]
• Korea
• IFC
• 13층
• 남쪽
• 13M01
@위치 @날짜
• 오늘
• 다음 주
• 7월 7일
• 지금
• 금요일
10. System Entity
[정의]
미리 정의된 엔티티로 @을 Prefix로 사용한다.
https://www.ibm.com/watson/developercloud/doc/conversation/system-
entities.html#sys-date-and-sys-time-entities
[예시]
• Today
• 2017-04-26
• Now
• Friday
• April 26
@sys-date @sys-time
• Now
• 2pm
• At 5
• 15:30
• From 2 to 3
11. Dialog
[정의]
사용자와의 대화에 어떻게 응답할 것인가를 정의한다. 사용자의 메세지를
인풋으로 하여 Intent와 Entity를 기반으로 적절한 응답을 설계한다.
[예시]
#예약
#인사 안녕하세요. 무엇을 도와드릴까요?
언제 필요하신가요?
@날짜 몇 명이 참석하나요?
15. Watson Conversation
Easy Tool
Mixed Initiative
Dialog
Easy
Integration
High
Accuracy
Easy Tool
• 쉽고 직관적인 UI 툴로 개발자가
아닌 사람도 쉽게 사용 가능!
• Intent, Entity, Dialog 기반의 대
화 서비스 빌드
• 채팅 로그를 저장하고, 시스템
을 개선시킬 수 있는 보정 기능
제공
High Accuracy
• NLC(Natural Language Classifi
er) 기반 Intent 추측
• NLP(Natural Language Proces
sing)과 머신러닝 기반 Entity
추출
Mixed Initiative Dialog
• 사용자 또는 시스템이 일
방적으로 대화를 이끌기
보다 적절하게 조화
• 한번의 Q&A에 그치는 것이
아니라 Context를 유지하면
서 지속적인 대화 가능
Easy Integration
• Restful API 제공, 다양한
개발 언어의 SDK 제공
• API Input/Output의 JSON
포맷을 변형하여 다양하
게 활용 가능
19. Watson Conversation 관련 문서 목록
Watson Conversation 소개 문서
https://www.ibm.com/watson/developercloud/doc/conversation/index.html
API 문서
https://www.ibm.com/watson/developercloud/conversation/api/v1/#introduction
API 테스트
https://watson-api-explorer.mybluemix.net/apis/conversation-v1
개발 툴, SDK, Starter Kit
https://www.ibm.com/watson/developercloud/developer-tools.html
튜토리얼
https://developer.ibm.com/kr/cloud/bluemix/watsonservice/2017/01/13/watsonchatbot-1-
watson-conversation/
샘플 코드
https://github.com/watson-developer-cloud/conversation-simple
20. 문맥 관리하기 (Context)
POST /message
간단한 방법
POST /message
DB에 저장하는 방법
Output의 context를 payload context
로 바로 저장
Output의 context를 DB에 저장
Payload를 전송하기 전에 DB에서 Context를 가져옴
29. 사전 준비 사항
Bluemix Account 생성 및 CLI 설치1 2
3 GIT 설치
Node.js 설치
https://github.com/cloudfoundry/cli#dow
nloads
https://console.ng.mybluemix.net
https://nodejs.org/en/#d
ownload
https://git-
scm.com/book/ko/v1/%EC%8B%9
C%EC%9E%91%ED%95%98%EA%B
8%B0-Git-
%EC%84%A4%EC%B9%98
37. 챗봇 프로젝트 Best Practice!
Ground truth
관리
Dialog
설정
실험적
검증
질문
수집
Premise 1. Data Driven Project !!
Premise 2. Incremental and iterative
project
가능한 빨리 오픈하여 실제 사용자 데이터를
얻어야 함
38. 챗봇 프로젝트 방법론
• 실제 사용자의 메세
지를 수집하기 위한
단계
• 수집한 메세지를 인
텐트로 분류
Ground Truth
• 사용자에게 적절한
응답을 주고 상호작
용 하였는가를 확인
하는 단계
• 적절한 통계 처리를
통한 오류 분석
검증
• WCS를 사용하는
UI를 생성한다.
• 생성한 어플리케이
션을 사용자가 접근
가능한 곳에 배포한
다.
User Interface
• 더 나은 Dialog 흐
름과 답변으로 시
스템 개선
• Ground Truth 유
지보수를 통해 시
스템 개선
개선
• Dialog 흐름을 설정한
다.
• 필요한 경우 Entity를
설정한다.
대화 흐름 설정
39. 챗봇 프로젝트 방법론 > User Interface
• WCS를 사용하는
UI를 생성한다.
• 생성한 어플리케이
션을 사용자가 접
근 가능한 곳에 배
포한다.
User Interface
1. 실제 사용자의 데이터 수집
2. 데이터 수집 단계에서 가능한 실제와 같이 !!
• 챗봇은 Data driven 프로젝트 ! -> 실제 사용자 예제가
반드시 있어야 함
• 사용자가 도메인에 맞는 질문을 하도록 유도하는 UI가 필요
• Device Type, UI 등이 모두 고려되어야 함
40. 챗봇 프로젝트 방법론 : Ground Truth 관리(Intent)
• 실제 사용자의 메세
지를 수집하기 위한
단계
• 수집한 메세지를 인
텐트로 분류
Ground Truth
1. Ground Truth는 Machine Learning 알고리즘을 학습시키기
위한 Training Data
2. 동일한 행동을 유발해야 하는 질문을 함께 그룹화
• Example – Intent Mapping
• 챗봇의 정확도를 좌우함!
• 일관성이 중요
41. 챗봇 프로젝트 방법론 : Dialog Flows
• Dialog 흐름을 설정한
다.
• 필요한 경우 Entity를
설정한다.
대화 흐름 설정
1. 시스템이 사용자와 상호작용 하는 방식을 정의
2. 다양한 UI/UX를 활용
3. 필요한 경우 Entity 생성
• 친숙하고 사람같은 챗봇 !
• Multi Step Dialog를 설계 ( Mixed Initiative Dialog !)
• 가벼운 대화
• 버튼
• 지도
• 이미지
42. 챗봇 프로젝트 방법론 : 검증
• 간단한 실험 디자인
Question Answer
Question 1 Answer 1
Question 2 Answer 1
Question 3 Answer 2
Question 4 Answer 3
Question 5 Answer 3
…. …
Question N Answer N
Question Answer
Question 1 Answer 1
Question 3 Answer 2
Question 4 Answer 3
…. …
Question N Answer N
Question Answer
Question 2 Answer 1
Question 5 Answer 3
…. …
Question N Answer N
랜덤하게 Training
Set와 Test Set 으로
분할
Tests
Trained W
atson
Metrics
43. 챗봇 프로젝트 방법론 : 검증
• K-Fold Cross Validation
• 트레이닝/테스트를 K번 반복 실행함으로써 K세트의 메트릭을 얻는다.
• 평균과 표준 편차, 신뢰 구간을 얻을 수 있다.
Training Training Training Training Testing Accuracy / Precision@k
Training Training Training Testing Training
Training Training Testing Training Training
Training Testing Training Training Training
Testing Training Training Training Training
Average: Accuracy / Precision
Accuracy / Precision@k
Accuracy / Precision@k
Accuracy / Precision@k
Accuracy / Precision@k
44. 챗봇 프로젝트 방법론 : 검증
• Accuracy: 시스템이 Intent를 정확하게 예측 한 질문의 비율
• Precision @ k: 시스템이 가장 높은 신뢰 점수를 가진 상위 K개의 예측된 Intent 사이에 올바른
의도가 있는 질문의 비율
시스템이 정확하게 예측한 테스트 케이스
총 테스트 케이스
가장 높은 신뢰도로 예측한 상위 K개의 예측된 Intent에 올바른인텐트가 있는 케이스
총 테스트 케이스
45. 챗봇 프로젝트 방법론 : 개선
• 정확도를 높이기 위해서는 ! Intent Overlapping이 최소화
되어야 함
• 비슷한 Intent 는 재작업이 필요 !
• Intent를 나눈다. 더 작은 인텐트를 생성한다.
• 두 Intent의 Example이 비슷하게 형성되어 있으면 Intent를 합친다
• 에러를 방지하기 위해 Example을 재다시맵핑한다
– 대표성이 낮은 인텐트는 구분이 힘들다.
• Intent가 대표성을 가지도록 더 많은 질문을 수집 – Example은 다다익선
• Key Task : 질문과 Intent를 재맵핑한다.
– 오류 및 품질 저하를 피하기 위해 윈칙적인 방법으로 수행
– Validation 단계에서 유용한 힌트를 얻을 수 있음
• 더 나은 Dialog 흐
름과 답변으로 시
스템 개선
• Ground Truth 유
지보수를 통해 시
스템 개선
개선