왓슨 컨버세이션으로 챗봇 만들기 ! wcs 활용법

47
Watson Conversation으로 쉽게 만드는 챗봇 IBM Developer Outreach Team

Upload: -

Post on 21-Jan-2018

1.778 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation으로쉽게 만드는 챗봇

IBMDeveloperOutreachTeam

Page 2: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Agenda

Watson Conversation 활용법

최신 챗봇 적용 사례 살펴보기

튜토리얼 따라하며 배우기

챗봇 프로젝트 방법론 및 Best Practices!

1

2

3

4

챗봇 도입 사례 살펴보기챗봇 트렌드 파악하기!

Watson Conversation UI 툴의 이해API 구조 및 사용 법 이해하기챗봇 Reference Architecture

메신저 연결하기, 질문 모으기, 대화서비스 만들기, 백엔드 연결하기직접실습합니다.

챗봇 프로젝트! 단계별로 알아보기챗봇을 검증하는 다양한 방법들

Page 3: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

ContactUs

#building-with-watson#watson-korea

facebook.com/groups/BluemixStudy

wdc-slack-inviter.mybluemix.net

http://stackoverflow.com/questions/tagged/watson-conversation

https://developer.ibm.com/answers/topics/watson-conversation.htmlhttps://developer.ibm.com/kr

Page 4: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation Service

Page 5: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation

I’mWatson.Icanhelpyouorderapizza.Whatsize?

Great!CanIgetamedium?

Perfect.Whattoppingsareyouinthemoodfortoday?

대화 기반 어플리케이션(챗봇)을 만들기 위해 필요한 모든 툴을 제공

사용자의 메세지를 머신러닝을 사용하여 이해하고 고객에게 응답

블루믹스에서 30일 Free Trial로 사용 가능

Page 6: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation 시나리오

아이스 아메리카노 한잔주세요.

의도 : 주문 ---à Intent메뉴 : 아이스 아메리카노 -à Entity수량 : 한 잔 --à SystemEntity

사이즈는 어떤걸로 드릴까요?

레귤러요

조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔부족한것 : 사이즈! -> 사이즈를 물어보자!->Response

사이즈 : 레귤러 à Entity

네! 주문이 완료되었습니다.

조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔- 사이즈 : 레귤러부족한것 : 없음! -> 주문을 넣어야 겠군!à Action

Page 7: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation 시나리오

아이스 아메리카노 한잔주세요.

의도 : 주문 ---à Intent메뉴 : 아이스 아메리카노 -à Entity수량 : 한 잔 --à SystemEntity

사이즈는 어떤걸로 드릴까요?

레귤러요

조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔부족한것 : 사이즈! -> 사이즈를 물어보자!->Response

사이즈 : 레귤러 à Entity

네! 주문이 완료되었습니다.

조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔- 사이즈 : 레귤러부족한것 : 없음! -> 주문을 넣어야 겠군!à Action

주문 Intent작성

메뉴 Entity 설정Dialog설정

Context 관리

Action관리사이즈 Entity 설정

Page 8: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Intent

[정의]

사용자가 하려는 말의 의도, 목적을 의미, #을 Prefix로 사용한다. Watson Conversation에서는 NLC(Natural Language Classifier)를 통해 문장의 Intent를 파악한다.

[예시]

• 오늘 예약 가능한 회의실 있어요?• 급하게 회의실이 필요한데 어디로 가면 돼요?• 회의실 예약해주세요.• 미팅룸 없을까요?• 회의실 예약좀 해줄래?

#회의실_예약

Page 9: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Entity

[정의]

Intent와 관련된 데이터 타입이나 클래스 를 의미하며 문장에서 주요한 컨텍스트를 제공하거나 분명한 문장을 만드는 명사. @을 Prefix로 사용한다.

[예시]

• Korea• IFC• 13층• 남쪽• 13M01

@위치 @날짜

• 오늘• 다음 주• 7월 7일• 지금• 금요일

Page 10: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

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

Page 11: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Dialog

[정의]

사용자와의 대화에 어떻게 응답할 것인가를 정의한다. 사용자의 메세지를인풋으로 하여 Intent와 Entity를 기반으로 적절한 응답을 설계한다.

[예시]

#예약

#인사 안녕하세요. 무엇을 도와드릴까요?

언제 필요하신가요?

@날짜 몇 명이 참석하나요?

Page 12: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Context

[정의]

대화의 문맥을 기억하기 위한 장치로 $를 prefix로 사용한다.

[예시]

$user.name님 안녕하세요?

김명민님 안녕하세요?

“context”:{“user”{“name”:“김명민”

}}

