Korean Institute of Information Technology

Current Issue

The Journal of Korean Institute of Information Technology - Vol. 22 , No. 3

[ Article ]
The Journal of Korean Institute of Information Technology - Vol. 19, No. 9, pp. 29-40
Abbreviation: Journal of KIIT
ISSN: 1598-8619 (Print) 2093-7571 (Online)
Print publication date 30 Sep 2021
Received 31 Aug 2021 Revised 15 Sep 2021 Accepted 18 Sep 2021
DOI: https://doi.org/10.14801/jkiit.2021.19.9.29

감성 및 감정 단어 마스킹 기반 BERT와 GPT 파이프라인 방식을 통한 감정 문장 생성
이원민* ; 온병원**
*군산대학교 소프트웨어융합공학과 학부생
**군산대학교 소프트웨어융합공학과 교수(교신저자)

Generating Emotional Sentences Through Sentiment and Emotion Word Masking-based BERT and GPT Pipeline Method
Won-Min Lee* ; Byung-Won On**
Correspondence to : Byung-Won On Dept. of Software Convergence Engineering, Kunsan National University, 558, Daehak-ro, Gunsan, Jeollabuk-do, Korea Tel.: +82-63-469-8913, Email: bwon@kunsan.ac.kr

Funding Information ▼

초록

최근 인공지능 기술의 발전과 더불어 인공지능 챗봇에 관한 연구가 활발히 진행되고 있으며, 사람의 감정을 비슷하게 표현할 수 있는 수준까지 도달하고 있다. 챗봇이 사람의 감정을 정확하게 인식하고 그에 적절한 응답을 할 수 있다면 챗봇과 자연스러운 대화가 가능하다. 이를 위해 응답 문장을 생성할 때 화자의 감정을 고려해야 하며, 감정이 반영된 대용량의 고품질 학습 데이터를 생성하는 것이 필요하다. 따라서 본 논문에서는 감성 및 감정 단어 마스킹 기반의 BERT 모델을 사용하여 감정이 반영된 학습 데이터를 자동으로 생성하고, 이러한 학습 데이터로 GPT 모델을 학습시켜 감정이 잘 반영된 응답 문장을 생성하는 BERT+GPT 파이프라인 모델을 제안한다. 실험 결과에 따르면, 제안 방안은 무작위로 샘플링 한 단어를 마스킹 하는 기존의 BERT 모델보다 감정분류의 정확도가 12% 향상되었고, GPT 모델에 의해 생성된 대부분의 응답 문장은 감정이 일관되고 좀 더 자연스러운 응답 문장임을 확인할 수 있었다.

Abstract

Recently, due to advances in Artificial Intelligence(AI), there have been active studies on AI Chatbot, which has reached a level where it can similarly express human emotions. If AI Chatbot can accurately understand human emotions and respond accordingly, natural conversations between chatbots and humans are possible. Large-capacity, high-quality training data for emotion analysis is needed to train a deep learning model that automatically generates sentences. In this study, we proposes a new BERT+GPT pipeline method in which an emotion word masking-based BERT is used to automatically generate large-capacity, high-quality training data as the input of GPT that is used to generate response sentences containing human emotions. Our experimental results show that the proposed method improved up to 12% accuracy, compared to the existing BERT model, showing that most response sentences generated by GPT were better in both emotion consistency and natural meaning.


Keywords: emotion analysis, transfer learning, BERT, GPT, random masking, sentence generation

Ⅰ. 서 론

인공지능 기술의 발전으로 챗봇에 관한 연구가 활발히 진행되고 있다. 챗봇은 즉각적으로 반응하고 빅데이터 구축에도 유리하다는 장점을 가져 쇼핑몰이나 여행사 등의 분야에서 고객 상담과 민원, A/S 서비스 등의 목적으로 활용되고 있다.

최근 챗봇은 사용자에게 필요한 서비스를 제공해주는 기술을 넘어 사람의 감정을 비슷하게 표현할 수 있는 수준으로까지 기술이 개발되고 있다[1]. 챗봇과의 대화에서 챗봇이 사용자의 제대로 된 감정을 파악하지 못한다면 엉뚱한 대답을 하게 되고, 그에 따라 몰입감을 방해하는 문제가 있다.

따라서 챗봇과 자연스러운 대화를 위해서는 챗봇이 사용자의 감정을 정확하게 인식하고 그에 적합한 응답을 하는 기술이 필요하다.

이를 위해 본 논문에서는 BERT(Bidirectional Encoder Representations from Transformers)[2]를 활용하여 대화 말뭉치를 자동으로 감정 레이블링하고, 이를 GPT(Generative Pre-trained Transformer)[3]에서 학습 데이터로 사용해 응답 문장을 생성하는 BERT+GPT 파이프라인 방안을 제안한다.

기존 연구로는 감정분석을 진행한 [4][5] 연구가 있다.

[4]는 CNN(Convolutional Neural Network)과 LSTM(Long Short-Term Memory) 모델을 활용하여 감정 분석하는 연구로, 본 연구에서는 대용량 데이터를 사용해 사전학습을 진행한 BERT를 활용하기 때문에 [4]보다 적은 데이터로도 더 빨리 학습이 가능하다는 장점이 있다.

[5]는 KoBERT(Korean Bidirectional Encoder Representations from Transformers) 모델을 활용한 연구로 사전학습을 진행하지 않고 파인튜닝만 진행해 감정을 분석하는 연구이다. 이에 반해 본 연구는 사전학습 단계에서부터 감정에 최적화된 실험을 진행한다는 차이점이 있다.

감정분류와 분류된 감정을 바탕으로 응답 문장을 생성하는 모델을 제안한 연구로는 [6][7] 연구가 있다.

[6]에서는 CNN, RNN(Recurrent Neural Network), HAN(Hierarchical Attention Network) 모델을 사용해 감정을 5가지로 분류하고, 사용자와의 대화에서 긍정적 감정과 부정적 감정 각각의 비율을 계산해서 결과에 따른 정신치료를 받도록 조언하는 모델이다.

