왓슨 컨버세이션으로 챗봇 만들기 ! wcs 활용법
TRANSCRIPT
Watson Conversation으로쉽게 만드는 챗봇
IBMDeveloperOutreachTeam
Agenda
Watson Conversation 활용법
최신 챗봇 적용 사례 살펴보기
튜토리얼 따라하며 배우기
챗봇 프로젝트 방법론 및 Best Practices!
1
2
3
4
챗봇 도입 사례 살펴보기챗봇 트렌드 파악하기!
Watson Conversation UI 툴의 이해API 구조 및 사용 법 이해하기챗봇 Reference Architecture
메신저 연결하기, 질문 모으기, 대화서비스 만들기, 백엔드 연결하기직접실습합니다.
챗봇 프로젝트! 단계별로 알아보기챗봇을 검증하는 다양한 방법들
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
Watson Conversation Service
Watson Conversation
I’mWatson.Icanhelpyouorderapizza.Whatsize?
Great!CanIgetamedium?
Perfect.Whattoppingsareyouinthemoodfortoday?
대화 기반 어플리케이션(챗봇)을 만들기 위해 필요한 모든 툴을 제공
사용자의 메세지를 머신러닝을 사용하여 이해하고 고객에게 응답
블루믹스에서 30일 Free Trial로 사용 가능
Watson Conversation 시나리오
아이스 아메리카노 한잔주세요.
의도 : 주문 ---à Intent메뉴 : 아이스 아메리카노 -à Entity수량 : 한 잔 --à SystemEntity
사이즈는 어떤걸로 드릴까요?
레귤러요
조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔부족한것 : 사이즈! -> 사이즈를 물어보자!->Response
사이즈 : 레귤러 à Entity
네! 주문이 완료되었습니다.
조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔- 사이즈 : 레귤러부족한것 : 없음! -> 주문을 넣어야 겠군!à Action
Watson Conversation 시나리오
아이스 아메리카노 한잔주세요.
의도 : 주문 ---à Intent메뉴 : 아이스 아메리카노 -à Entity수량 : 한 잔 --à SystemEntity
사이즈는 어떤걸로 드릴까요?
레귤러요
조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔부족한것 : 사이즈! -> 사이즈를 물어보자!->Response
사이즈 : 레귤러 à Entity
네! 주문이 완료되었습니다.
조건 : 메뉴, 사이즈, 수량문맥 :- 메뉴 : 아이스 아메리카노- 수량 : 한잔- 사이즈 : 레귤러부족한것 : 없음! -> 주문을 넣어야 겠군!à Action
주문 Intent작성
메뉴 Entity 설정Dialog설정
Context 관리
Action관리사이즈 Entity 설정
Intent
[정의]
사용자가 하려는 말의 의도, 목적을 의미, #을 Prefix로 사용한다. Watson Conversation에서는 NLC(Natural Language Classifier)를 통해 문장의 Intent를 파악한다.
[예시]
• 오늘 예약 가능한 회의실 있어요?• 급하게 회의실이 필요한데 어디로 가면 돼요?• 회의실 예약해주세요.• 미팅룸 없을까요?• 회의실 예약좀 해줄래?
#회의실_예약
Entity
[정의]
Intent와 관련된 데이터 타입이나 클래스 를 의미하며 문장에서 주요한 컨텍스트를 제공하거나 분명한 문장을 만드는 명사. @을 Prefix로 사용한다.
[예시]
• Korea• IFC• 13층• 남쪽• 13M01
@위치 @날짜
• 오늘• 다음 주• 7월 7일• 지금• 금요일
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
Dialog
[정의]
사용자와의 대화에 어떻게 응답할 것인가를 정의한다. 사용자의 메세지를인풋으로 하여 Intent와 Entity를 기반으로 적절한 응답을 설계한다.
[예시]
#예약
#인사 안녕하세요. 무엇을 도와드릴까요?
언제 필요하신가요?
@날짜 몇 명이 참석하나요?
Context
[정의]
대화의 문맥을 기억하기 위한 장치로 $를 prefix로 사용한다.
[예시]
$user.name님 안녕하세요?
김명민님 안녕하세요?
“context”:{“user”{“name”:“김명민”
}}
Watson Conversation ToolCSV Upload(question, intent)
Watson Conversation Tool
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포맷을변형하여 다양하게 활용 가능
Watson Conversation API Overview
Watson Conversation API Explorer
POST /message
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”
}}
Watson Developer Cloud SDK
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
문맥 관리하기 (Context)
POST /message
간단한 방법
POST /message
DB에 저장하는 방법
Output의 context를 payload context로바로 저장
Output의 context를 DB에 저장Payload를전송하기전에 DB에서 Context를 가져옴
시스템과 연동하기(예시)
Watson Response
{"output": {"action": "getPoint"
}}
“포인트 몇점있어요?”
“600 포인트남았어요.”
Watson Response
{"output": {”text": ”$point 포인트 남았어요."
}}
Payload{”context": {”point": 600
}}
SPEL 사용하기
WatsonConversation에서 사용하는 ExpressionLanguage
(정리) 서비스 다이어그램
사용자 메세지
응답 추출
인텐트 엔티티 문맥
응답
백엔드 시스템다른 서비스
NaturalLanguageClassification
EntityRecognition
챗봇 만들기 Reference Architecture
다른 왓슨 서비스
튜토리얼 따라하며 배우기- 회의실 예약 챗봇
챗봇 만들기 Tutorial Architecture
사용자
인터페이스
어플리케이션
워크스페이스
ConversationService 백엔드 시스템
튜토리얼 소개
1. WCS 시작하기
2. 챗봇 노출하기
3. 질문 수집하기
4. Intent 분류하고 학습시키기
5. Entity와Dialog 설정하기
6. Backend 서비스와 연동하기
사전 준비 사항
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
Developerworks
왓슨으로 쉽게 개발하는 카카오톡 챗봇 튜토리얼 시리즈
튜토리얼 1. WCS 시작하기
[목표]
• Bluemix에서 Watson Conversation 서비스 인스턴스 생성하기• WCS 툴에 접근하기• 내 Workspace 생성하기• 내 Credential 정보 확인하기
튜토리얼 2. 챗봇 노출하기
[목표]
• Web Client 로 노출 하기 (필수)• 카카오톡 연동 (옐로아이디 이미 있는경우에만, 선택)• 텔레그램 연동 (선택)
튜토리얼 3. 질문 수집하기
카카오톡에서
친구추가하여영문으로 회의실 예약을진행해주세요.
@camomile_bot
튜토리얼 4. Intent 분류하고 학습시키기
https://meetup23th.eu-gb.mybluemix.net/csv/questions
튜토리얼 5. Entity와 Dialog 설정하기
튜토리얼 6. Backend 서비스와 연동하기
챗봇 프로젝트 Best Practice!
Groundtruth관리
Dialog설정
실험적
검증
질문
수집
Premise1.DataDrivenProject!!
Premise2.Incremental and iterative project
가능한빨리 오픈하여 실제 사용자 데이터를얻어야함
챗봇 프로젝트 방법론
• 실제 사용자의 메세지를 수집하기 위한단계
• 수집한 메세지를 인텐트로 분류
Ground Truth
• 사용자에게 적절한응답을 주고 상호작용 하였는가를 확인하는 단계
• 적절한 통계 처리를통한 오류 분석
검증
• WCS를 사용하는UI를 생성한다.
• 생성한 어플리케이션을 사용자가 접근가능한 곳에 배포한다.
User Interface
• 더 나은 Dialog 흐름과 답변으로 시스템 개선
• Ground Truth 유지보수를 통해 시스템 개선
개선
• Dialog 흐름을 설정한다.
• 필요한 경우 Entity를설정한다.
대화 흐름 설정
챗봇 프로젝트 방법론 > User Interface
• WCS를 사용하는UI를 생성한다.
• 생성한 어플리케이션을 사용자가 접근 가능한 곳에 배포한다.
User Interface
1. 실제 사용자의 데이터 수집
2. 데이터 수집 단계에서 가능한 실제와 같이 !!
• 챗봇은 Data driven 프로젝트 ! -> 실제 사용자 예제가반드시 있어야 함
• 사용자가 도메인에 맞는 질문을 하도록 유도하는 UI가 필요• Device Type, UI 등이 모두 고려되어야 함
챗봇 프로젝트 방법론 : Ground Truth 관리(Intent)
• 실제 사용자의 메세지를 수집하기 위한단계
• 수집한 메세지를 인텐트로 분류
Ground Truth
1. GroundTruth는 MachineLearning 알고리즘을 학습시키기위한 TrainingData
2. 동일한 행동을 유발해야 하는 질문을 함께 그룹화
• Example– Intent Mapping• 챗봇의 정확도를 좌우함!
• 일관성이 중요
챗봇 프로젝트 방법론 : Dialog Flows
• Dialog 흐름을 설정한다.
• 필요한 경우 Entity를설정한다.
대화 흐름 설정
1. 시스템이 사용자와상호작용 하는 방식을 정의
2. 다양한 UI/UX를 활용
3. 필요한 경우 Entity 생성
• 친숙하고 사람같은챗봇 !• MultiStepDialog를 설계 (MixedInitiativeDialog!)• 가벼운대화
• 버튼• 지도• 이미지
챗봇 프로젝트 방법론 : 검증
• 간단한 실험 디자인
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
챗봇 프로젝트 방법론 : 검증
• 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
챗봇 프로젝트 방법론 : 검증
• Accuracy: 시스템이 Intent를 정확하게 예측 한 질문의 비율
• Precision @ k: 시스템이 가장 높은 신뢰점수를 가진상위 K개의 예측된 Intent 사이에 올바른의도가 있는 질문의 비율
시스템이 정확하게 예측한 테스트 케이스
총테스트 케이스
가장 높은 신뢰도로 예측한 상위 K개의 예측된 Intent에 올바른인텐트가 있는 케이스
총테스트 케이스
챗봇 프로젝트 방법론 : 개선
• 정확도를 높이기 위해서는 ! Intent Overlapping이 최소화되어야 함
• 비슷한 Intent 는 재작업이 필요 !• Intent를 나눈다. 더 작은 인텐트를 생성한다.• 두 Intent의 Example이 비슷하게 형성되어 있으면 Intent를 합친다• 에러를 방지하기 위해 Example을 재다시맵핑한다
– 대표성이 낮은 인텐트는 구분이 힘들다.• Intent가 대표성을 가지도록더많은 질문을 수집 – Example은 다다익선
• Key Task : 질문과 Intent를 재맵핑한다.– 오류 및 품질 저하를 피하기 위해 윈칙적인 방법으로 수행– Validation 단계에서 유용한 힌트를 얻을 수 있음
• 더 나은 Dialog 흐름과 답변으로 시스템 개선
• Ground Truth 유지보수를 통해 시스템 개선
개선
챗봇 프로젝트 방법론 : 개선
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