Page 13: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation ToolCSV Upload(question, intent)

Page 14: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation Tool

Page 15: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation

EasyTool

MixedInitiativeDialog

EasyIntegration

HighAccuracy

EasyTool

• 쉽고 직관적인 UI 툴로 개발자가아닌 사람도 쉽게 사용 가능!

• Intent,Entity,Dialog 기반의 대화 서비스 빌드

• 채팅 로그를 저장하고, 시스템을 개선시킬수 있는 보정 기능제공

HighAccuracy

• NLC(NaturalLanguageClassifier) 기반 Intent추측

• NLP(NaturalLanguageProcessing)과머신러닝 기반 Entity추출

MixedInitiativeDialog

• 사용자또는 시스템이 일방적으로 대화를 이끌기보다 적절하게 조화

• 한번의 Q&A에 그치는 것이아니라 Context를유지하면서 지속적인 대화 가능

EasyIntegration

• RestfulAPI 제공, 다양한개발 언어의 SDK 제공

• APIInput/Output의 JSON포맷을변형하여 다양하게 활용 가능

Page 16: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation API Overview

Watson Conversation API Explorer

POST /message

Page 17: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation API 이해하기

POST /message

{“intents”:[“intent”:“Greeting”“confidence”:0.99

],“entities”:[],“input”:{“text”:“Hi”

},“output”:{“text”:“HelloHJ”

},“context”:{“user”:“HJ"

}}

{“input”:{“text”:“Hi”

},“context”:{“user”:“HJ”

}}

Page 18: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Developer Cloud SDK

Page 19: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Watson Conversation 관련 문서 목록

Watson Conversation 소개 문서https://www.ibm.com/watson/developercloud/doc/conversation/index.htmlAPI 문서https://www.ibm.com/watson/developercloud/conversation/api/v1/#introductionAPI 테스트https://watson-api-explorer.mybluemix.net/apis/conversation-v1개발 툴, SDK, Starter Kithttps://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

Page 20: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

문맥 관리하기 (Context)

POST /message

간단한 방법

POST /message

DB에 저장하는 방법

Output의 context를 payload context로바로 저장

Output의 context를 DB에 저장Payload를전송하기전에 DB에서 Context를 가져옴

Page 21: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

시스템과 연동하기(예시)

Watson Response

{"output": {"action": "getPoint"

}}

“포인트 몇점있어요?”

“600 포인트남았어요.”

Watson Response

{"output": {”text": ”$point 포인트 남았어요."

}}

Payload{”context": {”point": 600

}}

Page 22: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

SPEL 사용하기

WatsonConversation에서 사용하는 ExpressionLanguage

Page 23: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

(정리) 서비스 다이어그램

사용자 메세지

응답 추출

인텐트 엔티티 문맥

응답

백엔드 시스템다른 서비스

NaturalLanguageClassification

EntityRecognition

Page 24: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 만들기 Reference Architecture

Page 25: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

다른 왓슨 서비스

Page 26: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 따라하며 배우기- 회의실 예약 챗봇

Page 27: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 만들기 Tutorial Architecture

사용자

인터페이스

어플리케이션

워크스페이스

ConversationService 백엔드 시스템

Page 28: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 소개

1. WCS 시작하기

2. 챗봇 노출하기

3. 질문 수집하기

4. Intent 분류하고 학습시키기

5. Entity와Dialog 설정하기

6. Backend 서비스와 연동하기

Page 29: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

사전 준비 사항

Bluemix Account 생성 및 CLI 설치1 2

3 GIT 설치

Node.js 설치

https://github.com/cloudfoundry/cli#downloads

https://console.ng.mybluemix.net https://nodejs.org/en/#download

https://git-scm.com/book/ko/v1/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%84%A4%EC%B9%98

Page 30: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

Developerworks

왓슨으로 쉽게 개발하는 카카오톡 챗봇 튜토리얼 시리즈

Page 31: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 1. WCS 시작하기

[목표]

• Bluemix에서 Watson Conversation 서비스 인스턴스 생성하기• WCS 툴에 접근하기• 내 Workspace 생성하기• 내 Credential 정보 확인하기

Page 32: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 2. 챗봇 노출하기

[목표]

• Web Client 로 노출 하기 (필수)• 카카오톡 연동 (옐로아이디 이미 있는경우에만, 선택)• 텔레그램 연동 (선택)

Page 33: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 3. 질문 수집하기

카카오톡에서

친구추가하여영문으로 회의실 예약을진행해주세요.

@camomile_bot

Page 34: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 4. Intent 분류하고 학습시키기

https://meetup23th.eu-gb.mybluemix.net/csv/questions