해당 모델은 응답 문장을 생성할 때 5가지 각각의 감정에 대해서가 아닌, 긍정 또는 부정에 따른 응답을 생성하기 때문에 감정을 반영한 응답을 생성하는 것에 대한 한계점을 보였다.

[7]은 ECM(Emotion Chatting Machine) 모델을 제안한 연구로, 6개의 감정분류를 위해 Bi-LSTM(Bidirectional Long Short-Term Memory)을 이용한 감정 분류기를 사용한다. 감정 분류기를 통한 감정분류 후, 인코더-디코더(Encoder-decoder)를 활용해 문장을 생성한다.

해당 연구는 응답 문장이 6개의 감정에 대해 모두 생성되어 적절한 응답 문장 하나를 고를 수 없다는 문제와 시퀀스 투 시퀀스(Sequence-to-Sequence; seq2seq)를 사용했기 때문에 장기 기억과 속도 문제가 있다.

본 논문에서는 기존 연구의 장기 기억과 학습 속도 문제점을 개선하고 감정이 반영된 응답 문장을 생성하기 위해 BERT와 GPT를 활용한 BERT+GPT 파이프라인 방안을 제안한다.

본 연구에서는 그림 1과 같이 크게 두 가지 단계로 구성된 방안을 제안한다. 첫 번째 단계는 감정을 레이블링하는 단계로, BERT를 활용해 대화 말뭉치를 7개의 감정인 행복, 불안, 슬픔, 당황, 상처, 분노, 중립 중 하나로 분류한다. 이는 그림 1의 i), ii), iii)에 해당한다.


Fig. 1. 
Proposed BERT+GPT pipeline method

두 번째 단계는 감정이 반영된 응답 문장을 생성하는 단계로, BERT를 통해 생성된 감정이 레이블링 된 대화 말뭉치를 GPT의 학습 데이터로 사용해 응답 문장을 생성한다. 이는 그림 1의 iv)에 해당한다.

그림 1의 i)에서는 감성 및 감정 단어를 마스킹해 감정에 최적화된 모델을 생성한다. 기존의 무작위로 샘플링 해 마스킹하는 것이 아닌, 감성 및 감정 단어를 사용하는 이유는 사전학습을 진행할 때 감정에 최적화된 모델을 생성할 수 있기 때문이다.

앞으로 본 논문에서는 무작위로 샘플링한 마스킹 방식을 사용한 BERT 모델을 Baseline Method, 감성 및 감정 마스킹 방식을 사용한 BERT 모델을 Proposed Method로 표기한다.

ii)에서는 대화 말뭉치를 7가지 감정 중 하나로 분류한다. 그리고 iii)에서 감정이 레이블링 된 대화 말뭉치 생성해 iv)에서 사용한다. 감정분류의 정확도를 평가한 결과, Baseline Method와 Proposed Method를 사용했을 때 각각 78.4%와 90.1%의 정확도를 보여 약 12% 향상된 것을 확인할 수 있다.

iv)는 아마존 웹 서비스(AWS)와 SK텔레콤이 협력해 개발한 모델인 KoGPT2(Korean Generative Pre-trained Transformer 2) 모델을 활용해 응답 문장을 생성한다. KoGPT2는 OpenAI에서 공개한 GPT2[8] 모델의 한글 버전이다.

기존의 KoGPT2는 감성 분석 데이터를 활용해 파인 튜닝 단계에서 문장 생성에 대한 학습을 진행했기 때문에 생성된 문장이 긍정 또는 부정으로 분리된다.

이를 사용하면 예를 들어 슬픈 감정이 있는 문장 ‘친구가 다른 학교로 전학 가서 슬퍼’와 화난 감정이 있는 문장 ‘친구가 내 돈을 가지고 전학 가버렸어’라는 문장이 있을 때 ‘부정’이라는 같은 카테고리로 묶여 두 문장에 대한 응답으로 ‘친구가 전학 가서 안 됐네요’가 생성되어 세분화된 감정에 대응된 문장이 생성되지 않는다는 문제가 발생한다.

본 논문에서는 기존의 KoGPT2의 사전학습으로 생성된 모델을 활용해 파인튜닝 단계에서 감성이 아닌 감정 레이블링 된 대화 말뭉치를 사용하여 세부적인 감정에 대응되는 응답 문장을 생성한다.

KoGPT2를 활용해 생성된 문장의 평가는 2가지 방식으로 진행한다. 첫 번째는 정성적 평가 방식으로, 무작위로 추출한 300개의 대화 말뭉치를 4번에 걸쳐 평가를 진행했으며, 평가자 3명이 생성된 응답 문장에 대해 감정의 일관성, 상황의 적절성 각각을 1~5점으로 평가했다.

그 결과 Baseline Method를 사용해 레이블링한 데이터를 사용했을 때의 감정의 일관성은 평균 3.1점, 상황의 적절성은 2.7점이 나왔고 Proposed Method를 사용해 레이블링한 데이터를 사용했을 때의 감정의 일관성은 평균 4.2점, 상황의 적절성은 평균 3.8점으로 점수가 더 높게 평가된 것을 볼 수 있었다.

또한, 세 명의 평가자의 신뢰도를 확보하기 위해 Kendall 상관계수[9]를 측정하였다. 그 결과 평가자1과 평가자2, 평가자2와 평가자3, 평가자1과 평가자3의 감정의 일관성은 평균 89.7%, 상황의 적절성은 평균 92%로 높은 상관관계를 보였다.

두 번째 평가 방식은 무작위로 추출한 1,200개의 대화 말뭉치에 대해 정량적 평가를 진행한다. 평가는 사용자의 입력 값과 생성되는 응답 문장의 감정이 일치하는지를 감정 분류하는 BERT 모델을 사용하여 정확도 평가를 진행한다.

그 결과 Baseline Method와 Proposed Method를 사용해 레이블링한 데이터를 사용했을 때 각각 약 79.1%와 약 82.3%의 정확도가 나와 약 3% 향상된 것을 확인할 수 있다.

