저희 팀이 서비스화한 딥러닝 기반 챗봇을
카카오 플러스 친구를 통해 만나보실 수 있습니다.
@청년정책봇
기계독해를 위한
BERT 언어처리 모델 활용
2019 한국전자통신연구원
ETRI openAPI 공모전 장려상
딥러닝을 활용 한 청년정책봇
김강빈, 백승연, 이준형, 조의형, 정윤성, 차원석
2019 삼성멀티캠퍼스
NLP과정 프로젝트 최우수상
팀장_정윤성
프로젝트 관리 및 아키텍쳐
ohikendoit@gmail.com
이준형
데이터 수집 및 전처리
ljh0113m@gmail.com
조의형
알고리즘 및 모델 실험
powerdpo@naver.com
김강빈
프론트엔드 및 서버 구축
kkb08190819@gmail.com
차원석
알고리즘 및 모델 최적화
ckdnjstjr3@gmail.com
백승연
데이터 전처리 및 디자인
whitesy31@gmail.com
팀원소개
모델 선정 과정 및
cdQA 에 대한 이해
청년정책 챗봇
아키텍처 구성 및 접근
03
02
청년정책 챗봇
프로젝트 발전 단계
04
프로젝트 결과정리 및
향후 발전방향 논의
Closed-Domain Question Answering
도메인 질의응답을 위한 데이터 파이프라
인
청년 정책 챗봇
아키텍처 구성 및 접근
AWS서버x텔레그램 메신저부터
우분투x카카오까지
프로젝트를 통해
어디까지 왔는지, 어디로 가는지
01
중간발표 이후 NLP 주요 뉴스
2019. 10. 28.
2019. 11. 4.
모델 선정 과정 및
cdQA 에 대한 이해01
Transformer
MODEL
INPUT Question Word Question, Paragraph
OUTPUT Answer Paragraph Answer
정보제공에 적합 X X O
GPT2 BERT
언어처리 모델 선정과정
모델 선정 과정 및
cdQA 에 대한 이해01
BERT 모델이란 무엇인가?
2018년 11월 구글이 공개한 인공지능(AI) 언어모델 BERT는
일부 성능 평가에서 인간보다 더 높은 정확도를 보인 자연 언어 처리(NLP) 분야의 딥러닝 모델이다
BERT
Bidirectional Encoder Representations from Transformers
모델 선정 과정 및
cdQA 에 대한 이해01
BERT 모델 활용을 위한 학습과정
사전 학습 전이 학습
단어 중의 일부를 [MASK] token 으로 변환(15%)
[MASK] token 만을 predict하는 pre-training 과정을
통해
BERT는 문맥을 파악하는 능력 생성
Question에 정답이 되는 Paragraph의
substring을 뽑아내는 Fine-Tuning Task
모델 선정 과정 및
cdQA 에 대한 이해01
cdQA 파이프라인과 언어처리모델 병합
출처: SKTBrain
학습환경
GPU: Cirrus Logic GD 5446
학습시간 : 9시간
학습횟수 : 5번
FineTuning
전이 학습
모델 선정 과정 및
cdQA 에 대한 이해01
cdQA 파이프라인이란?
질문과 문서의 유사도를 기준으로 문서를 선정하여 질문에 대한 답을 추론,
INPUT과 OUTPUT이 “문장과 문장” 형식으로 챗봇에 활용할 수 있다
Closed-Domain Question Answering (도메인특정 질의응답)
모델 선정 과정 및
cdQA 에 대한 이해01
Closed-Domain Question Answering (도메인특정 질의응답)
문서들의 집합
(Data Lake)
BERT 모델
cdQA 기본 작동원리
유사도 계산
Question
문서선정
Answer
모델 선정 과정 및
cdQA 에 대한 이해01
cdQA 파이프라인 - 데이터 수집 및 전처리과정
정보의 문서화
서울시 청년청 웹사이트에 공개되어 있는 정보를
CSV 파일 형식으로 정리
웹크롤링
적용 가능
모델 선정 과정 및
cdQA 에 대한 이해01
cdQA 파이프라인 - 데이터 수집 및 전처리과정
질문 13 9 17 4 14 10 5 14
금융 주거 활력 교통 취업 여성 장애인 창업
중복되는 정책 제거, 서울시 청년 정책 총 66가지
모델 선정 과정 및
cdQA 에 대한 이해01
Retriever
검색 단계
(TF/IDF 매트릭스)
DB 문서들의 집합
(Data Lake)
2. 문서에 대한 TF/IDF 매트릭스 구성
질문과 문서간의 코사인 유사도를 측정
4. 고득점 문서 및 문장 선택
1. 사용자 질문에 대한 TF/IDF 벡터계
산
답변: 만 21세 이상32세 미만 청년
3. 유사도 점수부여
Reader
독해 단계
( BERT 모델)
질문 : 청년활동지원금 지원 대상이 누구야?
Closed-Domain Question Answering (도메인특정 질의응답)
프로젝트 초기 cdQA 파이프라인 구조
*정답추론까지 약 17초
모델 선정 과정 및
cdQA 에 대한 이해01
프로젝트 초기 cdQA 코드 분석
#미리 정의한 정책 데이터를 불러온다
df = pd.read_csv('data/bnpp_newsroom_v1.1/jungchat_result.csv',
converters={'paragraphs': literal_eval})
#학습시킨 모델을 불러온다
cdqa_pipeline = QAPipeline(reader='models/bert_qa_korquad_vCPU.joblib')
#모델에 정보를 담는다
cdqa_pipeline.fit_retriever(df)
print('안녕하세요 서울시 정책챗봇 청명이입니다(나가기:quit)n무엇을 도와드릴까요?n')
while True:
query = input('')
if query == 'quit':
break
#질문에 대한 예측
prediction = cdqa_pipeline.predict(query)
print('paragraph: {}n'.format(prediction[2]))
*정답추론까지 약 17초
모델 선정 과정 및
cdQA 에 대한 이해01
문서들의 집합
(Data Lake)
Reader
독해 단계
(cdQA)
선정된문서
(Data Paragraph)
Reader
독해 단계
(cdQA)Fit Fit
cdqa_pipeline.fit_retriever(df)) cdqa_pipeline.fit_retriever(df.loc[best_idx_scores.keys()].head(1))
Closed-Domain Question Answering (도메인특정 질의응답)
cdQA에 대한 성능개선 시도
*정답추론까지 약 5초 미만
모델 선정 과정 및
cdQA 에 대한 이해01
성능개선이 적용된 cdQA 코드 분석
#유사도를 비교하여 문서를 선정하기위한 리트리버 객체를 선언한다
retriever = BM25Retriever(ngram_range=(1, 2), max_df=1.00,min_df=1, stop_words=None)
retriever.fit(df)
query=input('입력창:')
#정책과 질문의 유사도가 1보다 높으면 해당 정책의 문서를 선택하여 재학습
#질문의 유사도가 낮으면 해당정책에 대해 질의응답
if list(list(retriever.predict(ETRI_POS_Tagging(query)).values())[0])[0]>=4. or not
best_idx_scores:
#질문과 유사도가 높은 정책의 인덱스 예측
best_idx_scores = retriever.predict(ETRI_POS_Tagging(query))
#청년정책에서 선택된 문서학습(성능 개선이 일어나는 부분)
cdqa_pipeline.fit_retriever(df.loc[best_idx_scores.keys()].head(1))
#정답예측
prediction = cdqa_pipeline.predict(query)
모델 선정 과정 및
cdQA 에 대한 이해01
cdQA를 활용한 데이터 입력 구조
자연어처리를 위해 공개된 API
(KorBERT모델, 형태소분석기, 위키 질의 응답)
속도와 정확도 향상 및
폭넓은 대화 가능한 챗봇
(즉문 즉답, 높은 유사도 및 신뢰도)
자연어 처리를 위한 ETRI API 활용 청년정책 챗봇
아키텍처 구성 및 접근02
활용된 ETRI API 목록
자연어 문장에서 의미를 가
진 최소 단위인 형태소(명
사, 동사, 형용사, 부사, 조사,
어미 등)를 분석하는 기술
형태소 분석 API
자연어로 쓰여진 단락과 사
용자 질문이 주어졌을 때,
딥러닝 기술을 이용하여 단
락 중 정답을 추론하는 API
KorBERT API
자연어로 기술된 질문의 의
미를 분석하여, 위키백과
문서에서 정답과 신뢰도 및
검색 단락을 추론하여 제공
하는 API
위키백과 QA API
청년정책 챗봇
아키텍처 구성 및 접근02
Retriever
검색 단계
cdQA ETRI - 데이터 및 질문처리 단계
청년활동지원금 지원 대상이 누구야?
Q
⇋ KoNLPy, Kaiii by Kakao
NNG/NNP/VV 추출
ETRI 형태소 분석 API
청년 활동 지원 지원 대상 문서 선정 (tf-idf)
ETRI API
질문과 문서 전송
A
정답추론
질문 : 청년활동지원금 ~ 누구야?
문서 : 청년 활동 지원 사업
청년정책 챗봇
아키텍처 구성 및 접근02
cdQA + ETRI API 코드분석
POS_content=ETRI_POS_Tagging(content) #형태소분석 API
#문장과의 유사도 수치가 없고 문서와 유사도 수치도 없을때 wikiQA로 처리
if max(retriever_temp.predict(POS_content).values())<1.5 and
max(retriever.predict(POS_content).values())<0.5:
dataSend=ETRI_wiki(content) #위키API
return jsonify(make_query(dataSend))
#ETRI KORBERT API에 문서와 질문 전달
cdqa_query,validity=ETRI_korBERT(' #KorBERT API
'’.join(list(df.loc[best_idx_scores.keys()].head(1)['paragraphs'])[0]),content)
para=df['paragraphs'][list(best_idx_scores.keys())[0]]#유사도가 높은 문서
#KORBERT의 답과 유사도가 높은 문장의 인덱스를 뽑는다
prediction = retriever_temp.predict(cdqa_query) dataSend =para[list(prediction)[0]] #정답문장
print("time :", time.time() - start)
return jsonify(make_query(dataSend))
청년정책 챗봇
아키텍처 구성 및 접근02
Kakao Khaiii 형태소 분석기
Khaiii는 “Kakao Hangul Analyzer III”의 첫 글자들만 모아 만든 이름으로
카카오에서 개발한 세 번째 형태소분석기입니다.
CASE 1
CASE 2
청년정책 챗봇
아키텍처 구성 및 접근02
BERT-MODEL
Base-Multililngual -
cased
Base-Multililngual
-cased
KorBERT-API KorBERT-API
형태소 분석기 X X ETRI_형태소분석기 Khaiii
질의응답 속도 17초 5초 2초 2초
중요 문제점
무거운 모델에 의한
처리 속도 증가
매번 정책의 이름
을 반드시 입력해
야 하는 불편함
8가지 정책에 관하여
답을 못하는 케이스
발생
청년정책봇
v1.1
청년정책봇
v1.2
청년정책봇
v1.3
청년정책봇
v1.4
언어처리모델과 형태소 분석기 적용 실험 청년정책 챗봇
프로젝트 발전 단계03
def Message():
content = extract_content()
global best_idx_scores
if list(list(retriever.predict(ETRI_POS_Tagging(content)).values())[0])[0]>=1. or not best_idx_scores:
best_idx_scores = retriever.predict(ETRI_POS_Tagging(content))
if list(best_idx_scores.keys())[0]<8 and list(list(retriever.predict(ETRI_POS_Tagging(content)).values())[0])[0]>=1.:
changed_text = text_tranform(''.join(df.loc[list(best_idx_scores.keys())[0]]['paragraphs']))
dataSend=changed_text
best_idx_scores = ''
return jsonify(make_query(dataSend))
elif list(best_idx_scores.keys())[0]<8 and list(list(retriever.predict(ETRI_POS_Tagging(content)).values())[0])[0]<1.:
dataSend=ETRI_wiki(content)
best_idx_scores = ''
return jsonify(make_query(dataSend))
cdqa_pipeline.fit_retriever(df.loc[best_idx_scores.keys()].head(1))
cdqa_query,validity=ETRI_korBERT(' '.join(list(df.loc[best_idx_scores.keys()].head(1)['paragraphs'])[0]),content)
if float(validity) <= 0.2 :
dataSend=ETRI_wiki(content)
best_idx_scores = ''
else :
dataSend_temp = cdqa_pipeline.predict(cdqa_query)
dataSend=dataSend_temp[2]
return jsonify(make_query(dataSend))
동작원리 및 구조
사용자의 질문이 Content 변수로 함수에 입력
⤋
형태소분석기로 구문분석된 질문과 정책데이
터 중 유사도가 있는지, 함수에 처음 들어온 케
이스인지 판단
⤋
best_idx_scores 값에 따라 8미만의 값일 경우 해
당 정책 리스트(카테고리별 정책목록)를 반환
⤋
best_idx_scores 값이 8이상일 경우 유사도가 있
는 문서를 선택
⤋
가장높은 스코어를 받은 문서가 질문과 함께
ETRI KorBERT 모델로로 전달
⤋
유사도값이 1미만일경우 ETRI WikiQA API를 통
해 답변 반환
챗봇에 활용된 메인 동작함수 청년정책 챗봇
프로젝트 발전 단계03
USER MESSENGER FIREWALL SERVERBILDER
Ngrok Flask
MESSENGERUSER BUILDER FIREWALL SERVER
사용자와 서버 사이의 동작흐름 청년정책 챗봇
프로젝트 발전 단계03
일반적인 서버
Ngrok 사용시
플라스크란 무엇인가?l
파이썬 웹 프레임 워크의 일종이며 간단하
게 사용이 가능하고 민첩한 것이 장점!
플라스크로 웹훅을 연결
Ngrok이란 무엇인가?l
외부 네트워크와 내부 서버를 연
결 해주는 터널링 프로그램
AWS가 아닌 개인서버를 사용한 이유:
사양이 높지 않더라도 빠른 속도를
보여주기 위해 사용
내부서버를 구성하는 프로그램 청년정책 챗봇
프로젝트 발전 단계03
확률 기준 문장 선택
사용자 메신저 채널 서버 NLP 서비스 외부 API
질문입력
Webhook으로 구현
유저ID와 질문 전송 질문 전송 ETRI 형태소분석기
답변출력
형태소 단위 파싱
Data Lake (.csv)
ETRI BERT 모델
플라스크 & ngrok 사용
ETRI 위키백과 QA
Retriever
유사도 낮으면 QA로 전송
문서와 질문 함께 전송
유저ID와 답변 전송
답변출력
유저ID와 답변 전송
tf-idf 유사도 비교
cdQA
정책 질의응답 챗봇 아키텍처 청년정책 챗봇
프로젝트 발전 단계03
청년정책봇 시연
@ 청년정책봇
카카오톡 플러스친구 추가를 통해 사용해보실수 있습니다
프로젝트 결과정리 및
향후 발전방향 논의04
‘기계독해’ 기능을
통해 사용자 요청
의 문맥적 내용을
파악 가능
도출된 결과
발전 방향
사용자의 질문에 대한 문맥적 파악과
‘기계독해’ 를 바탕으로 다양한 분야
에서 활용 가능한
‘딥러닝 기반’ 챗봇의 가능성 확인
‘챗봇’ 하면 단순 물음
에 대한 답변을 해주거
나 버튼을 통한 시나리
오 서비스 정도로 인식
● 청년정책에 포괄적인 답변을 줄 수 있도록 데이터 추가구축
● 시나리오 기반 챗봇과 결합하여 다양한 목적의 챗봇구현
● 기계독해에 특화된 챗봇이 필요한 도메인에 활용가능
문맥 파악의 정확
성을 바탕으로 ‘대
화 성공률’ 증가
프로젝트 결과 및 향후 발전 방향
프로젝트 결과정리 및
향후 발전방향 논의04
● 이동헌, 박천음, 이창기, 박소윤, 임승영, 김명지, 이주열. (2019). BERT를 이용한 한국어 기계 독해. 한국정보과
학회 학술발표논문집, 557-559.
● 임승영, 김명지, 이주열. (2018). KorQuAD: 기계독해를 위한 한국어 질의응답 데이터셋. 한국정보과학회 학술발
표논문집, 539-541.
● Alberti, Chris, Kenton Lee, and Michael Collins. "A bert baseline for the natural questions." arXiv preprint
arXiv:1901.08634 (2019).
● Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding."
arXiv preprint arXiv:1810.04805 (2018).
● Yang, Wei, et al. "End-to-end open-domain question answering with bertserini." arXiv preprint
arXiv:1902.01718 (2019).
● Yang, Yi, Wen-tau Yih, and Christopher Meek. "Wikiqa: A challenge dataset for open-domain
question answering." Proceedings of the 2015 Conference on Empirical Methods in Natural Language
Processing. 2015.
추가 연구를 위한 참고 문헌
프로젝트 결과정리 및
향후 발전방향 논의04
감사합니다.
● 프로젝트에 대한 자세한 내용은 https://tinyurl.com/seoulchatbot 에서 확인하실 수 있습니다.
● 궁금하신 점이나 추가적인 피드백이 있으시면 ohikendoit@gmail.com으로 연락부탁드립니다.

기계독해를 위한 BERT 언어처리 모델 활용

  • 1.
    저희 팀이 서비스화한딥러닝 기반 챗봇을 카카오 플러스 친구를 통해 만나보실 수 있습니다. @청년정책봇
  • 2.
    기계독해를 위한 BERT 언어처리모델 활용 2019 한국전자통신연구원 ETRI openAPI 공모전 장려상 딥러닝을 활용 한 청년정책봇 김강빈, 백승연, 이준형, 조의형, 정윤성, 차원석 2019 삼성멀티캠퍼스 NLP과정 프로젝트 최우수상
  • 3.
    팀장_정윤성 프로젝트 관리 및아키텍쳐 ohikendoit@gmail.com 이준형 데이터 수집 및 전처리 ljh0113m@gmail.com 조의형 알고리즘 및 모델 실험 powerdpo@naver.com 김강빈 프론트엔드 및 서버 구축 kkb08190819@gmail.com 차원석 알고리즘 및 모델 최적화 ckdnjstjr3@gmail.com 백승연 데이터 전처리 및 디자인 whitesy31@gmail.com 팀원소개
  • 4.
    모델 선정 과정및 cdQA 에 대한 이해 청년정책 챗봇 아키텍처 구성 및 접근 03 02 청년정책 챗봇 프로젝트 발전 단계 04 프로젝트 결과정리 및 향후 발전방향 논의 Closed-Domain Question Answering 도메인 질의응답을 위한 데이터 파이프라 인 청년 정책 챗봇 아키텍처 구성 및 접근 AWS서버x텔레그램 메신저부터 우분투x카카오까지 프로젝트를 통해 어디까지 왔는지, 어디로 가는지 01
  • 5.
    중간발표 이후 NLP주요 뉴스 2019. 10. 28. 2019. 11. 4. 모델 선정 과정 및 cdQA 에 대한 이해01
  • 6.
    Transformer MODEL INPUT Question WordQuestion, Paragraph OUTPUT Answer Paragraph Answer 정보제공에 적합 X X O GPT2 BERT 언어처리 모델 선정과정 모델 선정 과정 및 cdQA 에 대한 이해01
  • 7.
    BERT 모델이란 무엇인가? 2018년11월 구글이 공개한 인공지능(AI) 언어모델 BERT는 일부 성능 평가에서 인간보다 더 높은 정확도를 보인 자연 언어 처리(NLP) 분야의 딥러닝 모델이다 BERT Bidirectional Encoder Representations from Transformers 모델 선정 과정 및 cdQA 에 대한 이해01
  • 8.
    BERT 모델 활용을위한 학습과정 사전 학습 전이 학습 단어 중의 일부를 [MASK] token 으로 변환(15%) [MASK] token 만을 predict하는 pre-training 과정을 통해 BERT는 문맥을 파악하는 능력 생성 Question에 정답이 되는 Paragraph의 substring을 뽑아내는 Fine-Tuning Task 모델 선정 과정 및 cdQA 에 대한 이해01
  • 9.
    cdQA 파이프라인과 언어처리모델병합 출처: SKTBrain 학습환경 GPU: Cirrus Logic GD 5446 학습시간 : 9시간 학습횟수 : 5번 FineTuning 전이 학습 모델 선정 과정 및 cdQA 에 대한 이해01
  • 10.
    cdQA 파이프라인이란? 질문과 문서의유사도를 기준으로 문서를 선정하여 질문에 대한 답을 추론, INPUT과 OUTPUT이 “문장과 문장” 형식으로 챗봇에 활용할 수 있다 Closed-Domain Question Answering (도메인특정 질의응답) 모델 선정 과정 및 cdQA 에 대한 이해01
  • 11.
    Closed-Domain Question Answering(도메인특정 질의응답) 문서들의 집합 (Data Lake) BERT 모델 cdQA 기본 작동원리 유사도 계산 Question 문서선정 Answer 모델 선정 과정 및 cdQA 에 대한 이해01
  • 12.
    cdQA 파이프라인 -데이터 수집 및 전처리과정 정보의 문서화 서울시 청년청 웹사이트에 공개되어 있는 정보를 CSV 파일 형식으로 정리 웹크롤링 적용 가능 모델 선정 과정 및 cdQA 에 대한 이해01
  • 13.
    cdQA 파이프라인 -데이터 수집 및 전처리과정 질문 13 9 17 4 14 10 5 14 금융 주거 활력 교통 취업 여성 장애인 창업 중복되는 정책 제거, 서울시 청년 정책 총 66가지 모델 선정 과정 및 cdQA 에 대한 이해01
  • 14.
    Retriever 검색 단계 (TF/IDF 매트릭스) DB문서들의 집합 (Data Lake) 2. 문서에 대한 TF/IDF 매트릭스 구성 질문과 문서간의 코사인 유사도를 측정 4. 고득점 문서 및 문장 선택 1. 사용자 질문에 대한 TF/IDF 벡터계 산 답변: 만 21세 이상32세 미만 청년 3. 유사도 점수부여 Reader 독해 단계 ( BERT 모델) 질문 : 청년활동지원금 지원 대상이 누구야? Closed-Domain Question Answering (도메인특정 질의응답) 프로젝트 초기 cdQA 파이프라인 구조 *정답추론까지 약 17초 모델 선정 과정 및 cdQA 에 대한 이해01
  • 15.
    프로젝트 초기 cdQA코드 분석 #미리 정의한 정책 데이터를 불러온다 df = pd.read_csv('data/bnpp_newsroom_v1.1/jungchat_result.csv', converters={'paragraphs': literal_eval}) #학습시킨 모델을 불러온다 cdqa_pipeline = QAPipeline(reader='models/bert_qa_korquad_vCPU.joblib') #모델에 정보를 담는다 cdqa_pipeline.fit_retriever(df) print('안녕하세요 서울시 정책챗봇 청명이입니다(나가기:quit)n무엇을 도와드릴까요?n') while True: query = input('') if query == 'quit': break #질문에 대한 예측 prediction = cdqa_pipeline.predict(query) print('paragraph: {}n'.format(prediction[2])) *정답추론까지 약 17초 모델 선정 과정 및 cdQA 에 대한 이해01
  • 16.
    문서들의 집합 (Data Lake) Reader 독해단계 (cdQA) 선정된문서 (Data Paragraph) Reader 독해 단계 (cdQA)Fit Fit cdqa_pipeline.fit_retriever(df)) cdqa_pipeline.fit_retriever(df.loc[best_idx_scores.keys()].head(1)) Closed-Domain Question Answering (도메인특정 질의응답) cdQA에 대한 성능개선 시도 *정답추론까지 약 5초 미만 모델 선정 과정 및 cdQA 에 대한 이해01
  • 17.
    성능개선이 적용된 cdQA코드 분석 #유사도를 비교하여 문서를 선정하기위한 리트리버 객체를 선언한다 retriever = BM25Retriever(ngram_range=(1, 2), max_df=1.00,min_df=1, stop_words=None) retriever.fit(df) query=input('입력창:') #정책과 질문의 유사도가 1보다 높으면 해당 정책의 문서를 선택하여 재학습 #질문의 유사도가 낮으면 해당정책에 대해 질의응답 if list(list(retriever.predict(ETRI_POS_Tagging(query)).values())[0])[0]>=4. or not best_idx_scores: #질문과 유사도가 높은 정책의 인덱스 예측 best_idx_scores = retriever.predict(ETRI_POS_Tagging(query)) #청년정책에서 선택된 문서학습(성능 개선이 일어나는 부분) cdqa_pipeline.fit_retriever(df.loc[best_idx_scores.keys()].head(1)) #정답예측 prediction = cdqa_pipeline.predict(query) 모델 선정 과정 및 cdQA 에 대한 이해01
  • 18.
    cdQA를 활용한 데이터입력 구조 자연어처리를 위해 공개된 API (KorBERT모델, 형태소분석기, 위키 질의 응답) 속도와 정확도 향상 및 폭넓은 대화 가능한 챗봇 (즉문 즉답, 높은 유사도 및 신뢰도) 자연어 처리를 위한 ETRI API 활용 청년정책 챗봇 아키텍처 구성 및 접근02
  • 19.
    활용된 ETRI API목록 자연어 문장에서 의미를 가 진 최소 단위인 형태소(명 사, 동사, 형용사, 부사, 조사, 어미 등)를 분석하는 기술 형태소 분석 API 자연어로 쓰여진 단락과 사 용자 질문이 주어졌을 때, 딥러닝 기술을 이용하여 단 락 중 정답을 추론하는 API KorBERT API 자연어로 기술된 질문의 의 미를 분석하여, 위키백과 문서에서 정답과 신뢰도 및 검색 단락을 추론하여 제공 하는 API 위키백과 QA API 청년정책 챗봇 아키텍처 구성 및 접근02
  • 20.
    Retriever 검색 단계 cdQA ETRI- 데이터 및 질문처리 단계 청년활동지원금 지원 대상이 누구야? Q ⇋ KoNLPy, Kaiii by Kakao NNG/NNP/VV 추출 ETRI 형태소 분석 API 청년 활동 지원 지원 대상 문서 선정 (tf-idf) ETRI API 질문과 문서 전송 A 정답추론 질문 : 청년활동지원금 ~ 누구야? 문서 : 청년 활동 지원 사업 청년정책 챗봇 아키텍처 구성 및 접근02
  • 21.
    cdQA + ETRIAPI 코드분석 POS_content=ETRI_POS_Tagging(content) #형태소분석 API #문장과의 유사도 수치가 없고 문서와 유사도 수치도 없을때 wikiQA로 처리 if max(retriever_temp.predict(POS_content).values())<1.5 and max(retriever.predict(POS_content).values())<0.5: dataSend=ETRI_wiki(content) #위키API return jsonify(make_query(dataSend)) #ETRI KORBERT API에 문서와 질문 전달 cdqa_query,validity=ETRI_korBERT(' #KorBERT API '’.join(list(df.loc[best_idx_scores.keys()].head(1)['paragraphs'])[0]),content) para=df['paragraphs'][list(best_idx_scores.keys())[0]]#유사도가 높은 문서 #KORBERT의 답과 유사도가 높은 문장의 인덱스를 뽑는다 prediction = retriever_temp.predict(cdqa_query) dataSend =para[list(prediction)[0]] #정답문장 print("time :", time.time() - start) return jsonify(make_query(dataSend)) 청년정책 챗봇 아키텍처 구성 및 접근02
  • 22.
    Kakao Khaiii 형태소분석기 Khaiii는 “Kakao Hangul Analyzer III”의 첫 글자들만 모아 만든 이름으로 카카오에서 개발한 세 번째 형태소분석기입니다. CASE 1 CASE 2 청년정책 챗봇 아키텍처 구성 및 접근02
  • 23.
    BERT-MODEL Base-Multililngual - cased Base-Multililngual -cased KorBERT-API KorBERT-API 형태소분석기 X X ETRI_형태소분석기 Khaiii 질의응답 속도 17초 5초 2초 2초 중요 문제점 무거운 모델에 의한 처리 속도 증가 매번 정책의 이름 을 반드시 입력해 야 하는 불편함 8가지 정책에 관하여 답을 못하는 케이스 발생 청년정책봇 v1.1 청년정책봇 v1.2 청년정책봇 v1.3 청년정책봇 v1.4 언어처리모델과 형태소 분석기 적용 실험 청년정책 챗봇 프로젝트 발전 단계03
  • 24.
    def Message(): content =extract_content() global best_idx_scores if list(list(retriever.predict(ETRI_POS_Tagging(content)).values())[0])[0]>=1. or not best_idx_scores: best_idx_scores = retriever.predict(ETRI_POS_Tagging(content)) if list(best_idx_scores.keys())[0]<8 and list(list(retriever.predict(ETRI_POS_Tagging(content)).values())[0])[0]>=1.: changed_text = text_tranform(''.join(df.loc[list(best_idx_scores.keys())[0]]['paragraphs'])) dataSend=changed_text best_idx_scores = '' return jsonify(make_query(dataSend)) elif list(best_idx_scores.keys())[0]<8 and list(list(retriever.predict(ETRI_POS_Tagging(content)).values())[0])[0]<1.: dataSend=ETRI_wiki(content) best_idx_scores = '' return jsonify(make_query(dataSend)) cdqa_pipeline.fit_retriever(df.loc[best_idx_scores.keys()].head(1)) cdqa_query,validity=ETRI_korBERT(' '.join(list(df.loc[best_idx_scores.keys()].head(1)['paragraphs'])[0]),content) if float(validity) <= 0.2 : dataSend=ETRI_wiki(content) best_idx_scores = '' else : dataSend_temp = cdqa_pipeline.predict(cdqa_query) dataSend=dataSend_temp[2] return jsonify(make_query(dataSend)) 동작원리 및 구조 사용자의 질문이 Content 변수로 함수에 입력 ⤋ 형태소분석기로 구문분석된 질문과 정책데이 터 중 유사도가 있는지, 함수에 처음 들어온 케 이스인지 판단 ⤋ best_idx_scores 값에 따라 8미만의 값일 경우 해 당 정책 리스트(카테고리별 정책목록)를 반환 ⤋ best_idx_scores 값이 8이상일 경우 유사도가 있 는 문서를 선택 ⤋ 가장높은 스코어를 받은 문서가 질문과 함께 ETRI KorBERT 모델로로 전달 ⤋ 유사도값이 1미만일경우 ETRI WikiQA API를 통 해 답변 반환 챗봇에 활용된 메인 동작함수 청년정책 챗봇 프로젝트 발전 단계03
  • 25.
    USER MESSENGER FIREWALLSERVERBILDER Ngrok Flask MESSENGERUSER BUILDER FIREWALL SERVER 사용자와 서버 사이의 동작흐름 청년정책 챗봇 프로젝트 발전 단계03
  • 26.
    일반적인 서버 Ngrok 사용시 플라스크란무엇인가?l 파이썬 웹 프레임 워크의 일종이며 간단하 게 사용이 가능하고 민첩한 것이 장점! 플라스크로 웹훅을 연결 Ngrok이란 무엇인가?l 외부 네트워크와 내부 서버를 연 결 해주는 터널링 프로그램 AWS가 아닌 개인서버를 사용한 이유: 사양이 높지 않더라도 빠른 속도를 보여주기 위해 사용 내부서버를 구성하는 프로그램 청년정책 챗봇 프로젝트 발전 단계03
  • 27.
    확률 기준 문장선택 사용자 메신저 채널 서버 NLP 서비스 외부 API 질문입력 Webhook으로 구현 유저ID와 질문 전송 질문 전송 ETRI 형태소분석기 답변출력 형태소 단위 파싱 Data Lake (.csv) ETRI BERT 모델 플라스크 & ngrok 사용 ETRI 위키백과 QA Retriever 유사도 낮으면 QA로 전송 문서와 질문 함께 전송 유저ID와 답변 전송 답변출력 유저ID와 답변 전송 tf-idf 유사도 비교 cdQA 정책 질의응답 챗봇 아키텍처 청년정책 챗봇 프로젝트 발전 단계03
  • 28.
    청년정책봇 시연 @ 청년정책봇 카카오톡플러스친구 추가를 통해 사용해보실수 있습니다 프로젝트 결과정리 및 향후 발전방향 논의04
  • 29.
    ‘기계독해’ 기능을 통해 사용자요청 의 문맥적 내용을 파악 가능 도출된 결과 발전 방향 사용자의 질문에 대한 문맥적 파악과 ‘기계독해’ 를 바탕으로 다양한 분야 에서 활용 가능한 ‘딥러닝 기반’ 챗봇의 가능성 확인 ‘챗봇’ 하면 단순 물음 에 대한 답변을 해주거 나 버튼을 통한 시나리 오 서비스 정도로 인식 ● 청년정책에 포괄적인 답변을 줄 수 있도록 데이터 추가구축 ● 시나리오 기반 챗봇과 결합하여 다양한 목적의 챗봇구현 ● 기계독해에 특화된 챗봇이 필요한 도메인에 활용가능 문맥 파악의 정확 성을 바탕으로 ‘대 화 성공률’ 증가 프로젝트 결과 및 향후 발전 방향 프로젝트 결과정리 및 향후 발전방향 논의04
  • 30.
    ● 이동헌, 박천음,이창기, 박소윤, 임승영, 김명지, 이주열. (2019). BERT를 이용한 한국어 기계 독해. 한국정보과 학회 학술발표논문집, 557-559. ● 임승영, 김명지, 이주열. (2018). KorQuAD: 기계독해를 위한 한국어 질의응답 데이터셋. 한국정보과학회 학술발 표논문집, 539-541. ● Alberti, Chris, Kenton Lee, and Michael Collins. "A bert baseline for the natural questions." arXiv preprint arXiv:1901.08634 (2019). ● Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018). ● Yang, Wei, et al. "End-to-end open-domain question answering with bertserini." arXiv preprint arXiv:1902.01718 (2019). ● Yang, Yi, Wen-tau Yih, and Christopher Meek. "Wikiqa: A challenge dataset for open-domain question answering." Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015. 추가 연구를 위한 참고 문헌 프로젝트 결과정리 및 향후 발전방향 논의04
  • 31.
    감사합니다. ● 프로젝트에 대한자세한 내용은 https://tinyurl.com/seoulchatbot 에서 확인하실 수 있습니다. ● 궁금하신 점이나 추가적인 피드백이 있으시면 ohikendoit@gmail.com으로 연락부탁드립니다.