147
-SNS 비정형 데이터의
한국어 다중감성 분석 기법
김소연†ㆍ 유헌창†
†고려대학교 컴퓨터정보통신대학원
Korean Multiple Sensibility Analysis Technique of
SNS Unstructured Data
So-Yeon Kim†ㆍ Heonchang Yu†
†Graduate School of Computer & Infomation Technology, Korea University
요 약
음성인식, 행동패턴인식, 텍스트마이닝 등 사람의 자연스러운 사회적인 활동을 통해 감성을 분석하려는 연 구는 지속적으로 증가하고 있다. 특히 SNS는 현대사회에서 없어서는 안 될 소통의 도구로 자리 잡았기 때 문에 SNS의 비정형데이터를 이용한 감성분석은 마케팅 분야에서 중요한 활용도구로 사용되고 있다. 이러한 추세에 따라 한국어에 대한 감성인식 역시 다방면으로 분석, 활용되고 있고 한국어의 어순과 표현방식, 중의 성, 방언 등의 몇 가지 특징으로 인해 영어와는 다른 방식으로의 접근방식에 대한 필요성이 많은 연구에서 논의되고 있다. 따라서, 이 연구에서는 이러한 한국어의 특징을 수용하여 분석할 수 있도록 시계열 분석에 유용한 LSTM과 중복단어에 대한 가중치를 적용하여 한국어 감성분석을 진행해보고자 한다.1. 서 론
SNS는 사적인 일상, 감정, 정보 등 모든 것을 소통 함과 동시에 마케팅, 정보교류 및 소통이 필요한 사회 활동을 함에 있어서 없어서는 안 될 하나의 매체가 되 었다. 또한, 지극히 개인적이고 사적인 감정들도 SNS를 통해 소통하게 됨으로서 개인의 심리상태가 가장 많이 반영되는 공간이라는 사실은 부정할 수 없다. 이에 SNS를 이용한 사용자의 감성분석에 대한 연구 는 지속적으로 진행 중이고 감성분석에 대한 다양한 방법론이 나오고 있으며 최근에는 영어 뿐 아니라 어 순과 특성이 다른 한국어 감성분석에 대한 연구도 활 발하게 진행되고 있다. 초기의 감성분석에 대한 연구는 감성사전에 의존하 여 긍정, 부정으로 분류가 되는 연구가 대부분을 이루 었기 때문에 감성사전에 대한 연구와 감성사전 적용에 대한 방법론이 주를 이루었다. 하지만 사람의 감성은 긍정과 부정 뿐 아니라 기쁨, 슬픔, 분노, 즐거움 등 상 당히 많은 상태를 가지고 있고 특히나 한국어의 감성 분석은 영어와 달리 단어의존도 만큼 단어의 순서와 전체문장에 대한 의미 파악이 중요하기 때문에 한글 감성분석에 대한 연구는 다른 다양한 방법으로의 접근 을 하고 있다. 이 연구에서는 사람의 기본적인 대표감정단어 중 ‘기쁨’, ‘슬픔’, ‘분노’와 관련된 단어로 트위터의 한글 데이터를 크롤링하여 한국어 감성분석의 방법을 제시 하고 분석된 결과를 통해 개인의 감성에 맞는 피드백 을 제공하는 방법을 제안한다.2. 선행연구
2.1 중복단어의 활용
감성분석 연구에서의 중복단어는 여러 가지 방법으 로 사용할 수 있다. 중복단어를 제거하되 단어 빈도와 역 문서 빈도수를 통해 빈번하게 등장하는 단어에 대 해서 가중치를 부여하는 TF-IDF 가중치 부여방식을 사용하여 감성분석에 대한 정확도를 높이는 방법을 사 용한 사례의 연구도 있고[2], 품사 태깅 후 명사만 추 출하여 중복단어가 발생 시 가장 최근에 발생한 문장 의 감성지수에 가장 민감하게 반응한다고 가정하고 중 복단어의 발생의 지수와 SNS 문장의 감성지수의 곱 으로 특정 단어에 대한 감성지수를 구하여 매 시간 가 장 호감을 가지는 키워드를 추출하는 ACO알고리즘을 사용하기도 하였다[1].2.2 한국어 감성분석
한글의 경우 영어와 같이 단어를 중심으로 한 감성 단어사전을 이용하여 감성분석을 할 시 중의성문제에 빠질 수 있다는 단점이 있다. 이를 고려해서 품사2018년 한국컴퓨터교육학회 하계 학술발표논문지 제22권 제2호
148
-단어 키워드 기쁨 '기쁨', '행복', '즐거움', '행복해', '기쁘다', '좋아'','happy‘ 슬픔 '슬픔', '슬퍼', '우울', '우울해', '슬프다'','sad','우울하다' 분노 '화나', '열받아', '짜증나', '짱나', '화난다', '분노', ,'angry' <표 1> 감정단어 별 트위터 검색 키워드 단어 키워드 기쁨 '이벤트‘', '좋', '휴일', '같이’', '사랑' 슬픔 '휴일', '위로', '지연', '...', ‘이지만‘,’못‘ 분노 '개‘, '너무', '범죄', '인권', '덥' <표 2> NLTK로 처리한 데이터의 각 감성단어에 포함된 형태소와 상위지수의 형태소목록 tagging이나 감성단어 사전을 이용하지 않고 단어의 순서에 초점을 맞춰 긍정적 혹은 부정적 패턴을 학습 하고 그 패턴과 입력된 문장을 비교하여 분석하는 ensemble-textHMM을 이용한 한국어에 높은 정확도 를 가진 알고리즘을 제시하기도 하였다[3]. 하지만 모 호한 표현이 아닌 명확한 감성단어를 가진 경우에는 오히려 정확도가 떨어지는 결과를 보이기도 하여 한글 에 대한 감성분석에서도 단어순서 뿐 아니라 감성단어 사전의 사용도 중요함을 보여주었다. 이 연구에서는 위와 같은 연구들의 장점을 이용하여 중복데이터와 단어 순서적용에 대한 장점을 이용할 수 있도록 NLTK를 이용하여 중복단어의 빈도수에 따른 가중치를 부여하고 최근 발생한 단어가 다음 단어의 감성지수가 함께 적용 될 수 있도록 순차적인 분석인 장단기 메모리 방식의 순환신경망 (LSTM : Long-Short Term Memory)을 이용하여 감성분석을 하고 한다3. 실험방법
3.1 데이터 크롤링과 전처리
이 연구에서는 트위터 API를 통한 데이터 크롤링을 이용하였다. 차후 평가를 위해 대표 감정단어인 ‘기쁨’, ‘슬픔’, ‘분노’와 관련된 키워드로 검색한 10일간의 트위 터 180,000 건을 이용하였다. 크롤링 된 데이터는 정확한 평가를 위해 해시태그, 특수문자, RT, @ 등의 태그를 가진 데이터는 제거하 고 가공가능한 csv로 파일을 생성하였다.3.2 NLTK
NLTK(Natural Language Toolkit) 는 자연어 처리 및 문서 분석용 파이썬 라이브러리로 말뭉치, 토큰 생 성, 형태소 분석, 품사 태깅등의 기능을 지원하고 있 다. 이 연구에서는 이 NLTK 라이브러리를 활용하여 전처리된 데이터를 토큰으로 분류하여 단어 목록을 생 성하였다. 또한 사용된 모든 단어를 중복 없이 하나씩 포함하고 각 단어의 중복빈도에 따른 가중치를 적용할 수 있도록 단어마다 수치를 적용한 후 인덱싱을 통해 쉽게 접근할 수 있도록 처리하였다.
3.3 Word2vec
Word2vec은 단어들의 의미에 따라 vector로 수치 화시켜 각 단어를 200차원 가량의 벡터로 표현하고 있 고, 한 단어의 근처에 있는 몇 개의 단어는 관련단어 로 규정하고 학습시킨다[4]. 이러한 word2vec을 통해 단어들의 의미에 따라 vector로 수치화시켜 비슷한 의미의 단어들끼리 모아 연속적인 vector array로 단어를 표현하였고, 이 array 를 이용해서 단어와 단어가 가까이 등장하는 순서나 연관 관계를 통해 단어간의 유사도를 확인하였다. 이러한 벡터 연산을 통해서 추론을 내릴 수 있게 만 든 결과물로 최종 LSTM 모델 생성 직전 데이터인 전 처리 데이터 npz 파일을 생성하였다.3.4 LSTM
LSTM 모델 생성 후 학습을 통해 대표 감정단어인 ‘기쁨’, ‘슬픔’, ‘분노’ 3개의 감성에 대해 0.0~1.0의 확률 을 도출한다. 32개의 입력을 한꺼번에 모델에 적용하고 나오는 loss를 합쳐서 한 번에 훈련하도록 함으로서 normalization의 효과와 함께 학습 속도도 향상시킬 수 있도록 하였다.4. 실험결과
모델의 정확도를 향상시키고 레이블과의 격차를 최 소화하기 위해 20번의 학습을 시행한 결과 모델의 정 확도는 94%로 확인되었다. 하지만 [그림 1]에서 보여지듯이 실제로 epochs 12 회 이후로는 정확도에 큰 차이를 보이지 않았다. 만약 학습데이터의 수가 더 많아지게 되면 epochs 횟수가 이보다 더 많아야 정확도가 올라가겠지만 일정 수준 이상의 학습은 정확도면에서 큰 차이가 없을 것임을 알 수 있다. 오히려 Overfitting을 막기 위해선 학습모델에 따른 적절한 epochs를 설정하는 것이 중요한 것임을 보여주2018년 한국컴퓨터교육학회 하계 학술발표논문지 제22권 제2호
149
-예시1. 문장 “힘들지만 행복해” 의 감성분석결과 기쁨 0.0089 슬픔 0.9838 분노 0.0072 예시2. 문장 “행복하지만 힘들어” 의 감성분석결과 기쁨 0.9384 슬픔 0.0487 분노 0.0127 는 결과이다.[그림 1] epochs=20의 경우 model accuracy 한국어의 경우 다른 언어와는 다르게 같은 의미의 문장도 어순과 단어의 표현이 달라질 수 있고, 오타나 사투리, 반어법이나 묘사와 같은 모호하거나 중의적인 표현이 많다. 특히나 시계열 알고리즘인 LSTM 알고리즘의 특성 상 단어 순서에 의존할 수 밖에 없기 때문에 몇 가지 문장에 있어서는 정확한 감성분석이 이루어지지 않음 을 확인할 수 있다. 이러한 문제점은 복합적인 표현과 중의적인 표현과 함께 단어 순서에 전체 문장에 대한 감성지수의 가중 치까지 학습데이터에 포함시킨다면 정확도는 더 향상 될 수 있을 것으로 보인다.
5. 결론
인간의 감성은 긍정, 부정 이외에도 수많은 감성이 있기 때문에 각 감성에 따른 지수를 이용하여 세밀한 감성분석이 가능하게 된다면 이렇게 도출된 결과로 감 성지수에 따른 영화추천, 음악추천, 상담 등의 여러 가 지 감정 피드백 제공이 가능할 것이다. 이는 특히나 개인 심리상담이나 우울증 상담, 감정 케어 영역에 있어서는 현재까지 긍정과 부정으로 나누 는 분석결과보다는 큰 효과를 줄 수 있을 것으로 보인 다. 하지만 한국어의 몇 가지 특징 때문에 위와 같이 여 러 가지 알고리즘을 복합적으로 사용하고 가중치를 주 는 방법을 이용해서 분석하는 방법을 사용하더라도 학 습데이터가 적거나 주기적인 추가학습이 없다면 반어 적인 표현이 들어간 복합적인 감정에 대한 처리나 사 투리, 고의적인 오타 등이 있는 문장의 정확도는 떨어 질 수밖에 없기 때문에 이에 대한 지속적인 연구는 필 요하다. 향후 연구에서는 이러한 문제점을 해결하기 위한 방 법을 제시하고 도출된 감성분석결과를 사용자에게 제 공하여 실시간 결과확인을 통한 개인화 영역에 대한 연구를 추가하여 정확도를 더욱 향상시킬 수 있도록 하고자 한다.참 고 문 헌
[1] 정인정 (2016). 소셜 미디어의 감성 분석에
기반한 컨텐츠 추천 방법에 관한 연구. 고려대
학교 대학원
[2] 안병철 (2017). 스팸과 중복 데이터 제거를
통한 비정형 빅 데이터의 감성분석. 영남대학
교 대학원
[3] 강만기 (2015). Sentiment analysis in text
mining using ensemble-HMM. 한양대학교
[4] T. Mikolov, K. Chen, G. Corrado, J. Dean.
(2013).
Efficient
estimation
of
word
representations in Vector space. Google Inc.,
Mountain View, CA
[그림 2] 한 문장당 복합적인 감정단어가 있는 경우의 감성분석결과