Python을 활용한 챗봇 서비스 개발 2일차

파이썬을 활용한 챗봇 서비스 개발
2일차
1. Machine Learning Algorithms
2. Text mining Algorithms
3. Topic Modeling
4. Restful API 데이터 수집
5. Elastic search + Kibana
6. 검색기반 챗봇
l 2일차 강의 목차
92
l 머신러닝 알고리즘과 챗봇
왜 챗봇에서 머신러닝(딥러닝)과 텍스트 마이닝이 필요한가?
1. 사용자 의도 분류
-> 질문을 어떻게 분류할것인가? (Machine learning 분류 모델)
2. 적절한 답변 검색 or 생성
-> 답변을 어떻게 찾을(만들) 것인가? (Text mining 검색)
ex) 볼만한 연예 뉴스 있어?
-> ”뉴스 검색”에 관한 의도
-> 필요한 정보는?
시점: 오늘(기본값), 카테고리: 연예
-> DB Query를 이용한 답변 (검색 기반 모델)
93
Machine
Learning
94
l 머신러닝 알고리즘
1. Machine Learning
95
l 머신러닝 알고리즘
1. Machine Learning
96
l 머신러닝 알고리즘
Supervised Learning : 라벨링된 데이터를 가지고 학습하는 것 (Regression, Classification)
공부시간(x1)과 수면시간(x2)에 해당하는 성적(y)에 대한 데이터를 학습하는 것
Unsupervised Learning : 라벨링이 되어 있지 않은 데이터를 가지고 학습하는 것 (Clustering)
공부시간(x1)과 수면시간(x2)를 가지고 데이터를 학습
X1(공부시간) X2(수면시간) Y(성적)
10 3 A
8 5 B+
6 8 ?
X1(공부시간) X2(수면시간)
10 3
8 5
6 8
1. Machine Learning
97
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Reinforcement Learning : Agent의 행동에 따른 보상을 통하여 스스로 학습
파블로프의 개 실험처럼, 행동에 따른 보상으로 최적의 행동을 하도록 개(Agent)를 학습
98
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Training Set, Validation Set, Test Set
Training Set : 머신러닝 모델을 생성하기 위해 학습되는 데이터
Validation Set : 모델을 생성하는 과정에서 통계적 신뢰도를 높이기 위해 사용되는 데이터
Test Set : 생성된 모델의 성능을 측정하기 위해 사용되는 데이터
Cross Validation : 분류기 성능측정의 통계적 신뢰도를 높이기 위해서 쓰는 방법
99
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Classification : 예측하고자 하는 값이 범주성을 가질 때 사용되는 알고리즘
주가가 오를지 내릴지를 예측하는 문제 -> Classification
Regression : 예측하고자 하는 값이 연속성을 가질 때 사용되는 알고리즘
기본적인 A에 대한 영화정보가 제공될 때, A의 관광객 수를 예측하는 문제 -> Regression
100
l 머신러닝 알고리즘 Process
1. Machine Learning
101
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Decision Tree Classifier(의사결정나무) : 과거에 수집된 데이터들을 분석하여 이들 사이에
존재하는 패턴을 속성의 조합으로 나타내는 분류 모형
스무고개 방식으로 질문에 대한 “예”, “아니오”의 대답으로 맞추는 방법
102
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Decision Tree Classifier 원리
반복적 분할 : Training Data Set을 이용하여 독립변수의 차원공간을 반복적으로 분할
가지치기 : Test Set을 이용하여 가지치기를 함
분할 기준 : 부모보다 자식의 순수도가 증가하도록 분류나무를 형성해 나감
순수도 측정 방법
- 지니 지수
- 엔트로피 지수
103
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Random Forest : 다수의 의사결정 나무를 결합하여 투표를 통해 다수결로 결과를 결정하는
방법으로 의사결정나무의 오버피팅을 방지함.
트리를 생성 시, 변수들을 랜덤하게 선택하여 트리를 만들고 만든 트리들에서 나오는 빈도수를
voting하여 결정
104
l 베이지안 확률
1. Machine Learning
이 사람이 누구일까요?
문제들을 확률적 classification 문제로 볼 수 있으며 Bayesian 확률이
사용되는 전형적인 예가 됩니다.
조건부 확률로 생각해 보면 P(눈앞의사람|철수)와
P(철수|눈앞의사람)의 2가지 확률을 생각할 수 있습니다.
눈 앞에 한명의 사람이 서 있습니다. 그런데 이 사람은 커튼에 가려져
있으며 우리가 볼 수 있는 것은 커튼에 비친 그 사람의 형상뿐입니다.
http://darkpgmr.tistory.com/119
105
l 베이지안 확률
1. Machine Learning
‘지식 또는 믿음의 정도를 나타내는 양’으로 해석하는 확률론
P(A): 사전 확률
P(H): 사후 확률
P(D): 경계확률
P(D|H): 조건부확률(Likelihood)
106
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Naïve Bayesian Classifier : 베이즈 확률 이론을 바탕으로 분류하는 방법
베이즈 이론 : 사전확률과 사후확률 사이의 관계를 나타내는 정리
만약 P 𝐴# 𝐵 > P 𝐴& 𝐵 이면, 분류 𝐴#에 속함
만약 P 𝐴# 𝐵 < P 𝐴& 𝐵 이면, 분류 𝐴&에 속함
107
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Naïve Bayesian Classifier 예
108
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Linear SVM : 분류에 대한 오차를 줄이면서 동시에 여백을 최대로 하는 결정 경계를 찾아내는
이진 분류기
마진(Margin)
각각의 클래스의 데이터 벡터들로부터 주어진 판별 경계까지의 거리로 마진이 클수록 분류를 잘함
서포트 백터(Support Vector)
판별 경계까지의 거리가 가장 짧은 데이터 벡터를 의미함
커널(Kernel)
선형분리가 불가능한 저차원의 데이터를 고차원 공간의 값으로 매핑하는 방법
109
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
타이타닉 생존 예측 (Decision Tree)
110
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
영화 리뷰에 대한 긍부정 분류기
데이터셋 : http://www.cs.cornell.edu/people/pabo/movie-review-data/review_polarity.tar.gz
1. 데이터셋에는 영화에 대한 긍정과 부정이 라벨링된 문장이 있음
2. Train Data Set과 Test Data Set으로 나눔
3. 띄어쓰기를 기준으로 문서 전체에 대한 TFIDF를 계산함
4. TFIDF에 대한 모델을 저장함
5. One-Hot-Encoding 기반의 벡터를 생성함
6. Linear SVM 모델을 생성하고 저장함
7. 평가 테스트
8. 새로운 문장에 대한 예측
id1 id2 id3 id4 …
doc1 TFIDF(doc1,id1) TFIDF(doc1,id2) TFIDF(doc1,id3) TFIDF(doc1,id4)
doc2 TFIDF(doc2,id1) TFIDF(doc2,id2) TFIDF(doc2,id3) TFIDF(doc2,id4)
…
111
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
영화 리뷰에 대한 긍부정 분류기
112
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
영화 리뷰에 대한 긍부정 분류기 (Naïve Bayes Classification)
113
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
영화 리뷰에 대한 긍부정 분류기(SVM)
114
l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
영화 리뷰에 대한 긍부정 분류기(Random Forest)
115
Text Mining
116
l 텍스트 마이닝 알고리즘
2. Text Mining
TF-IDF (Term Frequency Inverse Document) :
텍스트마이닝에서 흔하게 접하는 가중치를 구하는 알고리즘
1. 특정 단어가 해당 문서 내의 얼마나 중요한지를 측정하는 척도
2. 문서 내 단어들에 척도를 계산해서 중요 단어를 추출
3. 검색엔진에서 검색결과의 순위를 결정
TF(Term Frequency) : 문서 내 특정 단어의 빈도
하나의 문서 내에서의 단어 빈도 (워드 카운트)
높을수록 연관성이 높음
IDF(Inverse Document Frequency) : 해당 단어가 나타난 문서의 역 빈도수
전체 문서에서 해당 단어의 역빈도
낮을 수록 연관성이 높음
117
l 텍스트 마이닝 알고리즘
2. Text Mining
TF(Term Frequency)의 정규화
- 불린 빈도
문서에 나타나면 1, 없으면 0으로 표기하는 방법
문서에서 단어가 1번 나타나거나 100번 나타나거나 똑같은 가중치를 갖게 되어 중요도를 판단하기 힘들어짐
- 로그 스케일 빈도
TF값에 Log값을 취하는 방법
작은 빈도의 값일 때는 TF 값이 커지고 빈도 수가 늘어날수록 TF 값의 차이는 크게 벌어지지 않음
- 증가 빈도
문서 길이에 따라 단어의 상대 빈도 값을 조정하는 방법
최대치가 1로 보정되는 효과를 나타낼 수 잇음
118
l 텍스트 마이닝 알고리즘
2. Text Mining
IDF(Inversed Document Frequency) : 해당 단어가 나타난 문서의 역 빈도수
로그는 왜 ? : 전체 문서의 수가 많아질수록 IDF값은 무한대로 커지므로, 로그를 취함
분모에 +1은 왜 ? : 특정 단어가 전체의 문서 안에 존재하지 않을 수도 있기 때문에
TF-IDF
TF-IDF 값은 특정 문서 내에서 단어 빈도가 높을 수록, 전체 문서들엔 그 단어를 포함한 문서가 적을수록 높아짐
TF-IDF 값을 통해 흔한 단어는 걸러내며, 문서 내에서 중요한 단어들을 판별할 수 있음
119
l 텍스트 마이닝 알고리즘 Example
2. Text Mining
TF(Term Frequency) : 문서 내 특정 단어의 빈도
Doc 1: This is a sample a
Doc 2: This is another example anther example example
120
l 텍스트 마이닝 알고리즘
2. Text Mining
TF(Term Frequency) : 문서 내 특정 단어의 빈도
검색 엔진에서 본문에 북한북한북한 이렇게 적용하면..
TF값이 높아져 상위 랭킹될 수 있음.
문서 본문 TF
문서1
아주대 아주통일연구소와 북한 인권단체 나우(NAUH)가 주관
하는 이번 행사는 북한 시장(장마당)이 그대로 재연된다.
2
문서2
라자루스는 2014년 미국 소니픽처스, 지난해 방글라데시 중앙
은행 등을 해킹한 사이버범죄 조직이다. 현재 북한이 배후로 알
려져 있다.
1
문서3
구글 연구원인 닐 메타 역시 지난 15일 자신의 트위터에 "이번
사태를 일으킨 악성 프로그램 워너크라이와 북한의 소행으로
인식되는 해킹에 유사성이 있다"고 전했다.
1
문서4
그는 이날 기자회견에서 북한의 미사일 발사에 대해 이같이 비
난하고 유엔안전보장이사회에 이에 대한 확고한 대응을 촉구했
다. 그는 프랑스는 안보리가 북한에 대한 강력한 안보리 결의를
추진하길 기대한다고 밝혔다.
2
121
l 텍스트 마이닝 알고리즘
2. Text Mining
DF(Document Frequency) : 해당 단어가 나타난 문서의 빈도수
문서 본문 DF(북한) DF(해킹)
문서1
아주대 아주통일연구소와 북한 인권단체 나우(NAUH)가 주관하는 이번 행
사는 북한 시장(장마당)이 그대로 재연된다.
4 2
문서2
라자루스는 2014년 미국 소니픽처스, 지난해 방글라데시 중앙은행 등을 해
킹한 사이버범죄 조직이다. 현재 북한이 배후로 알려져 있다.
문서3
구글 연구원인 닐 메타 역시 지난 15일 자신의 트위터에 "이번 사태를 일으
킨 악성 프로그램 워너크라이와 북한의 소행으로 인식되는 해킹에 유사성이
있다"고 전했다.
문서4
그는 이날 기자회견에서 북한의 미사일 발사에 대해 이같이 비난하고 유엔
안전보장이사회에 이에 대한 확고한 대응을 촉구했다. 그는 프랑스는 안보
리가 북한에 대한 강력한 안보리 결의를 추진하길 기대한다고 밝혔다.
DF -> IDF를 하는 이유
모든 문서에서 흔하게 나오는 단어라면, 변별력이 떨어짐
예를 들어, 뉴스에서 기자라는 단어는 매우 흔하게 나오는 단어이기 때문에 문서에 등장횟수의 역을 곱해서 가중치를 낮춰버림
122
l 텍스트 마이닝 알고리즘
2. Text Mining
Python을 이용한 클리앙 질문 TF-IDF 계산
1일차에 수집된 클리앙 질문 데이터에는 카테고리가 존재함.
문서를 카테고리 별로 분류하고 카테고리 별 TF-IDF를 계산함.
알고리즘 설명
1. 데이터를 Pandas의 DataFrame으로 변환
2. 질문과 대답 중에 Null 값 제외
3. 형태소 분석기를 통해 명사를 추출
4. 명사의 길이가 2이상이만 필터링하며, 명사가 없는 경우 제외
5. 카테고리별로 그룹화
6. 카테고리별 TF-IDF 계산
7. 계산된 TF-IDF 데이터를 파일에 저장
123
l 텍스트 마이닝 알고리즘
Python을 이용한 클리앙 질문 TF-IDF(소스)
2. Text Mining
124
l 텍스트 마이닝 알고리즘
Python을 이용한 클리앙 질문 TF-IDF(결과-1)
공유기 0.34900797791415333
그래픽 0.2734834590765248
메인보드 0.22654849220337878
사양 0.21969926667257852
부팅 0.21473399687398592
모니터 0.2032988283212451
하드 0.19944200998023642
바이오스 0.15885091363332982
업그레이드 0.1358777668588133
파티션 0.12693907579014718
폴더 0.11901423131748826
기계식 0.11564364176138563
듀얼 0.11223493966016297
비트 0.11148168503157127
레이크 0.10876606412186358
리눅스 0.104702393374246
윈도 0.10100509143377684
엑셀 0.09923890269749214
키보드 0.0933795056024982
라데온 0.09063838676821964
블루스크린 0.0903044770697262
인터넷 0.08811346517535176
쿨러 0.08783061399598908
외장 0.08618505600484744
마우스 0.07750721473757795
프린터 0.07634288403859338
아웃룩 0.0729989585988665
로지텍 0.07084135391121528
본체 0.07055485021142237
한성 0.07026449119679126
조립 0.0680876776354991
무선 0.06793933846853722
공유기 0.30153971363996057
렌즈 0.26803530101329825
에어컨 0.24545979883409103
니콘 0.20226730545457125
이어폰 0.16311157179951197
블루투스 0.15416612970548974
청정기 0.15276059984801316
프로젝터 0.14239375366331472
캐논 0.1417494380358789
넥서스 0.13261916887279668
헤드셋 0.13103493020466514
디카 0.12435291609511194
포고 0.1236526806156699
소니 0.10848727645941869
프린터 0.10843330220906476
청소기 0.10704261904043066
플러그 0.10502344727203755
킨들 0.10373481601716593
공기 0.1030905003897301
복합 0.09966036945143546
샤오미 0.09835585776584313
똑딱이 0.08674143267069381
기어 0.08585982665624832
파이 0.08504966282152734
미니 0.08488653561561534
배터리 0.08431554995003944
패드 0.08165095017735197
누크 0.07638029992400658
리시버 0.075668058287201
마이크 0.07457308887984009
헤드폰 0.0744184650800574
터치 0.07215450221346688
저축 0.14989462725998468
사랑니 0.11783160538619117
적금 0.11302215210512213
에어컨 0.10099323399219148
발치 0.09900467372594084
연금 0.09338074793290721
중고차 0.08982141607270128
숙박 0.08982141607270128
치과 0.08198696258508495
잇몸 0.07884486623527717
항공권 0.07706917696771319
전세 0.07652116507941262
식물 0.07614967695025959
문법 0.07518969314078243
어금니 0.07462103411553017
영작 0.074180870985415
인천 0.07164098873506232
마일리지 0.07060588925117812
치아 0.0692652711008393
실비 0.06646046434867575
진료 0.06609416574472003
검진 0.06609416574472003
렌즈 0.06396429667360812
훈련 0.06396429667360812
이직 0.063902798499484
렌트카 0.06365227571422466
진로 0.06332446820074218
식사 0.062115307632365564
안경 0.06146812899854048
예금 0.06091974156020768
충치 0.06091974156020768
소개팅 0.057723877485939025
갤럭시 0.40617169319291097
요금제 0.3779486699990636
유심 0.3016591400816088
공기 0.25093612666625464
기변 0.2083805354104642
넥서스 0.19677513314192735
루팅 0.18658249047030773
언락 0.13746935634760035
리퍼 0.12442273037120877
엑스페리아 0.1200935442554349
약정 0.10543336855721674
위약 0.10311870749751728
옵티머스 0.09965519626910294
컨트리 0.0957530855334089
배터리 0.09484399092919935
주소록 0.08844494678137964
원금 0.0851000777389907
아크 0.08248314780901168
별정 0.08017589031919638
백업 0.07976316100599434
피쳐 0.07935813718055297
루미아 0.0757234133402223
할부금 0.07544910401177884
번이 0.07544910401177884
젤리빈 0.07511762603350051
액정 0.06740369064094555
프라다 0.06646700260337833
자급 0.06470335008215847
테이크 0.06300187989906494
외판 0.06203265739948406
블랙베리 0.05922716033116569
터치 0.05870100602152639
전세 0.24565093565462254
교통사고 0.24329653429658896
합의 0.18292712601862432
소송 0.16803167792472462
민사 0.15795060224849575
소득세 0.1522169317671035
실업 0.15156819012971728
급여 0.14860027843264714
체불 0.13770263781334682
전입 0.13734834978130067
퇴직금 0.1344253423397797
세입자 0.13047165580037443
계약서 0.1282041617850289
부동산 0.1266438761535489
보증금 0.12651796926096914
전세금 0.12282249889821918
증여세 0.11475219817778903
재판 0.11016211025067747
임대차 0.10987867982504054
고소 0.10926491061224054
월세 0.1088246372977732
연차 0.10714303095376568
계약 0.1033672845342852
공제 0.09765412929389206
수당 0.09686532021542948
책임 0.09669005232412999
폭행 0.09407680766672107
변호사 0.0929116336760242
토지 0.09271013610237795
근저당 0.09271013610237795
명예훼손 0.08927642735784544
주인 0.08845979289117237
PC 카테고리 상위 그외장비 카테고리 상위 기타 카테고리 상위 모바일 카테고리 상위 법률 카테고리 상위
2. Text Mining
125
l 텍스트 마이닝 알고리즘
2. Text Mining
Python을 이용한 클리앙 질문 TF-IDF(결과-2)
저축 0.19652951815670713
호칭 0.18338261523736096
적금 0.16235047152075807
전세 0.13040300359332388
금리 0.12532317099847992
공제 0.10754488036316327
연금 0.10557642353612072
에어컨 0.08892136194427457
급여 0.08733348048098395
여권 0.0798271276922449
축의금 0.07756635198572134
수학 0.07560599676421437
통장 0.07352509777070389
예금 0.07120634715822721
청약 0.07095744683755102
장염 0.07004024684749888
칼로리 0.06835809327189812
복장 0.06827890292149655
화학 0.06550983938556905
검진 0.06463862665476779
연봉 0.06312060280315146
담보 0.06248400576627553
소득 0.06242696980531462
훈련 0.06097905587602041
몸살 0.06003449729785618
섭취 0.059880037628526034
교통사고 0.05875161414175284
실비 0.056544215448673475
부동산 0.05618427282478316
부양 0.05613753527674316
세입자 0.05602014310079875
의료 0.05432679523500001
정장 0.22446419417755106
아마존 0.2217379757079836
배송 0.21124150348512047
코스트코 0.20083638426412467
직구 0.17244204366132282
브랜드 0.16712594760362212
가방 0.16243889005371875
의자 0.14267562140030576
결제 0.14001544197283494
네스프레소 0.1331762135296640
청소기 0.12995295452384537
청정기 0.11467951720609958
선글라스 0.11344640411786194
패딩 0.10851395176491142
남성 0.1027933601121189
알리 0.09840442708934183
안경 0.09835167171221253
에어컨 0.09723752541294724
구두 0.09542000157345289
아울렛 0.0949497077942975
안경테 0.0949497077942975
면도기 0.0917849538944642
주문 0.0886577028823975
반지 0.08802468911779068
이베이 0.08509639980678323
이케아 0.08312302576967638
유니클로 0.07987425494021747
시계 0.07816123065953436
공기 0.07804681045549768
렌즈 0.0736051220555913
배송지 0.0715799980938068
다이슨 0.07152055911778253
근교 0.20607358355265434
맛집 0.16729634035020188
여의도 0.15401047158342693
식사 0.14118344764910218
회식 0.13710688323890446
소개팅 0.13627075169083505
인천 0.13604349981280853
주차 0.1269739331586213
숙박 0.12318947883107935
근방 0.11091914962900784
벚꽃 0.11081241248075839
종로 0.10534405627163845
강남역 0.10520697318857193
강릉 0.09186412760780976
서울역 0.08996984409011415
술집 0.08996984409011415
홍대 0.08948639098798072
횟집 0.08827429468806178
경주 0.0868984990884687
레스토랑 0.08451794172261233
판교 0.08166493540487284
이태원 0.0807615887571629
계곡 0.0794500563094571
고기 0.0788966325097924
초밥 0.07888341227443818
명소 0.07849783336311454
종각역 0.07829587032635847
부근 0.07497508434128114
전주 0.07474417816717176
찜질방 0.07336002671963153
건대 0.07324888282626402
인근 0.07151798315689216
공유기 0.879163227465268
워드프레스 0.1712646511001665
도메인 0.14918568075611835
속도 0.10479120910354418
호스팅 0.09667232112996468
크롬 0.08911091671118379
티스토리 0.08758668223579812
파이어폭스 0.0793534831467442
무선 0.07926440657735133
구축 0.0716091267629368
단자함 0.05830051823026107
애드센스 0.05625888571556842
익스플로러 0.0547416763973738
초대장 0.05213492990226079
브라우저 0.05213492990226079
개편 0.21223277897659035
리앤 0.20736058220809783
쪽지 0.20497108262575311
리오스 0.1979418462023354
닉네임 0.16653900463342441
리플 0.15640825606002803
저격 0.13824038813873188
공원 0.13237715752913223
창당 0.13219163083844165
당은 0.13219163083844165
최다 0.12319731304044126
싱고 0.12319731304044126
클리 0.11730619204502102
게시 0.11529623397698613
스크랩 0.10753067604126926
기게 0.10753067604126926
모집 0.10520867744444053
점수 0.1048451265383643
모두 0.09394507953680352
전과 0.09239798478033096
건의 0.0921602587591546
징계 0.0921602587591546
시판 0.08873255174587448
크루지 0.08812775389229444
빵꾸 0.08812775389229444
노주현 0.08812775389229444
소게 0.08190697084234567
소모임 0.07863384490377322
서명 0.07820412803001402
크롬 0.07056883517005288
메모 0.07056883517005288
공감 0.06912019406936594
상식 카테고리 상위 쇼핑 카테고리 상위 위치 카테고리 상위 인터넷 카테고리 상위 클리앙 카테고리 상위
126
Topic Modeling
127
l 주제 모델링
3. Topic Modeling
문서 집합의 추상적인 주제를 발견하기 위한 통계적 모델
Ex)
강아지에 대한 문서에서는 “개”, “멍멍”, “뼈다귀” 등이 더 자주 등장
고양이에 대한 문서에서는 “고양이”, “야옹”, “참치캔” 등이 더 자주 등장
강아지를 주제로한 문서 고양이를 주제로한 문서
뼈다귀 개
산책
사료 멍멍
야옹
참치캔
그 ~이다
우유
생선
128
l 주제 모델링
3. Topic Modeling
Bag of Words
: 문서를 분류하기 위한 방법으로 문서들과 단어들의 관계를 고려하여 단어들의 집합을 저장
관리하는 방법
129
l 주제 모델링
3. Topic Modeling
Bag of word with python gensim
자연어처리를 위한(한국어 포함) 다양한 모델을 지원하는 Python 라이브러리
130
Elasticsearch
131
l 챗봇 제작(DB 환경 설정)
4. Elasticsearch
ElasticSearch : 아파치 루씬을 기반의 분산형 검색 엔진
ElasticSearch 특징
1. 여러 개의 노드로 구성되는 분산시스템으로 데이터는 각 노드에 분산되어 저장되며 복사본을 유지함
2. JSON 문서 형식으로 저장됨
3. 저장 시 인덱싱이되며, 모든 인덱스들은 단일 쿼리로 빠르게 사용할 수 있음.
4. 문자열 검색 기능이 빨라서 챗봇 작업에 용이
ElasticSearch 용어
1. 인덱스 (=데이터베이스)
2. 타입 (=테이블)
3. 도큐먼트 (=열)
4. 필드 (=행)
5. 매핑 (=스키마)
132
l 챗봇 제작(DB 환경 설정)
4. Elasticsearch
ElasticSearch 저장 과정
133
l 챗봇 제작(DB 환경 설정)
4. Elasticsearch
ElasticSearch 설치-1
자바 환경 확인
$ java -version
$ echo JAVA_HOME
$ curl -L -O
https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.5/elasticsearch-
2.4.5.tar.gz
$ tar -xvf elasticsearch-2.4.5.tar.gz
$ cd elasticsearch-2.4.5/bin
$ ./elasticsearch
localhost:9200
134
l 챗봇 제작(DB 환경 설정)
4. Elasticsearch
ElasticSearch Kibana 설치 : 모니터링 툴
# 환경 세팅
$ vi config/elasticsearch.yml
$ bin/elasticsearch
# 모니터링툴 Kibana
$ ./bin/kibana
# 웹에서 실행
http://localhost:9200
http://localhost:5601
135
4. Elasticsearch
Python 내 ElasticSearch 사용
$ pip3 install elasticsearch
l 챗봇 제작(DB 환경 설정)
136
4. Elasticsearch
Python 내 ElasticSearch 사용
$ pip3 install elasticsearch
l 챗봇 제작(DB 환경 설정)
137
4. Elasticsearch
Python 내 ElasticSearch 사용 (es_ex1)
l 챗봇 제작(DB 환경 설정)
138
4. Elasticsearch
Python 내 ElasticSearch 사용 (es_ex2)
l 챗봇 제작(DB 환경 설정)
139
4. Elasticsearch
Python 내 ElasticSearch 사용 (es_ex3)
l 챗봇 제작(DB 환경 설정)
140
4. Elasticsearch
클리앙 데이터 ES에 업로드
l 챗봇 제작(DB 환경 설정)
141
4. Elasticsearch
클리앙 데이터를 이용한 서칭 봇(일반)
l 챗봇 제작(키워드 매칭)
142
4. Elasticsearch
클리앙 데이터를 이용한 서칭 봇(복합명사 추출)
l 챗봇 제작(키워드 매칭)
143
Restful API
144
l 검색 데이터 수집
5. Restful API
Python과 Coinone Restful API를 이용한 데이터 수집 프로세스
145
l 검색 데이터 수집
5. Restful API
CoinOne에서 제공하는 RestfulAPI 문서 및 사용법
146
l 검색 데이터 수집
5. Restful API
CoinOne에서 제공하는 RestfulAPI 문서 및 사용법
147
l 검색 데이터 수집
5. Restful API
Elasticsearch에 저장 스크립트 및 스케쥴링
148
l 검색 데이터 시각화
5. Restful API
검색된 데이터 및 로그분석을 위한 데이터 시각화 대시보드 구성
149
검색기반 챗봇
150
6. 검색기반 챗봇
웹서버 용어 설명
HTTPS
클라이언트와 서버간의 통신을 가능하게 하는 기술로 request-response 프로토콜로 동작
Request
클라이언트가 서버로 전송하는 정보
Response
서버가 클라이언트로 전송하는 정보
GET
클라이언트가 입력한 쿼리의 이름과 값이 결합되어 스트링 형태로 서버에 전달되는 방식
민감한 데이터를 다룰 때 사용하면 안됨
POST
클라이언트와 서버 간에 인코딩하여 서버로 전송함
브라우저 기록에 남지 않음
l 챗봇 제작(웹서버 환경 구축)
151
l 챗봇 제작
6. 검색기반 챗봇
목표 : 클리앙 데이터를 이용하여 장비(PC, 그외장비, 모바일, 인터넷), 법률, 상식, 쇼핑, 위치
총 5가지에 대한 관련된 질문에 대한 대답을 할 수 있는 챗봇을 제작하자
자연어 처리 기술 : Bag of words, TF-IDF, 형태소분석, 개체명, Stemming 등
챗봇 모델 알고리즘 : Linear SVM
DB : ElasticSearch
웹서버 : Django
메신저 플랫폼 : 카카오톡
웹 애플리케이션
서버
카카오톡
채팅 서버
데이터베이스
(Elastic Search)
애플리캐이션 서버
(배치 서비스)
3 4
챗봇 core
1 2
152
6. 검색기반 챗봇
클리앙 데이터를 이용한 카테고리 분류 봇
: 문장을 학습하고 학습한 모델로 새로운 문장이 들어왔을 때, 카테고리를 분류하는 봇
data_set : elasticsearch에 저장된 클리앙 데이터를 불러와 사용 (30만건)
품사추출 : 문장에서 중요문장을 추출
Mecab API를 통해 품사가 명사이거나 외래어 숫자로 구성된 복합 명사 추출하여 Feature에 사용 (1일차 복합명사 모듈)
Stemming : 동사의 어근을 추출
Twitter API를 이용해 동사의 어근을 추출하여 Feature로 사용
Naïve Baysian : 머신러닝 알고리즘 중 성능이 빠르게 학습이 가능
Model & Predict : 학습된 Naïve Baysian 모델은 새로운 문장이 들어오면 카테고리를 예측함
l 챗봇 제작(머신러닝)
data_set 품사추출 Stemming
Naïve
Baysian
model문장 predict
PC
그외장비
기타
모바일
법률
상식
쇼핑
위치
인터넷
클리앙
153
1 de 63