본 연구의 기여도는 다음과 같다.

  • • 챗봇에서 감정이 반영된 문장 생성을 위해 BERT+GPT 파이프라인 방식을 새롭게 제안한다.
  • • 감정 분류를 위해 BERT의 무작위로 추출해 샘플링한 단어를 마스킹하는 대신 감성 및 감정 단어 마스킹을 위해 단어 추출 및 마스킹 방안을 제안한다.
  • • 감정분류를 위한 양질의 학습데이터를 자동으로 대량 생산하여 다양한 챗봇 연구에 활용될 수 있다.
  • • 본 연구를 통해 제안 방안의 우수성을 증명하고, 개발된 기술이 챗봇에 적용되어 사용자의 감정을 정확하게 인지하고 그에 적합한 감정이 반영된 응답을 할 수 있을 것으로 기대한다.

본 논문의 구성은 다음과 같다. 2장에서는 관련 연구에 관해 기술하고 3장에서는 제안 방안을 소개하고, 4장에서는 제안 방안에 대한 실험 환경과 결과에 대해서 분석한다. 마지막으로 5장에서는 결론 및 향후 계획에 관해서 기술한다.


Ⅱ. 관련 연구
2.1 기존의 감정 분석 연구

[4]는 CNN과 LSTM 모델을 활용하여 감정을 6가지(love, joy, anger, sadness, fear, surprise) 중 하나로 분류하는 모델을 제안한 연구이다. 해당 연구와 다르게 본 연구에서는 대용량 데이터를 사용해 사전학습을 진행한 BERT를 활용하기 때문에 많은 양의 데이터가 필요한 감정 분석 연구에서 적은 데이터로도 더 빨리 학습이 가능하다는 장점이 있다.

[5]는 한국어에 대한 감정 분석을 진행한 연구로, SKT brain에서 공개한 KoBERT를 활용한 연구이다. 해당 연구는 파인 튜닝 단계에서 기쁨, 슬픔, 놀람, 분노, 공포, 혐오, 중립 6개의 감정에 대해 학습을 수행한다.

분류 층에서 분류하는 레이블링의 수를 감소시킴으로써 정확도를 증가시키기 위해 문장을 긍정 또는 부정을 분류하는 감성 분석을 진행한 후, 부정일 경우 슬픔, 공포, 분노, 놀람, 중립에 대해 학습시킨 분류 층을 통해서 감정을 분석하고, 긍정일 경우에는 행복, 놀람, 중립의 감정에 대해 분석하도록 구성하였다.

해당 연구와 다르게 본 논문에서 제안하는 연구는 BERT의 사전학습 단계에서부터 감정에 최적화된 모델을 생성하고, 생성된 모델을 활용해 파인 튜닝을 진행한다는 차이점이 있다.

2.2 감정분류를 적용한 기존의 챗봇 연구

[6]은 CNN, RNN, HAN 모델을 사용해 감정을 5가지(Happy, Joy, Shame, Anger, Disgust)로 분류해 그중 가장 성능이 좋았던 HAN 모델을 활용해 감정분류를 진행하고, 긍정 및 부정 비율을 계산해서 정신 상태 분류를 통해 정신치료를 받도록 조언하도록 제안된 모델이다.

해당 모델은 감정분류 학습을 진행할 때 실행 시간이 오래 걸리기 때문에 거대한 데이터 세트에서는 바람직하지 않다는 문제가 있다. 또한, 5가지 각각의 감정에 대한 응답 문장이 아닌, 긍정 및 부정에 대한 응답 문장을 생성하기 때문에 구체적인 감정을 반영한 문장을 생성하는 것에는 한계점을 보였다.

[7]은 ECM 모델을 제안한 연구로, 해당 모델은 문장의 감정 분류를 위해 감정 분류기를 사용한다. 감정은 6가지(angry, disgust, happy, like, sad, other) 중 하나로 분류한다. 데이터는 8:1:1의 비율로 분리해 훈련, 검증, 테스트 데이터로 사용했다.

감정 분류기에 사용할 Lexicon-based, RNN, LSTM, Bi-LSTM 모델 각각의 정확도를 측정한 결과, 각각 0.432, 0.564, 0.594, 0.623의 정확도를 보였고, 가장 정확도가 높은 Bi-LSTM 모델을 사용했다.

이후, 감정 분류기로 감정 분류된 데이터를 기존의 시퀀스 투 시퀀스에서 사용한 인코더-디코더에 세 가지 메커니즘인 특정 단어에 해당하는 감정 카테고리 삽입, 내부 감정 기억, 외부 기억을 추가해 학습을 진행하고, 응답 문장을 생성한다.

해당 모델은 하나의 문장에 대한 응답 문장이 6개의 감정에 대해 모두 생성되어 적절한 응답 문장 하나를 고를 수 없다는 문제와 시퀀스 투 시퀀스 모델을 사용하기 때문에 본 논문에서 사용하는 BERT에 비해 장기 기억에 취약하고 학습 속도가 느린 문제가 있다.

본 논문에서는 기존 연구의 문제점을 개선하고, 감정분류를 위한 양질의 학습데이터를 대용량 생성해 이를 응답 문장 생성을 위한 학습에 사용하여 챗봇에 적용될 수 있도록 BERT+GPT 파이프라인 방안을 제안한다.


Ⅲ. 제안 방안

이번 절에서는 전이 학습 모델인 BERT와 KoGPT2를 활용하여 대화 말뭉치의 감정을 분류하고, 이를 활용한 응답 문장을 생성하는 방안에 대해 자세히 설명한다.

본 논문의 제안 방안은 크게 2단계로 구성된다. 첫 번째 단계는 그림 1의 i), ii), iii)에 해당하며, BERT를 활용해 감정분류 모델을 위한 사전학습을 진행한 후, 주어진 문장의 감정을 7개(행복, 불안, 슬픔, 당황, 상처, 분노, 중립) 중 하나로 분류하는 파인튜닝을 진행한다.

