harimchung / moofy

๐Ÿ†์ตœ์šฐ์ˆ˜ ํ”„๋กœ์ ํŠธ๐Ÿ† ์‚ผ์„ฑ ์ฒญ๋…„ SW ์•„์นด๋ฐ๋ฏธ(SSAFY) 8๊ธฐ ๊ด€ํ†ตํ”„๋กœ์ ํŠธ ๋น„์ „๊ณต์ž ์˜ํ™” ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ์›น์‚ฌ์ดํŠธ

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

header

โ€

moofie_logo

Movie Only One For You

๐Ÿฅ‡ ์ตœ์šฐ์ˆ˜ ํ”„๋กœ์ ํŠธ ์„ ์ •

๋‹น์‹ ์˜ ์ทจํ–ฅ์— ๊ผญ ๋งž๋Š” ์˜ํ™”๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์‚ฌ์ดํŠธ, ๋ฌดํ”ผ์ž…๋‹ˆ๋‹ค.


๋ชฉ์ฐจ

  1. ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค
  2. ์ฃผ์š” ๊ธฐ๋Šฅ
  3. ์ฃผ์š” UI ํŠน์ง•
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง
  5. ์˜ํ™” ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  6. ํ›„๊ธฐ



๋งŒ๋“  ์‚ฌ๋žŒ๋“ค

๊ธฐํš, ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ ๊ณผ์ • ์ „๋ฐ˜์—์„œ ์œ ๊ธฐ์ ์œผ๋กœ ํ˜‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ž๊ฐ€ ์ฃผ๋„ํ•œ ๊ธฐ๋Šฅ๊ณผ ๋ถ„์•ผ๋ฅผ ์„œ์ˆ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์œค๋Œ€ํ˜

    1. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ๊ฐ€๊ณต
    2. ๊ฒ€์ƒ‰ ๋ฐ ์˜ํ™” ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐํš
    3. USER ๋ชจ๋ธ ์ œ์ž‘ ๋ฐ USER ๊ธฐ๋Šฅ ๊ตฌํ˜„
  2. ์ •ํ•˜๋ฆผ

    1. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„
    2. UX/UI ๋””์ž์ธ ๊ตฌํ˜„



INSTALL

  1. back
$ cd final-pjt-back
$ python -m venv venv
$ source venv/Scripts/activate
$ pip install -r requirements.txt
$ python manage.py migrate
$ python manage.py loaddata movies/vectordata_300.json
$ python manage.py runserver
  1. front
$ cd final-pjt-front
$ cd movie-cli
$ npm install
$ npm run serve



moofy_sample



์ฃผ์š” ๊ธฐ๋Šฅ

๋ชฉํ‘œ

  • ์‚ฌ์šฉ์ž์˜ ์‚ฌ์ดํŠธ ์ด์šฉ ํ–‰๋™์„ ์ˆ˜์ง‘ํ•˜์—ฌ ๊ฐœ์ธํ™” ์ถ”์ฒœ ๊ตฌํ˜„
  • ์‹ค์ œ ๊ตฌํ˜„ ์ •๋„ : 90%