Recomendados

Python을 활용한 챗봇 서비스 개발 1일차 por
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Taekyung Han
4.8K visualizações69 slides
파이썬을 활용한 챗봇 서비스 개발 3일차 por
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차Taekyung Han
2.7K visualizações60 slides
1시간만에 만드는 음성인식 인공지능 챗봇 por
1시간만에 만드는 음성인식 인공지능 챗봇1시간만에 만드는 음성인식 인공지능 챗봇
1시간만에 만드는 음성인식 인공지능 챗봇정명훈 Jerry Jeong
7.9K visualizações50 slides
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js por
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
5.7K visualizações27 slides
How to build massive service for advance por
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
13.2K visualizações90 slides
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605) por
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)Seongyun Byeon
7.3K visualizações105 slides

Mais conteúdo relacionado

Mais procurados

카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개 por
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
18.8K visualizações86 slides
머신러닝의 자연어 처리기술(I) por
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)홍배 김
33.2K visualizações68 slides
검색 서비스 간략 교육 por
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육 Rjs Ryu
1.6K visualizações8 slides
KorQuAD v2.0 소개 por
KorQuAD v2.0 소개KorQuAD v2.0 소개
KorQuAD v2.0 소개LGCNSairesearch
11.8K visualizações21 slides
Elasticsearch를 활용한 GIS 검색 por
Elasticsearch를 활용한 GIS 검색Elasticsearch를 활용한 GIS 검색
Elasticsearch를 활용한 GIS 검색ksdc2019
1K visualizações58 slides
TOROS N2 - lightweight approximate Nearest Neighbor library por
TOROS N2 - lightweight approximate Nearest Neighbor libraryTOROS N2 - lightweight approximate Nearest Neighbor library
TOROS N2 - lightweight approximate Nearest Neighbor libraryif kakao
6.2K visualizações98 slides