BERT의 사전학습 단계에서는 기존의 무작위로 샘플링한 단어를 사용해 마스킹하는 방법 대신 감성 단어 5,523개와 감정 단어 428개를 사용해 마스킹을 진행한다.

사용한 감정 단어는 서울대 심리학과에서 연세대 언어정보개발연구원이 만든 ‘현대 한국어의 어휘빈도’ 자료집을 활용해 일상생활에서 빈도 높게 사용하는 감정 표현 단어들만 추출한 목록[10]이다. 하지만 감정분류에 사용하기에는 수가 충분하지 않아 감성 단어를 추가해 사용한다.

감성 단어는 감성분류를 진행한 연구[11]에서 사용되어 높은 정확도를 보였기 때문에 감성을 세분화한 감정분류에도 감성 단어가 긍정적인 영향을 줄 것으로 기대해 함께 사용하며, KNU 감성 사전[12]의 단어를 사용한다.

KNU 감성 사전은 국립 국어원의 표준 국어 대사전의 뜻풀이를 사용해 Bi-LSTM 인공지능 모델로 구축한 사전으로 인간의 보편적인 기본 감정 표현을 나타내는 긍정 및 부정어로 구성되어 있어 감성 연구에 활용되었으며[13][14], 본 연구 또한 실험에 사용하는 말뭉치 데이터에 적용하기에 적합하다.

사전은 강한 긍정어 2,597개, 긍정어 2,266개, 중립어 154개, 부정어 5,029개, 강한 부정어 4,797개로 구성되어있다.

마스킹에 사용할 감성 및 감정 단어 추출 방안과 BERT의 사전학습은 각각 3.1과 3.2에서 자세히 설명하고 BERT의 파인 튜닝은 3.3절에서 자세히 설명한다.

첫 번째 단계에서 KoGPT2에서 사용할 데이터를 자동으로 생성했고 생성한 데이터를 사용해 그림 1의 iv)에 해당하는 두 번째 단계에서는 KoGPT2를 활용해 문장을 생성한다. 이는 3.4절에서 자세히 설명한다.

3.1 감성 및 감정 마스킹을 위한 단어 추출 방안

Alogirthm1은 BERT의 사전학습 단계에서 단어 마스킹을 위한 감성 및 감정 단어 추출 알고리즘이다. Algorithm1의 1은 위키 백과와 네이버 영화리뷰 등에서 추출한 약 540만 문장으로 구성된 입력 데이터와 감성 사전 및 감정 사전을 구성하고, 바이트 페어 인코딩(BPE, Byte Pair Encoding)[15] 방식으로 입력 데이터를 토큰화한다.



Algorithm1: 감정 및 감성 마스킹 단어 추출 알고리즘
1. data=open(), knu_dict=KNU(), bpe_token=BPE(), emo_word=open()
2. for match in bpe_token:
    if match in knu_dict:
        bpe_senti.append(match)
    if match in emo_word:
        bpe_senti.append(match)
3. for line in data:
    morphs=Kkma.morphs(line)
4. for match in morphs:
    if match in knu_dict:
        morphs_senti.append(match)
    if match in emo_word:
        morphs_senti.append(match)
5. for senti_change in morphs_senti:
    change=“##”+morphs_change
    final_sentiI_word.extend(morphs_change, change)
6. final_vocab=final_senti_word+bpe_senti
    vocab_set=set(final_vocab)
    final_vocab=list(vocab_set)

