오늘의 시(서비스 링크)
오늘의 시는 사용자의 감정을 입력받아 은유적 구절을 생성하고, 생성한 구절로 어울리는 시와 이미지를 생성하는 웹 어플리케이션입니다. 이 서비스를 통해 사용자는 자신이 느끼는 감정을 문학적 표현을 통해 풍요롭게 표현할 수 있습니다. 또, SNS에 생성한 시와 이미지를 공유하여 다른 사람들과 공감대를 형성할 수 있습니다.
![](https://private-user-images.githubusercontent.com/121072239/318379970-4fecee22-074d-4711-8a44-bb3c3ba8bffc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNjA2MTksIm5iZiI6MTczOTI2MDMxOSwicGF0aCI6Ii8xMjEwNzIyMzkvMzE4Mzc5OTcwLTRmZWNlZTIyLTA3NGQtNDcxMS04YTQ0LWJiM2MzYmE4YmZmYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNzUxNTlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jY2NmNTY2ZWI4NTE3Y2ZjODE2N2U1MTI4ODg2NWQ4Y2UxNGNmZDkzNzlkZDZlOGExZjIzODdlZWIxODFjY2I2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.A-hzP8rNUZgig0I7Fhcazm5JtgUuktEOmBloXydGFbg)
- 김기호_T6013 : 문장 데이터 생성, 문장 생성 모델 학습, Frontend, Backend
- 박상기_T6057 : 문장 데이터 생성, Frontend
- 심재혁_T6093 : 문장 데이터 생성, Backend, 배포
- 김건우_T6197 : 시 데이터 크롤링 및 전처리, 시 생성 모델 학습
- 한국어 교육을 위한 감정 형용사 선정과 분류 논문에서 서비스에 활용할 감정 형용사를 선정하고, ChatGPT를 활용해 이와 어울리는 은유적 구절을 생성했습니다.
- 생성한 구절 중 잘 표현한 구절을 골라 프롬프트의 Few-shot으로 활용했습니다.
- 20가지 감정 형용사에 대해 1000개의 은유적 구절로 구성된 데이터셋을 구축했습니다.
- '시 사랑 시의 백과사전' 사이트에서 데이터 크롤링을 통해 10만개의 시 데이터를 수집했습니다.
- 원하는 형태의 시를 생성하기위해, 생성한 은유적 구절의 길이 분포를 기준으로 데이터 전처리를 진행했습니다.
- 직접 데이터 검수를 통해 수집 과정에서 처리하지 못한 노이즈를 제거했습니다.
- 은유적 구절 생성 모델로 Encdoer-Decoder 모델인 google/mt5-large 모델을 사용했습니다.
- 모델 input 앞에 수행할 task를 나타내는 prefix를 추가하여 모델을 학습시켰습니다.
- 시 생성 모델로 Decoder 모델인 skt/ko-gpt-trinity-1.2B-v0.5 모델을 사용했습니다.
- 연 구분 문자를 special token에 추가하여 더 명확한 연 구분을 할 수 있도록 학습시켰습니다.
![스크린샷 2024-04-01 오후 5 10 14](https://private-user-images.githubusercontent.com/121072239/318378406-c03f4a96-8dde-4a35-88ea-068f0b3c255f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNjA2MTksIm5iZiI6MTczOTI2MDMxOSwicGF0aCI6Ii8xMjEwNzIyMzkvMzE4Mzc4NDA2LWMwM2Y0YTk2LThkZGUtNGEzNS04OGVhLTA2OGYwYjNjMjU1Zi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNzUxNTlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kZmY5OWUyYzIyZjM1MzBlODcxODc1YzQyY2M3NTNmN2ZmNzBlMzhlMTA3OWZlYzk0OGY4ZTkyOGU4NTU2NmEyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.mGcnbsuaRpEnNCq2Ug84XPdnGM_KroO2Ae2STVAQajY)
![1](https://private-user-images.githubusercontent.com/121072239/318375912-61c85cbc-0ea4-42d7-837c-f9905b765fad.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNjA2MTksIm5iZiI6MTczOTI2MDMxOSwicGF0aCI6Ii8xMjEwNzIyMzkvMzE4Mzc1OTEyLTYxYzg1Y2JjLTBlYTQtNDJkNy04MzdjLWY5OTA1Yjc2NWZhZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNzUxNTlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MDkxNjlmMmI3MDZiY2JhMzFjNTg4YjlhODk1N2IzNjFmNDY5MWQ5YmJlZjNhZDBmNmFkMzNhNTVjMTQyOTczJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.4wiz5KkRaC1I_GSgrIByuETOy2P5ntIirhwvWAkk06M)
![2](https://private-user-images.githubusercontent.com/121072239/318375936-c1937f81-d195-4c91-b459-239a67b2ea86.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNjA2MTksIm5iZiI6MTczOTI2MDMxOSwicGF0aCI6Ii8xMjEwNzIyMzkvMzE4Mzc1OTM2LWMxOTM3ZjgxLWQxOTUtNGM5MS1iNDU5LTIzOWE2N2IyZWE4Ni5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNzUxNTlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNmI1NjlkNDk3MWQwOWNmYTVhNjkyZTVmYmFlNTBiZDA2ZjgzYjlhMWQ0N2Q4YzI0ODIwMjEwZmJhYzM4YzkyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.ee84KoWWgtS3uf2I9oVULfgoDcKKL0xEIWsqAAuk78M)
- 사용자가 선택한 감정을 바탕으로 그와 어울리는 은유적 구절을 생성합니다.
- 선택할 수 있는 감정은 크게 5가지로 각 카테고리에 4개의 단어가 존재합니다.
- 총 3개의 문장을 생성하며, 사용자는 1개를 선택할 수 있습니다.
- 기쁨 : "기쁘다", "즐겁다", "감사하다", "행복하다"
- 설레임 : "수줍다", "부끄럽다", "쑥쓰럽다", "민망하다"
- 슬픔 : "슬프다", "서럽다", "속상하다", "우울하다"
- 그리움 : "그립다", "공허하다", "외롭다", "후회스럽다"
- 불안 : "두렵다", "불안하다", "초조하다", "혼란스럽다"
- 위에서 생성한 문장을 첫 행으로 하는 시를 생성합니다.
- 시를 생성할 때, 시의 구조와 전체적인 주제 흐름을 고려합니다.
- 그림은 첫 행에서 드러나는 감정과 분위기를 기반으로 생성됩니다.
- 그림체는 수채화를 사용합니다.
- 생성한 시와 이미지를 오늘의 시 인스타그램 공식 계정(@poemoftoday)에 공유할 수 있습니다.
- 인스타그램에 공유하기 버튼을 누르고, 자신의 인스타그램 ID를 입력합니다.(비공계 계정 또는 유효하지 않은 계정은 불가)
- 업로드가 완료되고 확인 버튼을 누르면, 업로드된 게시물을 인스타그램에서 확인할 수 있습니다.
-
라이브러리 설치
-
아래의 명령어를 사용해 라이브러리를 설치합니다.
pip install -r requirements.txt
-
-
app.py 실행
-
아래의 명령어를 사용해 서버를 실행합니다.
cd Application/ python3 app.py
-