ݺߣ

ݺߣShare a Scribd company logo
[NUGU Conference 2018] 세션 B-4 : 자연어 이해 기술 소개
1. 자연어 이해(NLU) 기술 소개
2. NUGU NLU 기술 소개
3. NUGU NLU 개발 고민
vs. vs. vs.
형태소 분석
기계 번역
개체명 인식
구문 구조 분석
문서 분류
도메인 분류
요약
의미 구조 분석
음성인식 (ASR)
음성합성
(TTS)
NLP
NLU
감성 분석
자연어 생성
대화 관리
슬랏 추출 의도 분류
speech
ASR
DM
NLGTTS
3rd
Party
APIs
speech
text
text
semantics
semantics
“아이유 노래 틀어줘”
music:play(SINGER=아이유)
“아이유의 밤편지 들려드릴께요"
music:play(SINGER,TITLE)
Voice
Context
인간 기계
Category Value
A a
B b
C c
말이나 글의 의미가 무엇인지 기계가 알 수 있도록 구조화 하는 것
자연어 이해 (Natural Language Understanding, NLU)
비구조 데이터 구조 데이터
Text
T타워 근처 스타벅스로 안내해줘
Category Value
DOMAIN NAVIGATION
INTENT SEARCH.ROUTE
ENTITY.BASE_LOC T타워
ENTITY.DISTANCE 근처
ENTITY.DESTINATION 스타벅스
도메인 분류
- Domain Classification/Identification
개체명 추출
- Entity/Slot Recognition/Extraction/Tagging
의도 분류
- Intent/Goal Classification/Identification
NLU Frame Representation
콘텐츠 정보검색 라이프 커머스
Support 25~30
Built-in Domains
music
video
podcast
book
news
...
simpleqa
sports
fortune
finance
dictionary
...
navigation
communication
iot
schedule
...
shopping
delivery
...
MUSIC VIDEO PODCAST
MUSIC VIDEO PODCAST WEATHER IOT...
입력 문장 : “신과 함께 틀어줘”
Support 10~1000 Intents in Each Domain
뮤직메이트 에서 방탄 소년단 의 FAKE LOVE 틀어 줘
B-SERVICE_NAME O B-SINGER I-SINGER O B-TITLE I-TITLE O O
Category Value
ENTITY.SERVICE_NAME 뮤직메이트
ENTITY.SINGER 방탄 소년단
ENTITY.TITLE FAKE LOVE
[NUGU Conference 2018] 세션 B-4 : 자연어 이해 기술 소개
규칙 기반의 NLU
정형화된 문장에 대한 정확도 향상
개인화 사전 처리
기계학습 기반의 NLU
입력 오류 극복
처리 문장 커버리지 향상
Hybrid Cascading Architecture
KMA : Korean Morphology Analysis (형태소 분석기)
NER : Named Entity Recognition (개체명 인식)
Rule-based
ML-based
KMA
NER
Pre-Processing NLU
Lexico-Semantic Pattern 기반 NLU
Domain Entity Extraction Semantic Parsing Entity Relation Validation Ranking
C-RuleDomain
Rule
System
Dict.
P-RuleUpdate
Dict.
NPC
DB
Entity
Relation DB
NPC : NUGU Personalized Context
System Dict. : Large-scale Static Dict.
Update Dict. : Periodically Updated Dict.
예) 인명, 지역명, 수량, 장르명 등
예) 가수명, 곡명, 방송명 등
예) 연락처, 사용자 지정 디바이스명 등
C-Rule : Constraints Rule
Domain Rule : Lexico-Semantic Pattern (Entity + P-Rule + C-Rule)
P-Rule : Part Rule
$ROOT  $SINGER $c:sing $SONG $c:music $p:play_music
$p:play_music  틀/V VX | 들/V VX | 재생/N ...
$c:music  노래 | 음악 | 뮤직
$SINGER 아이유
$c:sing  부르/V ETM
$SONG  사랑했지만
$c:music  노래
$p:play_music  틀/V VX
$ROOT  $SINGER $c:sing $SONG $c:music $p:play_music
Category Value
DOMAIN MUSIC
INTENT PLAY.MUSIC
ENTITY.SINGER 아이유
Lexico-Semantic Pattern 기반 NLU
아이유가 부른 사랑했지만 노래 좀 틀어줘
Data 수집
• Grammar-generated
• In-house data collections
개발 단계
Pre-Beta Model
• Test Cases
• Closed-beta Logs
테스트 단계
Beta Model
• Real Customer Logs
서비스 단계
Live Model
도착 예정 시간 알려줘 언제 도착하는지 말해봐 다와가나
자질(Feature)
Bag-of-Words N-grams
분류(Classification)
Domain
Classification
Entity
Extraction
Intent
Classification
Post Processing
domain = schedule DT_DAY = 오늘
TI_HOUR = 9시
intent = set.alarm DT_DAY=> DT_DAY.TODAY
TI_HOUR=> TI_HOUR.9
• Domain/Intent : Linear Kernel SVM
• Entity : Structured SVM
• 음절/형태소 N-grams 자질
• Named Entity 자질
• 사전 Matching 자질
사용자 : 오늘 9시 알람 맞춰줘
NLU 입력은 오류가 항상 존재한다
유형 원문 실제 입력
띄어쓰기 오류
하나은행 수원 서문지점으로 가자
엔 팔 때 환율 가격 알려줘
하나은행 수원서 문지점으로 가자
엔팔 때 환율 가격 알려줘
음성인식 오류
노래 꺼줘
싸이의 I LUV IT 틀어줘
노래 꺼점
싸이의 I LOVE IT 틀어줘
형태소 오류
11번가에서 죽/NNG(일반명사) 주문해줘
블랙핑크 뚜두뚜두/NNP(고유명사) 틀어줘
11번가에서 죽/MAG(부사) 주문해줘
블랙핑크 뚜두뚜/NNP 두/JX 틀어줘
한국어에서 데이터 단위(Token)은 음절/형태소/어절의 조합이 중요하다
서울에서 부산까지 고속도로 우선으로 얼마나 걸려
Intent
ask.info.left_time
Entity
LCP_CITY@DEP
Entity
LCP_CITY@DEST
Domain
navigation
Entity
SEARCH_TYPE.EXPRESS@SEARCH_TYPE
[NUGU Conference 2018] 세션 B-4 : 자연어 이해 기술 소개
NLU 개발은 NLU Tag 정의부터 시작이다
문장 Design (A안) Design (B안) Design (C안)
에어컨 켜줘 turn_on.aircon turn_on<OP_DEVICE=에어컨> turn_on<OP_DEVICE_AIRCON=에어컨>
에어컨 꺼줘 turn_off.aircon turn_off<OP_DEVICE=에어컨> turn_off<OP_DEVICE_AIRCON=에어컨>
자동차 시동 켜줘 turn_on.car turn_on<OP_DEVICE=자동차> turn_on<OP_DEVICE_CAR=자동차>
자동차 시동 꺼줘 turn_off.car turn_off<OP_DEVICE=자동차> turn_off<OP_DEVICE_CAR=자동차>
개발자의 고민 : 어느 방식이 가장 좋을까?
`17년 1Q : 피자/치킨 배달 서비스 출시
`18년 2Q : 스타벅스 주문 출시
`18년 3Q: 11번가 주문 출시
음료수 주문해줘 : food_delivery(request.delivery.order<FOOD= 음료수>)
커피 주문해줘 : food_delivery(request.delivery.order<FOOD_TYPE=커피>)
생수 주문해줘 : shopping(request.order<PRODUCT= 생수>)
NLU 정의는 개발 과정에서 변경될 수도 있다
MUSIC VIDEO PODCAST WEATHER IOT...
“아이유 노래 찾아줘"
NLU 개발 과정에서 가장 어려운 것은 도메인 중의성(Domain Ambiguity)을 해소하는 것이다
MUSIC
Intent
Classifier
Entity
Extraction
“아이유 찾아줘“???
NUGU 스피커 - 뮤직메이트에서 아이유 노래 검색
BTV x NUGU - BTV에서 아이유 나온 예능 찾아줘
KIDS폰 - 위키에서 아이유에 대해서 알려줘
Tmap x NUGU - 티맵에서 아이유 찾아줘
1) Domain Invocation Word (Open NLU)
- Alexa : ASK NETFLIX, PLAY MICHAEL JACKSON
- NUGU : 비스타 커텐 열어줘
2) No Domain Invocation Word (Built-in NLU)
- N-best & Re-ranking + Top Query 자질
기계학습은 모르는 것을 모른다고 하는 것이 제일 어렵다
Out-of-Domain In-Domain
Out-of-Service
In-Service
Rejection Types
- Out-of-Domain (OOD) : 미지원 영역 (예, 택시 호출)
- Out-of-Service (OOS) : 지원 영역이지만 미지원 기능 (예, 카톡 읽기)
Shu, L. et al., "DOC: Deep Open Classification of Text Documents", EMNLP-2017, 2017
Sigmoid Func. Normalize Threshold filtering
Estimated score
Estimation
probability
(sum=1)
Classifier
Predicted
label
n-best
Training
Training Corpus
Built-in dictionary
In-Domain
1-Domain Anomaly Detection
OOD
OOD
온도가 몇 도야
싼 주유소로 가자
BTV 1박 2일 재생
아이유 노래 틀어줘
Classification
Model
Contents Words Detection
온도, 기온, 날씨, 강수량 등
Feature Extraction
Language Modeling
p(온도|BOS) = 0.xxx
p(가|온도,BOS) = 0.xxx
p(몇|온도, 가) = 0.xxx
…
Anomaly DetectionInput Sentence Feature Extraction
Domain Entity Detection
Build-in Entity
User Entity
Still Ambiguity & Context ...
Chitchat ...
Less Data, Good Performance ...
[NUGU Conference 2018] 세션 B-4 : 자연어 이해 기술 소개

More Related Content

[NUGU Conference 2018] 세션 B-4 : 자연어 이해 기술 소개

  • 2. 1. 자연어 이해(NLU) 기술 소개 2. NUGU NLU 기술 소개 3. NUGU NLU 개발 고민
  • 3. vs. vs. vs. 형태소 분석 기계 번역 개체명 인식 구문 구조 분석 문서 분류 도메인 분류 요약 의미 구조 분석 음성인식 (ASR) 음성합성 (TTS) NLP NLU 감성 분석 자연어 생성 대화 관리 슬랏 추출 의도 분류
  • 5. Voice Context 인간 기계 Category Value A a B b C c 말이나 글의 의미가 무엇인지 기계가 알 수 있도록 구조화 하는 것 자연어 이해 (Natural Language Understanding, NLU) 비구조 데이터 구조 데이터 Text
  • 6. T타워 근처 스타벅스로 안내해줘 Category Value DOMAIN NAVIGATION INTENT SEARCH.ROUTE ENTITY.BASE_LOC T타워 ENTITY.DISTANCE 근처 ENTITY.DESTINATION 스타벅스 도메인 분류 - Domain Classification/Identification 개체명 추출 - Entity/Slot Recognition/Extraction/Tagging 의도 분류 - Intent/Goal Classification/Identification NLU Frame Representation
  • 7. 콘텐츠 정보검색 라이프 커머스 Support 25~30 Built-in Domains music video podcast book news ... simpleqa sports fortune finance dictionary ... navigation communication iot schedule ... shopping delivery ...
  • 8. MUSIC VIDEO PODCAST MUSIC VIDEO PODCAST WEATHER IOT... 입력 문장 : “신과 함께 틀어줘”
  • 9. Support 10~1000 Intents in Each Domain
  • 10. 뮤직메이트 에서 방탄 소년단 의 FAKE LOVE 틀어 줘 B-SERVICE_NAME O B-SINGER I-SINGER O B-TITLE I-TITLE O O Category Value ENTITY.SERVICE_NAME 뮤직메이트 ENTITY.SINGER 방탄 소년단 ENTITY.TITLE FAKE LOVE
  • 12. 규칙 기반의 NLU 정형화된 문장에 대한 정확도 향상 개인화 사전 처리 기계학습 기반의 NLU 입력 오류 극복 처리 문장 커버리지 향상 Hybrid Cascading Architecture KMA : Korean Morphology Analysis (형태소 분석기) NER : Named Entity Recognition (개체명 인식) Rule-based ML-based KMA NER Pre-Processing NLU
  • 13. Lexico-Semantic Pattern 기반 NLU Domain Entity Extraction Semantic Parsing Entity Relation Validation Ranking C-RuleDomain Rule System Dict. P-RuleUpdate Dict. NPC DB Entity Relation DB NPC : NUGU Personalized Context System Dict. : Large-scale Static Dict. Update Dict. : Periodically Updated Dict. 예) 인명, 지역명, 수량, 장르명 등 예) 가수명, 곡명, 방송명 등 예) 연락처, 사용자 지정 디바이스명 등 C-Rule : Constraints Rule Domain Rule : Lexico-Semantic Pattern (Entity + P-Rule + C-Rule) P-Rule : Part Rule $ROOT  $SINGER $c:sing $SONG $c:music $p:play_music $p:play_music  틀/V VX | 들/V VX | 재생/N ... $c:music  노래 | 음악 | 뮤직
  • 14. $SINGER 아이유 $c:sing  부르/V ETM $SONG  사랑했지만 $c:music  노래 $p:play_music  틀/V VX $ROOT  $SINGER $c:sing $SONG $c:music $p:play_music Category Value DOMAIN MUSIC INTENT PLAY.MUSIC ENTITY.SINGER 아이유 Lexico-Semantic Pattern 기반 NLU 아이유가 부른 사랑했지만 노래 좀 틀어줘
  • 15. Data 수집 • Grammar-generated • In-house data collections 개발 단계 Pre-Beta Model • Test Cases • Closed-beta Logs 테스트 단계 Beta Model • Real Customer Logs 서비스 단계 Live Model 도착 예정 시간 알려줘 언제 도착하는지 말해봐 다와가나
  • 17. 분류(Classification) Domain Classification Entity Extraction Intent Classification Post Processing domain = schedule DT_DAY = 오늘 TI_HOUR = 9시 intent = set.alarm DT_DAY=> DT_DAY.TODAY TI_HOUR=> TI_HOUR.9 • Domain/Intent : Linear Kernel SVM • Entity : Structured SVM • 음절/형태소 N-grams 자질 • Named Entity 자질 • 사전 Matching 자질 사용자 : 오늘 9시 알람 맞춰줘
  • 18. NLU 입력은 오류가 항상 존재한다 유형 원문 실제 입력 띄어쓰기 오류 하나은행 수원 서문지점으로 가자 엔 팔 때 환율 가격 알려줘 하나은행 수원서 문지점으로 가자 엔팔 때 환율 가격 알려줘 음성인식 오류 노래 꺼줘 싸이의 I LUV IT 틀어줘 노래 꺼점 싸이의 I LOVE IT 틀어줘 형태소 오류 11번가에서 죽/NNG(일반명사) 주문해줘 블랙핑크 뚜두뚜두/NNP(고유명사) 틀어줘 11번가에서 죽/MAG(부사) 주문해줘 블랙핑크 뚜두뚜/NNP 두/JX 틀어줘 한국어에서 데이터 단위(Token)은 음절/형태소/어절의 조합이 중요하다
  • 19. 서울에서 부산까지 고속도로 우선으로 얼마나 걸려 Intent ask.info.left_time Entity LCP_CITY@DEP Entity LCP_CITY@DEST Domain navigation Entity SEARCH_TYPE.EXPRESS@SEARCH_TYPE
  • 21. NLU 개발은 NLU Tag 정의부터 시작이다 문장 Design (A안) Design (B안) Design (C안) 에어컨 켜줘 turn_on.aircon turn_on<OP_DEVICE=에어컨> turn_on<OP_DEVICE_AIRCON=에어컨> 에어컨 꺼줘 turn_off.aircon turn_off<OP_DEVICE=에어컨> turn_off<OP_DEVICE_AIRCON=에어컨> 자동차 시동 켜줘 turn_on.car turn_on<OP_DEVICE=자동차> turn_on<OP_DEVICE_CAR=자동차> 자동차 시동 꺼줘 turn_off.car turn_off<OP_DEVICE=자동차> turn_off<OP_DEVICE_CAR=자동차> 개발자의 고민 : 어느 방식이 가장 좋을까?
  • 22. `17년 1Q : 피자/치킨 배달 서비스 출시 `18년 2Q : 스타벅스 주문 출시 `18년 3Q: 11번가 주문 출시 음료수 주문해줘 : food_delivery(request.delivery.order<FOOD= 음료수>) 커피 주문해줘 : food_delivery(request.delivery.order<FOOD_TYPE=커피>) 생수 주문해줘 : shopping(request.order<PRODUCT= 생수>) NLU 정의는 개발 과정에서 변경될 수도 있다
  • 23. MUSIC VIDEO PODCAST WEATHER IOT... “아이유 노래 찾아줘" NLU 개발 과정에서 가장 어려운 것은 도메인 중의성(Domain Ambiguity)을 해소하는 것이다 MUSIC Intent Classifier Entity Extraction
  • 24. “아이유 찾아줘“??? NUGU 스피커 - 뮤직메이트에서 아이유 노래 검색 BTV x NUGU - BTV에서 아이유 나온 예능 찾아줘 KIDS폰 - 위키에서 아이유에 대해서 알려줘 Tmap x NUGU - 티맵에서 아이유 찾아줘 1) Domain Invocation Word (Open NLU) - Alexa : ASK NETFLIX, PLAY MICHAEL JACKSON - NUGU : 비스타 커텐 열어줘 2) No Domain Invocation Word (Built-in NLU) - N-best & Re-ranking + Top Query 자질
  • 25. 기계학습은 모르는 것을 모른다고 하는 것이 제일 어렵다 Out-of-Domain In-Domain Out-of-Service In-Service Rejection Types - Out-of-Domain (OOD) : 미지원 영역 (예, 택시 호출) - Out-of-Service (OOS) : 지원 영역이지만 미지원 기능 (예, 카톡 읽기)
  • 26. Shu, L. et al., "DOC: Deep Open Classification of Text Documents", EMNLP-2017, 2017 Sigmoid Func. Normalize Threshold filtering Estimated score Estimation probability (sum=1) Classifier Predicted label n-best
  • 27. Training Training Corpus Built-in dictionary In-Domain 1-Domain Anomaly Detection OOD OOD 온도가 몇 도야 싼 주유소로 가자 BTV 1박 2일 재생 아이유 노래 틀어줘 Classification Model Contents Words Detection 온도, 기온, 날씨, 강수량 등 Feature Extraction Language Modeling p(온도|BOS) = 0.xxx p(가|온도,BOS) = 0.xxx p(몇|온도, 가) = 0.xxx … Anomaly DetectionInput Sentence Feature Extraction Domain Entity Detection Build-in Entity User Entity
  • 28. Still Ambiguity & Context ... Chitchat ... Less Data, Good Performance ...