예를 들어 ‘서비스에 비해 가격이 비싸 불만이 많아 이용에 주의해야 한다’라는 문장이 주어졌을 때 바이트 페어 인코딩을 사용하면 [‘서비스’, ‘##에’, ‘##비해’, ‘가격’, ‘##이’, ‘##비’, ‘##싸’, ‘불만’, ‘##이’, ‘##많아’, ‘이용’, ‘##에’, ‘주의’, ‘##해’, ‘##야’, ‘##한다’]로 토큰화된다.

Algorithm1의 2에서와 같이 토큰 중 감성 및 감정이 있는 토큰을 KNU 감성 사전과 감정 사전과의 매칭을 통해 추출한다. 앞의 예시에서는 ‘불만’이 추출된다. 이처럼 바이트 페어 인코딩 방식으로 토큰화를 진행하게 되면 ‘비싸’와 ‘불만’과 ‘주의’가 모두 감성 단어인데 ‘비싸’는 토큰이 나뉘어 감정적 의미를 잃어 추출되지 않는 문제가 발생한다.

Algorithm1의 3과 4에서는 이러한 문제를 해결하기 위해 꼬꼬마 형태소 분석기[16]를 사용하여 입력 데이터를 형태소 분석하고, KNU 감성 사전과 감정 사전과의 매칭을 통해 단어를 추출한다. 이를 적용하면 형태소 분석 결과 [‘서비스’, ‘에’, ‘비해’, ‘가격’, ‘이’, ‘비싸’, ‘불만’, ‘이’, ‘많아’, ‘이용’, ‘에’, ‘주의’, ‘해야’, ‘한다’]가 되고, 사전을 매칭해 ‘비싸’, ‘불만’, ‘주의’를 추출한다.

Algorithm1의 5와 같이 추출한 단어를 BERT에서 사용하는 토큰 형식에 맞게 ‘감성 및 감정 단어’, ‘##감성 및 감정 단어’ 형식으로 변경해 준다. 이를 적용해 ‘비싸’, ‘불만’, ‘주의’에 ‘##비싸’, ‘##불만’, ‘##주의’를 추가한다.

Algorithm1의 6과 같이 바이트 페어 인코딩 방식으로 추출한 단어와 형태소 분석 방식으로 추출한 단어들을 매칭해 중복 없이 마스킹 단어를 추출하면 최종적인 마스킹 단어는 ‘비싸’, ‘##비싸’, ‘불만’, ‘##불만’, ‘주의’, ‘##주의’가 된다.

3.2 BERT의 사전학습

그림 2의 Pre-training과 같이 입력 문장은 2개가 들어간다. 예를 들어 ‘서비스에 비해 가격이 비싸 불만이 많아 이용에 주의해야 한다’와 ‘하늘이 예쁘다’라는 두 개의 문장을 토큰화하면 입력값은 ‘[CLS] 서비스 ##에 ##비해 가격 ##이 ##비싸 불만 ##이 ##많아 이용 ##에 주의 ##해 ##야 ##한다 [SEP] 하늘 ##이 예쁘 ##다 [SEP]]’가 된다.


Fig. 2. 
Emotion word masking-based BERT

이 중 감성 및 감정 단어인 ‘##비싸’, ‘불만’, ‘주의’, ‘예쁘’를 마스킹한다. 만약 문장에 감성 및 감정 단어가 하나라도 없을 시에는 문장에 포함되어있는 단어 중 15%를 무작위로 샘플링해 마스킹한다.

마스킹 대상 가운데 80%는 [MASK] 형태로, 10%는 다른 단어로, 나머지 10%는 정답 값 그대로 두고 학습을 진행한다. 예를 들어 ‘하늘이 예쁘다’라는 문장에서 마스킹 대상인 ‘예쁘’가 80%에 해당하면 ‘하늘 ##이 [MASK] ##다’로, 10%에 해당하면 ‘하늘 ##이 별로 ##다’로, 나머지 10%에 해당하면 ‘하늘 ##이 예쁘 ##다’가 된다.

이를 통해 문장 내 어느 자리에 감성 및 감정적인 단어가 들어가면 자연스러운지 학습할 수 있다.

3.3 BERT의 파인튜닝

그림 2의 Fine-tuning과 같이 BERT의 파인튜닝의 입력값은 한 문장씩 들어간다. 문장은 단일 및 대화에 사용된 7개의 감정(행복, 불안, 슬픔, 당황, 상처, 분노, 중립) 중 하나로 레이블링 된 문장 약 23만 개를 사용한다.

학습에 사용된 각 감정에 대한 예시 문장은 표 1과 같으며 예를 들어 ‘지금 난 기분이 너무 좋아’라는 문장이 입력값으로 들어가면 레이블링 값이 ‘행복’으로 분류되도록 학습을 진행한다.

Table 1. 
Examples of emotion sentences
Sentence Emotion type
지금 난 기분이 너무 좋아 Happiness
노후 준비가 안 돼서 막막해 Unrest
내 단짝이 내신 때문에 다른 학교로 전학 간대 Sadness
길에서 모르는 사람이 인사해서 당황스러웠어 Embarrassment
오늘 직장에서 상처를 받았어 Wound
내 돈을 다 가지고 도망갔어 Anger
오시면 바로 재발급해 드리겠습니다 Neutrality

3.4 KoGPT2 모델을 활용한 문장 생성 방안

그림 1의 iv) Emotion Sentence Generation 부분과 같이 KoGPT2 모델은 사전학습과 파인튜닝 단계로 구성된다. 기존의 사전학습은 위키 백과, 뉴스 기사 등 약 40GB의 대용량 한국어 데이터를 사용해서 모델을 생성했기 때문에 따로 진행하지 않고 이를 활용해 파인튜닝 부분만 진행한다.

파인튜닝을 위한 학습 데이터는 대화에 사용된 문장 15만개를 3.3절 방안에 적용해 감정을 레이블링해서 사용한다.

하나의 대화에는 평균 6개의 문장이 있다. 그림 3과 같이 한 대화에 a, b, c, d 4개의 문장이 있으면 입력값을 2개의 문장과 그에 해당하는 감정 레이블링 값을 사용해 ‘a, b, 감정 레이블링 값’ 형식으로 입력한다.


Fig. 3. 
Input data format of KoGPT2

이처럼 한 대화에서 2개의 문장을 하나의 쌍으로 만든 이유는 그림 4와 같이 채팅은 순서가 있기 때문이다. 또한 ‘a, b, 감정 레이블값’, ‘b, c, 감정 레이블값’, ‘c, d, 감정 레이블값’과 같이 연속적으로 구성한 이유는 대화가 a 다음에 b, b 다음에 c, c 다음에 d와 같이 연속적으로 진행되기 때문이다.


Fig. 4. 
A chatting example


Ⅳ. 실 험
4.1 실험 환경

이번 절에서는 본 논문의 제안방안의 첫 번째 단계인 BERT를 활용한 문장의 감정 레이블링 단계와 두 번째 단계인 KoGPT2를 활용한 문장 생성 단계의 각 실험에 대해 자세히 서술한다.

첫 번째 단계의 BERT의 사전학습 과정에서는 위키 백과와 KorQuAD, 네이버 영화 리뷰 등 총 5,413,400개의 한국어 문장을 사용해 실험을 진행한다.

BERT의 파인튜닝에서는 AI Hub에서 수집한 감정 레이블링 된 한국어 대화 말뭉치와 감정 레이블링 된 한국어 단일 문장 말뭉치, 미디어젠에서 수집한 감정 레이블링 된 한국어 대화 말뭉치를 사용한다.

AI hub에서 수집한 대화 말뭉치는 한 대화 당 평균 6개의 문장으로 구성되어있으며 7가지의 감정인 기쁨, 슬픔, 놀람, 분노, 공포, 혐오, 중립 중 한 가지로 레이블링 되어있고 중복을 제거해 총 51,238개의 문장이 있다.

AI Hub에서 수집한 단일 문장 말뭉치는 서로 관련 없는 문장들로 구성되어있으며 7가지의 감정인 기쁨, 슬픔, 놀람, 분노, 공포, 혐오, 중립 중 한 가지로 레이블링 된 총 38,594개의 문장이 있다.

미디어젠에서 수집한 대화 말뭉치는 한 대화 당 평균 6개의 문장으로 구성되어있으며 6가지 감정인 행복, 불안, 슬픔, 당황, 상처, 분노 중 한 가지로 레이블링 된 총 299,156개의 문장이 있다.

BERT의 파인튜닝 단계에서는 단일 문장 말뭉치 전부와 대화 말뭉치 일부를 합쳐 총 238,600개의 문장을 사용한다. 문장은 8:2 비율로 분할한 후에 191,343개의 문장은 학습에, 47,700개의 문장은 테스트에 사용한다.

