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
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
Zeppelin 노트북, 화재 뉴스 기사 데이터셋:
https://github.com/uosdmlab/playdata-zeppelin-notebook
2016년 10월 14일(금)에 "마루180"서 열린 "데이터야놀자"에서 진행한 세션 "Spark & Zeppelin을 활용한 머신러닝 실전 적용기" 슬라이드입니다. 많은 분들이 빠르고 쉽게 Spark ML을 시작했으면 하는 마음에서 발표를 준비했습니다! 실제로 Spark와 Zeppelin으로 머신러닝을 하며 발생한 문제점과 해결법, 간단한 텍스트 분류 예제와 성능 향상 사례 등의 내용을 담았습니다. 세션에서는 제플린 노트북과 슬라이드를 번갈아가며 진행하였는데, 노트북이 궁금하신 분들은 GitHub에 올려두었으니 직접 실행해보세요^^ (정말 열심히 정리했습니다 ㅠㅠ)
서울시립대학교 데이터마이닝연구실 김태준
*(SlideShare에서도 배달의민족 도현체 쓰고 싶어요)
Little Big Data #1 다양한 사람들의 데이터 사이언스 이야기에서 발표한 자료입니다
궁금한 것은 언제나 문의주세요 :)
행사 후기는 https://zzsza.github.io/etc/2018/04/21/little-big-data/ 에 있습니다!
(2018.5 내용 추가) 현재 회사가 없으니, 제게 관심있으신 분들도 연락 환영합니다 :)
발표자: 김현중 (서울대 박사과정)
발표일: 2017.9.
개요:
자연어처리에서 학습데이터에 존재하지 않는 단어를 제대로 처리할 수 없는 문제를 미등록단어(out of vocabulary) 문제라고 합니다. 이 문제는 애플리케이션에 따라서 해결책이 다릅니다. 문서 군집화/분류나 기계번역 등의 분야에서는 subwords 기반으로 단어를 표현함으로써 미등록 단어 문제를 우회하고 있습니다. 반면 키워드/연관어 분석, 토픽 모델링과 같은 분석을 위해서는 온전한 형태로 단어를 인식해야 하기에 subwords를 활용할 수 없으며, 미등록단어를 처리할 수 있는 토크나이저/품사판별기가 필요합니다.
그러나 한국어 형태소 분석기들은 말뭉치나 사전을 이용하여 학습을 하기 때문에 미등록단어를 제대로 인식하지 못합니다. 이를 해결하기 위하여 한국어 형태소 분석기들은 사용자 사전 추가 기능을 제공합니다. 하지만 텍스트의 도메인이 바뀔 때마다 각 도메인에 적합한 학습데이터나 사용자 정의 단어 사전을 만드는 일은 매우 고달픈 일입니다.
제가 최근에 작업을 하는 분야는 한국어 자연어처리 과정에서 이러한 수작업을 최소화하기 위한 "비지도학습 기반 자연어처리 방법들"입니다. 좀 더 세부적으로 설명하면 (1) 텍스트에서 통계 기반으로 단어를 추출하고, (2) 이를 이용하여 분석하려는 텍스트 도메인에 가장 적합한 토크나이저를 만듭니다. (3) 또한 신조어가 가장 많이 발생하는 명사의 경우, 토크나이징과 동시에 품사를 추정합니다. (4) 추가적으로, 띄어쓰기 오류를 데이터 기반으로 교정함으로써 (1) ~ (3)의 성능을 높입니다.
이번 테크톡에서는 (1) 위에서 언급된 비지도학습 기반 한국어 자연어처리 연구와, (2) 이를 바탕으로 키워드/연관어 분석을 수행한 사례를 공유합니다.
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축BOAZ Bigdata
데이터 엔지니어링 프로젝트를 진행한 Catch, Traffic! 팀에서는 아래와 같은 프로젝트를 진행했습니다.
수도권 교통의 혼잡성을 해결하기 위한 방안을 찾는 데이터 파이프라인 구축
18기 김인섭 숭실대학교 산업정보시스템공학과
18기 김재민 국민대학교 AI빅데이터융합경영학과
18기 서은유 동덕여자대학교 정보통계학과
18기 윤정원 숙명여자대학교 소프트웨어융합전공
18기 이현진 서울과학기술대학교 산업정보시스템전공
18기 조은학 명지대학교 융합소프트웨어학부
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 첫 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 좋다는 건 알겠는데 좀 써보고 싶소. 데이터!
연사 : 넘버웍스 하용호 대표
Zeppelin 노트북, 화재 뉴스 기사 데이터셋:
https://github.com/uosdmlab/playdata-zeppelin-notebook
2016년 10월 14일(금)에 "마루180"서 열린 "데이터야놀자"에서 진행한 세션 "Spark & Zeppelin을 활용한 머신러닝 실전 적용기" 슬라이드입니다. 많은 분들이 빠르고 쉽게 Spark ML을 시작했으면 하는 마음에서 발표를 준비했습니다! 실제로 Spark와 Zeppelin으로 머신러닝을 하며 발생한 문제점과 해결법, 간단한 텍스트 분류 예제와 성능 향상 사례 등의 내용을 담았습니다. 세션에서는 제플린 노트북과 슬라이드를 번갈아가며 진행하였는데, 노트북이 궁금하신 분들은 GitHub에 올려두었으니 직접 실행해보세요^^ (정말 열심히 정리했습니다 ㅠㅠ)
서울시립대학교 데이터마이닝연구실 김태준
*(SlideShare에서도 배달의민족 도현체 쓰고 싶어요)
Little Big Data #1 다양한 사람들의 데이터 사이언스 이야기에서 발표한 자료입니다
궁금한 것은 언제나 문의주세요 :)
행사 후기는 https://zzsza.github.io/etc/2018/04/21/little-big-data/ 에 있습니다!
(2018.5 내용 추가) 현재 회사가 없으니, 제게 관심있으신 분들도 연락 환영합니다 :)
발표자: 김현중 (서울대 박사과정)
발표일: 2017.9.
개요:
자연어처리에서 학습데이터에 존재하지 않는 단어를 제대로 처리할 수 없는 문제를 미등록단어(out of vocabulary) 문제라고 합니다. 이 문제는 애플리케이션에 따라서 해결책이 다릅니다. 문서 군집화/분류나 기계번역 등의 분야에서는 subwords 기반으로 단어를 표현함으로써 미등록 단어 문제를 우회하고 있습니다. 반면 키워드/연관어 분석, 토픽 모델링과 같은 분석을 위해서는 온전한 형태로 단어를 인식해야 하기에 subwords를 활용할 수 없으며, 미등록단어를 처리할 수 있는 토크나이저/품사판별기가 필요합니다.
그러나 한국어 형태소 분석기들은 말뭉치나 사전을 이용하여 학습을 하기 때문에 미등록단어를 제대로 인식하지 못합니다. 이를 해결하기 위하여 한국어 형태소 분석기들은 사용자 사전 추가 기능을 제공합니다. 하지만 텍스트의 도메인이 바뀔 때마다 각 도메인에 적합한 학습데이터나 사용자 정의 단어 사전을 만드는 일은 매우 고달픈 일입니다.
제가 최근에 작업을 하는 분야는 한국어 자연어처리 과정에서 이러한 수작업을 최소화하기 위한 "비지도학습 기반 자연어처리 방법들"입니다. 좀 더 세부적으로 설명하면 (1) 텍스트에서 통계 기반으로 단어를 추출하고, (2) 이를 이용하여 분석하려는 텍스트 도메인에 가장 적합한 토크나이저를 만듭니다. (3) 또한 신조어가 가장 많이 발생하는 명사의 경우, 토크나이징과 동시에 품사를 추정합니다. (4) 추가적으로, 띄어쓰기 오류를 데이터 기반으로 교정함으로써 (1) ~ (3)의 성능을 높입니다.
이번 테크톡에서는 (1) 위에서 언급된 비지도학습 기반 한국어 자연어처리 연구와, (2) 이를 바탕으로 키워드/연관어 분석을 수행한 사례를 공유합니다.
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축BOAZ Bigdata
데이터 엔지니어링 프로젝트를 진행한 Catch, Traffic! 팀에서는 아래와 같은 프로젝트를 진행했습니다.
수도권 교통의 혼잡성을 해결하기 위한 방안을 찾는 데이터 파이프라인 구축
18기 김인섭 숭실대학교 산업정보시스템공학과
18기 김재민 국민대학교 AI빅데이터융합경영학과
18기 서은유 동덕여자대학교 정보통계학과
18기 윤정원 숙명여자대학교 소프트웨어융합전공
18기 이현진 서울과학기술대학교 산업정보시스템전공
18기 조은학 명지대학교 융합소프트웨어학부
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 첫 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 좋다는 건 알겠는데 좀 써보고 싶소. 데이터!
연사 : 넘버웍스 하용호 대표
- 소개
2018년 11월 2일, Tech Meets Startup 발표자료
http://tech-startup.kr/
- 발표 제목: 님아 제발 그 강을 건너지 마오 - 기술 스타트업과 돈의 강
- 발표자: Lablup 신정규 대표
- 내용: Backend.AI를 만드는 래블업이 '기술 스타트업을 하면서도 어떻게 (아직) 망하지 않았는가?'에 대해, 제품개발과 투자유치, 시장진입의 연동 관점에서 경험을 소개합니다.
미래를 살아갈 아이들을 위한 SW교육 이야기
01 소프트웨어와 미래
- 변화를 이끈 힘
- 우리 주변의 소프트웨어
- 소프트웨어와 미래
02 소프트웨어 교육의 목표
- 소프트웨어 교육의 필요성
- 소프트웨어 교육의 세계적 흐름
- 소프트웨어 교육의 목표
03 소프트웨어 교육의 방법
- 언플러그드 활동
- 알고리즘 활동
- 교육용 프로그래밍 언어
- 피지컬 컴퓨팅
이수지님은 17년 8월 오픈하여 3개월 만에 facebook 50만 좋아요와 누적 100만 사용자, 누적 100만 다운로드, 120만 AU를 달성한 타로챗봇 라마마와 친구들, 헬로우봇(http://hellobot.co/)의 기획자 겸 대표입니다.
#여기컨18 에서는 "스타트업 기획자의 월화수목금"이라는 제목으로 헬로우봇 리서치부터 출시, 운영까지 시기별 기획자의 한 주를 공유해주셨습니다.
19. 19
챗봇의 대화 방법
대화의 “의도(Intent)”
대화의 “재료(Entity)”
대화의 “분위기(Context)”
대화의 경험을 쌓고 응용(Training)”
20. 20
챗봇의 대화 방법
대화의 “의도(Intent)”
대화의 “재료(Entity)”
대화의 “분위기(Context)”
대화의 경험을 쌓고 응용(Training)”
(사과라는 과일을 좋아한다)
(사과, 배, 복숭아 등 과일 이름)
(과일 이야기를 이어서 하기)
(과일 이야기를 할 때는 주로 이런
표현을 사용하는 구나...)
25. 25
챗봇에게 무엇을 가르칠까? 교재는 뭘로?
● 쇼핑몰이 가지고 있는 상품 목록 (Entity - 대화의 재료)
● 쇼핑몰 상담 목록? 쇼핑몰 직원의 대화록? (Intent - 대화의 의도)
● 기존 대화에 대한 분석, 직관, 상황설정 (Context - 대화의 분위기 및 흐름)
● 학습: 대화록 입력 또는 실제 대화의 내용을 보고 교육
(연기는 설정이 중요합니다~)
26. 26
만들어 볼 챗봇에 대한 정리
● 쇼핑몰이 가지고 있는 상품 목록 (Entity - 대화의 재료)
⇒ 상품 목록 CSV 파일
● 쇼핑몰 상담 목록? 쇼핑몰 직원의 대화록? (Intent - 대화의 의도)
⇒ 최대한 단순환 상황을 가정(시간적인 한계)
● 기존 대화에 대한 분석, 직관, 상황설정 (Context - 대화의 분위기 및 흐름)
⇒ 최대한 단순환 상황을 가정(시간적인 한계)
● 학습: 대화록 입력 또는 실제 대화의 내용을 보고 교육
⇒ 인터넷 상에 있는 스마트폰 매장 대화 예시 및 지속적인 훈련
29. 29
데이터 모으기
쇼핑몰
검색키워드
(소스)
데이터 가공 및 정제 (Google DataPrep)
키워드 분류하여 연관된 것들끼리 묶음
스마트폰 관련 키워드 추출
향후 가공/정제 작업 자동화
키워드 중에서 애매한
부분에 대한 판단 요청
(예) samsung galaxy case
Google Natural Language API
30. 30
데이터 모으기
쇼핑몰
검색키워드
(소스)
데이터 가공 및 정제 (Google
DataPrep)
Google Natural Language API
제품, 카테고리, 브랜드,
상품모델로 구분하여
Entity 등록
Dialogflow(api.ai)
35. 35
챗봇 상담원 - 대화의 기술 가르치기, 기본적인
인사법
Dialogflow(api.ai)
이런 대화는 어떤 경우에 할까요?
(기본 인사법부터)
Small Talk
(Intent)
고객을
처음만나면
인사를 해야겠군
Hello!!
Good morning
Hello
... 보통은 기본 내장
36. 36
챗봇 상담원 - 대화의 기술 가르치기, 의도(Intent)
Dialogflow(api.ai)
이런 대화는 어떤 경우에 할까요?
(고객이 스마트폰을 찾으면 어떻게 대답)
아 고객이
스마트폰을
찾으면
(Intent) 이렇게
대답(행동)해야
하는 구나
May I see smartphones?
라고 물으면…
smartphone(s)라는 Entity
Yes we have라 대답하고
원하는 모델이 있는지 추가 질문
38. 38
챗봇 상담원 - 대화의 기술 가르치기, 분위기
(Context)
Dialogflow(api.ai)
고객이 가격을 물으면 어떤 제품에 대한
가격을 답하는게 맞을까요?
고객이 갑자기
가격을 물을 때는
그 전까지 대화하던
브랜드라는
Context를
참고해야겠구나
현재 Context가
“brand-chosen”인지 파악
해당 Context로부터 정보
(브랜드)를 추출하여 대답