머신러닝/YOLOG project

여행지 추천 서비스

su0a 2024. 6. 27. 19:39

프로젝트 개요

현재 Yolog(여록 - 여행기록)이라는 앱 생성 프로젝트에 참여하고 있다. 이 프로젝트는 사용자들이 나라별로 일기장을 생성할 수 있도록 하며, 여행을 빠르게 기록할 수 있는 ‘임시저장’ 기능을 제공하여 여행의 순간순간의 기억을 잃지 않도록 돕는다. 또한, 타임라인 기능을 통해 일기를 작성할 때 시간이 자동으로 입력되도록 하였다. 일기 작성을 완료한 후에는 첨부한 사진들과 어울리는 음악을 생성하여, 음악과 사진이 슬라이드 쇼 형태로 만들어져 이를 릴스로 사용할 수 있게 한다.

 

맡은 역할

이 프로젝트에서 나는 다음 여행지 추천 서비스 개발과 텍스트 기반 음악 생성 기능을 맡았다.

 

프로젝트 진행 과정

사용자들이 작성한 일기 문장들을 기반으로 감정을 분석하고, 이를 수치화하였다. 이후, 도출된 감정 수치와 사용자 가입 시 받은 선호도 정보를 바탕으로 여행지 추천 요청을 GPT에 프롬프트로 입력하였다. GPT의 출력값을 통해 사용자에게 여행지 추천 문구를 제공하였다.

데이터셋

AI Hub에 있는 다양한 데이터셋을 사용하였다. 한국어 감정 정보가 포함된 연속적 대화 데이터셋, 한국어 감정 정보가 포함된 단발성 대화 데이터셋, 감성대화 말뭉치, 감정 분류를 위한 대화 음성 데이터셋을 활용하여 학습을 진행하였다. 이 중 감정 분류를 위한 대화 음성 데이터셋을 사용하여 파인 튜닝한 결과가 가장 높은 정확도를 보였다.

 

학습 모델

1) KoBERT

KoBERT를 사용하여 텍스트에서 감정을 분석하는 파인튜닝을 진행하였다. KoBERT를 선택한 이유는 다음과 같다:

  1. 한국어에 특화된 모델: KoBERT는 한국어에 최적화된 BERT 기반 모델로, 한국어 문장 구조와 어휘에 대한 이해도가 높다. 이 프로젝트는 한국어 감정 분석이 핵심이기 때문에 KoBERT의 한국어 처리 능력이 큰 장점이 된다.
  2. 강력한 성능: BERT 기반 모델들은 다양한 자연어 처리 태스크에서 높은 성능을 보여 왔다. KoBERT 역시 감정 분석, 텍스트 분류 등의 작업에서 우수한 성능을 기대할 수 있다.
  3. 사전 학습된 모델: KoBERT는 이미 대규모 한국어 데이터셋으로 사전 학습이 되어 있어, 추가적인 파인 튜닝을 통해 빠르고 효율적으로 감정 분석 모델을 만들 수 있다. 이는 데이터셋을 활용한 학습 시간과 자원을 절약하는 데 도움이 된다.

이러한 이유들로 KoBERT를 사용하여 한국어 감정 분석 모델을 학습시키고, 90%의 높은 정확도를 달성할 수 있었다.

2) GPT

KoBERT에서 도출된 결과와 사용자 정보를 바탕으로 여행지 추천을 요청하는 프롬프트를 작성하였다. 사용자 정보에는 선호하는 여행지 유형(휴양지 또는 도시), 좋아하는 활동(문화적인 장소 방문, 모험적인 활동 등), 선호하는 음식 유형(양식, 중식, 한식 등), 가고 싶은 나라 등의 정보가 포함되었다. 또한, 특정 나라의 일기에 나타난 감정을 결합하여 GPT에 프롬프트로 사용하였다. GPT의 출력 값을 여행지 추천 문구로 활용하였다.

 

Fast API 구현

FastAPI를 활용하여 서버를 구축하고, 클라이언트로부터 HTTP 요청을 받아 처리하는 API를 구축하였다. 이를 통해 사용자가 제공한 정보와 일기 텍스트를 실시간으로 처리하였다.

먼저, 서버로부터 사용자 정보들을 request로 받고 request의 text(일기 텍스트)를 KoBERT모델에 입력값으로 넣는다. 나온 출력값과 사용자 정보(request.place, request.food, request.travel_destination, request.activity)로 프롬프트를 구성한 후 gpt에 입력값으로 넣는다. 나온 출력값을 서버에 전송한다.

 

배운점

  1. 자연어 처리 모델의 통합: KoBERT와 GPT 모델을 통합하여 감정 분석과 추천 시스템을 구축하는 과정에서, 다양한 자연어 처리 기법과 모델들을 유기적으로 연결하는 방법을 배울 수 있었다.
  2. API 개발 및 배포: FastAPI를 사용하여 간편하면서도 효율적인 웹 서버를 구현하고, API 엔드포인트를 설계하고 배포하는 경험을 하였다.
  3. 데이터셋 활용과 성능 평가: 다양한 한국어 감정 분석 관련 데이터셋을 활용하여 모델을 학습하고, 이를 통해 정확도를 높이는 방법에 대해 학습하였다.