본문 바로가기
동아리_대외활동/광주인공지능사관학교

[자연어 프로젝트] 네이버영화 추천시스템

by merona99 2020. 9. 7.
반응형

광주 인공지능사관학교 - 네이버영화 추천시스템

자연어 수업시간에 4일정도 시간을 주고 추천 시스템을 만드는 프로젝트를 했다.

 

ppt

naver_final.pptx
5.23MB

 

 

프로젝트 github -> https://github.com/cromatical/Movie_recommendation

내가 수정하는 github -> https://github.com/tpqls0327/navermovie_recommend

 

 

3가지 주제가 나왔는데 나는 가장 과 가깝다고 생각이 드는 '네이버영화 추천시스템'을 골랐다.

'크롤링', '모델', '전처리', '시각화'로 분야가 나뉘어져 있었는데, '크롤링'을 선택했다.

 

팀원들을 만나고 플젝을 하는데 매우 순조로웠다.

매일 온라인 수업을 듣다가 만나서 이야기하며 하는데 새벽이 되도 개발하는게 너무 재미있었다.ㅋㅋㅋ

시간이 늦어져도 피곤하지가 않아서 신기했다.ㅋㅋㅋ

좋은사람들을 만났기 때문에 힘이 됬던것 같다.

 

원래는 역활이 나눠져서 들어왔지만 처음 플젝이고 서로 익숙치 않으므로 다같이 처음부터 진행하기로했다!

 

 

[과정]

1. 네이버영화 크롤링 - title, genre, summary, actors, director, score 가져오기(총 18000개의 데이터불러옴)

2. 전처리 - 결측치 '빈칸'으로 만들기, summary를 stopword제거후 토큰화해서 나누어서 넣기

3. 모델 - content recommend 사용

4. 시각화 - django

 

 

[내가 직접 완성했던 부분]

1. 네이버영화 크롤링으로 title, genre, summary 가져오는 부분

// 한 4시간~5시간 걸렸던것 같다.. 처음으로 직접해보는거라 그랬던듯 싶다.

 

2. summary를 stopword를 사용해서 토큰화하기

// 팀원한명이랑 진행했다. 강사님이 전에 알려주신 수업과 매우 유사해서 쉽게 할 수 있었다.

기본적인 결측치와 전처리작업을 진행해줬고, 형태소분석은 Kkma를 사용했다.

stopword는 영어부분은 nltk를 불러와서 사용했고, 한국어부분은 한국어 불용어 사이트를 참조해 모두 긁어와 사용했다.

 

3. content recommend 사용해서 모델 완성

// title을 넣으면 유사한 영화리스트 top 10개를 띄우는 것을 완성했다. (genre, actor 등을 넣어도 된당)

코사인 유사도를 사용한 컨텐츠 기반 필터링을 사용했다.

 

4. django로 시각화 구현

// 사실 여기오면서 가장 궁금했던게 '인공지능 서비스를 django로 구현을 어떻게 연동시킬까?'였다.

그래서 보통 팀은 'matplob'으로 시각화를 하는데 나는 더 나아가서 django로 시각화를 해보자고 하고 제안했다.

위에까지 완성후에 나는 django를 구현하고, 다른분은 모델을 업그레이드 하고, 다른분은 ppt를 만들었다.

 

딱! 이때 진짜 기분이 좋았다. 머랄까.. '내가 진짜 1인분 역할을 충분히 하고 있구나', '협업이 이렇게 재밌는 거였구나'를 느꼇다고 할까ㅋㅋㅋ

생각해보면 팀원들을 잘 만난것 같다. 다른팀들도 우리보고 왜이렇게 화목하냐고 했을 정도니까ㅋㅋ

기본적인 기능을 다 만든 후, 각자 더 흥미있고 잘하는 부분을 찾아서 위처럼 만들었고 결과물 또한 완성도가 높아졌다..!

자연어 강사님이 자습시간에만 활용해서 하랬지만.. 우리는 몇일내내 여기에 올인했지^^

 

우여곡절 끝에 db에 csv데이터를 넣어보고, import로 python파일을 그대로 가져오고 해봐서 완성은 시켰다.ㅋㅋㅋ

이게 어떻게 보면 가장 쉬웠는데 가장 뿌듯했다.

home.css는 내가 구현하고 result.css는 팀원 한분이 구현했다.

 

 

(신기하게도 동일한 시간에 크롤링을 팀원 한분과 다르게 짜서 완성했다ㅋㅋㅋ /영상 소리없애는법 아시는분....)

오른쪽이 내꺼당

 

완성된 모델을 좀더 복잡하게 카테고리도 넣어서 하는 작업을 다른 팀원분이 구현하셔서 성능이 한층 업글되었다.

크롤링도 더 여러가지를 가져오게 바꾸었고 여러개를 가져오니 nan값이 많아서 예외처리가 일이었다.

위의 과정중에서 크롤링이 가장 시간이 많이들고 어려웠던 것 같다.

새벽에 항상 돌려놓고 잠자고 확인하면 중간에 끊겨있고..^^ 몇번의 에러를 고친지 모르겠다..

 


' ' '

처음으로 하는 프로젝트였기에 아주 간단한 플젝이었지만 의미가 컸고, 프로젝트에 대한 막연한 두려움을 없애준 매우 고마운 시간이었다.

좋은 사람들을 만난건 덤ㅎㅎ

강사님과 같은반 동기들에게 짧은시간 동안에 프로젝트 완성도가 높다고 칭찬을 받았다. 기분좋음^~^

' ' '

반응형

댓글