앞에서 가상의 고객DB 20명의 데이터를 만드는 코드를 짰다.
그리고 고객DB에 있는 메인장르와 서브장르에 맞는 단편영화를 추천해주는 알고리즘을 짰다.
먼저 구현할 알고리즘을 나열하자면,
- 모든 고객의 정보를 하나의 list에 저장한다.
- 모든 단편영화 정보를 하나의 list에 저장한다.
- 고객정보(이름과 ID)를 받는다( 이것은 프론트 엔드 구현시, 직접 정보를 받을 것이고 지금은 가상으로 지정해준다 예)sparta0 스파르타0)
- 고객 정보 list를 for문으로 돌린다.
- 받은 고객정보와 고객list에 있는 정보가 일치하면,
- 그 고객의 메인장르와 서브장르를 추출한다.
- 단편영화 list를 for문으로 돌린다.
- 고객의 메인장르와 같은 장르의 단편영화들을 하나의 임시 list에 저장한다(서브장르도 마찬가지)
- 임시 list에서 단편영화 3개를 추출해서 추천해준다.
# all_short_movie 라는 변수에 DB값 담기(지금 단편영화 db가 없어서 장편영화 db로 함)
all_long_movie = list(db.Long_movie_1.find({}))
# all_customer 라는 변수에 DB값 담기
all_customer = list(db.Customer.find())
#임의의 고객정보 설정
customer_name = "스파르타1"
customer_Id = "sparta1"
for i in range(len(all_customer)):
if (customer_name == all_customer[i].get('name')) & (customer_Id == all_customer[i].get('Id')):
#선호 장르 1,2 값 저장
customer_genre1 = all_customer[i].get('main_genre')
customer_genre2 = all_customer[i].get('second_genre')
for k in range(len(all_long_movie)):
여기서 장르값만 따로 임시로 저장해준다(고객의 장르와 비교하기 위해서)
temp_genre = all_long_movie[k].get('main_genre').split('\n')[1]
if customer_genre1 == temp_genre :
#그 영화들을 하나의 리스트로 모아둔다.
temp_main_genre_movie.append(all_long_movie[k])
# 만약에 고객 서브 장르와 단편영화의 임시장르가 같으면,
if customer_genre2 == temp_genre:
temp_second_genre_movie.append(all_long_movie[k])
else:
continue
#그 리스트 중에 샘플뽑기/ 첫번째 선호장르 영화3개 두번째 선호장르 영화 3개
print("첫번째 선호하는 장르영화는", customer_genre1)
print(random.sample(temp_main_genre_movie, 3)[0])
print(random.sample(temp_main_genre_movie, 3)[1])
print(random.sample(temp_main_genre_movie, 3)[2])
print("두번째 선호하는 장르영화는", customer_genre2)
print(random.sample(temp_second_genre_movie, 3)[0])
print(random.sample(temp_second_genre_movie, 3)[1])
print(random.sample(temp_second_genre_movie, 3)[2])