Ⅰ. 서론
2018년에 작성된 기사[1]에 따르면 인스타그램 등 SNS에는 ‘#그림일기’ 해시태그를 단 게시물만 16만 건으로 평범한 사람들이 소소한 일상을 그림으로 남긴다고 한다. 또한 우울증 투병기 같은 내용을 공유하여 힘을 얻기도 한다는 내용이 있다. 수천 번의 터치를 거듭하여 완성되는 그림이 사진보다 기억이 더 생생하게 남고 태블릿 등 디지털 도구를 이용하여 그림일기를 그리기도 한다.
‘#그림일기’ 해시태그를 단 게시물이 2023년 2월에는 123만 건으로 100만 건 이상이 증가했다. 그만큼 요즘 사람들이 SNS를 활용하여 일상을 남기는 사례가 늘어났고, 사진뿐만 아니라 그림을 활용하여 일상을 기록하는 일기장의 수요가 늘었다고 볼 수 있다.
하지만 직접 그림을 그리는 데 부담감을 느끼는 사람들을 위해 누구나 그림일기 작성을 더 쉽게 작성하기 위한 방법이 필요하다. A-Diary는 쉽게 그릴 수 있는 그림 일기에 관한 내용을 기술한다. 예를 들어, 키워드 추출을 통해 그림을 제공해주는 기능을 구현하였다.
Ⅱ. 관련연구
1. 유사 어플리케이션
표1은 유사 앱과 A-Diary를 비교한 것이다. 플레이스토어에서 가장 대중적인 그림일기 앱인 비몽, 크레용 다이어리, 마이 다이어리로 비교하였다.
표 1. A-Diary와 유사 앱 비교
Table 1. Comparison of A-Diary and similar apps
비몽은 제공되는 그림판을 통해 그림을 그리고 그림에 대한 일기 내용을 작성한 뒤 다른 사람들과 공유하여 다른 사람들의 댓글과 공감을 얻을 수 있는 앱[2]으로 현재 약100,000회 이상 다운로드 되었다. 특정한 기능이 없고 일기 작성과 그림 그리기만 있어 제한적이다.
크레용 다이어리는 앞 사례와 유사하게 그림을 그리고 짧은 일기를 기록할 수 있는 앱[3]으로 작성된일기는 친구에게 공유할 수 있다. 현재 약 5,000회 이상 다운로드 되었다. 특정한 기능이 없고 일기 작성과 그림 그리기만 있어 제한적이며, 인터페이스가 불편하다.
마이 다이어리는 개인 문서, 일기, 잠금, 감정을 나타내는 기능이 있는 일기장 앱[4]으로 앞선 사례보다 많은 기능과 많은 다운로드 횟수를 보유하지만 여러 기능들이 유료화가 되어있어 제한적이다. 현재 약 1,000만 이상 다운로드 되었다.
2. KoNLPy
NLP(Natural Language Processing)는 텍스트에서 의미있는 정보를 분석, 추출, 이해하는 일련의 기술 집합이다. KoNLPy는 한국어 텍스트를 이용하여 형태소 분석 및 품사 태깅같은 기초적인 NLP 작업을 할 수 있다[5].
KoNLPy안에 Hannanum, Kkma, Komoran, Mecab, Open Korean Text(Okt) 같은 다양한 라이브러리가 있는데 그중 상대적으로 빠른 속도와 정확성을 지닌 Okt를 사용하여 구현했다. Okt는 nouns(), morphs(), pos() 메서드를 제공하는데 각각 명사 추출, 형태소 추출, 품사 부착의 기능을 가지고 있다.
3. KoBERT
KoBERT는 구글의 자연어 처리 모델인 BERT[6]에서 한국어 데이터를 추가로 학습시킨 모델로, 한국어 위키에서 500만개의 문장과 5400만개의 단어를 학습시킨 모델이다[7].
KoBERT를 이용하여 여러 감정을 분류하는 모델을 만들기 위해 AI Hub의 '감성대화말뭉치'[8], ‘한국어단발성대화’[9] 데이터셋을 학습시켜 기쁨, 불안, 당황, 슬픔, 분노, 상처, 중립 총 7개의 감정을 분류할 수 있다. 중립은 어떤 감정도 추출되지 않은 상태이다.
Ⅲ. 시스템 설계
1, 개발환경
A-Diary는 윈도우 11과 Mac Ventura[10]에서 개발되었으며 Flask[11], React 18.2.0[12], MySQL 8.0.31[13]를 사용하였다. 툴은 VScode[14]와 Conda[15]를 사용하였다. 윈도우와 Mac 환경에 동시에 테스트를 진행시켜 다양한 환경에서 사용가능성을 확인하였다.
2. 시스템 구성
그림 1은 A-Diary의 시스템 구성도를 나타낸 것이다.
그림 1. 시스템 구성
Fig. 1. System View
A-Diary는 그림 1과 같이 서버를 두 개 사용하여, 각자 역할을 분산시켜 과부하 걸리는 상황을 방지한다. 웹 서버는 사용자의 정보와 일기글 정보를 DB에 저장한다. AI 서버는 사용자에게서 받은 일기글을 토대로 키워드 추출 및 검열, 감정 분석을 하고, 키워드를 받아 quick draw그림과 AI 그림을 사용자에게 보내준다. 또한 S3를 사용하여 그림을 빠르게 저장하고 데이터를 가져올 수 있게 하였다. 그리고 코랩에 있는 그래픽 카드를 사용하여 keras에 stable diffusion 모델을 사용하여 그림을 생성해준다.
3. KoNLPy를 사용한 키워드 추출 및 검열
KoNLPY는 텍스트에서 의미 있는 정보를 분석, 추출, 이해하는 기술의 집합으로 키워드를 추출하는데 사용한 기술이다. KoNLPY로 먼저 조사같은 불필요한 텍스트를 제거하고 남은 명사들을 1차적으로 검열한다. 그러고 나서 Google에서 제공하는 Quickdraw 데이터셋[16]에 있는 단어들만 정리하여 남은 명사들과 데이터셋 리스트를 통해 2차 검열과정을 거쳐 사용자에게 제공한다.
Quickdraw 데이터셋은 영어로 이루어져 있는데 우리의 주 사용자는 한국어를 사용하기 때문에 파파고 api[17]를 사용하여 번역하였다. 사용자는 제공받은 키워드들을 선택하여 그림을 그릴 수 있다.
그림 2. 키워드 검열 알고리즘 흐름도
Fig. 2. Word Inspection Algorithm Flow
4. KoBERT를 활용한 감정 추출 및 중립 데이터 추가
KoBert 모델은 감정분석 모델로 ‘감성대화말뭉치’ 데이터셋을 학습시켜 기쁨, 불안, 당황, 슬픔, 분노, 상처 총 6개의 감정을 분류할 수 있다. 하지만 일기내용이 항상 기분이 나오지않는 경우도 있다. 따라서 중립적인 표현이 있는 ‘한국어 단발성 대화’ 데이터셋과 기존의 있는 데이터셋을 병합시켜 중립 감정을 추가 하였다.
‘감성대화말뭉치’ 와 ‘한국어 단발성 대화’ 데이터셋은 문장과 그 문장에 맞는 감정으로 이루어진 데이터셋으로 데이터셋의 형식은 동일하다. ‘감성대화말뭉치’는 감정의 종류가 앞서말한 6개로 이루어져 있고, ‘한국어 단발성 대화’ 데이터셋의 감정 종류는 행복, 공포, 놀람, 분노, 슬픔, 혐오, 중립 등 7개로 이루어져 있다. ‘감성대화말뭉치’에 ‘한국어 단발성 대화’의 분노, 슬픔, 중립을 병합하여 재학습 시켰다.
Ⅳ. 구현 및 실험
1. 구현결과
서버 간의 통신, 키워드 추출, 감정 분석, 키워드에 맞는 그림 가져오기, 그림판 등의 핵심적인 기능들은 모두 사용할 수 있도록 구현하였다. 완성된 그림 일기를 저장하고 불러오는 과정에서 상당히 오랜 시간이 걸리는 문제가 발생했지만 이는 S3를 사용하여 해결할 수 있었다. 키워드에 맞는 그림을 가져오는 기능을 구현할 때 귀여운 낙서 수준인 퀵드로우 데이터셋을 사용하였기 때문에 인공지능이 그려주는 그림과 비교했을 때 그림의 퀄리티가 떨어질 수 있다. 하지만 그림을 못 그리는 사람도 쉽게 그림을 그릴 수 있는 서비스를 개발하고자 했던 목표에 부합하는 결과를 만들어 내는데 성공하였다.
그림 3는 메인화면으로 달력에서 날짜를 선택하면 일기작성 화면이 나오게 된다.
그림 3. 메인화면 구성
Fig. 3. Main Screen Configuration
그림 4는 일기 작성 화면과 그림판 화면으로 일기를 작성한 뒤, 그림판을 누르게 되면 작성된 일기에서 추출된 키워드와 함께 직접 그림을 그릴 수 있는 그림판이 제공된다.
그림 4. 일기작성 화면(좌), 그림판 화면(우)
Fig. 4. Diary creation screen (left), Paint screen (right)
그림 5는 키워드 추출을 통한 Stable diffusion 모델이 그림을 그려주는 형식이다.
그림 5. AI 통한 그림 생성
Fig. 5. Drawing through AI
2. 감정 분석 정확도 테스트
본 논문에서 사용한 KoBERT 모델의 정확도 측정을 위해 실험을 실시하였다.
가. 실험 1 – 글 내용 별 감정 분석
이 실험에서는 글 내용별로 KoBERT 모델이 정확하게 감정을 판별을 하는데 확인하였다. 표 2는 그 결과를 보여준다.
표 2. 글 내용 별 감정 분석표
Table 2. Sentiment Analysis Table by Text
나. 실험2 – 각 감정별 분석률 테스트
이 실험에서는 KoBERT 모델이 정확하게 각 감정을 판별을 하는데 확인하였다. 표 3는 그 결과를 보여준다. 각 감정별로 학습 이미지 수를 다르게 하여 측정하였다. 정확도는 학습에 사용된 이미지의 수가 증가할수록 향상되었다.
표 3. 각 감정별 분석률 실험
Table 3. Analysis rate experiment for each emotion
다. 실험3 – Stable Diffusion 모델 그림 정확도
이 실험에서는 Stable Diffusion 모델이 정확하고 최대한 완성도 높은 그림을 그려주기 위해 프롬프트 테스트를 진행하였다. 표4는 해당결과를 보여준다.
표 4. 프롬프트 별 그림 차이
Table 4. Picture difference by prompt
실제 사진으로 나올 경우 이상하게 나오는 경우가 많아서 다양한 프롬프트를 추가함으로써 성능을 개선시켰다.
Ⅴ. 결론
본 연구에서는 감정분석 및 그림 그려주는 기능을 포함하는 그림일기장을 구현하였다. 구현된 시스템은 사용자의 글 내용을 바탕으로 감정 분석(KoBERT) 기능을 제공하고 월 통계기능을 제공하고 있다. 또한 키워드 추출(KoNLPY)을 통한 그림을 그려주는 기능(Stable Diffusion)을 제공하여 그림을 그리지 못하는 사람들도 쉽게 그림을 그릴 수 있도록 하였다.
본 연구에 이은 향후 연구에서는 gpt를 활용하여 일기를 요약하고 그 결과를 langchain기술을 활용하여 openai의 dall-e를 사용하여 그림을 나더 나은 그림을 나타낼 수 있을 것이다.
참고문헌
- Hankook Ilbo "https://www.hankookilbo.com/News/Read/201808061304064326"
- BeMong "https://play.google.com/store/apps/details?id=com.softsquared.grap".
- Crayon Diary, "https://play.google.com/store/apps/details?id=org.androidtown.crayondiary".
- My Diary, "https://play.google.com/store/apps/details?id=mydiary.journal.diary.diarywithlock.diaryjournal.secretdiary".
- ChaeWon Lee, Mikyeong Moon, "Keyword and Emotional Analysis Diary Service Using KoNLPy and KoBERT", Journal of the Korean Computer Information Society, Korea Society of Computer Information, Vol. 30, No. 2, pp. 501-502, July 2022 "https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11140468&nodeId=NODE11140468&medaTypeCode=185005&language=ko_KR&hasTopBanner=true"
- BERT, "https://arxiv.org/abs/1810.04805"
- YoungJun Lee, HoJin Choi, "Joint Learning-based KoBERT for Emotion Recognition in Korean", Journal of Korean Institute of Information Scientists and Engineers, Korean Institute of Information Scientists and Engineers, pp. 568-570, 2020
- Emotional dialogue corpus "https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&aihubDataSe=realm&dataSetSn=86"
- One-way conversation in Korean "https://aihub.or.kr/opendata/keti-data/recognitionlaguage/KETI-02-009"
- Mac Ventrua, "https://www.apple.com/kr/macos/ventura/"
- Flask, Park Yong-yong."Jump to Flask".Aegis Publishing, 2021.
- React, Kim Minjoon.The Art of React, Revised Edition. Book publishing Gilbott, 2022.
- MySQL, Hong Eui-kyung. A database learning center based on ORACLE. biological publishing,2016
- VsCode, "https://code.visualstudio.com/docs#first-steps"
- conda, "https://docs.conda.io/projects/conda/en/latest/user-guide/index.html"
- PaPaGO api "https://www.ncloud.com/product/aiService/papagoTranslation"
- QuickDraw, "https://github.com/googlecreativelab/quickdraw-dataset"
- Jae-Young Kim, Myung-Gwan Kim, "A Study on the Implementation of SNS Message Classification by Emotion Factors" The Journal of the Institute of Internet, Broadcasting and Communication, Vol.11 No.4 pp.217~222 Aug 2011. DOI: https://doi.org/10.7236/JIWIT.2011.11.4.217