
이번 학기에 수강하게 된 수업이.. 프로젝트 수업이다
나는 해당 프로젝트에서 그나마 경험을 해본
추천 시스템 코드를 구성하는 부분을 맡기러 했다.
이와 더불어 관심이 조금 있었던 백엔드 연결까지!
(*아니 이게 저번 프로젝트에서 처참하게 실패해서.... 모델만 덜렁 제출했던 기억이 새록새록...✨)
이 시리즈 글들은 아마? 프로젝트 발표까지 다 되면 올릴 것 같다..
깃허브에도 코드를 올릴 것 같은 데,
비공개해놨다가 공개로 전환하지 않을까 싶다..
영화 추천이 이뤄지는 개념은
텍스트 데이터 분석 결과 값인 감정 데이터를 불러오고
불러온 감정 데이터와 장르를 매칭시켜
(매칭되는 내용은 임의로)
매칭된 장르에 해당되는 영화들을 population/rating 에 따라 추천되도록 한다
이와 같다.
사실, 제작사에 따라 영화 느낌이 다르니까
그 부분도 추가 하고 싶었는 데,,,
이건 내가 개인적으로 추가해보는 걸로
플젝 기간동안 추가하기엔 데이터가 너무 적어서 애매하기에
일단 데이터는 kaggle 제공 TMDB 활용하는 것을 베이스로 한다.
kaggle_TMDB_Data
위의 링크에서 확인할 수 있다.
내가 맡은 부분이 영화 추천되는 로직을 구현하는 것이었는 데,
일단 간단히 파이썬으로 구현을 해봤다.
영화 추천 로직 코드 일부
def recommend_by_emotion(emotion, movies, num_recommendations=10):
genres = emotion_genre_mapping(emotion)
if not genres:
return []
# 장르 기반으로 영화 필터링
genre_filtered_movies = movies[movies['genres'].apply(lambda x: any(genre in x for genre in genres))]
# 평점이 평균 이상인 영화 필터링
avg_vote = genre_filtered_movies['vote_average'].mean()
high_rated_movies = genre_filtered_movies[genre_filtered_movies['vote_average'] >= avg_vote]
# 높은 평점의 영화들 중에서 랜덤으로 num_recommendations개 선택
recommended_movies = high_rated_movies.sample(n=num_recommendations, replace=False)
return recommended_movies['title'].tolist()
사실 마음에 걸렸던 부분이 한 두 부분은 아닌데,
진행 중인 프로젝트에서 평점을 8.5 이상으로 제한을 두는 순간,,,,,
아무런 결과값이 나올 수 없다는 걸 확인하고
그냥,,, 장르 > 평균 이상의 평점 > 해당 조건 만족 시, random 으로 추출하는 방식을 활용했다.
아주 정확하게 보면,,
영화 추천이라기 보다는...
그냥 골라주기? 느낌이지만 그치만........
"추천"과 관련하여서는 개인적으로 진행 예정인 프로젝트에서 더 깊게 공부하고 해보는 것으로 넘겨본다...
진짜.. 이걸 추천 프로그램/시스템 이라 보기 너무 어려운 듯;;
이어서 azure functionapp 배포를 소개할 것이다