Amazon Lex를 통한 쉽고 빠른 음성 및
텍스트 기반 챗봇 만들기
2017년 9월 21일
김용우 솔루션즈 아키텍트
Amazon Lex는 왜 나오게 되었나?
대화형 인터페이스
자연스러움 온 디멘드 접근성 효율성
모바일
대화형 인터페이스는 많은 수의 복잡한 알고리즘과 기술들을
통합하고 연동할 수 있어야 함
개발자가 느끼는 어려움들
음성 인식
자연어 처리
(NLU)
비즈니스 로직
상이한
시스템
인증
메시징
플랫폼
확장 테스팅
보안
가용성
Amazon Lex: 음성과 텍스트를 이용한 대화형
인터페이스 구축을 위한 서비스
ASR+NLU
음성이해
원 클릭 배포
구축(구성)
비즈니스 로직
AWS Lambda
와 연동
확장
완전 관리형
서비스
보안
전송/저장 데이터의
암호화
분석
모니터링 및 개선
TTS (Text to Speech)
Amazon Polly
연동
대화 관리
대화의
컨텍스트 관리
통합 솔루션
End to End
Amazon Lex – 특징 및 기능
텍스트 및 음성 이해 : Amazon Alexa 와 같은 기술 기반
엔터프라이즈 SaaS 커넥터 제공: 엔터프라이즈 시스템 연동
대화형 서비스 구축을 위한 직관적인 도구 제공
한번의 Build로 다양한 플랫폼에 적용
지속적인 학습 : 봇을 모니터링 하고 개선
텍스트 및 음성 언어 이해
음성인식 자연어 이해
Alexa와 같은 딥 러닝 기술기반 서비스
멀티 플랫폼
모바일 메시징 플랫폼 웹(Web) IoT
SDKs: iOS & Android
Mobile Hub
Facebook, Twilio
SMS and Slack
SDKs: Java, JavaScript,
Python, CLI, .NET, Ruby
on Rails, PHP, Go, and
CPP
Integrated with
AWS IoT via AWS
Lambda
한번의 빌드로 다양한 플랫폼에서 사용
Amazon Lex – 적용 기술 및 서비스
Amazon Lex
Automatic Speech
Recognition (ASR)
Natural Language
Understanding (NLU)
Amazon Alexa 와 같은 기술 적용
Amazon Cognito Amazon CloudWatch
AWS 서비스들
동작
AWS Lambda
인증 및 가시성
Speech API 언어 API
수행
사용자
개발자
콘솔
SDK
Intents,
Slots,
Prompts,
Utterances
입력 :
음성
또는 텍스트
멀티 플랫폼 클라이언트:
Mobile, IoT, Web,
Chat
API
출력: 음성 (Amazon
Polly TTS) 또는 텍스트
Amazon Polly
 텍스트를 실제같은 음성으로 변환해주는 서비스
 24개의 언어, 47가지의 음성 지원
 저 지연 응답으로 실시간 어플리케이션에 적용가능
 생성된 음성데이터를 저장, 재생, 배포 가능