모델의 정확도는 마스킹 방식이 감정분류에 영향을 주는지를 평가하기 위해 기존의 무작위로 샘플링된 단어 마스킹 기반의 BERT 모델과 제안한 감성 및 감정 마스킹 기반의 BERT 모델 각각의 감정 레이블링 결과를 정답 값과의 비교를 통해 계산한다.

정확도는 (1)을 사용해 계산한다. 앞으로 본 논문에서는 기존의 무작위로 샘플링된 단어 마스킹 기반의 BERT 모델은 Baseline Method, 제안한 감성 및 감정 마스킹 기반의 BERT 모델은 Proposed Method로 표기한다.

=(1) 

두 번째 단계인 문장 생성에서 사용된 KoGPT2 모델은 위키 백과, 뉴스 기사, 청와대 국민 청원 등 40GB 이상의 대용량의 한국어 말뭉치를 사용해 사전학습을 진행했기 때문에 본 논문에서는 기존에 사전학습을 통해 생성된 모델을 활용해 파인튜닝만 진행한다.

파인튜닝 단계에서는 AI Hub와 미디어젠에서 제공한 대화 말뭉치 총 150,390개의 문장을 사용한다. 응답 문장 생성을 위한 학습을 진행하기 위해 문장은 한 대화에서 2개씩 결합해 하나의 쌍으로 재구성한다.

예를 들어 하나의 대화가 [‘지금 난 기분이 너무 좋아’, ‘굉장히 즐거우신 것 같은데요? 좋은 일이 있나요?’, ‘오늘부터 연휴가 시작됐거든. 내일 회사 안 간다.’, ‘그거 정말 기분 좋을 만하네요’]와 같이 4개의 문장으로 구성되어 있다면 [‘지금 난 기분이 너무 좋아’, ‘굉장히 즐거우신 것 같은데요? 좋은 일이 있나요?’], [‘굉장히 즐거우신 것 같은데요? 좋은 일이 있나요?’, ‘오늘부터 연휴가 시작됐거든. 내일 회사 안 간다.’] [‘오늘부터 연휴가 시작됐거든. 내일 회사 안 간다.’, ‘그거 정말 기분 좋을 만하네요’]와 같이 재구성한다.

이 과정을 통해 총 114,564 쌍의 KoGPT2의 파인튜닝을 위한 학습 데이터가 만들어진다. 이를 Baseline Method와 Proposed Method로 각각 감정 레이블링을 진행한다.

레이블링 된 데이터를 8:2로 분할 해 KoGPT2 파인튜닝의 학습과 테스트에 사용한다. 학습의 입력 데이터는 [‘지금 난 기분이 너무 좋아’, ‘굉장히 즐거우신 것 같은데요? 좋은 일이 있나요?’, 행복]과 같이 ‘문장1, 문장2, 감정 레이블링 값’의 형식으로 사용한다.

KoGPT2의 평가는 2가지 방식으로 진행한다. 첫 번째는 정성적 평가 방식으로, 평가 항목은 생성되는 문장의 감정이 일관되는지에 대한 감정의 일관성과 상황에 적절한 문장인지에 대한 자연스러움 2가지이다.

이는 테스트 데이터 중 300개의 문장 쌍을 4번에 걸쳐 무작위로 추출해서 평가자 3명이 평가하며 감정의 일관성과 자연스러움을 각각 1~5점으로 평가한다.

1에 가까울수록 감정이 일관되지 않다는 것과 상황에 부적절한 응답 문장이 생성되었다는 것을 의미하고, 5에 가까울수록 감정이 일관된다는 것과 상황에 적절한 응답이 생성되었다는 것을 의미한다.

예를 들어 사용자가 ‘로또 일등에 당첨됐어’를 입력했을 때, 응답 문장으로 ‘축하드려요’가 생성된다면 감정의 일관성과 자연스러움 각각에 대한 평가가 5점에 가깝고 ‘그거 참 안됐네요’가 생성된다면 감정의 일관성과 자연스러움에 대한 평가가 각각 1점에 가까울 것이다.

추가로, 사용자들의 평가 결과에 대한 신뢰성 확보를 위해 Kendall 상관계수 측정도 진행한다. 감정의 일관성, 자연스러움 각각에 대해 평가자1과 평가자2, 평가자2와 평가자3, 평가자1과 평가자3 사이의 평가 일치 정도를 평가한다.

예를 들어 평가자1이 ‘축하드려요’라는 생성문장의 감정의 일관성을 5점으로 평가했는데 평가자 2는 2점으로 평가했다면 두 사람의 평가 일치 정도가 낮게 계산된다.

두 번째 평가 방식은 정량적 평가 방식으로 사용자가 ‘로또 일등에 당첨됐어’를 입력했을 때 응답으로 ‘축하드려요’가 생성된다면 두 문장의 감정이 같은지를 감정분류 모델인 BERT를 사용해 정확도를 측정한다. 정확도는 (1)을 적용해 ‘감정이 같게 나온 문장 수 / 평가 문장 수’로 계산한다.

표 2는 감정분류와 문장 생성에 사용된 BERT와 KoGPT2 모델의 하이퍼 파라미터로, 해당 파라미터값을 적용했을 때 가장 좋은 결과를 보인다.

Table 2. 
Hyper-parameters
Hyper-parameters BERT KoGPT2
Dropout rate 0.1 0.1
Batch size 32 96
Epoch 10 2
Learning rate 2e-5 5e-5
Hidden size 768

표 3는 실험에 사용한 컴퓨터 사양을 나타낸다. Python 3.6으로 마스킹 단어 추출방식과 BERT의 사전학습, 파인튜닝, KoGPT2의 파인튜닝을 구현했으며, GPU를 이용하여 딥러닝 모델인 BERT와 KoGPT2를 학습하기 위해 CPU-CUDA102 7.8.0, TensorFlow-GPU 1.15을 사용한다.

