推荐系统之基于word2Vec的推荐案例
基于ml-latest-small的基于TF-IDF的特征提取
词向量
- 用向量来表示词语可以表示语义层面的含义
- 如果用word2vec模型创建的词向量,两个词向量相似度比较高,说明这两个词是近义词
- 词向量作用把含义相近的判断转换成向量的相似度计算
- 使用gensim Word2Vec模块训练词向量模型
- sentences = list(movie_profile[‘profile’].values) #准备所有用来训练词向量模型的文本
- model = gensim.models.Word2Vec(sentences,window=3,min_count = 1,iter = 20) #参数1 文本 参数2 window 观察上下文关系的窗口长度 min_count 训练模型时要保留下的词语出现的频率 iter 迭代次数
- 通过词向量模型找到topn相似词
- model.wv.most_similar(positive=[‘要找到相似词的词语’],topn = 10)
- 文档向量
- from gensim.models.doc2vec import Doc2Vec,TaggedDocument
- documents = [TaggedDocument(words,[movie_id]) for movie_id,words in movie_profile[‘profile’].iteritems()] #训练模型并保存 通过向量来表示一篇文档 一篇文档对应一个电影 向量的相似度代表 电影的相似度
- model = Doc2Vec(documents,vector_size=100,window=3,min_count=1,workers=4,epochs=20)
- words = movie_profile[‘profile’].loc[6]
- inferred_vector = model.infer_vector(words) #传入电影的标签 找到电影文档所对应的向量
- model.docvecs.most_similar([inferred_vector],topn=10) #找到最相似的n个向量
数据来源:
https://grouplens.org/datasets/movielens/
源码详见:
https://gitee.com/chenjialun16/recommendation_system