프로젝트

[ 프로젝트 ] 무신사 데이터를 이용한 추천시스템_Word2vec

박찬영 2021. 6. 29. 17:59

저번 글에 이어서 무신사 데이터를 이용한 추천 시스템 프로젝트입니다. 

계속해서 컨텐츠 메타 데이터를 이용합니다. 

프로젝트 개요

이번에는 Word2Vec 기법을 활용하여 컨텐츠 기반 추천 결과를 만들어보겠습니다. 

 

데이터와 전처리 과정은 저번 글 TF_IDF를 참고해주세요.

 


이 역시 tag의 단어들을 이용하여 진행합니다. 

word=[]
for words in DF.tag:
    word.append(words)
word2vec=Word2Vec(sentences=word,window=5,sg=1,min_count=1,vector_size=100,epochs=100)
# 단어 벡터 평균구하기
def vectors(embedding):
    word_embedding=[]
    dec2vec=None
    count=0
    for word in embedding:
        try : 
            # word에 해당하는 단어를 워드투백에서 찾아 리스트에 붙힘
            # 100차원으로 형성됨
            word_embedding.append(word2vec.wv[word]) 
            count+=1
        except : continue
    #print('='*30,"word_embedding1","="*30)
    #print(word_embedding)
    
    word_embedding2=np.array(word_embedding)
    #print('='*30,"word_embedding2","="*30)
    #print(word_embedding2)
    
    v=word_embedding2.sum(axis=0)  
    print(v)
    
    if type(v)!=np.ndarray:
        return np.zeors(100)
    
    return(v/count)
wordvec=[vectors(x) for x in word]
# 1. 코사인유사도
w2v_sim=cosine_similarity(wordvec,wordvec)
# 2. 유클리디언 유사도
w2v_euc=euclidean_distances(wordvec,wordvec)
# 3. 맨하탄 유사도 
w2v_man=manhattan_distances(wordvec,wordvec)

Word2Vec추천 결과