Skip to content

Latest commit

 

History

History
79 lines (61 loc) · 3.26 KB

README.md

File metadata and controls

79 lines (61 loc) · 3.26 KB

밀리루틴 AI

안녕하세요! 밀리루틴 팀의 AI README입니다.
사용자가 좋아할만한 루틴을 추천하는 모델을 제작하고 있어요.

☝️ 프로젝트 실행 방법

$ cd AI/
$ /bin/python3 w2vsqlver.py # OOV(out of vocabulary) 문제 해결을 위해 ko.bin 모델에 루틴 단어 추가 한 kosql.bin 모델 학습
$ /bin/python3 d2v.py # d2v_tensor.pt에 루틴 벡터 저장
$ /bin/python3 save_r12n.py 0 301 # 유저 1번부터 301번 추천 루틴 r12n.json에 저장

👋 AI를 만든 사람들

이름 역할 이메일 깃허브 ID
이동현 모델 제작 dong97338@gmail.com

📚 기술 스택

  • Python 3.8.10 : gensim 3.8.3과의 호환 이슈
  • NLP
    • torch 1.6.0
    • gensim 3.8.3 : ko.bin과의 호환 이슈로 이전 버전 사용
  • 전처리
    • konlpy 0.5.2 : Komoran
    • py-hanspell 1.1
    • emoji 1.7.0 : 멤버함수 get_emoji_regexp()가 최신버전에서 사용되지 않음

API

  1. GET /?no=17 : 17번 유저에 대한 r12n 10개 반환
  2. GET /?no=17$refresh=1 : 17번 유저가 새로고침 1번 했을 때, r12n2 10개 반환
  3. GET /?no=17&count=10 : 이렇게 count를 특정할 수도 있다.

🤖 모델 설명

Pre-trianed word vector: 스킵 그램(Skip gram)


- 중심 단어로 주변 단어를 예측

스그1

Pre-trianed word vector: Word2Vec


- 중심단어에 해당하는 원 핫 벡터와 임베딩 벡터를 곱해 중심단어에 해당하는 워드 벡터를 계산

워드1

Pre-trianed word vector: Negative sampling


- 계산량을 줄이기 위해 모든 단어 중 일부를 랜덤으로 골라 negative case로 훈련
- 예측 값과 실제 값의 차이로 계산한 손실함수 값을 최소화

워드2

루틴 임베딩과 유저 임베딩 계산


- 루틴 임베딩 계산

루벡

  • 유저 임베딩 계산

유벡

추천 점수 계산


- 유저 임베딩과 모든 루틴 임베딩 사이의 코사인 유사도를 계산하여 유사도가 높은 순으로 추천

유사도