ecsimsw

영화 추천 서비스 / TF-IDF / NLP 본문

영화 추천 서비스 / TF-IDF / NLP

JinHwan Kim 2020. 3. 14. 22:21

 

영화 추천 서비스

- 공부한 자연어 처리를 연습 할 수 있는 간단한 서비스를 만들고 싶었습니다.

- 영화를 입력하면 45000개의 영화 데이터 내에서 '제작 언어', '시리즈', '줄거리', '평점', '장르'를 바탕으로 가장 유사한 영화 n개를 추천합니다.

- 웹 서버와 연산 서버로 구성되어, 연산 서버에서 유사한 영화 뽑는 연산을 처리하고, 웹 서버는 검색 영화, 추천 영화를 연산 서버와 주고 받고 페이지를 구성하여 브라우저에 응답합니다.

 

연산 서버

파이썬으로 제작한 연산 서버는 검색한 영화와 제작 언어 일치, 시리즈 존재 여부, 줄거리 유사도, 평점, 장르 유사 여부를 비교하여 가장 높은 점수의 n개 수의 추천 영화를 찾습니다. 소켓 통신으로 웹 서버로부터 검색 영화 정보를 받고, 연산 후 추천 영화 목록을 전송합니다.

 

 

유사도 평가 방식

 SckitLearn TfidfVectorizer을 사용하여 TF-IDF 방식으로 줄거리의 단어 마다의 문서 내 희귀함을 구하고 각 단어에 가중치를 줘, 두 줄거리 사이의 희귀한 단어의 포함 여부에 따라 유사함을 점수화 할 수 있었습니다.

 

예를 들면 '그' 라는 단어는 대다수의 영화 줄거리에 포함되므로 '그'라는 단어가 두 줄거리에서 모두 포함된 것으로 얻는 유사함 점수는 적습니다. 반면 보다 희귀한 단어, 이를 테면 '전쟁'이라는 단어가 두 줄거리에서 모두 포함되면 이는 보다 많은 유사함 점수를 받을 수 있을 것 입니다.

 

또, 줄거리 내의 150개 단어 중 '전쟁' 키워드가 1번 들어갔을 때와, 줄거리 내의 10개 단어 중 2개의 단어가 '전쟁'인 경우, 후자가 유사도 점수가 더 높아야 하는 것처럼, 줄거리 내부에서 해당 단어의 중요도 역시 유사함 판단의 기준이 되었습니다.

 

 

스크린샷

영화 "Heat"를 검색했을때 추천 화면

 

추천 받고자 하는 영화 입력 화면

 

만든이

김진환 (ecsimsw) / 박소빈 (sobin1023)

제작 기간 : 2020.04.05 ~ 2020.04.14

Comments