한국외국어대학교 글로벌 e커머스 관련 교육 수강생 대상
"e-커머스 챗봇 기획과 제작" 특강 (1차시)
목차.
- Part1. 챗봇 기초 이해
- Part2. 챗봇 도입 사례 및 활용 방안
- Part3. 봇빌더 채널톡
- Part4. E-Commerce 챗봇 기획 및 제작
* 3시간 강의 동영상을 YouTube에서 공유합니다.
https://www.youtube.com/playlist?list=PLdy43MPOL5NEU6NpTgR1zqC-cf2iFczyI
결과1. 챗봇 제작을 위한 카카오 OVEN 프로토타입 : https://ovenapp.io/view/CKu71bfsGl45gLHX2lsORJNYeaBdTcFh/Vth2p
결과2. 제작된 챗봇 : https://chatbot4all.channel.io/support-bots/15429
한국외국어대학교 글로벌 e커머스 관련 교육 수강생 대상
"e-커머스 챗봇 기획과 제작" 특강 (1차시)
목차.
- Part1. 챗봇 기초 이해
- Part2. 챗봇 도입 사례 및 활용 방안
- Part3. 봇빌더 채널톡
- Part4. E-Commerce 챗봇 기획 및 제작
* 3시간 강의 동영상을 YouTube에서 공유합니다.
https://www.youtube.com/playlist?list=PLdy43MPOL5NEU6NpTgR1zqC-cf2iFczyI
결과1. 챗봇 제작을 위한 카카오 OVEN 프로토타입 : https://ovenapp.io/view/CKu71bfsGl45gLHX2lsORJNYeaBdTcFh/Vth2p
결과2. 제작된 챗봇 : https://chatbot4all.channel.io/support-bots/15429
Suggested platform provides a contactless microservices / cloud native application design learning and development using online tools including Cloud-ide and Event-storming tool, kafka, Spring-boot and kubernetes without any installation
<3탄>스프링 부트를 사용한 마이크로 서비스 개발 (로컬 환경) | 페어 프로그래밍 데모 (테스트 작성)
이번 세션에서는 Spring Boot를 사용한 웹 애플리케이션 개발에 대해 소개합니다. 이때 제작되는 애플리케이션은 Pivotal에서 풀타임으로 사용하고 있는 페어프로그래밍을 통해 테스트부터 작성하는 핑퐁 페어등을 소개합니다. 두명이 함께 코드를 작성하는 환경을 통해 빠른 사업환경의 변화를 수용할 수 있는 개발 업무가 Pivotal에서는 어떻게 다른지 살펴봅니다.
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
도입
AI Chatbot 소개
Chatbot Ecosystem
Closed vs Open Domain
Rule Based vs AI
Chat IF Flow and Story Slot
AI기반의 학습을 위한 Data 구성 방법
Data를 구하는 법 / Train을 위한 Word Representation
Data의 구성 / Data Augmentation(Intent, NER)
자연어처리 위한 AI 적용 방안
Intent (Char-CNN) / QnA (Seq2Seq)
Named Entity Recognition (Bi-LSTM CRF) / Ontology (Graph DB)
Chatbot Service를 위한 Architecture 구성
Chatbot Architecture
NLP Architecture
Web Service Architecture
Bot builder / Chatbot API
Test Codes for Chatbot
실무에서 발생하는 문제와 해결 Tips
Ensemble and voting / Trigger / Synonym(N-Gram)
Tone Generator / Parallel processing / Response Speed
마무리
[설명 코드]
Text Augmentation / Slot Bot / QA Bot / Graph DB / Response Generator
서울시 챗봇팀이 개발한 ‘청년정책봇’은 시나리오 기반이 아닌 딥러닝 기반의 챗봇 서비스다. ETRI에서 개발한 KorBERT를 통해 언어 처리 모델을 대신하고, 형태소 분석 API를 통해 질문 문장에 대한 의도를 분석하였다. 카카오에서 배포한 khaii 형태소 분석기 적용을 통해 구문분석 정확도를 향상을 확인할 수 있었다. 또한, 위키 QA API를 통해 일반적인 질의응답을 위한 기능을 추가했다. 현재 상용화된 챗봇서비스의 대부분은 미리 구성된 시나리오(Flowchart)를 따라가는 방식을 활용하며, 자연어 처리 기술은 신뢰도가 낮아 사용되지 않고 있다. 그에 반해, ‘청년정책봇’은 cdQA 파이프라인을 접목해 유사도 높은 문서를 언어 처리 모델에 적용하는 방식으로 접근해 신뢰도를 높일 수 있었다. 기존 빌더를 통해, 상용화된 서비스 대비 두 가지 장점이 있다. 첫 번째 장점은 딥러닝 모델에 따른 발전 가능성으로써 ETRI KorBERT의 지속적인 개선에 따라 청년정책봇의 기계 독해 성능도 같이 개선된다는 것이다. 두 번째 장점은 서비스 지속 가능성으로써 cdQA 파이프라인에 기반해 주기적인 웹 크롤링을 통해 데이터 추가가 가능하기 때문에 소프트웨어 유지 보수에 필요한 자원을 최소화할 수 있다는 것이다. 청년정책 챗봇을 통해 cdQA 파이프라인과 ETRI BERT 모델을 활용해 기존의 데이터 인풋 제한을 극복하고 기계 독해에 대한 솔루션을 제시할 수 있었다.
Suggested platform provides a contactless microservices / cloud native application design learning and development using online tools including Cloud-ide and Event-storming tool, kafka, Spring-boot and kubernetes without any installation
<3탄>스프링 부트를 사용한 마이크로 서비스 개발 (로컬 환경) | 페어 프로그래밍 데모 (테스트 작성)
이번 세션에서는 Spring Boot를 사용한 웹 애플리케이션 개발에 대해 소개합니다. 이때 제작되는 애플리케이션은 Pivotal에서 풀타임으로 사용하고 있는 페어프로그래밍을 통해 테스트부터 작성하는 핑퐁 페어등을 소개합니다. 두명이 함께 코드를 작성하는 환경을 통해 빠른 사업환경의 변화를 수용할 수 있는 개발 업무가 Pivotal에서는 어떻게 다른지 살펴봅니다.
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
도입
AI Chatbot 소개
Chatbot Ecosystem
Closed vs Open Domain
Rule Based vs AI
Chat IF Flow and Story Slot
AI기반의 학습을 위한 Data 구성 방법
Data를 구하는 법 / Train을 위한 Word Representation
Data의 구성 / Data Augmentation(Intent, NER)
자연어처리 위한 AI 적용 방안
Intent (Char-CNN) / QnA (Seq2Seq)
Named Entity Recognition (Bi-LSTM CRF) / Ontology (Graph DB)
Chatbot Service를 위한 Architecture 구성
Chatbot Architecture
NLP Architecture
Web Service Architecture
Bot builder / Chatbot API
Test Codes for Chatbot
실무에서 발생하는 문제와 해결 Tips
Ensemble and voting / Trigger / Synonym(N-Gram)
Tone Generator / Parallel processing / Response Speed
마무리
[설명 코드]
Text Augmentation / Slot Bot / QA Bot / Graph DB / Response Generator
서울시 챗봇팀이 개발한 ‘청년정책봇’은 시나리오 기반이 아닌 딥러닝 기반의 챗봇 서비스다. ETRI에서 개발한 KorBERT를 통해 언어 처리 모델을 대신하고, 형태소 분석 API를 통해 질문 문장에 대한 의도를 분석하였다. 카카오에서 배포한 khaii 형태소 분석기 적용을 통해 구문분석 정확도를 향상을 확인할 수 있었다. 또한, 위키 QA API를 통해 일반적인 질의응답을 위한 기능을 추가했다. 현재 상용화된 챗봇서비스의 대부분은 미리 구성된 시나리오(Flowchart)를 따라가는 방식을 활용하며, 자연어 처리 기술은 신뢰도가 낮아 사용되지 않고 있다. 그에 반해, ‘청년정책봇’은 cdQA 파이프라인을 접목해 유사도 높은 문서를 언어 처리 모델에 적용하는 방식으로 접근해 신뢰도를 높일 수 있었다. 기존 빌더를 통해, 상용화된 서비스 대비 두 가지 장점이 있다. 첫 번째 장점은 딥러닝 모델에 따른 발전 가능성으로써 ETRI KorBERT의 지속적인 개선에 따라 청년정책봇의 기계 독해 성능도 같이 개선된다는 것이다. 두 번째 장점은 서비스 지속 가능성으로써 cdQA 파이프라인에 기반해 주기적인 웹 크롤링을 통해 데이터 추가가 가능하기 때문에 소프트웨어 유지 보수에 필요한 자원을 최소화할 수 있다는 것이다. 청년정책 챗봇을 통해 cdQA 파이프라인과 ETRI BERT 모델을 활용해 기존의 데이터 인풋 제한을 극복하고 기계 독해에 대한 솔루션을 제시할 수 있었다.
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 유
지보수를 통해 시
스템 개선
개선