기계 독해 태스크를 위한 BERT 언어처리 모델 활용
안녕하세요. Universtiy of California, San Diego에서 Political Science을 전공해 멀티캠퍼스와 과학기술정보통신부가 주관하는 인공지능 자연어 처리 교육과정을 통해 파이썬, 인공지능 자연어 처리, 챗봇 서비스 기획을 처음 접하게 된 이준형입니다. 교육과정을 마무리하면서 자연어 처리 프로젝트에 관해 글로 남기고 싶어 이 글을 쓰게 되었습니다. 우선, 멀티캠퍼스 교육과정을 통해 각각의 다른 전공과 배경을 가지고 있는 6명의 팀원이 만나 자연어 처리와 BERT를 활용한 챗봇 서비스를 구현이라는 공통된 관심사를 바탕으로 서울시 2030 청년정책 챗봇 서비스 프로젝트를 기획하게 되었습니다. 챗봇 서비스를 위해 다양한 알고리즘과 자연어 처리 기술 등을 비전공자로서 공부하면서 많은 어려움이 있었지만 다양한 컨퍼러스(ETRI, KorQuAD1.0 등)를 참가하면서 지식을 늘릴 수 있었습니다. 그리고 마지막 과정이 끝난 뒤, 두 가지 좋은 소식을 얻게 되었습니다.
첫 번째는 저희 팀에서 준비했었던 ETRI openAPI 공모전에서 장려상 수상하게 되었습니다. 12월 중에 있는 ETRI AI Tech Concert 나눔이라는 행사에서 프로젝트 발표 연락이 왔고, 팀원 모두가 열심히 한 프로젝트에 좋은 결과가 나와서 정말 기뻤습니다. 두 번째로는 멀티캠퍼스 최종 프로젝트 발표에서 저희 팀이 최우수상을 받게 되었습니다. 더 많은 노력을 쏟은 팀도 많이 있었는데 운 좋게 기대 이상의 평가를 받게 되었습니다. 이상 저의 대한 소개와 프로젝트의 취지를 마치고, 어떻게 서울시 2030 청년정책 봇을 구현했는지 소개해 드리겠습니다.
1. 프로젝트 개요
1.1 프로젝트 전체 개요
서울시 챗봇팀이 개발한 ‘청년정책 봇’은 시나리오 기반이 아닌 딥러닝 기반의 챗봇 서비스다. ETRI에서 개발한 KorBERT를 통해 언어 처리 모델을 대신하고, 형태소 분석 API를 통해 질문 문장에 대한 의도를 분석하였다. 카카오에서 배포한 khaii 형태소 분석기 적용을 통해 구문분석 정확도를 향상을 확인할 수 있었다. 또한, 위키 QA API를 통해 일반적인 질의응답을 위한 기능을 추가했다. 현재 상용화된 챗봇 서비스의 대부분은 미리 구성된 시나리오(Flowchart)를 따라가는 방식을 활용하며, 자연어 처리 기술은 신뢰도가 낮아 사용되지 않고 있다. 그에 반해, ‘청년정책 봇’은 cdQA 파이프라인을 접목해 유사도 높은 문서를 언어 처리 모델에 적용하는 방식으로 접근해 신뢰도를 높일 수 있었다. 기존 빌더를 통해, 상용화된 서비스 대비 두 가지 장점이 있다. 첫 번째 장점은 딥러닝 모델에 따른 발전 가능성으로써 ETRI KorBERT의 지속적인 개선에 따라 청년정책 봇의 기계 독해 성능도 같이 개선된다는 것이다. 두 번째 장점은 서비스 지속 가능성으로써 cdQA 파이프라인에 기반해 주기적인 웹 크롤링을 통해 데이터 추가가 가능하기 때문에 소프트웨어 유지 보수에 필요한 자원을 최소화할 수 있다는 것이다. 청년정책 챗봇을 통해 cdQA 파이프라인과 ETRI BERT 모델을 활용해 기존의 데이터 인풋 제한을 극복하고 기계 독해에 대한 설루션을 제시할 수 있었다.
1.2 프로젝트 기획 배경 및 목표
멀티캠퍼스 자연어 처리 교육과정을 통해 만나게 된 6명이 BERT 모델을 활용한 챗봇 구현이라는 공통된 관심사를 바탕으로 이번 프로젝트에 참여했다. 프로젝트 일정과 유사한 시기에 한국전자통신연구원(ETRI)에서 배포한 자연어 처리 API를 활용한 사례를 찾는 공모전이 있어 해당 프로젝트의 전반적인 구성은 공모전과 같은 방향으로 진행했다. 프로젝트 기획을 위한 사전 연구 단계에서 ETRI 공공 인공지능 포털을 접하게 되었고, 한국어 처리가 가능한 챗봇 구현에 있어서 Open API는 중요한 개발 가이드라인으로 활용할 수 있었다. 해당 플랫폼에서 제공되는 모델과 학습 데이터는 짧은 개발 기간에 적합한 프로젝트의 방향성을 설정하는데 중요한 기반이 되었고, 본 공모전을 통해 ‘서울시 챗봇팀’은 자체적으로 개선된 챗봇 프레임워크를 시민 생활과 밀접한 서울시 청년 정책 도메인에 적용 및 구현을 시도할 수 있었다. 많은 사용자를 대상으로 하는 챗봇 플랫폼 개발에 있어서 ETRI Open API가 제공하는 높은 정확도의 모델, 서버 신뢰도, 확장 가능성에 기반해 서비스를 기획부터 구현까지 목표를 달성할 수 있었다.
2. 프로젝트 현황
2.1 챗봇 시장분석
챗봇은 사용자가 질문하면 기계가 대답하는 질의응답으로 구성된 프로그램이다. 대화 주제에는 일반 주제(General)와 특정 주제(Domain)로 나누어질 수 있고, 응답 방식은 검색 모델(Retrieval-Based)과 생성 모델(Generative)로 접근할 수 있다. 모든 주제에 답변을 자동으로 생성해 대답을 하는 것은 이상적이지만 현실적으로 구현이 어렵다. 따라서 특정 주제에 대해 미리 구성된 시나리오 기반의 챗봇 빌더를 통해 상용화가 되고 있다. 이러한 문제를 해결하고자, 시나리오 기반이 아닌 문서탐색과 구문 분석을 통해 내용을 실시간으로 추출하는 방식으로 질의응답을 구현했다. 따라서 특정 주제에 대하여 문서 데이터를 정의했고, 이에 기반한 질의응답이 가능하도록 했다. 그 결과, cdQA 파이프라인을 통해 서울시 청년 정책에 관한 질의응답 시스템을 구축하게 되었다.
2.2 기존 챗봇 빌더와의 차별점
현재 상용화된 챗봇 서비스의 대부분(구글 다이얼로그 플로우, 카카오 i 오픈 빌더)은 미리 구성된 시나리오(Flowchart)만을 따라가는 한계점을 가지고 있다. 반면 청년정책 봇은 ETRI API를 기반으로 한 BERT 딥러닝 활용 모델을 적용했다. 복합 추론 기반의 자연어 처리 결과를 바탕으로 사용 문맥에 따라 달라지는 의미를 파악하고 탁월한 답변을 제공하는 유연한 대화 모델을 생성할 수 있었다.
청년정책 봇 구성에 포함된 cdQA 파이프라인에는 크게 두 가지 장점이 있다.
- 확장 및 지속 가능성: 기계 독해 기능 면에서, 언어 처리 모델에 대한 추가적인 학습이 필요하지 않아 자동화를 달성하기 쉽다. 청년정책의 경우 서울시 홈페이지에 대한 주기적인 웹 크롤링을 통해 수정된 부분만 데이터베이스에 추가하면 되기에 소프트웨어 유지 보수에 필요한 자원을 최소화할 수 있다.
- 딥러닝 모델에 따른 발전 가능성: 기계 독해 태스크를 위한 BERT 언어 처리 모델의 성능은 지속적으로 발전되고 있다. BERT의 경량화 모델로 대체할 경우 연산에 필요한 시간을 단축할 수 있을뿐더러 ETRI API를 통해 모델 사용을 대신하기 때문에 업데이트에 따라 연산 능력을 향상할 수 있다.
2.2 사용된 ETRI API 종류 및 활용방안
챗봇 아키텍처를 구성하는 요소에는 언어 처리 모델, 형태소 분석기와 같이 독립적인 주요 성분이 존재한다. 하지만 컴퓨팅 자원이 제한적이기 때문에 자체적인 언어 처리 모델 구축에 큰 어려움이 있었다. 그래서 한국어 자연어 처리 연구 분야를 이끄는 ETRI 엑소브레인 연구진에서 공개한 API를 통해 해당 요소들을 대체함으로 이를 해결할 수 있다고 판단했다. 2019년 10월 기준으로 한국어 자연어 처리 데이터 셋 (KorQuAD)을 활용한 모델 정확도 리더보드에서 ETRI ExoBrain팀의 KorBERT 모델이 (EM 87.76과 F1 95.02) 평가 기준으로 1위를 차지하였다. GPU와 같은 컴퓨팅 리소스가 제한되어 있기 때문에 한국어 처리에 독보적인 모델을 API를 통해 ‘서울시 챗봇팀’이 제작한 챗봇 아키텍처에 적용해볼 소중한 기회가 되었다. 또한 위키백과 QA API를 통해 챗봇의 본 주제에 벗어난 일반 대화에 대한 답변 처리를 하는 방향으로 활용하였다. ETRI API 활용을 통해 시간 소요를 대폭 감소할 수 있었고 프로젝트의 전반적인 구성과 완성도 부분에 초점을 맞출 수 있었다. ETRI에서 제공되는 모델은 향후 성능 개선과 프로젝트 태스크에 맞게 튜닝할 때 비교의 기준치로도 활용될 예정이다.
서울시 정책 질의응답 챗봇 아키텍처
2.3 질의응답 챗봇 아키텍처 및 동작 과정
기계 독해 태스크에 최적화된 ETRI BERT 언어 처리 모델을 기반으로 챗봇 서비스를 구현한다. 사용자가 입력한 문장에 대해 기계 독해 단계에서 진행되는 토큰 임베딩 (Token Embedding) 단계에는 한 번의 인풋에 512개 이상의 단어가 들어간 문단을 처리하지 못하는 제한이 있다. 이에 따라 RoBERTa (Doc to Sentences)와 같은 모델 등이 존재하지만, 사용자의 질문 시에 질문과 가장 유사도가 높은 문서와 문단을 호출하는 cdQA (Closed-Domain Question Answering) 도메인 특정 파이프라인을 접목함으로써 자료 입력 크기의 제한 문제를 해결했다.
서울시 청년 정책에 관련된 사용자의 질문이 들어오면, ETRI 형태소 분석 API를 활용하여 명사와 동사를 세부적으로 추출하게 되고, 구문 분석 결과를 바탕으로 구축되어 있는 문서 데이터로부터 핵심 단어를 찾는 TF/IDF 알고리즘을 활용해 유사도가 가장 높은 문서와 문단을 선택하게 된다. 마지막으로, 질문에 대한 답일 가능성이 가장 큰 문단을 메신저 채널을 통해 출력함으로써 챗봇이 동작하는 구조로 설계되었다.
도메인 특정 질의응답을 위한 파이프라인 구성
cdQA는 크게 문서 검색을 진행하는 Retriever와 기계 독해를 진행하는 Reader 두 가지 부분으로 나누어져 있다. 메신저 채널을 통해, 사용자로부터 질문이 들어왔을 때 질문을 ETRI 형태소 API를 활용해 명사와 동사를 추출했고 TF/IDF와 BM25 알고리즘 중 하나를 선택해서 해당 질문과 가장 유사도가 높은 문서를 선택하게 된다. 단어 빈도에 있어서 BM25 알고리즘은 TF/IDF 보다 특정 값으로 수렴하고, 불용어가 검색 점수에 영향을 덜 미친다는 장점이 있다. 특히, 문서의 평균 길이(AVGDL)를 계산에 사용함으로써 문서의 길이가 검색 점수에 영향을 덜 미치는 강점이 있어 BM25 알고리즘을 통해 문서 유사도 측정을 하였다.
챗봇에 활용된 메인 함수
cdQA 파이프라인 구성 단계는 아래와 같다.
코사인 유사도 계산을 통해, 주어진 질문과 가장 유사한 문서 및 문장을 선택한다.
Reader 부분에서 선택된 문서와 질문을 KorBERT API에 전송한다.
ETRI KorBERT API를 활용해 문서에 대한 질문을 추론하여 json 형식으로 반환한다.
위와 같은 과정을 통해 질문에 가장 적합한 답을 추론하게 된다. 결과적으로, 메신저 채널에서는 사용자의 질문에 가장 알맞은 답변을 출력하여 질의응답 태스크를 수행할 수 있으며, 시스템상에서는 답변이 추출된 문장에 대한 정보와 답변에 대한 정확도를 포함하고 있다.
챗봇에 활용된 메인 함수 동작원리 및 구조
사용자의 질문이 Content 변수로 함수에 입력
⤋
ETRI 형태소분석기로 구문 분석된 질문과 DB문서 중 유사도가 있는지, 함수에 처음 들어온 케이스인지 판단
⤋
best_idx_scores 값에 따라 9 미만의 값일 경우 해당 리스트(카테고리별 정책 목록)를 반환
⤋
best_idx_scores 값이 9 이상일 경우 유사도가 있는 문서를 선택하고 본 함수로 재입력
⤋
함수에 두 번째 들어온 경우 DB문서에 대한 유사도 계산 (0에서 최대 20)을 통해 가장 높은 스코어를 받은 문장이 질문과 함께 ETRI KorBERT 모델로 전달
⤋
유사도 값이 1 미만일 경우 ETRI WikiQA API를 통해 답변 반환
3. 프로젝트 개발 결과
3.1 결과물 데모 및 대화 흐름 예시
데모 버전 입력 예시문:
“청년 금융 정책 알려줘”
“면접을 위한 정장 무료로 대여하고 싶어”
“희망 두배 청년 통장 지원대상 알려줘”
4. 기대 효과
4.1 상용화 및 확장 가능성
롯데홈쇼핑 챗봇 서비스 프로젝트에 참여하신 분과의 대화를 통해 현재 상용화된 챗봇 서비스의 대부분은 이미 짜인 시나리오(Flowchart)를 따라가는 방식을 활용하며, 자연어 처리 기술은 신뢰도가 낮아 사용되지 않는다는 것을 알게 되었다. 예를 들어, 제품 카탈로그를 보여주거나 영업시간을 알려주는 챗봇은 간단한 버튼이나 빠른 답변 기능, 또는 좋은 선택지를 통해 만드는 것이 더욱 편리하다. 하지만 LG전자 챗봇 프로젝트 매니저는 지난 10월에 열린 KT 넥스알 빅데이터 콘퍼런스 발표를 통해 장기적으로는 ‘사람 같은’ 챗봇이 각광받을 전망이라고 밝혔다. 챗봇의 전반적인 개발 방향은 스크립트에 기반한 기술에서 (Scripted Chatbots), 의도 인식 (Intent Recognizers) 및 가상 도우미 (Virtual Agents)를 거쳐 자연스러운 대화가 가능한 방향(Human-like Advisor)으로 나아가고 있다. 챗봇이 고객 서비스 및 응대에 대한 역할을 하기 위해서는 실제 대화를 하는듯한 자연어 처리 기술이 필수이고 고도화된 챗봇 개발을 위해서는 풍부한 사용자 경험, 객체인식, 개인화 등의 기술이 추가적으로 필요하다. 사용자의 발화 의도에 기반해 특정 주제에 대해 답변의 줄 수 있는 Closed-Domain QA 챗봇 아키텍처는 자연스러운 대화를 위한 챗봇 설계에 밑바탕이 될 것이다. 본 ETRI 공모전을 위해, 개발한 청년정책 챗봇은 Closed-Domain QA 파이프라인과 ETRI BERT 언어처리 모델을 활용해 인풋의 길이 제한을 극복하고 기계 독해에 대한 설루션을 제시할 수 있었다.
챗봇 서비스 사용을 위해, 별도의 기기나 어플을 설치해야 하는 번거로움이 없이 카카오톡이나 텔레그램과 같은 사용자 친화적 메신저 플랫폼을 사용할 수 있도록 구성하였을 뿐만 아니라 클라이언트의 요청에 따라 공공정책에 대한 질의응답뿐만 아니라 민원처리에 관한 자료를 제공할 수 있다. 또한, 자주 묻는 질문을 챗봇을 통해 가장 적절한 질문에 대한 답을 출력해주는 방식으로 작동한다면 사람 대응이 필요한 고객상담 수요를 줄이는 효과가 나타날 것으로 예상한다. 기계 독해에 특화된 챗봇을 통해 사용자가 필요로 하는 알맞은 정책을 알려주고 정보를 얻을 수 있는 웹사이트 연계해 정책에 대한 시민의 관심에 부응할 수 있을 것이다.
4.1 추가 연구를 위한 참고 문헌 목록
이동헌, 박천음, 이창기, 박소윤, 임승영, 김명지, 이주열. (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.
이 글을 마치며, 서울시정책봇 프로젝트에 궁금한 점은 ljh0113m@gmail.com / 자세한 코드 내용은