Amazon Polly : 품질
Natural sounding speech
TTS의 결과가 얼마나 인간의 음성에 가까운지를 나타내는 객관적 측정지표
정확한 텍스트 처리
일반적인 텍스트 형식, 축약, 약어, 숫자표현, 단위 등에 대한 올바른 처리
Today in Las Vegas, NV it's 90°F.
"We live for the music", live from the Madison Square Garden.
음성이 얼마나 이해하기 쉬운지를 측정
”Peter Piper picked a peck of pickled peppers.”
Lex – Chatbot 설정 인터페이스
대화를 구성하기 위한 효율적이고 직관적인 도구 제공
버전관리 및 별칭 지원
v1 v2 v3 latest
v1 dev
v2 stage
v3 prod
별칭버저닝
Intents, Slots, Bots 지원
다수의 개발자들이 동시에 사용하는 환경 고려
이전 버전으로 롤백 지원
플랫폼별로 개별 별칭 설정
개발, 스테이징, 프로덕션에 따라 다른 스택 구성
개별 별칭을 통해 다른 사용자 그룹을 타겟팅
지속적인 학습/개선
모니터링
AWS CloudWatch metrics
Missed utterances
개선
Add to intent
분석
사용자 인증
사용자 행동 분석
미디어 데이터 저장/공유
데이터 동기화
기타 등등 ….
사용자 (리텐션) 관리
대화형 Bots
LexAWS Mobile SDKs
AWS Mobile Hub
AWS Mobile Hub와 통합 연계 (Integration)
AWS Mobile Hub와 통합 연계 (Integration)
Mobile Hub의 Connector를 통해 Ent App과 연동
모바일 앱
Mobile Hub
SaaS 커넥터
Amazon API AWS
Gateway Lambda
Amazon Lex
3: REST 형식의
응답을 자연어로
변환
Amazon API AWS
Gateway Lambda
2: SaaS 어플리케이션
호출 또는 다른 비즈니스
어플리케이션
방화벽
Biz어플
리케이션
사용자 입력
1: 사용자 입력
이해(해석)
Mobile Hub
커스텀 커넥터
정보봇 서비스 - Informational Bots
모든 고객의 매일 일상적 질의에 대한 챗봇 서비스
어플리케이션 봇 - Application Bots
모바일 어플리케이션에 강력한 인터페이스 연계
• 뉴스 업데이트
• 날씨 정보
• 스포츠 경기 스코어
• 티켓예약
• 식사 주문
• 은행 계좌 관리 등
기업 생산성 봇 – Enterprise Productivity Bots
기업의 업무에서 생산성 향상과 업무 과정상에 지원
• 매출 확인
• 마케팅 상황/결과
• 실시간 재고 파악
IoT 봇 – Internet of Things (IoT) Bots
디바이스 상호 자굥에서 인터페이스를 통한 대화(컨트롤)가능
• 웨어러블
• 원격 어플리케이션
• 자동화
Amazon Lex – 사용 예시
높은 수준의 텍스트와 음성 인식 및 이해
AWS플랫폼과 완벽한 통합 및 연계
유연한 구성/배포, 탄력적 서비스
도입 및 구성, 활용이 용이
비용 효율적이고 최적화
Amazon Lex – 장점 및 기대효과
Amazon Lex 구성 요소
Utterances
Intent를 동작시키는 문장,
구문
BookHotel
Intents
사용자가 가진 특정 의도에
따른 동작을 정의
Slots
Intent의 수행을 위해 필요한
정보들
Fulfillment
Intent 를 실제 수행하는 방법
예시 : “Book a hotel” 을 처리하는 과정
“Book a Hotel in
NYC”
Hotel Booking
City
Check In
Check Out
예시 : “Book a hotel” 을 처리하는 과정
Book Hotel
NYC
“Book a Hotel in
NYC”
Automatic Speech
Recognition
Hotel Booking
City
Check In
Check Out
a
in
예시 : “Book a hotel” 을 처리하는 과정
Book Hotel
NYC
“Book a Hotel in
NYC”
Automatic Speech
Recognition
Hotel Booking
New York City
Natural Language
Understanding
Hotel Booking
City New York City
Check In
Check Out
a
in
예시 : “Book a hotel” 을 처리하는 과정
Book Hotel
NYC
“Book a Hotel in
NYC”
Automatic Speech
Recognition
Hotel Booking
New York City
Natural Language
Understanding
Hotel Booking
City New York City
Check In
Check Out
“Can I go ahead
with the booking?
a
in
예시 : “Book a hotel” 을 처리하는 과정
Book Hotel
NYC
“Book a Hotel in
NYC”
Automatic Speech
Recognition
Hotel Booking
New York City
Natural Language
Understanding
Intent/Slot
Model
UtterancesHotel Booking
City New York City
Check In April 19th
Check Out April 21st
a
in
예시 : “Book a hotel” 을 처리하는 과정
Book Hotel
NYC
“Book a Hotel in
NYC”
Automatic Speech
Recognition
Hotel Booking
New York City
Natural Language
Understanding
Intent/Slot
Model
UtterancesHotel Booking
City New York City
Check In April 19th
Check Out April 21st
“Can I go ahead
with the booking?
a
in
예시 : “Book a hotel” 을 처리하는 과정
Book Hotel
NYC
“Book a Hotel in
NYC”
Automatic Speech
Recognition
Hotel Booking
New York City
Natural Language
Understanding
Intent/Slot
Model
UtterancesHotel Booking
City New York City
Check In April 19th
Check Out April 21st
“Your hotel is booked for
April 19th”
Amazon Polly
Confirmation: “Your hotel
is booked for Nov 30th”
“Can I go ahead
with the booking?
a
in
Slot 도출 (필수 정보 파악)
Check In
4/19/2017
City
New York
City
I would like to book a hotel
Sure, which city will you be
traveling to?
New York City
What date do you want to
check in?
April 19th
대화의 문맥 (흐름) 유지
Slot Values Intents Prompts ConfirmationsSession
Attributes
Slot Value
Slot Value
대화
Yes/No
Session
Attributes
Intent
Prompt
Lex는 대화 전체에 데이터를 저장하여 컨텍스트를 유지합니다.
Confirm
동적인 대화 흐름 (분기, 연결)
대화세션 속성
두번째 Intent
Intent 변경
첫번째 Intent
세션 값(Value)
대화
Intent 연결
Takeout
Dine In
Dine In or
Take out?
Anything
else
today?
Book a Car
대화 관리
I would like to book a hotel
Sure, which city will you be
traveling to?
New York City
What date do you want to
check in?
Tomorrow
… And for how many nights
is this for?
City
간단한, 선언형식의 대화 형식
Check-In Date
Check-Out Date
Slots
Which city will you be travelling to?
What date do you want to check in?
How many nights is this for?
Prompts
주고 받는(Multi-turn) 대화 구성
콘솔에서 손쉽게 구성
맞춤형 대화
I would like to book a hotel
Would you prefer to stay in
Downtown this time as
well?
Yes
What date do you want to
check in?
April 19th
Sorry no availability. Would
a different location work?
사용자의 환경 설정을
기반으로한 맞춤형 대화
필요한 경우 사용자 입력값의
유효성 검사후, 적절한 메시지 출력
에러 처리
I want to …. {garbled} …..
Sorry can you please repeat
that?
I am having trouble understanding
Can you please say that again?
Sorry I am not able to assist
you at this time
사용자로 하여금 반복 요청
매번 다른 표현 사용
일정 시도 이후 대화 종료
Rich 메시지 포멧
I would like to rent a car
Sure. What type of car are
you looking for?
Compact
 메시징 플랫폼에 알맞은 포멧 제공
 복수의 카드 지원
 프리뷰 기능
 콘솔에서 테스트 가능