Table 3. 
Computer hardware specifications
Type SPEC Count Size
OS Ubuntu 18.04
CPU Intel xeon scalable silver 4414 (2.20 GHz, core: 40) 2
GPU ZOTAC GAMING GEFORCE RTX 2080 Ti D6 11GB BLOWER (core: 4,352) 4 11GB
SSD Samsung 970 PRO M.2 2,280 1 1TB

4.2 실험 결과

그림 5표 2의 초매개변수 값과 표 3의 컴퓨터 하드웨어 사양을 사용하여 Baseline Method와 Proposed Method 각각에 대한 문장의 감정분류 정확도를 (1)을 사용해 계산하여 비교한 결과이다.


Fig. 5. 
Accuracy of training data generated by BERT based on baseline and propose methods

Baseline Method는 약 78.4%의 정확도를 보였고, Proposed Method는 약 90.1%의 정확도를 보여 약 12%가 향상된 것을 볼 수 있다.

정확도가 향상된 이유는 BERT의 마스킹을 진행할 때 Baseline Method에서는 감성이나 감정을 반영하지 않았지만, Proposed Method에서는 반영했기 때문에 사전학습을 진행할 때 감정적인 표현을 학습할 수 있고, 그에 따라 감정 표현에 최적화된 모델이 생성된다.

이를 파인튜닝에서 사용해 감정분류를 진행했기 때문에 기존의 방식보다 감정을 더 잘 분류하게 된다.

그림 6은 KoGPT2를 통한 문장 생성에서 정성적 평가의 결과이다. 사용자가 입력한 문장에 대해 생성된 응답 문장의 감정이 일관되는지에 대한 감정의 일관성과 상황에 적절한 문장인지에 대한 자연스러움을 평가한다. 평가는 1~5점의 점수를 부여할 수 있으며, 1에 가까울수록 좋지 않은 평가이고, 5에 가까울수록 좋은 평가이다.


Fig. 6. 
Qualitative evaluation results of KoGPT2

평가는 Baseline Method와 Proposed Method 각각으로 레이블링해 [‘지금 난 기분이 너무 좋아’, ‘굉장히 즐거우신 것 같은데요? 좋은 일이 있나요?’, 행복] 와 같이 ‘문장 1, 문장 2, 감정 레이블링 값’ 형식의 데이터를 사용해 진행한다.

결과는 평가자 3명이 300개의 데이터를 4번에 걸쳐 평가한 결과들의 평균을 냈으며, Baseline Method를 사용했을 때 감정의 일관성은 3.1점, 자연스러움은 2.7점이 나왔고, Proposed Method를 사용했을 때 감정의 일관성은 4.2점, 자연스러움은 3.8점이 나왔다.

결과를 통해 Proposed Method로 생성한 데이터를 사용했을 때의 점수가 더 높은 것을 확인할 수 있는데 이는 정확도가 향상된 감정분류 방안을 사용했기 때문에 감정을 제대로 파악할 수 있고, 대용량의 데이터를 사용함으로써 적절한 응답 방식에 대해 학습했기 때문이다.

표 4그림 6에 대한 각 평가자의 평가 결과의 신뢰성 확보를 위해 Kendall 상관계수를 측정한 결과이며, 값이 클수록 평가자들끼리 비슷한 평가를 했음을 의미한다.

Table 4. 
Kendall coefficients (Unit: %)
Evaluator1
&
Evaluator2
Evaluator2
&
Evaluator3
Evaluator1
&
Evaluator3
Average
Emotion consistency 89.5 87.3 92.3 89.7
Natural response 90.7 96 89.3 92

결과적으로 평가자1과 평가자2의 감정의 일관성은 89.5%, 자연스러움은 90.7%가 나왔고, 평가자2와 평가자3의 감정의 일관성은 87.3%, 자연스러움은 89.3%가 나왔고, 평가자1과 평가자3의 감정의 일관성은 92.3%, 자연스러움은 94.6%가 나왔다. 평균적으로 감정의 일관성은 89.7%, 자연스러움은 92%로 비교적 높은 일치 정도가 나왔다.

그림 7은 KoGPT2를 통해 생성된 문장을 정량적 평가한 결과로, 사용자의 입력 문장과 생성된 문장의 감정 레이블링 값이 같은지에 대한 정확도를 계산한 결과, Baseline Method로 생성한 학습 데이터를 사용했을 때는 약 79.1%, Proposed Method로 생성한 학습 데이터를 사용했을 때는 약 82.3%로 정확도가 약 3% 향상된 것을 볼 수 있다. 이는 Proposed Method로 레이블링한 학습 데이터를 사용했을 때 문장 생성에 감정이 더 잘 반영되었기 때문에 Baseline Method보다 더 좋은 결과를 보인다.


Fig. 7. 
Quantitative evaluation results of KoGPT2

표 5는 Baseline Method와 Proposed Method를 사용해 생성된 실제 응답 문장의 예시로, 사용자가 ‘주식하고 있는데 많이 올랐어!’라는 문장을 입력했을 때 Baseline method를 적용했을 때는 ‘주식으로 돈버는 사람은 몇 명 없대요’가 생성되고, Proposed Method를 적용했을 때는 ‘축하드려요’가 생성되어 Proposed Method가 감정을 더 잘 반영하고 상황에 적절한 응답을 하는 것을 볼 수 있다.

Table 5. 
Examples of actual sentences generated by KoGPT2 using baseline and proposed methods
Human BERT baseline +
KoGPT2
BERT proposed
method + KoGPT2
주식하고 있는데 많이 올랐어! 주식으로 돈버는 사람은 몇 명 없대요 축하드려요
나는 다가오는 정년이 두려워 자신을 더 사랑해주세요 다가오는 정년이 두려우시군요
사람들의 시선이 너무 버거워 버릴 건 버리세요 왜 그런 생각이 드셨나요?
괜히 결혼을 했나봐 좋은 사람 만나실 거예요 왜 그렇게 생각하시나요?
요새 야근이 많아 야근이 만든 야근이죠 야근이 많아 힘드시겠어요