Mais procurados(20)

카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개 por if kakao
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
if kakao18.8K visualizações
머신러닝의 자연어 처리기술(I) por 홍배 김
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)
홍배 김33.2K visualizações
검색 서비스 간략 교육 por Rjs Ryu
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육
Rjs Ryu1.6K visualizações
KorQuAD v2.0 소개 por LGCNSairesearch
KorQuAD v2.0 소개KorQuAD v2.0 소개
KorQuAD v2.0 소개
LGCNSairesearch11.8K visualizações
Elasticsearch를 활용한 GIS 검색 por ksdc2019
Elasticsearch를 활용한 GIS 검색Elasticsearch를 활용한 GIS 검색
Elasticsearch를 활용한 GIS 검색
ksdc20191K visualizações
TOROS N2 - lightweight approximate Nearest Neighbor library por if kakao
TOROS N2 - lightweight approximate Nearest Neighbor libraryTOROS N2 - lightweight approximate Nearest Neighbor library
TOROS N2 - lightweight approximate Nearest Neighbor library
if kakao6.2K visualizações
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 por Hyojun Jeon
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon15.7K visualizações
[226]대용량 텍스트마이닝 기술 하정우 por NAVER D2
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우
NAVER D27.6K visualizações
elasticsearch_적용 및 활용_정리 por Junyi Song
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
Junyi Song74.7K visualizações
Elastic Search (엘라스틱서치) 입문 por SeungHyun Eom
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
SeungHyun Eom61.6K visualizações
Python Programming: Data Structure por Chan Shik Lim
Python Programming: Data StructurePython Programming: Data Structure
Python Programming: Data Structure
Chan Shik Lim337 visualizações
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들 por Chris Ohk
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
Chris Ohk31.3K visualizações
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부) por Hyojun Jeon
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
Hyojun Jeon5.7K visualizações
20170227 파이썬으로 챗봇_만들기 por Kim Sungdong
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기
Kim Sungdong47.3K visualizações
[236] 카카오의데이터파이프라인 윤도영 por NAVER D2
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
NAVER D212.8K visualizações
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표 por Dylan Ko
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표
Dylan Ko17.1K visualizações
어떻게 하면 데이터 사이언티스트가 될 수 있나요? por Yongho Ha
어떻게 하면 데이터 사이언티스트가 될 수 있나요?어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
Yongho Ha56.2K visualizações
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기 por NAVER D2
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
NAVER D22.6K visualizações
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판) por Yongho Ha
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
Yongho Ha153.2K visualizações
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀... por Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Amazon Web Services Korea5.7K visualizações