์˜ํ™”

  1. ์ถ”์ฒœ
    • ์‚ฌ์šฉ์ž๋Š” ์‹ ๊ทœ๊ฐ€์ž… ์‹œ ์•ฝ 300๊ฐœ์˜ ์˜ํ™” ๊ฐ€์šด๋ฐ ๋ฌด์ž‘์œ„๋กœ ์ถ”์ฒœ ๋ฐ›์Šต๋‹ˆ๋‹ค.
    • ์ตœ์ดˆ๋กœ ๊ณ ๋ฅธ ์˜ํ™”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์ทจํ–ฅ์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
    • ์ดํ›„ ์˜ํ™” ์ƒ์„ธํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๊ฑฐ๋‚˜ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธฐ๋ฉด ์ทจํ–ฅ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ถ„์„ํ•œ ์ทจํ–ฅ์— ๋งž์ถฐ์„œ ๊ฐœ์ธ๋ณ„ ์ถ”์ฒœ์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
    • ํšŒ์›๊ฐ€์ž… ์‹œ ์˜ต์…˜์œผ๋กœ ์„ ํƒํ•œ ๋‚˜์ด, ์„ฑ๋ณ„์— ๋”ฐ๋ผ ์ถ”์ฒœ์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
      • ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•œ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ์˜ต์…˜์€ ๋žœ๋ค์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
    • ๋งŽ์ด ์„ ํƒํ•œ ์žฅ๋ฅด์— ๋”ฐ๋ผ ์ถ”์ฒœ์ด ์ด๋ค„์ง‘๋‹ˆ๋‹ค.
  2. ๊ฒ€์ƒ‰
    • DB์— ์žˆ๋Š” ์˜ํ™” ์ค‘ ์ œ๋ชฉ๊ณผ ๋ฐฐ์šฐ์— ๋”ฐ๋ฅธ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  3. ์˜ˆ๊ณ ํŽธ
    • youtube์— ์žˆ๋Š” ํ•ด๋‹น ์˜ํ™” ์˜ˆ๊ณ ํŽธ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ

  1. ๋ฆฌ๋ทฐ
    • ๊ฐ ์˜ํ™”์— ๋Œ€ํ•˜์—ฌ ๋ฆฌ๋ทฐ์™€ ํ‰์ ์„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฆฌ๋ทฐ์˜ ์ˆ˜์™€ ํ‰์ ์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋˜์–ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    • ๋ณธ์ธ์ด ์ž‘์„ฑํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž

  • ํšŒ์›๊ฐ€์ž… ์‹œ ์˜ต์…˜์œผ๋กœ ๋‚˜์ด์™€ ์„ฑ๋ณ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํšŒ์›์ •๋ณด ์ˆ˜์ • ๋ฐ ํƒˆํ‡ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ์—๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.


์ฃผ์š” ๋””์ž์ธ ํŠน์ง•

  • ๋ฐ˜์‘ํ˜• ์›น
    • ์‚ฌ์šฉ์ž์˜ ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ถ”์ฒœ ์˜ํ™” ํฌ์Šคํ„ฐ ์ด๋ฏธ์ง€ ํฌ๊ธฐ์™€ ์ˆ˜๊ฐ€ ์กฐ์ ˆ๋ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž ํ™”๋ฉด์— ๋งž์ถฐ์„œ ๋””์ž์ธ์ด ์กฐ์ ˆ๋ฉ๋‹ˆ๋‹ค (๊ฒ€์ƒ‰์ฐฝ, ํ†ต๊ณ„์ž๋ฃŒ, ๊ฒ€์ƒ‰๊ฒฐ๊ณผ)
  • UX๋ฅผ ๊ณ ๋ คํ•œ ํšŒ์›์ธ์ฆ์ฒ˜๋ฆฌ
    • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๋“ฑ ํšŒ์›์ธ์ฆ ์ฒ˜๋ฆฌ๋ฅผ router-link๊ฐ€ ์•„๋‹Œ modal๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ํšŒ์›๊ฐ€์ž… ํ›„ ๋‹ค์‹œ ํ™ˆ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ๊ณ ๋ คํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • UX๋ฅผ ๊ณ ๋ คํ•œ ์˜ํ™” ์ƒ์„ธ์„ค๋ช…
    • ์ด์ „ ์œ„์น˜์™€ ์ƒ๊ด€์—†์ด ์˜ํ™” ์ƒ์„ธ์„ค๋ช…์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ™”๋ฉด ์ƒ๋‹จ์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ƒ์„ธ ์„ค๋ช… ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด navbar์˜ ๋ฐฐ๊ฒฝ์ƒ‰๊ณผ ๊ธ€์”จ์ƒ‰์ƒ์ด ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.
    • ์Šคํฌ๋กค์„ ๋‚ด๋ฆฌ๋ฉด ๋‹ค์‹œ ์›๋ž˜ navbar ์ƒ‰์ƒ์œผ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.
    • ์ค„๊ฑฐ๋ฆฌ๋Š” ๊ธ€์ž ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ, ๋‹จ์–ด ๋‹จ์œ„๋กœ ํ–‰์„ ๋ฐ”๊ฟ”์„œ ๊ฐ€๋…์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
    • ์˜ํ™” API์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์ง๊ด€์ ์ธ ๋ฆฌ๋ทฐ
    • ๋Œ“๊ธ€ ์ž‘์„ฑ์ž์—๊ฒŒ๋งŒ ์ˆ˜์ •, ์‚ญ์ œ ๋ฒ„ํŠผ์ด ๋ณด์ด๋„๋ก ์ฒ˜๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋ฆฌ๋ทฐ์— ๋‚จ๊ธด ํ‰์ ์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ๋ณ„๋กœ ํ‘œ์‹œํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋ณ„์€ 0.1์  ๋‹จ์œ„๋กœ ์กฐ์ ˆํ•˜์—ฌ ์ง๊ด€์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ํšŒ์›์ด ์•„๋‹ ๋•Œ์—๋Š” ๊ธฐ๋ณธ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๊ณ , ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์ง€ ์•Š๋„๋ก ๋ง‰์•˜์Šต๋‹ˆ๋‹ค.
  • 404 ํŽ˜์ด์ง€
    • ์œ ํšจํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋กœ ์ด๋™ ์‹œ 404ํŽ˜์ด์ง€๋ฅผ ๋…ธ์ถœํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • nav ๋ฐ”๊ฐ€ ์ƒ๋‹จ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ™ˆ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ๋„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.




๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง

movie_erd

  1. ์˜ํ™”์ง„ํฅ์œ„์›ํšŒ api์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฃผ๊ฐ„ ๋ฐ•์Šค์˜คํ”ผ์Šค ์˜ํ™”์˜ ์ œ๋ชฉ์„ ์•ฝ 3000๊ฐœ ์ •๋„ ์ˆ˜์ง‘
  2. ์ˆ˜์ง‘ํ•œ ์ œ๋ชฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ python ํฌ๋กค๋ง ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์—ฌ, ๋„ค์ด๋ฒ„ ์˜ํ™” ํŽ˜์ด์ง€์—์„œ ๋ถ€๊ฐ€ ์ •๋ณด๊ฐ€ ์กด์žฌํ•˜๋Š” ์˜ํ™”์™€ tmdb api์—์„œ ์ œ๊ณตํ•˜๋Š” video key๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์˜ํ™”๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์•ฝ 300๊ฐœ ์ •๋„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘




์˜ํ™” ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ์˜ํ™”์˜ profile vector ๊ณ„์‚ฐ

    • ์˜ํ™”์˜ ํŠน์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋ณด๋กœ ์žฅ๋ฅด, ํฅํ–‰ ์ •๋„(popularity), ํ‰์ (actual_vote_average), ์˜ํ™” ์ƒ์˜์‹œ๊ฐ„(running time), ๊ตญ๊ฐ€, ๊ด€๋žŒ๋“ฑ๊ธ‰ 6๊ฐ€์ง€๋ฅผ ์„ ์ •

    • ๊ฐ 6๊ฐ€์ง€๋ฅผ ์ฐจ์›์œผ๋กœ ๊ฐ€์ง€๋Š” 6์ฐจ์› ๋ฒกํ„ฐ๋กœ ๋ชจ๋“  ์˜ํ™” ๋ฐ์ดํ„ฐ์˜ profile vector๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅ

    • ๋‹ค์Œ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๊ธฐ์ค€์ด๋‹ค.

      ์ •๋ณด ์ €์žฅ ๊ฐ’ ํŠน์ง•
      ์žฅ๋ฅด 0~28 ๋ฒ”์ฃผํ™”
      ํ‰์  ์‹ค์ˆ˜ ๊ฐ’ ์ž์ฒด
      ํฅํ–‰์ •๋„ 0, 1, 2, 3 ๋กœ๊ทธ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‚ฌ๋ถ„์œ„์ˆ˜๋ฅผ ๊ธฐ์ค€
      ๊ตญ๊ฐ€ 0, 1, 2, 3 ํ•œ๊ตญ, ๋ฏธ๊ตญ, ์ผ๋ณธ, ๊ธฐํƒ€
      ์ƒ์˜์‹œ๊ฐ„ 0, 1, 2, 3 ์‚ฌ๋ถ„์œ„์ˆ˜
      ๊ด€๋žŒ๋“ฑ๊ธ‰ 0,1,2,3,4,5 ์ „์ฒด ๊ด€๋žŒ๊ฐ€, 12์„ธ ๊ด€๋žŒ๊ฐ€, 15์„ธ ๊ด€๋žŒ๊ฐ€, ์ฒญ์†Œ๋…„ ๊ด€๋žŒ ๋ถˆ๊ฐ€, ์ œํ•œ์ƒ์˜๊ฐ€, ๋“ฑ๊ธ‰๋ณด๋ฅ˜
    • ์˜ํ™”์˜ profile์€ ๋ถˆ๋ณ€ํ•˜๋Š” ๊ฐ’์ด๋ฏ€๋กœ, ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜๋ฉด ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. user์˜ profile vector ๊ณ„์‚ฐ

    • ์œ ์ €๊ฐ€ ๊ด€์‹ฌ์žˆ์–ดํ•œ ์˜ํ™”๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ ์ ˆํ•œ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ์˜ํ™” profile vector์˜ ๊ฐ€์ค‘ํ‰๊ท ์„ ์œ ์ €์˜ profile vector๋ผ๊ณ  ์ •์˜ํ•˜๊ณ , ์ด๊ฒƒ์ด ์œ ์ €์˜ ์ข…ํ•ฉ์ ์ธ ์ทจํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” vector์ด๋‹ค.
    • โ€œ์ ์ ˆํ•œ ๊ฐ€์ค‘์น˜โ€๋ž€ ์œ ์ €๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ํŠน์ • ์˜ํ™”์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๋ณด์ด๋Š” ์ •๋„๋กœ ์ •์˜ํ•œ๋‹ค.
    • ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ€์ž…ํ•˜์—ฌ ์ด์šฉํ•œ ์ตœ์ดˆ์—๋Š” ์œ ์ €์˜ ์ทจํ–ฅ์„ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๋žœ๋ค์œผ๋กœ ์˜ํ™”๋ฅผ ์ œ์‹œํ•˜๊ณ  1๊ฐœ ์ด์ƒ์˜ ๊ด€์‹ฌ์žˆ์–ดํ•œ ์˜ํ™”๋ฅผ ์ฒดํฌํ•œ๋‹ค.
    • ์œ ์ €๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ์˜ํ™” ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด, ํ•ด๋‹น ์˜ํ™”์˜ ์ƒ์„ธ์ •๋ณด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉฐ, ์ด๋Š” ๊ทธ ์˜ํ™”์— ๊ด€์‹ฌ์„ ๋ณด์ธ๋‹ค๋Š” ๋œป์œผ๋กœ 1์ ์„ ๋ถ€์—ฌ
    • ์˜ํ™”์˜ ์ƒ์„ธ์ •๋ณด ํŽ˜์ด์ง€์—์„œ ํ‰์ ๊ณผ ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด, ์˜ํ™”์— ๋”์šฑ ๊ด€์‹ฌ์žˆ์–ดํ•œ๋‹ค๋Š” ๋œป์œผ๋กœ ์ œ์‹œํ•œ ํ‰์ ์— ๋”ฐ๋ผ 1์ ์ด๋‚˜ 2์ ์œผ๋กœ ์ฐจ๋“ฑ ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌ
    • ์ ์ˆ˜ ๋ถ€์—ฌ๋Š” ์ƒ์„ธ ์ •๋ณด ํŽ˜์ด์ง€๋กœ ๊ฐ€๊ฑฐ๋‚˜, ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฌดํ•œํžˆ ๊ฐ€๋Šฅํ•œ๋ฐ, ๋ฌดํ•œํžˆ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋™์•ˆ ์–ป์€ ์ ์ˆ˜์˜ ๋กœ๊ทธ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ค‘์น˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  3. ์œ ์ €์˜ profile๊ณผ ์˜ํ™”์˜ profile ์‚ฌ์ด cosine similarity๋ฅผ ๊ณ„์‚ฐ

    • ๋‘ vector์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์„œ๋กœ ๊ฐ€๊น๋‹ค๋Š” ๊ฒƒ์€ ๋‘ vector๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน์„ฑ์ด ์„œ๋กœ ๋น„์Šทํ•˜๋‹ค๋Š” ๋œป
    • ๋‘ vector์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋„๋กœ cosine similarity๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ด ๊ฐ’์ด ํด์ˆ˜๋ก ๋‘ vector๊ฐ€ ์„œ๋กœ ๋น„์Šทํ•˜๋‹ค๋Š” ๋œป์ด๋‹ค.
    • ์œ ์ €์˜ profile vector์™€ ์˜ํ™”์˜ profile vector์˜ cosine similarity๊ฐ€ ํฌ๋‹ค๋Š” ๋œป์€, ๋‘ vector์˜ ํŠน์„ฑ์ด ์„œ๋กœ ๋น„์Šทํ•˜๋‹ค๋Š” ๋œป์œผ๋กœ, ์œ ์ €๊ฐ€ ํ•ด๋‹น ์˜ํ™”์— ๊ด€์‹ฌ์žˆ์–ดํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค๋Š” ๋œป์ด๋‹ค.
  4. ์•„์ง ๋ณด์ง€ ์•Š์€ ์˜ํ™”์— ๋Œ€ํ•œ ์ถ”์ฒœ

    • ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์˜ํ™”์— ๋Œ€ํ•˜์—ฌ ํŠน์ • ์œ ์ €๊ฐ€ ๊ด€์‹ฌ์žˆ์–ดํ•œ ์ •๋„ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์˜ํ™”๋ฅผ ๋ชจ๋‘ ์ฐพ๋Š”๋‹ค.
    • ์œ ์ €์˜ profile vector์™€ ๊ด€์‹ฌ๋„๊ฐ€ ์ตœ์†Ÿ๊ฐ’์ธ ์˜ํ™”์˜ profile vector์˜ cosine similarity๋ฅผ ๊ตฌํ•˜์—ฌ ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์˜ํ™” ์ˆœ์„œ๋Œ€๋กœ 10๊ฐœ๋ฅผ ์ถ”์ฒœ
  5. ๊ฐ€์žฅ ๋งŽ์ด ์„ ํƒํ•œ ์žฅ๋ฅด๋ฅผ ๊ฐ€์ง€๋Š” ์˜ํ™” ์ถ”์ฒœ

    • ์œ ์ €๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ์ƒ์„ธํŽ˜์ด์ง€๋‚˜ ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•œ ์˜ํ™”์˜ ์žฅ๋ฅด ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค.
    • ๊ฐ€์žฅ ๋งŽ์ด ์„ ํƒํ•œ ์žฅ๋ฅด์™€ ๋™์ผํ•œ ์žฅ๋ฅด๋ฅผ ๊ฐ€์ง€๋Š” ๋ชจ๋“  ์˜ํ™”๋ฅผ ์ฐพ๋Š”๋‹ค
    • ์œ ์ €์˜ profile๊ณผ ํ•ด๋‹น ์žฅ๋ฅด์˜ ์˜ํ™” profile์˜ cosine similarity๋ฅผ ๊ตฌํ•˜์—ฌ ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์˜ํ™” ์ˆœ์„œ๋Œ€๋กœ 10๊ฐœ๋ฅผ ์ถ”์ฒœ
  6. ๊ฐ€์žฅ ๊ด€์‹ฌ์žˆ์–ดํ•œ ์˜ํ™”์™€ ๋น„์Šทํ•œ ์˜ํ™”๋ฅผ ์ถ”์ฒœ

    • ์œ ์ €๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ์ƒ์„ธํŽ˜์ด์ง€๋‚˜ ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•œ ์˜ํ™”์ค‘, ๊ฐ€์žฅ ๊ด€์‹ฌ์žˆ์–ดํ•œ ์˜ํ™”๋ฅผ ์ฐพ๋Š”๋‹ค.
    • ๊ฐ€์žฅ ๊ด€์‹ฌ์žˆ์–ดํ•œ ์˜ํ™”์˜ profile๊ณผ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์˜ํ™”์˜ profile์˜ cosine similarity๋ฅผ ๊ตฌํ•˜์—ฌ ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ˆœ์„œ๋Œ€๋กœ 10๊ฐœ๋ฅผ ์ถ”์ฒœ
  7. ์˜ํ™” ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • ์˜ํ™”์˜ ์ œ๋ชฉ์ด๋‚˜ ๋ฐฐ์šฐ๋ช…์— ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ์˜ํ™” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
    • ํ•ด๋‹น ์˜ํ™”์˜ profile๊ณผ ์œ ์ €์˜ profile์˜ cosine similarity๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ, ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ˆœ์„œ๋Œ€๋กœ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

