구글의 27가지 감정 분류가 한국어 KOTE가 되기까지
뭐랄까.. Task 리더를 맡고서 지난 2개월가량 원하든 원치 않든 업무 시간 내도록 AI 얘기를 나누고 고민하는 시간이 길어지다 보니, 나를 위한 시간 동안만이라도 주제적으로 'AI 디톡스'가 하고 싶었다. 그래서 일할 때 말고는 다시 감정을 좀 들여다봐야겠다는 생각이 들었다. 지난 몇 년 간 읽었던 것은 많은데 정리가 안 되는 느낌이 들어 초심(?)으로 돌아가야겠다는 생각에 KOTE(Korean Online That-gul Emotions) 논문을 다시 살펴보게 되었다. 어라? 전에는 보이지 않던 용어가 하나 눈에 들어온다.
“GoEmotions?!”
구글이 그려낸 감정의 지도라 할 수 있는 GoEmotions는 2020년, 구글 리서치(Google Research) 팀이 발표한 기념비적인 연구였다. 이 연구의 핵심은 기존 감정 분석의 판을 '단순함'에서 '섬세함'으로 옮겨놓았다는 데 있다.
그전까지 AI가 이해하는 감정은 에크만(Ekman)의 6가지 기본 감정(기쁨, 슬픔, 분노 등)이나, 긍정/부정의 이분법에 갇혀 있었다. 하지만 인간인 우리가 느끼는 감정은 그렇게 납작하지 않다. 구글 연구진은 이 복잡성을 담아내기 위해 5만 8천여 개의 레딧(Reddit) 댓글을 수집하고, 이를 바탕으로 27개의 세분화된 감정(Fine-grained emotions)과 '중립'을 포함한 새로운 분류 체계를 정립했다.
단순히 데이터 양만 늘린 것이 아니다. 그들은 심리학적 이론을 바탕으로 '감사', '후회', '낙관', '안도' 등 인간 내면의 미묘한 뉘앙스를 라벨링 했고, 하나의 문장에 여러 감정이 섞여 있을 수 있음을 인정하는 다중 라벨링(Multi-labeling) 방식을 채택했다. 이를 BERT 모델에 학습시켜, 기계가 인간의 복합적인 감정선을 이해하고 분류할 수 있는 기준점(Benchmark)을 제시한 것이다.
한국어 감정 데이터셋인 KOTE는 하늘에서 뚝 떨어진 것이 아니었다. GoEmotions가 제시한 세분화된 대규모 데이터셋이라는 방법론적 철학을 계승하되, 이를 단순히 번역하는 것을 넘어 한국어라는 특수한 토양에 맞춰 43개의 감정으로 재설계한 결과물이었던 것이다. GoEmotions를 이해하고 나니, KOTE가 왜 그런 구조를 갖게 되었는지, 연구자들이 어떤 고민을 거쳐 한국적 정서를 데이터에 담으려 했는지 그 의도가 훨씬 선명하게 다가온다.
KOTE 논문은 여러 번 읽었고, 모델을 적용한 프로젝트도 여러 번 해 본, 나름 이해도가 높은 상태라고 생각했는데 왜 그냥 지나쳤던 걸까. AI를 활용한 학습의 폐단이 아닌가 싶어 부끄러운 생각이 들었다. 다시금 지식의 빈틈을 채워간다는 마음으로 근간이 되는 연구들을 연결 지어가며, 각 연구자들이 선행연구와 연결 지어 써 내려갔던 생각의 흐름을 온전히 좇아봐야겠다는 다짐을 해본다.
Dorottya Demszky, Dana Movshovitz-Attias, Jeongwoo Ko, Alan Cowen, Gaurav Nemade, and Sujith Ravi. 2020. GoEmotions: A Dataset of Fine-Grained Emotions. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pages 4040–4054, Online. Association for Computational Linguistics.
기존 감정 데이터셋의 한계를 극복하기 위해 27개의 세분화된 감정 카테고리와 58,000개의 Reddit 댓글로 구성된 최대 규모의 데이터셋인 GoEmotions를 구축했다.
심리학 이론과 데이터 주도적 접근을 결합하여 감정 분류 체계를 정립하고, 크라우드 소싱을 통해 고품질의 라벨링을 수행했다.
BERT 기반 모델을 통해 벤치마크 성능을 제시하고, 전이 학습을 통해 이 데이터셋이 다양한 다운스트림 작업에 일반화될 수 있음을 입증했다.
기존 감정 분석 연구는 에크만(Ekman)의 6가지 기본 감정 등 제한적인 분류 체계와 소규모 데이터셋에 의존하여, 실제 대화에서 나타나는 다양하고 미묘한 감정을 포착하는 데 한계가 있었다. 이를 해결하여 공감형 챗봇 등 정교한 감정 이해가 필요한 분야에 기여하고자 했다.
GoEmotions: 58k 개의 Reddit 댓글로 이루어진 세분화된 감정 데이터셋
세분화된 감정 분류(Fine-grained Emotion Classification): 27개 감정 범주(예: 감사, 후회, 안도 등)와 중립을 포함한 다중 라벨 분류 체계
주성분 보존 분석(PPCA): 주석(Annotation)의 품질과 감정 간의 구조적 관계를 검증하기 위해 사용된 분석 방법
Reddit에서 추출한 방대한 댓글 데이터를 정제한 후, 심리학적 이론을 바탕으로 감정 분류 체계를 정의했다. 이후 크라우드 소싱을 활용해 인간 평가자들이 감정을 라벨링 하도록 했으며, BERT 모델을 미세 조정(Fine-tuning)하여 베이스라인 성능을 측정하고 전이 학습 실험을 수행했다.
제안된 데이터셋은 감정 간의 상관관계가 잘 반영된 고품질의 구조를 보였으며, BERT 기반 모델은 세분화된 감정 분류에서 유의미한 성능(F1-score 0.46)을 기록했다. 또한 다른 감정 벤치마크 데이터셋에 적용했을 때에도 우수한 일반화 성능을 보여주었다.
언어는 사회적 상호작용과 감정 표현의 가장 중요한 수단이다. 따라서 챗봇이나 대화형 에이전트와 같은 자연어 처리(NLP) 시스템이 인간과 효과적으로 소통하기 위해서는 텍스트에 내포된 감정을 정확히 이해하고 반응하는 능력이 필수적이다. 특히 단순히 긍정적이거나 부정적인 반응을 넘어, 공감이나 위로와 같은 적절한 대응을 하기 위해서는 섬세한 감정 분석이 요구된다.
그러나 기존의 감정 분석 연구와 데이터셋은 모델이 복잡한 감정을 학습하는 데 있어 다음과 같은 한계를 보였다.
분류 체계의 단순성: 대부분의 데이터셋은 에크만(Ekman)의 6가지 기본 감정(분노, 놀람, 혐오, 즐거움, 두려움, 슬픔)이나 긍정/부정(Polarity)의 이분법적 분류에 국한되어 있다.
데이터 규모 및 품질: 수동으로 라벨링 된 데이터셋은 그 크기가 작아 딥러닝 모델 학습에 불충분하다. 반면, 트위터 해시태그 등을 이용한 원거리 지도 학습(Distant supervision) 데이터는 규모는 크지만 노이즈가 많아 정교한 감정 이해를 방해한다.
이러한 한계를 극복하기 위해 저자는 GoEmotions 데이터셋을 제안한다.
규모: 58,000개의 Reddit 댓글로 구성되어 있으며, 이는 수동 주석(Human-annotated)이 달린 감정 데이터셋 중 최대 규모이다.
세분화된 분류(Fine-grained Taxonomy): 총 27개의 감정 카테고리와 ‘중립(Neutral)’을 포함하여 감정의 미묘한 뉘앙스를 포괄하도록 설계되었다.
다양성: Reddit의 특성을 반영하여 다양한 도메인과 주제를 포함하며, 이를 통해 일반화된 언어 표현을 학습할 수 있다.
이 논문의 주요 기여는 다음과 같다.
심리학 및 언어학적 기반 위에서 인간 주석자들이 일관되게 구분할 수 있는 세분화된 감정 분류 체계를 정립하였다.
BERT 기반 모델을 통해 상세 감정 분류 작업을 수행하고 기준 성능(Baseline)을 제시하였다.
전이 학습(Transfer Learning) 실험을 통해, GoEmotions로 학습된 모델이 다른 감정 벤치마크 데이터셋의 성능을 향상시키며 다양한 도메인에 적용 가능함을 입증하였다.
2.1. 기존 감정 데이터셋의 현황
감정 분석 연구를 위한 데이터셋은 크게 소규모의 수동 라벨링 데이터와 대규모의 원거리 지도(Distant supervision) 데이터로 구분된다.
소규모 수동 라벨링 데이터: 전문가나 크라우드 소싱을 통해 구축된 데이터셋(ISEAR, Alm et al., Crowdflower 등)은 라벨의 정확도가 높지만, 데이터 크기가 작아 딥러닝과 같은 고용량 모델을 학습시키는 데 한계가 있다. 또한, 대부분 뉴스 헤드라인, 동화, 혹은 인위적인 대화와 같은 특정 도메인에 국한되어 있다.
대규모 원거리 지도 데이터: 트위터 해시태그나 이모티콘을 라벨로 활용하는 데이터셋(Mintz et al., Felbo et al. 등)은 방대한 규모를 자랑한다. 그러나 이러한 라벨은 실제 감정을 정확히 반영하기보다는 노이즈가 포함될 가능성이 높으며, 트위터라는 특정 매체의 언어적 특성에 편향되어 있다.
2.2. 감정 분류 체계의 한계
기존 NLP 연구에서 사용되는 감정 분류 체계는 대부분 단순화된 모델에 의존하고 있다.
기본 감정 중심: 대다수의 데이터셋은 에크만(Ekman)의 6가지 기본 감정(분노, 혐오, 두려움, 즐거움, 슬픔, 놀람)이나 플루치크(Plutchik)의 8가지 감정 분류를 따른다. 이는 데이터 구축의 편의성을 높이지만, 인간이 실제로 경험하고 표현하는 복잡한 감정 상태를 충분히 담아내지 못한다.
심리학적 관점의 반영 부족: 최근 심리학 연구(Cowen and Keltner 등)는 감정이 훨씬 더 고차원적이고 세분화된 범주로 이루어져 있음을 밝혀냈다. 그러나 기존 NLP 데이터셋은 이러한 최신 이론을 반영하지 못하고 단순한 분류 체계에 머물러 있다.
2.3. GoEmotions의 차별점
이러한 배경에서 GoEmotions는 기존 데이터셋의 장점을 통합하고 단점을 보완한다.
수동 라벨링을 통해 데이터의 품질을 확보하면서도, 원거리 지도 데이터에 버금가는 대규모 데이터셋을 구축하였다.
단순한 기본 감정을 넘어 심리학적으로 타당한 27개의 세분화된 감정 분류 체계를 적용하여, 기존 데이터셋이 포착하지 못한 미세한 감정 표현까지 다룬다.
3.1. Reddit 댓글 선정 및 정제 (Selecting & Curating Reddit comments)
연구진은 2005년부터 2019년 1월까지의 Reddit 댓글 덤프를 원시 데이터로 사용하였다. 감정 분류에 적합한 데이터를 구축하기 위해 다음과 같은 단계별 정제 과정을 수행하였다.
데이터 필터링: 삭제되거나 제거된 댓글을 제외하고, 감정 전달에 충분하면서도 문장이 지나치게 복잡하지 않도록 토큰 길이가 3개 이상 30개 이하인 댓글만을 선정하였다.
익명화 및 마스킹: 개인정보 보호와 모델의 일반화를 위해 구체적인 사용자 이름은 [NAME], 종교 관련 용어는 [RELIGION], URL은 [URL]과 같은 특수 토큰으로 치환하였다.
서브레딧(Subreddit) 선정: 데이터의 다양성을 확보하기 위해 최소 1만 개 이상의 댓글이 달린 서브레딧을 대상으로 하되, 저속하거나 불건전한(Vulgar, NSFW) 커뮤니티는 제외하였다.
데이터 불균형 해소: 원시 데이터에는 감정이 드러나지 않는 댓글이 압도적으로 많다. 이를 방지하고 다양한 감정이 포함되도록 하기 위해, 자주 등장하는 중립적인 서브레딧의 비중을 낮추는(Down-sampling) 방식으로 데이터를 선별하였다.
3.2. 감정 분류 체계 (Taxonomy)
데이터 주도적 접근(Data-driven approach)과 심리학적 이론을 결합하여 감정 분류 체계를 구축하였다.
초기 구성: 심리학 및 NLP 문헌에서 확인된 56개의 감정 범주로 시작하였다.
정제 과정: 파일럿 주석 작업을 통해 평가자들 간의 일치도(Inter-rater agreement)가 낮거나 의미가 중복되는 범주들을 통합하거나 제거하였다. 또한 데이터에서 빈번하게 나타나지만 기존 목록에 없던 감정들을 추가하였다.
최종 선정: 이러한 과정을 거쳐 총 27개의 세분화된 감정 범주와 ‘중립(Neutral)’을 포함한 최종 분류 체계를 확정하였다. 이는 기존 데이터셋들이 포괄하지 못했던 미묘한 감정들을 포함한다.
3.3. 주석 과정 (Annotation Process)
선별된 58,000여 개 댓글에 대해 크라우드 소싱(Crowdsourcing) 플랫폼을 이용하여 라벨링을 진행하였다.
평가자 구성: 영어 원어민 평가자들을 대상으로 하였으며, 각 댓글당 최소 3명(일치도가 낮은 경우 5명)의 평가자가 배정되었다.
다중 선택: 하나의 댓글에 복합적인 감정이 포함될 수 있음을 고려하여, 평가자들은 해당한다고 생각하는 감정을 개수에 제한 없이 모두 선택할 수 있도록(Multi-label) 하였다.
품질 관리: 평가자들의 주석 품질을 유지하기 위해 사전에 정답이 알려진 예제(Golden set)를 활용하여 지속적으로 모니터링하였다.
3.4. 주석 분석 (Analysis of Annotations)
구축된 데이터셋에 대한 통계적 분석을 수행하였다.
데이터 분포: ‘중립(Neutral)’이 가장 높은 빈도를 차지하며, ‘존경(Admiration)’, ‘감사(Gratitude)’ 등의 긍정적 감정이 그 뒤를 잇는다. 반면 ‘슬픔(Grief)’, ‘안도(Relief)’ 등은 빈도가 낮은 롱테일(Long-tail) 분포를 보인다.
평가자 일치도: 27개의 세분화된 감정을 분류하는 어려운 작업임에도 불구하고, 평가자들 간의 일치도는 합리적인 수준을 유지하였다. 특히 의견이 갈리는 경우는 감정의 모호성이나 주관적 해석의 차이에서 기인하는 자연스러운 현상으로 분석된다.
감정의 복합성: 상당수의 댓글이 두 개 이상의 감정 라벨을 가지고 있어, 실제 언어생활에서 감정이 단일하지 않고 복합적으로 나타남을 보여준다.
4.1. 주성분 보존 분석 (Principal Preserved Component Analysis)
연구진은 데이터셋의 주석 품질과 감정 범주의 타당성을 통계적으로 검증하기 위해 주성분 보존 분석(PPCA)을 적용한다.
분석의 목적: 단순한 평가자 간 일치도(Inter-rater agreement)를 측정하는 것을 넘어, 개별 평가자들의 다양한 판단이 최종 합의된 라벨(Consensus labels)에 얼마나 잘 보존되어 있는지를 평가한다. 이는 복잡한 감정 분류 작업에서 데이터가 일관된 신호를 담고 있는지 확인하는 중요한 지표이다.
검증 결과: 분석 결과, 개별 주석 데이터의 주성분(Principal Components)이 최종 라벨 데이터에서도 높은 수준으로 보존됨을 확인한다. 이는 27개의 감정 범주가 평가자들에게 명확하게 인식되고 있으며, 데이터셋이 노이즈가 아닌 유의미한 감정적 특징을 효과적으로 포착하고 있음을 입증한다.
4.2. 계층적 군집화 (Hierarchical Clustering)
감정들 사이의 관계 구조를 파악하기 위해, 감정 간의 상관관계(Correlation)를 바탕으로 계층적 군집화를 수행한다.
의미론적 그룹화: 분석 결과, 감정들은 의미적으로 유사한 것끼리 자연스럽게 군집을 형성한다. 예를 들어, ‘사랑(Love)’, ‘존경(Admiration)’, ‘감사(Gratitude)’와 같은 긍정적인 감정들이 밀접하게 묶이고, ‘분노(Anger)’, ‘성가심(Annoyance)’, ‘비난(Disapproval)’과 같은 부정적인 감정들이 별도의 그룹을 형성한다.
강도(Intensity)의 반영: 같은 군집 내에서도 감정의 강도 차이가 반영된다. ‘성가심(Annoyance)’과 ‘분노(Anger)’처럼 유사하지만 강도가 다른 감정들이 인접하게 위치하여, 데이터셋이 감정의 미묘한 뉘앙스를 구별하고 있음을 보여준다.
계층 구조 도출: 이러한 군집화 결과를 바탕으로 연구진은 27개의 세부 감정을 ‘긍정(Positive)’, ‘부정(Negative)’, ‘모호함(Ambiguous)’이라는 세 가지 거시적(Macro) 범주로 분류하는 계층적 구조를 정의한다. 이 구조는 향후 모델링 실험에서 다양한 레벨의 분류 작업을 수행하는 기반이 된다.
5.1. 베이스라인 모델 (Baseline Models)
연구진은 GoEmotions 데이터셋의 학습 유효성을 검증하고 향후 연구를 위한 기준점(Benchmark)을 제공하기 위해 BERT 모델을 활용하여 실험을 진행한다.
실험 설정: BERT-base-cased 모델을 기반으로 하며, 각 댓글에 대해 다중 라벨 분류(Multi-label classification)를 수행하기 위해 출력층에 시그모이드(Sigmoid) 함수를 적용한다.
성능 평가: 27개의 세분화된 감정 범주에 대해 매크로 F1 점수(Macro-average F1 score)를 측정한다.
. 전체 성능: 27개 범주에 대한 전체 F1 점수는 0.46을 기록한다. 이는 클래스 불균형과 작업의 난이도를 고려할 때 유의미한 수치이다.
. 범주별 성능: '감사(Gratitude)', '즐거움(Amusement)'과 같이 데이터가 풍부한 감정은 높은 성능을 보이나, '슬픔(Grief)'과 같이 빈도가 낮은 감정은 상대적으로 낮은 성능을 보인다.
계층별 성능 비교: 감정 범주를 27개에서 에크만(Ekman)의 6개 범주, 또는 긍정/부정/중립의 3개 범주로 그룹화할 경우 성능이 크게 향상된다. 이는 모델이 감정의 세밀한 구분에는 어려움을 겪더라도, 감정의 큰 흐름은 매우 정확하게 파악하고 있음을 시사한다.
5.2. 전이 학습 (Transfer Learning)
GoEmotions 데이터셋이 다른 감정 분석 작업에도 유용하게 활용될 수 있는지 확인하기 위해 전이 학습 실험을 수행한다.
실험 방법: GoEmotions 데이터로 BERT 모델을 미세 조정(Fine-tuning) 한 후, 모델의 가중치를 고정(Freeze)하여 특징 추출기(Feature extractor)로 사용한다. 이 모델을 다른 감정 분석 벤치마크 데이터셋(ISEAR, DailyDialog 등)에 적용하여 성능을 측정한다.
일반화 능력: 실험 결과, GoEmotions로 사전 학습된 모델은 기본 BERT 모델이나 다른 대규모 데이터(트위터 해시태그 등)로 학습된 모델보다 우수하거나 대등한 성능을 보인다. 특히 타겟 데이터셋의 크기가 작을 때 성능 향상 폭이 크며, 적은 양의 데이터로도 빠르게 학습이 수렴하는 효율성을 입증한다. 이는 GoEmotions가 특정 도메인에 과적합(Overfitting)되지 않고, 언어 전반에 걸친 보편적인 감정 표현을 효과적으로 학습했음을 의미한다.
6.1. 연구의 요약 및 의의
본 연구에서는 세분화된 감정 분류를 위한 대규모 데이터셋인 GoEmotions를 제안하였다.
규모와 품질: 58,000개의 Reddit 댓글로 구성된 이 데이터셋은 현재까지 공개된 수동 라벨링 감정 데이터셋 중 최대 규모이다.
정교한 분류 체계: 심리학적 이론을 바탕으로 설계된 27개의 감정 범주와 계층적 구조는 기존의 단순한 감정 분류를 넘어 인간 감정의 복잡성을 정교하게 포착한다.
6.2. 기술적 유용성 검증
실험을 통해 데이터셋이 실제 NLP 모델 학습에 효과적으로 기여함을 입증하였다.
강력한 베이스라인: BERT 기반 모델을 통해 세분화된 감정 분류 작업에서 유의미한 성능을 확보하였다.
전이 학습의 효율성: GoEmotions로 사전 학습된 모델은 다른 도메인의 감정 분석 작업에서도 적은 데이터만으로도 우수한 성능을 발휘하여, 일반화된 감정 특징 추출기(Feature Extractor)로서의 가치를 증명하였다.
6.3. 향후 전망
이 데이터셋은 대화형 AI, 챗봇, 감성 분석 등 인간의 감정을 이해해야 하는 다양한 NLP 애플리케이션의 성능을 향상시키는 데 핵심적인 자원이 될 것이다. 저자들은 연구 커뮤니티의 발전을 위해 데이터와 관련 코드를 모두 공개하여 후속 연구를 지원한다.