앞의 실험 결과들과 같이 Proposed Method는 Baseline Method보다 항상 더 좋은 결과를 보였다. 이를 통해 Proposed Method를 사용하면 양질의 학습 데이터를 자동으로 대용량 생성할 수 있음을 설명할 수 있다.


Ⅴ. 결론 및 향후 과제

최근 인공지능의 발전으로 인공지능 챗봇에 관한 연구가 활발히 진행되고 있다. 챗봇이 사람의 감정을 파악할 수 있다면 좀 더 자연스러운 대화가 가능하며, 심리 상담과 같은 분야에서도 활발히 사용될 수 있다.

이에 따라 본 논문에서는 BERT 모델을 활용하여 감정 분석할 수 있는 모델을 생성하고 생성된 모델을 활용하여 대화 말뭉치의 감정 레이블링을 진행한 후, 레이블링 된 말뭉치를 사용하여 감정 정보가 반영된 응답 문장을 생성하는 방안에 대해 제안한다.

해당 방안을 사용했을 때 감정분류의 정확도가 향상된 것과 감정의 일관성이 높고 자연스러운 응답 문장이 생성되는 것을 확인할 수 있었다.

향후 연구로는 생성되는 응답 문장의 감정의 일관성과 자연스러움을 향상하기 위해 감정 분류하는 인코더와, 인코더에서 생성된 문맥 벡터를 활용해 문장을 자동으로 생성하는 디코더를 하나로 결합한 사전학습된 인코더-디코더 모델을 연구할 예정이다.


Acknowledgments

이 논문은 2019년도 정부(교육부)의 재원으로 한국연구재단의 지원을 받아 수행된 연구임 (NRF-2019R1F1A1060752)


References
1. Park Jun-Ho, Yun Gyeong-Il, and Min Seong-Tae, "Chatbot system technology trend of artificial intelligence system", Korea information processing society review, Vol. 26, No. 2, pp. 39–46, Jul. 2019.
2. Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova, "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding", NAACL, Vol. 1, pp. 4171-4186, Jun. 2019.
3. GPT [Website] https://github.com/openai/finetune-transformer-lm, Available. [accessed: Jun. 8, 2021]
4. Wang X, Kou L, Sugumaran V, Luo X, and Zhang H. "Emotion correlation mining through deep learning models on natural language Text" IEEE Transactions on Cybernetics, Vol. 51, Vo. 9, pp. 4400-4413, Sep. 2020.
5. Hwagyeong Lee, Minjae Kim, Youngeun Kim, Gayeon Park, Seuongmi Lee, and Jihoon Lee, "Development of Multi-Emotion Classification Model Based on Conversation Pattern Recognition and Its Application", Proceedings of the Korean Information Science Society Conference, pp. 1915–1917, Jun. 2021.
6. Falguni Patel, Riya Thakore, Ishita Nandwani, and Santosh Kumar Bharti, "Combating Depression in Students using an Intelligent Chatbot: A Cognitive Behavioral Therapy", IEEE 16th India Council International Conference(INDICON), Rajkot, India, pp. 1–4, Dec. 2019.
7. Hao Zhou, Minlie Huang, Tianyang Zhang, Xiaoyan Zhu, and Bing Liu, "Emotional Chatting Machine: Emotional Conversation Generation with Internal and External Memory", AAAI Conference on Aritificial Intelligence, Chicago, Illinois, USA, pp. 730-738, Jun. 2018.
8. GPT2 [Website] https://github.com/openai/gpt-2, Available. [accessed: Jun. 8, 2021]
9. Kendall [Website]. https://en.wikipedia.org/wiki/Kendall_rank_correlation_coefficient Available. [accessed: Aug. 26, 2021]
10. Sunju Sohn, Mi-Sook Park, and Jin-hun Sohn, "Korean Emotion Vocabulary: Extraction and Categorization of Feeling Words", KOSES, Vol. 15, No. 1, pp. 105-120, Mar. 2012.
11. Won-min Lee and byung-won On, "Emotion word masking method for emotional classification of BERT model", Proceedings of KIIT Conference, Jeju, Korea, pp. 413-416, Jun. 2021.
12. S. Park, C. Na, M. Choi, D. Lee, and B. On, "KNU Korean Sentiment Lexicon Bi-LSTM-based Method for Building a Korean Sentiment Lexicon", Journal of Intelligence and Information Systems, Vol. 24, No. 4, pp. 219-240, Apr. 2018.
13. Min-Seong Choi and Byung-Won On, "An Automatic Method of Generating a Large-Scale Train Set for Bi-LSTM based Sentiment Analysis", Journal of KIISE, Vol. 46, No. 8, pp. 800-813, Aug. 2019.
14. Jae-Geum Shim, Kyoung-Ho Ryu, Sung Hyun Lee, Eun-Ah Cho, Yoon Ju Lee, and Jin Hee Ahn, "Text Mining Approaches to Analyze Public Sentiment Changes Regarding COVID-19 Vaccines on Social Media in Korea", IJERPH, Vol. 18, No. 12, 6549, Jun. 2021.
15. BPE [Website] https://en.wikipedia.org/wiki/Byte_pair_encoding Available: [accessed: Aug. 26, 2021]
16. Kkma[Website] http://kkma.snu.ac.kr/Available: [accessed: Feb. 13, 2021]

저자소개
이 원 민 (Won-Min Lee)

2018년 3월 ~ 현재 : 군산대학교 소프트웨어융합공학과 학사과정

관심분야 : 자연어처리, 인공지능

온 병 원 (Byung-Won On)

2007년 : 미국 펜실베이니아주립대학교 컴퓨터공학과 박사, 캐나다 브리티시 컬럼비아 대학교 박사 후 연구원

2010년 : 미국 일리노이 대학교 ADSC센터 선임연구원, 서울대학교 차세대융합기술연구원 연구교수

2011년 : 차세대융합기술연구원 공공데이터 연구센터 센터장

2014년 ~ 현재 : 군산대학교 소프트웨어융합공학과 교수

관심분야 : 데이터 마이닝, 자연어처리, 빅데이터, 인공지능