처리(Fulfillment)
AWS Lambda 연동 Client로 전달
사용자 입력에서 Intent와 Slot값
도출을 위해 분석됨
결과값은 추가 처리를 위해
클라이언트로 전달
Intents 와 slots 이 AWS
Lambda에 구성된 비즈니스
로직으로 전달되어 동작수행
저장, 빌드 및 퍼블리싱
저장 빌드
현재 까지의 Bot구성
내역을 서버에 저장
현재 구성된 Bot을
빌드하고, 버전 부여
퍼블리시
퍼블리시를 통해 버전 및
별칭 생성후 Client에게 전달
테스트
콘솔에서 제공되는 채팅창을
통해 바로 테스트 가능
프로그래밍 방식으로 Bot 구성
SDK를 통한 빌드, 테스트 및 배포
Utterances 추가 Slot Values 추가
SDKs: Java, JavaScript, Python, CLI,
.NET, Ruby on Rails, PHP, Go, and CPP
메시징 플랫폼
Facebook Slack Twilio SMS
모니터링
Bot 모니터링
요청 지연율 파악 (음성/텍스트)
대응하지 못한 요청 파악
(Utterances)
Coffee Bot 데모
Chatbot 의 역할결정
역할(용도)에 따른
시나리오구성
시나리오 작성
(Coversation flow)
시나리오 정리
및 상세화
Intent/Slot 구성
(함수명/파라미터 정의)
역할설정 및
시나리오 구성
Utterance
(함수 호출을위한 문장)
Fulfilment
(요청 수행용 Lambda구성)
Intent/Slot 구성
(함수명/파라미터 정의)
빌드/테스트 퍼블리시
MobleHub
(모바일 앱 연동)
SNS 서비스 연동
(Facebook/Slack/Twilio)
배포
Lex기반 chat bot 구성 흐름도
Lex CoffeBot 테스트
http://bit.ly/2rq7AKaCoffee bot APK :
감사합니다

Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기

  • 1.
    Amazon Lex를 통한쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기 2017년 9월 21일 김용우 솔루션즈 아키텍트
  • 2.
    Amazon Lex는 왜나오게 되었나?
  • 3.
    대화형 인터페이스 자연스러움 온디멘드 접근성 효율성
  • 4.
    모바일 대화형 인터페이스는 많은수의 복잡한 알고리즘과 기술들을 통합하고 연동할 수 있어야 함 개발자가 느끼는 어려움들 음성 인식 자연어 처리 (NLU) 비즈니스 로직 상이한 시스템 인증 메시징 플랫폼 확장 테스팅 보안 가용성
  • 5.
    Amazon Lex: 음성과텍스트를 이용한 대화형 인터페이스 구축을 위한 서비스
  • 6.
    ASR+NLU 음성이해 원 클릭 배포 구축(구성) 비즈니스로직 AWS Lambda 와 연동 확장 완전 관리형 서비스 보안 전송/저장 데이터의 암호화 분석 모니터링 및 개선 TTS (Text to Speech) Amazon Polly 연동 대화 관리 대화의 컨텍스트 관리 통합 솔루션 End to End
  • 7.
    Amazon Lex –특징 및 기능 텍스트 및 음성 이해 : Amazon Alexa 와 같은 기술 기반 엔터프라이즈 SaaS 커넥터 제공: 엔터프라이즈 시스템 연동 대화형 서비스 구축을 위한 직관적인 도구 제공 한번의 Build로 다양한 플랫폼에 적용 지속적인 학습 : 봇을 모니터링 하고 개선
  • 8.
    텍스트 및 음성언어 이해 음성인식 자연어 이해 Alexa와 같은 딥 러닝 기술기반 서비스
  • 9.
    멀티 플랫폼 모바일 메시징플랫폼 웹(Web) IoT SDKs: iOS & Android Mobile Hub Facebook, Twilio SMS and Slack SDKs: Java, JavaScript, Python, CLI, .NET, Ruby on Rails, PHP, Go, and CPP Integrated with AWS IoT via AWS Lambda 한번의 빌드로 다양한 플랫폼에서 사용
  • 10.
    Amazon Lex –적용 기술 및 서비스 Amazon Lex Automatic Speech Recognition (ASR) Natural Language Understanding (NLU) Amazon Alexa 와 같은 기술 적용 Amazon Cognito Amazon CloudWatch AWS 서비스들 동작 AWS Lambda 인증 및 가시성 Speech API 언어 API 수행 사용자 개발자 콘솔 SDK Intents, Slots, Prompts, Utterances 입력 : 음성 또는 텍스트 멀티 플랫폼 클라이언트: Mobile, IoT, Web, Chat API 출력: 음성 (Amazon Polly TTS) 또는 텍스트
  • 11.
    Amazon Polly  텍스트를실제같은 음성으로 변환해주는 서비스  24개의 언어, 47가지의 음성 지원  저 지연 응답으로 실시간 어플리케이션에 적용가능  생성된 음성데이터를 저장, 재생, 배포 가능
  • 12.
    Amazon Polly :품질 Natural sounding speech TTS의 결과가 얼마나 인간의 음성에 가까운지를 나타내는 객관적 측정지표 정확한 텍스트 처리 일반적인 텍스트 형식, 축약, 약어, 숫자표현, 단위 등에 대한 올바른 처리 Today in Las Vegas, NV it's 90°F. "We live for the music", live from the Madison Square Garden. 음성이 얼마나 이해하기 쉬운지를 측정 ”Peter Piper picked a peck of pickled peppers.”
  • 13.
    Lex – Chatbot설정 인터페이스 대화를 구성하기 위한 효율적이고 직관적인 도구 제공
  • 14.
    버전관리 및 별칭지원 v1 v2 v3 latest v1 dev v2 stage v3 prod 별칭버저닝 Intents, Slots, Bots 지원 다수의 개발자들이 동시에 사용하는 환경 고려 이전 버전으로 롤백 지원 플랫폼별로 개별 별칭 설정 개발, 스테이징, 프로덕션에 따라 다른 스택 구성 개별 별칭을 통해 다른 사용자 그룹을 타겟팅
  • 15.
    지속적인 학습/개선 모니터링 AWS CloudWatchmetrics Missed utterances 개선 Add to intent 분석
  • 16.
    사용자 인증 사용자 행동분석 미디어 데이터 저장/공유 데이터 동기화 기타 등등 …. 사용자 (리텐션) 관리 대화형 Bots LexAWS Mobile SDKs AWS Mobile Hub AWS Mobile Hub와 통합 연계 (Integration)
  • 17.
    AWS Mobile Hub와통합 연계 (Integration)
  • 18.
    Mobile Hub의 Connector를통해 Ent App과 연동 모바일 앱 Mobile Hub SaaS 커넥터 Amazon API AWS Gateway Lambda Amazon Lex 3: REST 형식의 응답을 자연어로 변환 Amazon API AWS Gateway Lambda 2: SaaS 어플리케이션 호출 또는 다른 비즈니스 어플리케이션 방화벽 Biz어플 리케이션 사용자 입력 1: 사용자 입력 이해(해석) Mobile Hub 커스텀 커넥터
  • 19.
    정보봇 서비스 -Informational Bots 모든 고객의 매일 일상적 질의에 대한 챗봇 서비스 어플리케이션 봇 - Application Bots 모바일 어플리케이션에 강력한 인터페이스 연계 • 뉴스 업데이트 • 날씨 정보 • 스포츠 경기 스코어 • 티켓예약 • 식사 주문 • 은행 계좌 관리 등 기업 생산성 봇 – Enterprise Productivity Bots 기업의 업무에서 생산성 향상과 업무 과정상에 지원 • 매출 확인 • 마케팅 상황/결과 • 실시간 재고 파악 IoT 봇 – Internet of Things (IoT) Bots 디바이스 상호 자굥에서 인터페이스를 통한 대화(컨트롤)가능 • 웨어러블 • 원격 어플리케이션 • 자동화 Amazon Lex – 사용 예시
  • 20.
    높은 수준의 텍스트와음성 인식 및 이해 AWS플랫폼과 완벽한 통합 및 연계 유연한 구성/배포, 탄력적 서비스 도입 및 구성, 활용이 용이 비용 효율적이고 최적화 Amazon Lex – 장점 및 기대효과
  • 21.
    Amazon Lex 구성요소 Utterances Intent를 동작시키는 문장, 구문 BookHotel Intents 사용자가 가진 특정 의도에 따른 동작을 정의 Slots Intent의 수행을 위해 필요한 정보들 Fulfillment Intent 를 실제 수행하는 방법
  • 22.
    예시 : “Booka hotel” 을 처리하는 과정 “Book a Hotel in NYC” Hotel Booking City Check In Check Out
  • 23.
    예시 : “Booka hotel” 을 처리하는 과정 Book Hotel NYC “Book a Hotel in NYC” Automatic Speech Recognition Hotel Booking City Check In Check Out a in
  • 24.
    예시 : “Booka hotel” 을 처리하는 과정 Book Hotel NYC “Book a Hotel in NYC” Automatic Speech Recognition Hotel Booking New York City Natural Language Understanding Hotel Booking City New York City Check In Check Out a in
  • 25.
    예시 : “Booka hotel” 을 처리하는 과정 Book Hotel NYC “Book a Hotel in NYC” Automatic Speech Recognition Hotel Booking New York City Natural Language Understanding Hotel Booking City New York City Check In Check Out “Can I go ahead with the booking? a in
  • 26.
    예시 : “Booka hotel” 을 처리하는 과정 Book Hotel NYC “Book a Hotel in NYC” Automatic Speech Recognition Hotel Booking New York City Natural Language Understanding Intent/Slot Model UtterancesHotel Booking City New York City Check In April 19th Check Out April 21st a in
  • 27.
    예시 : “Booka hotel” 을 처리하는 과정 Book Hotel NYC “Book a Hotel in NYC” Automatic Speech Recognition Hotel Booking New York City Natural Language Understanding Intent/Slot Model UtterancesHotel Booking City New York City Check In April 19th Check Out April 21st “Can I go ahead with the booking? a in
  • 28.
    예시 : “Booka hotel” 을 처리하는 과정 Book Hotel NYC “Book a Hotel in NYC” Automatic Speech Recognition Hotel Booking New York City Natural Language Understanding Intent/Slot Model UtterancesHotel Booking City New York City Check In April 19th Check Out April 21st “Your hotel is booked for April 19th” Amazon Polly Confirmation: “Your hotel is booked for Nov 30th” “Can I go ahead with the booking? a in
  • 29.
    Slot 도출 (필수정보 파악) Check In 4/19/2017 City New York City I would like to book a hotel Sure, which city will you be traveling to? New York City What date do you want to check in? April 19th
  • 30.
    대화의 문맥 (흐름)유지 Slot Values Intents Prompts ConfirmationsSession Attributes Slot Value Slot Value 대화 Yes/No Session Attributes Intent Prompt Lex는 대화 전체에 데이터를 저장하여 컨텍스트를 유지합니다. Confirm
  • 31.
    동적인 대화 흐름(분기, 연결) 대화세션 속성 두번째 Intent Intent 변경 첫번째 Intent 세션 값(Value) 대화 Intent 연결 Takeout Dine In Dine In or Take out? Anything else today? Book a Car
  • 32.
    대화 관리 I wouldlike to book a hotel Sure, which city will you be traveling to? New York City What date do you want to check in? Tomorrow … And for how many nights is this for? City 간단한, 선언형식의 대화 형식 Check-In Date Check-Out Date Slots Which city will you be travelling to? What date do you want to check in? How many nights is this for? Prompts 주고 받는(Multi-turn) 대화 구성 콘솔에서 손쉽게 구성
  • 33.
    맞춤형 대화 I wouldlike to book a hotel Would you prefer to stay in Downtown this time as well? Yes What date do you want to check in? April 19th Sorry no availability. Would a different location work? 사용자의 환경 설정을 기반으로한 맞춤형 대화 필요한 경우 사용자 입력값의 유효성 검사후, 적절한 메시지 출력
  • 34.
    에러 처리 I wantto …. {garbled} ….. Sorry can you please repeat that? I am having trouble understanding Can you please say that again? Sorry I am not able to assist you at this time 사용자로 하여금 반복 요청 매번 다른 표현 사용 일정 시도 이후 대화 종료
  • 35.
    Rich 메시지 포멧 Iwould like to rent a car Sure. What type of car are you looking for? Compact  메시징 플랫폼에 알맞은 포멧 제공  복수의 카드 지원  프리뷰 기능  콘솔에서 테스트 가능
  • 36.
    처리(Fulfillment) AWS Lambda 연동Client로 전달 사용자 입력에서 Intent와 Slot값 도출을 위해 분석됨 결과값은 추가 처리를 위해 클라이언트로 전달 Intents 와 slots 이 AWS Lambda에 구성된 비즈니스 로직으로 전달되어 동작수행
  • 37.
    저장, 빌드 및퍼블리싱 저장 빌드 현재 까지의 Bot구성 내역을 서버에 저장 현재 구성된 Bot을 빌드하고, 버전 부여 퍼블리시 퍼블리시를 통해 버전 및 별칭 생성후 Client에게 전달 테스트 콘솔에서 제공되는 채팅창을 통해 바로 테스트 가능
  • 38.
    프로그래밍 방식으로 Bot구성 SDK를 통한 빌드, 테스트 및 배포 Utterances 추가 Slot Values 추가 SDKs: Java, JavaScript, Python, CLI, .NET, Ruby on Rails, PHP, Go, and CPP
  • 39.
  • 40.
    모니터링 Bot 모니터링 요청 지연율파악 (음성/텍스트) 대응하지 못한 요청 파악 (Utterances)
  • 41.
  • 42.
    Chatbot 의 역할결정 역할(용도)에따른 시나리오구성 시나리오 작성 (Coversation flow) 시나리오 정리 및 상세화 Intent/Slot 구성 (함수명/파라미터 정의) 역할설정 및 시나리오 구성 Utterance (함수 호출을위한 문장) Fulfilment (요청 수행용 Lambda구성) Intent/Slot 구성 (함수명/파라미터 정의) 빌드/테스트 퍼블리시 MobleHub (모바일 앱 연동) SNS 서비스 연동 (Facebook/Slack/Twilio) 배포 Lex기반 chat bot 구성 흐름도
  • 43.
  • 44.