Similar a Python을 활용한 챗봇 서비스 개발 2일차

파이썬을 활용한 자연어 분석 por
파이썬을 활용한 자연어 분석파이썬을 활용한 자연어 분석
파이썬을 활용한 자연어 분석김용범 | 무영인터내쇼날
7.1K visualizações186 slides
Machine Learning with Apache Spark and Zeppelin por
Machine Learning with Apache Spark and ZeppelinMachine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and ZeppelinDataya Nolja
165 visualizações97 slides
i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석 por
i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석
i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석Taejoon Yoo
6.7K visualizações117 slides
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver. por
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.Adonis Han
1.9K visualizações77 slides
메이크챗봇 자연어기초 por
메이크챗봇 자연어기초메이크챗봇 자연어기초
메이크챗봇 자연어기초김용범 | 무영인터내쇼날
6.1K visualizações115 slides
제1장 정보검색소개 por
제1장 정보검색소개제1장 정보검색소개
제1장 정보검색소개Chang-yong Jung
3.7K visualizações18 slides

Similar a Python을 활용한 챗봇 서비스 개발 2일차(20)

Machine Learning with Apache Spark and Zeppelin por Dataya Nolja
Machine Learning with Apache Spark and ZeppelinMachine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and Zeppelin
Dataya Nolja165 visualizações
i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석 por Taejoon Yoo
i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석
i-VOC (Voice of the Customer Big Data Analytics Solution) 고객의소리 분석
Taejoon Yoo6.7K visualizações
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver. por Adonis Han
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
Adonis Han1.9K visualizações
제1장 정보검색소개 por Chang-yong Jung
제1장 정보검색소개제1장 정보검색소개
제1장 정보검색소개
Chang-yong Jung3.7K visualizações
Nlp study1 por Lee Gyeong Hoon
Nlp study1Nlp study1
Nlp study1
Lee Gyeong Hoon136 visualizações
마인즈랩 통합 VOC 관리 솔루션 소개_20151030 por Taejoon Yoo
마인즈랩 통합 VOC 관리 솔루션 소개_20151030마인즈랩 통합 VOC 관리 솔루션 소개_20151030
마인즈랩 통합 VOC 관리 솔루션 소개_20151030
Taejoon Yoo8.2K visualizações
Python machine learning Chapter 04 - PART2 por Young Oh Jeong
Python machine learning Chapter 04 - PART2Python machine learning Chapter 04 - PART2
Python machine learning Chapter 04 - PART2
Young Oh Jeong600 visualizações
Python machine learning_chap04_2 por PartPrime
Python machine learning_chap04_2 Python machine learning_chap04_2
Python machine learning_chap04_2
PartPrime119 visualizações
언리얼 리플렉션 & CDO.pptx por MUUMUMUMU
언리얼 리플렉션 & CDO.pptx언리얼 리플렉션 & CDO.pptx
언리얼 리플렉션 & CDO.pptx
MUUMUMUMU20 visualizações
[214]베이지안토픽모형 강병엽 por NAVER D2
[214]베이지안토픽모형 강병엽[214]베이지안토픽모형 강병엽
[214]베이지안토픽모형 강병엽
NAVER D22.9K visualizações
Chapter 11 Practical Methodology por KyeongUkJang
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
KyeongUkJang61 visualizações
딥러닝 세계에 입문하기 위반 분투 por Ubuntu Korea Community
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
Ubuntu Korea Community943 visualizações
Using Behavioral Data to Identify Interviewer Fabrication in Surveys + CHI 20... por Hyunjin Ahn
Using Behavioral Data to Identify Interviewer Fabrication in Surveys + CHI 20...Using Behavioral Data to Identify Interviewer Fabrication in Surveys + CHI 20...
Using Behavioral Data to Identify Interviewer Fabrication in Surveys + CHI 20...
Hyunjin Ahn746 visualizações
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안 por Clova Platform
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안
Clova Platform2.2K visualizações
Tensorflow for Deep Learning(SK Planet) por Tae Young Lee
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
Tae Young Lee12.9K visualizações
tsfresh_suman2 por suman_lim
tsfresh_suman2tsfresh_suman2
tsfresh_suman2
suman_lim563 visualizações