Page 35: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 5. Entity와 Dialog 설정하기

Page 36: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

튜토리얼 6. Backend 서비스와 연동하기

Page 37: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 Best Practice!

Groundtruth관리

Dialog설정

실험적

검증

질문

수집

Premise1.DataDrivenProject!!

Premise2.Incremental and iterative project

가능한빨리 오픈하여 실제 사용자 데이터를얻어야함

Page 38: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론

• 실제 사용자의 메세지를 수집하기 위한단계

• 수집한 메세지를 인텐트로 분류

Ground Truth

• 사용자에게 적절한응답을 주고 상호작용 하였는가를 확인하는 단계

• 적절한 통계 처리를통한 오류 분석

검증

• WCS를 사용하는UI를 생성한다.

• 생성한 어플리케이션을 사용자가 접근가능한 곳에 배포한다.

User Interface

• 더 나은 Dialog 흐름과 답변으로 시스템 개선

• Ground Truth 유지보수를 통해 시스템 개선

개선

• Dialog 흐름을 설정한다.

• 필요한 경우 Entity를설정한다.

대화 흐름 설정

Page 39: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 > User Interface

• WCS를 사용하는UI를 생성한다.

• 생성한 어플리케이션을 사용자가 접근 가능한 곳에 배포한다.

User Interface

1. 실제 사용자의 데이터 수집

2. 데이터 수집 단계에서 가능한 실제와 같이 !!

• 챗봇은 Data driven 프로젝트 ! -> 실제 사용자 예제가반드시 있어야 함

• 사용자가 도메인에 맞는 질문을 하도록 유도하는 UI가 필요• Device Type, UI 등이 모두 고려되어야 함

Page 40: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 : Ground Truth 관리(Intent)

• 실제 사용자의 메세지를 수집하기 위한단계

• 수집한 메세지를 인텐트로 분류

Ground Truth

1. GroundTruth는 MachineLearning 알고리즘을 학습시키기위한 TrainingData

2. 동일한 행동을 유발해야 하는 질문을 함께 그룹화

• Example– Intent Mapping• 챗봇의 정확도를 좌우함!

• 일관성이 중요

Page 41: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 : Dialog Flows

• Dialog 흐름을 설정한다.

• 필요한 경우 Entity를설정한다.

대화 흐름 설정

1. 시스템이 사용자와상호작용 하는 방식을 정의

2. 다양한 UI/UX를 활용

3. 필요한 경우 Entity 생성

• 친숙하고 사람같은챗봇 !• MultiStepDialog를 설계 (MixedInitiativeDialog!)• 가벼운대화

• 버튼• 지도• 이미지

Page 42: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 : 검증

• 간단한 실험 디자인

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 Watson

Metrics

Page 43: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 : 검증

• 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

Page 44: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 : 검증

• Accuracy: 시스템이 Intent를 정확하게 예측 한 질문의 비율

• Precision @ k: 시스템이 가장 높은 신뢰점수를 가진상위 K개의 예측된 Intent 사이에 올바른의도가 있는 질문의 비율

시스템이 정확하게 예측한 테스트 케이스

총테스트 케이스

가장 높은 신뢰도로 예측한 상위 K개의 예측된 Intent에 올바른인텐트가 있는 케이스

총테스트 케이스

Page 45: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 : 개선

• 정확도를 높이기 위해서는 ! Intent Overlapping이 최소화되어야 함

• 비슷한 Intent 는 재작업이 필요 !• Intent를 나눈다. 더 작은 인텐트를 생성한다.• 두 Intent의 Example이 비슷하게 형성되어 있으면 Intent를 합친다• 에러를 방지하기 위해 Example을 재다시맵핑한다

– 대표성이 낮은 인텐트는 구분이 힘들다.• Intent가 대표성을 가지도록더많은 질문을 수집 – Example은 다다익선

• Key Task : 질문과 Intent를 재맵핑한다.– 오류 및 품질 저하를 피하기 위해 윈칙적인 방법으로 수행– Validation 단계에서 유용한 힌트를 얻을 수 있음

• 더 나은 Dialog 흐름과 답변으로 시스템 개선

• Ground Truth 유지보수를 통해 시스템 개선

개선

Page 46: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

챗봇 프로젝트 방법론 : 개선

Page 47: 왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법

ContactUs

#building-with-watson#watson-korea

facebook.com/groups/BluemixStudy

wdc-slack-inviter.mybluemix.net

http://stackoverflow.com/questions/tagged/watson-conversation

https://developer.ibm.com/answers/topics/watson-conversation.htmlhttps://developer.ibm.com/kr