ํ›„๊ธฐ

๐Ÿค– ๋Œ€ํ˜

  • ํ‰์†Œ์— ์ถ”์ฒœ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋Š”๋ฐ, ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ cosine similarity๋ฅผ ์ด์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—ˆ์ง€๋งŒ ์ด๋ฒˆ ๊ธฐํšŒ์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์ง์ ‘ ํ•ด๋ณด๋‹ˆ ํ‰์†Œ์— ์•„๋ฌด ์ƒ๊ฐ์—†์ด ์ด์šฉํ•˜๋˜ ์›น์‚ฌ์ดํŠธ๋“ค์— ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ˆ˜๋งŽ์€ ๊ณ ๋ ค์‚ฌํ•ญ๋“ค์ด ์ˆจ์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๋ผ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›์ •๋ณด ์ˆ˜์ •์ด๋‚˜ ํƒˆํ‡ด์— ๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ๋Š” ๊ธฐ๋ณธ์ธ๋ฐ, ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ๊ท€์ฐฎ์•„์„œ ๊ตฌํ˜„ ํ•˜๊ธฐ ์‹ซ์—ˆ๋˜ ๊ธฐ์–ต์ด ๋‚ฉ๋‹ˆ๋‹ค.
  • ๋ฒ„๊ทธ ๊ณ ์น˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ์–ด๋–ค ๋ถ€๋ถ„์„ ๊ณ ์น˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ ์ƒ๊ธธ์ง€๋„ ๋ชจ๋ฅด๋‹ˆ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ณ ์ถฉ์„ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐํš๊ณผ ์†Œํ†ต์˜ ์ค‘์š”์„ฑ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํžˆ ๊ธฐํšํ•˜๊ณ  ํŒ€์›๊ณผ ์ž˜ ์†Œํ†ตํ•ด์„œ ๊ทธ๋‚˜๋งˆ ํฐ ๋ฌธ์ œ ์—†์ด ์›ํ•˜๋Š” ๋ฐ”๋ฅผ ์ž˜ ๊ตฌํ˜„ํ•œ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค
  • ํ‰์†Œ์— ๊ฐ™์ด ํŒ€๋˜๊ณ  ์‹ถ์—ˆ๋˜ ๋งˆ์Œ์† 1์ˆœ์œ„ ์นœ๊ตฌ์™€ ํŒ€์„ ์ด๋ฃจ์–ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์˜†์—์„œ ๋„ˆ๋ฌด ๊ณ ์ƒ์‹œํ‚จ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฏธ์•ˆํ•ดโ€ฆ. ์ž˜ํ•ด์ค˜์„œ ๋„ˆ๋ฌด ๊ณ ๋งˆ์›Œ.. ํ•˜๋ฆผ์•„.. ๊ฐ™์ด ํ”„๋กœ์ ํŠธ ํ•ด์„œ ๋„ˆ๋ฌด ์žฌ๋ฐŒ์—ˆ์–ด. ๋‹ค์Œ์—๋„ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค

๐Ÿถ ํ•˜๋ฆผ

  • ํ”„๋กœ์ ํŠธ ์ „์— 1์ธ๋ถ„๋งŒ ํ•ด๋‚ด์ž! ํ•˜๊ณ  ๋‹ค์งํ–ˆ๋Š”๋ฐ 1์ธ๋ถ„์€ ํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๋งค์šฐ ๋ฟŒ๋“ฏํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ randomํ•œ ์˜ํ™”๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•œ movie data๋ฅผ ๋ฐ›์•„ DB์— ์ €์žฅ ์„ฑ๊ณตํ•˜๋˜ ๋‚ ์ด ๊ฐ€์žฅ ๊ธฐ์–ต์— ๋‚ฉ๋‹ˆ๋‹ค. (๋Œ€ํ˜๋‹˜์€ ์ด์ œ ์ผ์‚ฌ์ฒœ๋ฆฌ๋ผ๊ณ  ํ–ˆ์ง€๋งŒ ๊ทธ ํ›„๋กœ ์ˆ˜๋งŽ์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚ฌ๋‹ค. ๐Ÿ™ˆ)
  • ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉฐ ์ •๋ง ๋งŽ์€ ๊ฑธ ๋ฐฐ์› ๋Š”๋ฐ ์ง€๊ธˆ ๊ธฐ์–ต๋‚˜๋Š” ๊ฑด ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋น„์œจ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” CSS ์˜ค๋Š˜ ์—ด์‹ฌํžˆ ๋งŒ๋“  model serailizer์— ๋‹ค๋ฅธ ํ•„๋“œ ์ถ”๊ฐ€ํ•˜๊ธฐ. ๊ทธ๋ฆฌ๊ณ  django์—์„œ ์ฒ˜์Œ ๋งŒ๋‚œ JSON Field ์ •๋„. ์•„, vue์—์„œ๋Š” ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์ •๋ณด๊ฐ€ ๋‹ค ๋‚ ๋ผ๊ฐ€์„œ ๊ผญ vuex๋กœ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋„.
  • ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์œผ๋ฉด ๋ชจ๋ฅผํ…Œ์ง€๋งŒ, CSS ๋””ํ…Œ์ผ์— ์‹ ๊ฒฝ์„ ๋งŽ์ด ์ผ๋‹ค. ๋ฐ˜์‘ํ˜• web๊ตฌํ˜„์„ ์œ„ํ•ด์„œ ๊ณ„์† ํ™”๋ฉดํฌ๊ธฐ๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ํ™•์ธํ–ˆ๋‹ค. ํŠนํžˆ navbar ๊ฐ™์€ ๊ณณ์— ๋””ํ…Œ์ผ์„ ๋‹ด์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค. ๐Ÿ˜†
  • ๋Œ€ํ˜๋‹˜๊ป˜ ์งœ์ฆ์„ ๋„ˆ๋ฌด ๋งŽ์ด ๋‚ด์„œ ์ฃ„์†กํ•˜๋‹ค. ์˜†์—์„œ ์ˆ˜๋งŽ์€ ์นญ์ฐฌ์œผ๋กœ ๋‚˜๋ฅผ ํž˜๋‚˜๊ฒŒ ํ•œ, ์ตœ๊ณ ์˜ ํŒŒํŠธ๋„ˆ ๐Ÿ‘
  • Special Thanks To : ๐Ÿน

About

๐Ÿ†์ตœ์šฐ์ˆ˜ ํ”„๋กœ์ ํŠธ๐Ÿ† ์‚ผ์„ฑ ์ฒญ๋…„ SW ์•„์นด๋ฐ๋ฏธ(SSAFY) 8๊ธฐ ๊ด€ํ†ตํ”„๋กœ์ ํŠธ ๋น„์ „๊ณต์ž ์˜ํ™” ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ์›น์‚ฌ์ดํŠธ


Languages

Language:Vue 49.1%Language:Python 29.0%Language:JavaScript 13.4%Language:CSS 8.1%Language:HTML 0.4%