Python을 활용한 챗봇 서비스 개발 2일차

  • 1. 파이썬을 활용한 챗봇 서비스 개발 2일차
  • 2. 1. Machine Learning Algorithms 2. Text mining Algorithms 3. Topic Modeling 4. Restful API 데이터 수집 5. Elastic search + Kibana 6. 검색기반 챗봇 l 2일차 강의 목차 92
  • 3. l 머신러닝 알고리즘과 챗봇 왜 챗봇에서 머신러닝(딥러닝)과 텍스트 마이닝이 필요한가? 1. 사용자 의도 분류 -> 질문을 어떻게 분류할것인가? (Machine learning 분류 모델) 2. 적절한 답변 검색 or 생성 -> 답변을 어떻게 찾을(만들) 것인가? (Text mining 검색) ex) 볼만한 연예 뉴스 있어? -> ”뉴스 검색”에 관한 의도 -> 필요한 정보는? 시점: 오늘(기본값), 카테고리: 연예 -> DB Query를 이용한 답변 (검색 기반 모델) 93
  • 5. l 머신러닝 알고리즘 1. Machine Learning 95
  • 6. l 머신러닝 알고리즘 1. Machine Learning 96
  • 7. l 머신러닝 알고리즘 Supervised Learning : 라벨링된 데이터를 가지고 학습하는 것 (Regression, Classification) 공부시간(x1)과 수면시간(x2)에 해당하는 성적(y)에 대한 데이터를 학습하는 것 Unsupervised Learning : 라벨링이 되어 있지 않은 데이터를 가지고 학습하는 것 (Clustering) 공부시간(x1)과 수면시간(x2)를 가지고 데이터를 학습 X1(공부시간) X2(수면시간) Y(성적) 10 3 A 8 5 B+ 6 8 ? X1(공부시간) X2(수면시간) 10 3 8 5 6 8 1. Machine Learning 97
  • 8. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Reinforcement Learning : Agent의 행동에 따른 보상을 통하여 스스로 학습 파블로프의 개 실험처럼, 행동에 따른 보상으로 최적의 행동을 하도록 개(Agent)를 학습 98
  • 9. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Training Set, Validation Set, Test Set Training Set : 머신러닝 모델을 생성하기 위해 학습되는 데이터 Validation Set : 모델을 생성하는 과정에서 통계적 신뢰도를 높이기 위해 사용되는 데이터 Test Set : 생성된 모델의 성능을 측정하기 위해 사용되는 데이터 Cross Validation : 분류기 성능측정의 통계적 신뢰도를 높이기 위해서 쓰는 방법 99
  • 10. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Classification : 예측하고자 하는 값이 범주성을 가질 때 사용되는 알고리즘 주가가 오를지 내릴지를 예측하는 문제 -> Classification Regression : 예측하고자 하는 값이 연속성을 가질 때 사용되는 알고리즘 기본적인 A에 대한 영화정보가 제공될 때, A의 관광객 수를 예측하는 문제 -> Regression 100
  • 11. l 머신러닝 알고리즘 Process 1. Machine Learning 101
  • 12. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Decision Tree Classifier(의사결정나무) : 과거에 수집된 데이터들을 분석하여 이들 사이에 존재하는 패턴을 속성의 조합으로 나타내는 분류 모형 스무고개 방식으로 질문에 대한 “예”, “아니오”의 대답으로 맞추는 방법 102
  • 13. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Decision Tree Classifier 원리 반복적 분할 : Training Data Set을 이용하여 독립변수의 차원공간을 반복적으로 분할 가지치기 : Test Set을 이용하여 가지치기를 함 분할 기준 : 부모보다 자식의 순수도가 증가하도록 분류나무를 형성해 나감 순수도 측정 방법 - 지니 지수 - 엔트로피 지수 103
  • 14. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Random Forest : 다수의 의사결정 나무를 결합하여 투표를 통해 다수결로 결과를 결정하는 방법으로 의사결정나무의 오버피팅을 방지함. 트리를 생성 시, 변수들을 랜덤하게 선택하여 트리를 만들고 만든 트리들에서 나오는 빈도수를 voting하여 결정 104
  • 15. l 베이지안 확률 1. Machine Learning 이 사람이 누구일까요? 문제들을 확률적 classification 문제로 볼 수 있으며 Bayesian 확률이 사용되는 전형적인 예가 됩니다. 조건부 확률로 생각해 보면 P(눈앞의사람|철수)와 P(철수|눈앞의사람)의 2가지 확률을 생각할 수 있습니다. 눈 앞에 한명의 사람이 서 있습니다. 그런데 이 사람은 커튼에 가려져 있으며 우리가 볼 수 있는 것은 커튼에 비친 그 사람의 형상뿐입니다. http://darkpgmr.tistory.com/119 105
  • 16. l 베이지안 확률 1. Machine Learning ‘지식 또는 믿음의 정도를 나타내는 양’으로 해석하는 확률론 P(A): 사전 확률 P(H): 사후 확률 P(D): 경계확률 P(D|H): 조건부확률(Likelihood) 106
  • 17. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Naïve Bayesian Classifier : 베이즈 확률 이론을 바탕으로 분류하는 방법 베이즈 이론 : 사전확률과 사후확률 사이의 관계를 나타내는 정리 만약 P 𝐴# 𝐵 > P 𝐴& 𝐵 이면, 분류 𝐴#에 속함 만약 P 𝐴# 𝐵 < P 𝐴& 𝐵 이면, 분류 𝐴&에 속함 107
  • 18. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Naïve Bayesian Classifier 예 108
  • 19. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning Linear SVM : 분류에 대한 오차를 줄이면서 동시에 여백을 최대로 하는 결정 경계를 찾아내는 이진 분류기 마진(Margin) 각각의 클래스의 데이터 벡터들로부터 주어진 판별 경계까지의 거리로 마진이 클수록 분류를 잘함 서포트 백터(Support Vector) 판별 경계까지의 거리가 가장 짧은 데이터 벡터를 의미함 커널(Kernel) 선형분리가 불가능한 저차원의 데이터를 고차원 공간의 값으로 매핑하는 방법 109
  • 20. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning 타이타닉 생존 예측 (Decision Tree) 110
  • 21. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning 영화 리뷰에 대한 긍부정 분류기 데이터셋 : http://www.cs.cornell.edu/people/pabo/movie-review-data/review_polarity.tar.gz 1. 데이터셋에는 영화에 대한 긍정과 부정이 라벨링된 문장이 있음 2. Train Data Set과 Test Data Set으로 나눔 3. 띄어쓰기를 기준으로 문서 전체에 대한 TFIDF를 계산함 4. TFIDF에 대한 모델을 저장함 5. One-Hot-Encoding 기반의 벡터를 생성함 6. Linear SVM 모델을 생성하고 저장함 7. 평가 테스트 8. 새로운 문장에 대한 예측 id1 id2 id3 id4 … doc1 TFIDF(doc1,id1) TFIDF(doc1,id2) TFIDF(doc1,id3) TFIDF(doc1,id4) doc2 TFIDF(doc2,id1) TFIDF(doc2,id2) TFIDF(doc2,id3) TFIDF(doc2,id4) … 111
  • 22. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning 영화 리뷰에 대한 긍부정 분류기 112
  • 23. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning 영화 리뷰에 대한 긍부정 분류기 (Naïve Bayes Classification) 113
  • 24. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning 영화 리뷰에 대한 긍부정 분류기(SVM) 114
  • 25. l 머신러닝 알고리즘 (Supervised Learning) 1. Machine Learning 영화 리뷰에 대한 긍부정 분류기(Random Forest) 115
  • 27. l 텍스트 마이닝 알고리즘 2. Text Mining TF-IDF (Term Frequency Inverse Document) : 텍스트마이닝에서 흔하게 접하는 가중치를 구하는 알고리즘 1. 특정 단어가 해당 문서 내의 얼마나 중요한지를 측정하는 척도 2. 문서 내 단어들에 척도를 계산해서 중요 단어를 추출 3. 검색엔진에서 검색결과의 순위를 결정 TF(Term Frequency) : 문서 내 특정 단어의 빈도 하나의 문서 내에서의 단어 빈도 (워드 카운트) 높을수록 연관성이 높음 IDF(Inverse Document Frequency) : 해당 단어가 나타난 문서의 역 빈도수 전체 문서에서 해당 단어의 역빈도 낮을 수록 연관성이 높음 117
  • 28. l 텍스트 마이닝 알고리즘 2. Text Mining TF(Term Frequency)의 정규화 - 불린 빈도 문서에 나타나면 1, 없으면 0으로 표기하는 방법 문서에서 단어가 1번 나타나거나 100번 나타나거나 똑같은 가중치를 갖게 되어 중요도를 판단하기 힘들어짐 - 로그 스케일 빈도 TF값에 Log값을 취하는 방법 작은 빈도의 값일 때는 TF 값이 커지고 빈도 수가 늘어날수록 TF 값의 차이는 크게 벌어지지 않음 - 증가 빈도 문서 길이에 따라 단어의 상대 빈도 값을 조정하는 방법 최대치가 1로 보정되는 효과를 나타낼 수 잇음 118
  • 29. l 텍스트 마이닝 알고리즘 2. Text Mining IDF(Inversed Document Frequency) : 해당 단어가 나타난 문서의 역 빈도수 로그는 왜 ? : 전체 문서의 수가 많아질수록 IDF값은 무한대로 커지므로, 로그를 취함 분모에 +1은 왜 ? : 특정 단어가 전체의 문서 안에 존재하지 않을 수도 있기 때문에 TF-IDF TF-IDF 값은 특정 문서 내에서 단어 빈도가 높을 수록, 전체 문서들엔 그 단어를 포함한 문서가 적을수록 높아짐 TF-IDF 값을 통해 흔한 단어는 걸러내며, 문서 내에서 중요한 단어들을 판별할 수 있음 119
  • 30. l 텍스트 마이닝 알고리즘 Example 2. Text Mining TF(Term Frequency) : 문서 내 특정 단어의 빈도 Doc 1: This is a sample a Doc 2: This is another example anther example example 120
  • 31. l 텍스트 마이닝 알고리즘 2. Text Mining TF(Term Frequency) : 문서 내 특정 단어의 빈도 검색 엔진에서 본문에 북한북한북한 이렇게 적용하면.. TF값이 높아져 상위 랭킹될 수 있음. 문서 본문 TF 문서1 아주대 아주통일연구소와 북한 인권단체 나우(NAUH)가 주관 하는 이번 행사는 북한 시장(장마당)이 그대로 재연된다. 2 문서2 라자루스는 2014년 미국 소니픽처스, 지난해 방글라데시 중앙 은행 등을 해킹한 사이버범죄 조직이다. 현재 북한이 배후로 알 려져 있다. 1 문서3 구글 연구원인 닐 메타 역시 지난 15일 자신의 트위터에 "이번 사태를 일으킨 악성 프로그램 워너크라이와 북한의 소행으로 인식되는 해킹에 유사성이 있다"고 전했다. 1 문서4 그는 이날 기자회견에서 북한의 미사일 발사에 대해 이같이 비 난하고 유엔안전보장이사회에 이에 대한 확고한 대응을 촉구했 다. 그는 프랑스는 안보리가 북한에 대한 강력한 안보리 결의를 추진하길 기대한다고 밝혔다. 2 121
  • 32. l 텍스트 마이닝 알고리즘 2. Text Mining DF(Document Frequency) : 해당 단어가 나타난 문서의 빈도수 문서 본문 DF(북한) DF(해킹) 문서1 아주대 아주통일연구소와 북한 인권단체 나우(NAUH)가 주관하는 이번 행 사는 북한 시장(장마당)이 그대로 재연된다. 4 2 문서2 라자루스는 2014년 미국 소니픽처스, 지난해 방글라데시 중앙은행 등을 해 킹한 사이버범죄 조직이다. 현재 북한이 배후로 알려져 있다. 문서3 구글 연구원인 닐 메타 역시 지난 15일 자신의 트위터에 "이번 사태를 일으 킨 악성 프로그램 워너크라이와 북한의 소행으로 인식되는 해킹에 유사성이 있다"고 전했다. 문서4 그는 이날 기자회견에서 북한의 미사일 발사에 대해 이같이 비난하고 유엔 안전보장이사회에 이에 대한 확고한 대응을 촉구했다. 그는 프랑스는 안보 리가 북한에 대한 강력한 안보리 결의를 추진하길 기대한다고 밝혔다. DF -> IDF를 하는 이유 모든 문서에서 흔하게 나오는 단어라면, 변별력이 떨어짐 예를 들어, 뉴스에서 기자라는 단어는 매우 흔하게 나오는 단어이기 때문에 문서에 등장횟수의 역을 곱해서 가중치를 낮춰버림 122
  • 33. l 텍스트 마이닝 알고리즘 2. Text Mining Python을 이용한 클리앙 질문 TF-IDF 계산 1일차에 수집된 클리앙 질문 데이터에는 카테고리가 존재함. 문서를 카테고리 별로 분류하고 카테고리 별 TF-IDF를 계산함. 알고리즘 설명 1. 데이터를 Pandas의 DataFrame으로 변환 2. 질문과 대답 중에 Null 값 제외 3. 형태소 분석기를 통해 명사를 추출 4. 명사의 길이가 2이상이만 필터링하며, 명사가 없는 경우 제외 5. 카테고리별로 그룹화 6. 카테고리별 TF-IDF 계산 7. 계산된 TF-IDF 데이터를 파일에 저장 123
  • 34. l 텍스트 마이닝 알고리즘 Python을 이용한 클리앙 질문 TF-IDF(소스) 2. Text Mining 124
  • 35. l 텍스트 마이닝 알고리즘 Python을 이용한 클리앙 질문 TF-IDF(결과-1) 공유기 0.34900797791415333 그래픽 0.2734834590765248 메인보드 0.22654849220337878 사양 0.21969926667257852 부팅 0.21473399687398592 모니터 0.2032988283212451 하드 0.19944200998023642 바이오스 0.15885091363332982 업그레이드 0.1358777668588133 파티션 0.12693907579014718 폴더 0.11901423131748826 기계식 0.11564364176138563 듀얼 0.11223493966016297 비트 0.11148168503157127 레이크 0.10876606412186358 리눅스 0.104702393374246 윈도 0.10100509143377684 엑셀 0.09923890269749214 키보드 0.0933795056024982 라데온 0.09063838676821964 블루스크린 0.0903044770697262 인터넷 0.08811346517535176 쿨러 0.08783061399598908 외장 0.08618505600484744 마우스 0.07750721473757795 프린터 0.07634288403859338 아웃룩 0.0729989585988665 로지텍 0.07084135391121528 본체 0.07055485021142237 한성 0.07026449119679126 조립 0.0680876776354991 무선 0.06793933846853722 공유기 0.30153971363996057 렌즈 0.26803530101329825 에어컨 0.24545979883409103 니콘 0.20226730545457125 이어폰 0.16311157179951197 블루투스 0.15416612970548974 청정기 0.15276059984801316 프로젝터 0.14239375366331472 캐논 0.1417494380358789 넥서스 0.13261916887279668 헤드셋 0.13103493020466514 디카 0.12435291609511194 포고 0.1236526806156699 소니 0.10848727645941869 프린터 0.10843330220906476 청소기 0.10704261904043066 플러그 0.10502344727203755 킨들 0.10373481601716593 공기 0.1030905003897301 복합 0.09966036945143546 샤오미 0.09835585776584313 똑딱이 0.08674143267069381 기어 0.08585982665624832 파이 0.08504966282152734 미니 0.08488653561561534 배터리 0.08431554995003944 패드 0.08165095017735197 누크 0.07638029992400658 리시버 0.075668058287201 마이크 0.07457308887984009 헤드폰 0.0744184650800574 터치 0.07215450221346688 저축 0.14989462725998468 사랑니 0.11783160538619117 적금 0.11302215210512213 에어컨 0.10099323399219148 발치 0.09900467372594084 연금 0.09338074793290721 중고차 0.08982141607270128 숙박 0.08982141607270128 치과 0.08198696258508495 잇몸 0.07884486623527717 항공권 0.07706917696771319 전세 0.07652116507941262 식물 0.07614967695025959 문법 0.07518969314078243 어금니 0.07462103411553017 영작 0.074180870985415 인천 0.07164098873506232 마일리지 0.07060588925117812 치아 0.0692652711008393 실비 0.06646046434867575 진료 0.06609416574472003 검진 0.06609416574472003 렌즈 0.06396429667360812 훈련 0.06396429667360812 이직 0.063902798499484 렌트카 0.06365227571422466 진로 0.06332446820074218 식사 0.062115307632365564 안경 0.06146812899854048 예금 0.06091974156020768 충치 0.06091974156020768 소개팅 0.057723877485939025 갤럭시 0.40617169319291097 요금제 0.3779486699990636 유심 0.3016591400816088 공기 0.25093612666625464 기변 0.2083805354104642 넥서스 0.19677513314192735 루팅 0.18658249047030773 언락 0.13746935634760035 리퍼 0.12442273037120877 엑스페리아 0.1200935442554349 약정 0.10543336855721674 위약 0.10311870749751728 옵티머스 0.09965519626910294 컨트리 0.0957530855334089 배터리 0.09484399092919935 주소록 0.08844494678137964 원금 0.0851000777389907 아크 0.08248314780901168 별정 0.08017589031919638 백업 0.07976316100599434 피쳐 0.07935813718055297 루미아 0.0757234133402223 할부금 0.07544910401177884 번이 0.07544910401177884 젤리빈 0.07511762603350051 액정 0.06740369064094555 프라다 0.06646700260337833 자급 0.06470335008215847 테이크 0.06300187989906494 외판 0.06203265739948406 블랙베리 0.05922716033116569 터치 0.05870100602152639 전세 0.24565093565462254 교통사고 0.24329653429658896 합의 0.18292712601862432 소송 0.16803167792472462 민사 0.15795060224849575 소득세 0.1522169317671035 실업 0.15156819012971728 급여 0.14860027843264714 체불 0.13770263781334682 전입 0.13734834978130067 퇴직금 0.1344253423397797 세입자 0.13047165580037443 계약서 0.1282041617850289 부동산 0.1266438761535489 보증금 0.12651796926096914 전세금 0.12282249889821918 증여세 0.11475219817778903 재판 0.11016211025067747 임대차 0.10987867982504054 고소 0.10926491061224054 월세 0.1088246372977732 연차 0.10714303095376568 계약 0.1033672845342852 공제 0.09765412929389206 수당 0.09686532021542948 책임 0.09669005232412999 폭행 0.09407680766672107 변호사 0.0929116336760242 토지 0.09271013610237795 근저당 0.09271013610237795 명예훼손 0.08927642735784544 주인 0.08845979289117237 PC 카테고리 상위 그외장비 카테고리 상위 기타 카테고리 상위 모바일 카테고리 상위 법률 카테고리 상위 2. Text Mining 125
  • 36. l 텍스트 마이닝 알고리즘 2. Text Mining Python을 이용한 클리앙 질문 TF-IDF(결과-2) 저축 0.19652951815670713 호칭 0.18338261523736096 적금 0.16235047152075807 전세 0.13040300359332388 금리 0.12532317099847992 공제 0.10754488036316327 연금 0.10557642353612072 에어컨 0.08892136194427457 급여 0.08733348048098395 여권 0.0798271276922449 축의금 0.07756635198572134 수학 0.07560599676421437 통장 0.07352509777070389 예금 0.07120634715822721 청약 0.07095744683755102 장염 0.07004024684749888 칼로리 0.06835809327189812 복장 0.06827890292149655 화학 0.06550983938556905 검진 0.06463862665476779 연봉 0.06312060280315146 담보 0.06248400576627553 소득 0.06242696980531462 훈련 0.06097905587602041 몸살 0.06003449729785618 섭취 0.059880037628526034 교통사고 0.05875161414175284 실비 0.056544215448673475 부동산 0.05618427282478316 부양 0.05613753527674316 세입자 0.05602014310079875 의료 0.05432679523500001 정장 0.22446419417755106 아마존 0.2217379757079836 배송 0.21124150348512047 코스트코 0.20083638426412467 직구 0.17244204366132282 브랜드 0.16712594760362212 가방 0.16243889005371875 의자 0.14267562140030576 결제 0.14001544197283494 네스프레소 0.1331762135296640 청소기 0.12995295452384537 청정기 0.11467951720609958 선글라스 0.11344640411786194 패딩 0.10851395176491142 남성 0.1027933601121189 알리 0.09840442708934183 안경 0.09835167171221253 에어컨 0.09723752541294724 구두 0.09542000157345289 아울렛 0.0949497077942975 안경테 0.0949497077942975 면도기 0.0917849538944642 주문 0.0886577028823975 반지 0.08802468911779068 이베이 0.08509639980678323 이케아 0.08312302576967638 유니클로 0.07987425494021747 시계 0.07816123065953436 공기 0.07804681045549768 렌즈 0.0736051220555913 배송지 0.0715799980938068 다이슨 0.07152055911778253 근교 0.20607358355265434 맛집 0.16729634035020188 여의도 0.15401047158342693 식사 0.14118344764910218 회식 0.13710688323890446 소개팅 0.13627075169083505 인천 0.13604349981280853 주차 0.1269739331586213 숙박 0.12318947883107935 근방 0.11091914962900784 벚꽃 0.11081241248075839 종로 0.10534405627163845 강남역 0.10520697318857193 강릉 0.09186412760780976 서울역 0.08996984409011415 술집 0.08996984409011415 홍대 0.08948639098798072 횟집 0.08827429468806178 경주 0.0868984990884687 레스토랑 0.08451794172261233 판교 0.08166493540487284 이태원 0.0807615887571629 계곡 0.0794500563094571 고기 0.0788966325097924 초밥 0.07888341227443818 명소 0.07849783336311454 종각역 0.07829587032635847 부근 0.07497508434128114 전주 0.07474417816717176 찜질방 0.07336002671963153 건대 0.07324888282626402 인근 0.07151798315689216 공유기 0.879163227465268 워드프레스 0.1712646511001665 도메인 0.14918568075611835 속도 0.10479120910354418 호스팅 0.09667232112996468 크롬 0.08911091671118379 티스토리 0.08758668223579812 파이어폭스 0.0793534831467442 무선 0.07926440657735133 구축 0.0716091267629368 단자함 0.05830051823026107 애드센스 0.05625888571556842 익스플로러 0.0547416763973738 초대장 0.05213492990226079 브라우저 0.05213492990226079 개편 0.21223277897659035 리앤 0.20736058220809783 쪽지 0.20497108262575311 리오스 0.1979418462023354 닉네임 0.16653900463342441 리플 0.15640825606002803 저격 0.13824038813873188 공원 0.13237715752913223 창당 0.13219163083844165 당은 0.13219163083844165 최다 0.12319731304044126 싱고 0.12319731304044126 클리 0.11730619204502102 게시 0.11529623397698613 스크랩 0.10753067604126926 기게 0.10753067604126926 모집 0.10520867744444053 점수 0.1048451265383643 모두 0.09394507953680352 전과 0.09239798478033096 건의 0.0921602587591546 징계 0.0921602587591546 시판 0.08873255174587448 크루지 0.08812775389229444 빵꾸 0.08812775389229444 노주현 0.08812775389229444 소게 0.08190697084234567 소모임 0.07863384490377322 서명 0.07820412803001402 크롬 0.07056883517005288 메모 0.07056883517005288 공감 0.06912019406936594 상식 카테고리 상위 쇼핑 카테고리 상위 위치 카테고리 상위 인터넷 카테고리 상위 클리앙 카테고리 상위 126
  • 38. l 주제 모델링 3. Topic Modeling 문서 집합의 추상적인 주제를 발견하기 위한 통계적 모델 Ex) 강아지에 대한 문서에서는 “개”, “멍멍”, “뼈다귀” 등이 더 자주 등장 고양이에 대한 문서에서는 “고양이”, “야옹”, “참치캔” 등이 더 자주 등장 강아지를 주제로한 문서 고양이를 주제로한 문서 뼈다귀 개 산책 사료 멍멍 야옹 참치캔 그 ~이다 우유 생선 128
  • 39. l 주제 모델링 3. Topic Modeling Bag of Words : 문서를 분류하기 위한 방법으로 문서들과 단어들의 관계를 고려하여 단어들의 집합을 저장 관리하는 방법 129
  • 40. l 주제 모델링 3. Topic Modeling Bag of word with python gensim 자연어처리를 위한(한국어 포함) 다양한 모델을 지원하는 Python 라이브러리 130
  • 42. l 챗봇 제작(DB 환경 설정) 4. Elasticsearch ElasticSearch : 아파치 루씬을 기반의 분산형 검색 엔진 ElasticSearch 특징 1. 여러 개의 노드로 구성되는 분산시스템으로 데이터는 각 노드에 분산되어 저장되며 복사본을 유지함 2. JSON 문서 형식으로 저장됨 3. 저장 시 인덱싱이되며, 모든 인덱스들은 단일 쿼리로 빠르게 사용할 수 있음. 4. 문자열 검색 기능이 빨라서 챗봇 작업에 용이 ElasticSearch 용어 1. 인덱스 (=데이터베이스) 2. 타입 (=테이블) 3. 도큐먼트 (=열) 4. 필드 (=행) 5. 매핑 (=스키마) 132
  • 43. l 챗봇 제작(DB 환경 설정) 4. Elasticsearch ElasticSearch 저장 과정 133
  • 44. l 챗봇 제작(DB 환경 설정) 4. Elasticsearch ElasticSearch 설치-1 자바 환경 확인 $ java -version $ echo JAVA_HOME $ curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.5/elasticsearch- 2.4.5.tar.gz $ tar -xvf elasticsearch-2.4.5.tar.gz $ cd elasticsearch-2.4.5/bin $ ./elasticsearch localhost:9200 134
  • 45. l 챗봇 제작(DB 환경 설정) 4. Elasticsearch ElasticSearch Kibana 설치 : 모니터링 툴 # 환경 세팅 $ vi config/elasticsearch.yml $ bin/elasticsearch # 모니터링툴 Kibana $ ./bin/kibana # 웹에서 실행 http://localhost:9200 http://localhost:5601 135
  • 46. 4. Elasticsearch Python 내 ElasticSearch 사용 $ pip3 install elasticsearch l 챗봇 제작(DB 환경 설정) 136
  • 47. 4. Elasticsearch Python 내 ElasticSearch 사용 $ pip3 install elasticsearch l 챗봇 제작(DB 환경 설정) 137
  • 48. 4. Elasticsearch Python 내 ElasticSearch 사용 (es_ex1) l 챗봇 제작(DB 환경 설정) 138
  • 49. 4. Elasticsearch Python 내 ElasticSearch 사용 (es_ex2) l 챗봇 제작(DB 환경 설정) 139
  • 50. 4. Elasticsearch Python 내 ElasticSearch 사용 (es_ex3) l 챗봇 제작(DB 환경 설정) 140
  • 51. 4. Elasticsearch 클리앙 데이터 ES에 업로드 l 챗봇 제작(DB 환경 설정) 141
  • 52. 4. Elasticsearch 클리앙 데이터를 이용한 서칭 봇(일반) l 챗봇 제작(키워드 매칭) 142
  • 53. 4. Elasticsearch 클리앙 데이터를 이용한 서칭 봇(복합명사 추출) l 챗봇 제작(키워드 매칭) 143
  • 55. l 검색 데이터 수집 5. Restful API Python과 Coinone Restful API를 이용한 데이터 수집 프로세스 145
  • 56. l 검색 데이터 수집 5. Restful API CoinOne에서 제공하는 RestfulAPI 문서 및 사용법 146
  • 57. l 검색 데이터 수집 5. Restful API CoinOne에서 제공하는 RestfulAPI 문서 및 사용법 147
  • 58. l 검색 데이터 수집 5. Restful API Elasticsearch에 저장 스크립트 및 스케쥴링 148
  • 59. l 검색 데이터 시각화 5. Restful API 검색된 데이터 및 로그분석을 위한 데이터 시각화 대시보드 구성 149
  • 61. 6. 검색기반 챗봇 웹서버 용어 설명 HTTPS 클라이언트와 서버간의 통신을 가능하게 하는 기술로 request-response 프로토콜로 동작 Request 클라이언트가 서버로 전송하는 정보 Response 서버가 클라이언트로 전송하는 정보 GET 클라이언트가 입력한 쿼리의 이름과 값이 결합되어 스트링 형태로 서버에 전달되는 방식 민감한 데이터를 다룰 때 사용하면 안됨 POST 클라이언트와 서버 간에 인코딩하여 서버로 전송함 브라우저 기록에 남지 않음 l 챗봇 제작(웹서버 환경 구축) 151
  • 62. l 챗봇 제작 6. 검색기반 챗봇 목표 : 클리앙 데이터를 이용하여 장비(PC, 그외장비, 모바일, 인터넷), 법률, 상식, 쇼핑, 위치 총 5가지에 대한 관련된 질문에 대한 대답을 할 수 있는 챗봇을 제작하자 자연어 처리 기술 : Bag of words, TF-IDF, 형태소분석, 개체명, Stemming 등 챗봇 모델 알고리즘 : Linear SVM DB : ElasticSearch 웹서버 : Django 메신저 플랫폼 : 카카오톡 웹 애플리케이션 서버 카카오톡 채팅 서버 데이터베이스 (Elastic Search) 애플리캐이션 서버 (배치 서비스) 3 4 챗봇 core 1 2 152
  • 63. 6. 검색기반 챗봇 클리앙 데이터를 이용한 카테고리 분류 봇 : 문장을 학습하고 학습한 모델로 새로운 문장이 들어왔을 때, 카테고리를 분류하는 봇 data_set : elasticsearch에 저장된 클리앙 데이터를 불러와 사용 (30만건) 품사추출 : 문장에서 중요문장을 추출 Mecab API를 통해 품사가 명사이거나 외래어 숫자로 구성된 복합 명사 추출하여 Feature에 사용 (1일차 복합명사 모듈) Stemming : 동사의 어근을 추출 Twitter API를 이용해 동사의 어근을 추출하여 Feature로 사용 Naïve Baysian : 머신러닝 알고리즘 중 성능이 빠르게 학습이 가능 Model & Predict : 학습된 Naïve Baysian 모델은 새로운 문장이 들어오면 카테고리를 예측함 l 챗봇 제작(머신러닝) data_set 품사추출 Stemming Naïve Baysian model문장 predict PC 그외장비 기타 모바일 법률 상식 쇼핑 위치 인터넷 클리앙 153