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
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
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
19. l 머신러닝 알고리즘 (Supervised Learning)
1. Machine Learning
Linear SVM : 분류에 대한 오차를 줄이면서 동시에 여백을 최대로 하는 결정 경계를 찾아내는
이진 분류기
마진(Margin)
각각의 클래스의 데이터 벡터들로부터 주어진 판별 경계까지의 거리로 마진이 클수록 분류를 잘함
서포트 백터(Support Vector)
판별 경계까지의 거리가 가장 짧은 데이터 벡터를 의미함
커널(Kernel)
선형분리가 불가능한 저차원의 데이터를 고차원 공간의 값으로 매핑하는 방법
109
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
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