"""
从word2vec到song2vec
说起来word2vec,其实就是把词映射成一定维度的稠密向量,同时保持住词和词之间的关联性,主要体现在(欧式)距离的远近上。那么问题来了,word2vec为什么能够学习到这样的结果?因为我们相信“物以类聚,人以群分” “一个人的层次与他身边最近的一些人是差不多的”同样的考虑,我们是不是可以认为,一个歌单里的歌曲,相互之间都有一定的关联性呢?就像句子中的词一样。答案是,是的!咱们来写个程序跑一把。这样就可以发现每首歌曲的向量可以有一定的关联行
这样的例子还可以用在对用户购买行为的分析  商品之间的相似度计算 浏览文档之间的相似性
买了这个用户还买了这个
看了这个的用户还看了这个
等等
...............
观察的是一种贡献的关联性  有一定的联系
"""
"""
从word2vec到song2vec
我们把歌曲的id序列取出来,类比于分完词后的句子,送到word2vec中去学习一下,看看会有什么效果。
"""
#coding: utf-8
import multiprocessing
import gensim
import sys
from random import shuffledef parse_playlist_get_sequence(in_line, playlist_sequence):song_sequence = []contents = in_line.strip().split("\t")# 解析歌单序列for song in contents[1:]:try:song_id, song_name, artist, popularity = song.split(":::")song_sequence.append(song_id)except:print ("song format error")print (song+"\n")for i in range(len(song_sequence)):shuffle(song_sequence)playlist_sequence.append(song_sequence)def train_song2vec(in_file, out_file):#所有歌单序列playlist_sequence = []#遍历所有歌单for line in open(in_file):parse_playlist_get_sequence(line, playlist_sequence)#使用word2vec训练cores = multiprocessing.cpu_count()print ("using all "+str(cores)+" cores")print ("Training word2vec model...")#训练词向量 model = gensim.models.Word2Vec(sentences=playlist_sequence, size=150, min_count=3, window=7, workers=cores)print ("Saving model...")model.save(out_file)song_sequence_file = "./recommend/163_music_playlist.txt"
model_file = "./recommend/song2vec.model"
train_song2vec(song_sequence_file, model_file)
"""
模型已经训练完了,咱们来试一把预测,看看效果这个预测的过程,实际上就是对某首歌曲,查找“最近”的歌曲(向量距离最近的歌曲)
"""
import pickle as pickle
song_dic = pickle.load(open("./recommend/song.pkl","rb"))
model_str = "./recommend/song2vec.model"
model = gensim.models.Word2Vec.load(model_str)
for song in list(song_dic.keys())[:10]:print (song, song_dic[song])"""
414691355 Lost (As I Am)    Superwalkers
410802620 Next Escape   Viceroy
419549837 Silhouette    Goldroom
419485281 Feel My Love  Jake Quickenden
412016420 Hit It    Teasley
421160284 Catch U   DEAMN
420513422 Breathe It In Cyrus Thomas
420500507 Tropical Suneo    Alex Parker
421203274 New Age   Softer Still
416933311 Moments   KEV
"""song_id_list = list(song_dic.keys())[1000:1500:50]
for song_id in song_id_list:result_song_list = model.most_similar(song_id)print (song_id, song_dic[song_id])print ("\n相似歌曲 和 相似度 分别为:")for song in result_song_list:print ("\t", song_dic[song[0]], song[1])print ("\n")"""
729565 Under cloud    (东方永夜抄より “竹取飞翔 ? Lunatic Princess”)   FELT相似歌曲 和 相似度 分别为:アクアテラリウム 森罗万象 0.8966339230537415Taibhse an sliabh    大瀬良あい 0.8852787613868713Blame   Lyn-A 0.8824152946472168Childhood Dreamer   GET IN THE RING 0.873694658279419寂しがりやのクイックシルバー GET IN THE RING 0.8717769980430603月見草   暁Records 0.8646026253700256幽闇に微睡むは  小田ユウ 0.8639441132545471常世想兼神    UNDEAD CORPORATION 0.8619289994239807With affection 3L 0.8580507040023804Sweets Time    3L 0.8540365695953369709032 竹取飞翔 MIYABI Mix - remix Colorful Cube相似歌曲 和 相似度 分别为:竹取飞翔 ~ Lunatic Princess ad libitum records 0.9999333620071411竹取飞翔   Dark PHOENiX 0.9998311996459961Help me, ERINNNNNN!! -Cranky remix-  ビートまりお 0.9998184442520142カナデレイン TaNaBaTa 0.9996563792228699SUPER KAGUYA 狐夢想屋 0.9994230270385742暴投飞翔 ~ Lunatic Wild Pitch    IOSYS 0.9993882179260254竹取飞翔 ~ Lunatic Princess Silver Forest 0.9992026090621948竹取飛翔 ~ Lunatic Princess (Ryu☆Remix) Ryu☆ 0.9988499283790588竹取飛翔 Dark PHOENiX 0.998734712600708竹取飛翔 ~ Lunatic Princess(2nd Spell -Fullmoon-より)    彩音 ~xi-on~ 0.9985185861587524470573539 My Type  The Chainsmokers相似歌曲 和 相似度 分别为:Don't Say   The Chainsmokers 0.8290920257568359Inside Out (Rain Man Remix)  Rain Man 0.812583863735199Afrojack - New York City(Mars Mashup) Mars Basement 0.7914856672286987Roses (Disco's Over Remix) Disco's Over 0.7617831230163574Kanye (Dave Edwards Remix)  The Chainsmokers 0.7231058478355408The Chainsmokers - #Selfie ( Forkyrie Remix )    The Chainsmokers 0.7027155756950378Young    The Chainsmokers 0.6911182999610901Wake Up Alone    The Chainsmokers 0.6810683012008667Paris    The Chainsmokers 0.6792749166488647Let You Go (Zoree Remix) Zoree 0.6714489459991455426291161 Closer (Gill Chang Remix) Gill Chang相似歌曲 和 相似度 分别为:Kiss Me    PARKGOLF 0.9209527969360352Escape (Price & Takis Remix) Price & Takis 0.9096405506134033Freeze time (Price & Takis Remix)   Price & Takis 0.7876445055007935Until You Were Gone (Skrux & Saturn Remix)  Skrux 0.7755498886108398Walking Away (Airia Remix)  Airia 0.7676370739936829Setting Fires (Boxinbox & Lionsize Remix)   The Chainsmokers 0.7563592791557312Until You Were Gone (Reez Remix) The Chainsmokers 0.755323588848114It Won't Kill Ya The Chainsmokers 0.7314074635505676Let You Go (Zhe Amazing Fattys Remix)    Zhe Amazing Fattys 0.707085132598877Again   Kasbo 0.702177345752716129343808 Kanye (Don Diablo Remix)   The Chainsmokers相似歌曲 和 相似度 分别为:Cell Don Diablo 0.774357259273529Fade Away (Round & Round) (Laidback Remix)  Don Diablo 0.7663773894309998Mezelluf   Don Diablo 0.7607712745666504Animale (VIP Mix)  Don Diablo 0.7402520775794983Praise You (Chill Mix) (Extended Mix)  King Arthur 0.7195149064064026High On You (Extended Mix)    EDX 0.6837545037269592Never Gonna Give Up   King Arthur 0.6750638484954834Tes Stephraenze (Tigerskin Remix) AKA AKA 0.6671854257583618Brain Washer  Will Sparks 0.6605836153030396Fester Skank (Don Diablo Remix)   Lethal Bizzle 0.649557054042816233756740 Good Intentions (Unlike Pluto Remix)   The Chainsmokers相似歌曲 和 相似度 分别为:Inside Out (HYPNOTIDE Remix) HYPNOTIDE 0.7829695343971252Something Just Like This (Edeema X FatMeow Ft. BTWN US Remix)   Edeema 0.7703937888145447Last Day Alive The Chainsmokers 0.7598980069160461Bloodstream  The Chainsmokers 0.7459814548492432Paris (Pegboard Nerds Remix) The Chainsmokers 0.7135136127471924Honest   The Chainsmokers 0.7131988406181335Aftertaste (Original Mix)    Cosmo 0.7083819508552551Wake Up Alone   The Chainsmokers 0.7053950428962708Don't Say   The Chainsmokers 0.7009828090667725Waterbed The Chainsmokers 0.687341988086700429716010 Pumpin Blood (The Chainsmokers Remix)   NoNoNo相似歌曲 和 相似度 分别为:Something Just Like This (Nasko Remix) Nasko 0.9590945839881897Something Just Like This (Edeema X FatMeow Ft. BTWN US Remix)   Edeema 0.9247236251831055Sleeping With A Friend (The Chainsmokers Radio Remix)  Neon Trees 0.9230524897575378Inside Out (HYPNOTIDE Remix)   HYPNOTIDE 0.900833785533905Let You Go (Thero Remix) Thero 0.8415964841842651Love And Roses  DJ Trademark 0.8346286416053772Good Intentions (DallasK Remix)  The Chainsmokers 0.8218202590942383New York City (Totally Normal Remix) Totally Normal 0.8193957209587097Jealous (I Ain't With It) (The Chainsmokers Remix)    Chromeo 0.8182200193405151The One (FatMeow Remix)   FatMeow 0.811626911163330126481830 Gone The Exploration相似歌曲 和 相似度 分别为:8 Am  Suicide Sunset 0.9440059661865234when you wake up i'll be gone mimzya 0.9047982692718506I WROTE THIS SONG 4 U (LIL HEARTBREAK REMIX)   lil heartbreak 0.8523495197296143she just wants to be loved savior 0.8456398248672485MISERY OVERDOSEBOYS 0.8199180364608765ℒℴѵℯ C∆nn∆bis 0.7892667055130005Kill Yourself (Part III) $uicideboy$ 0.7734916806221008I'll Change  Keeper 0.7556355595588684floating along Shinobi 0.7537088394165039Hey, Sorry About Your Radio   nadiak 0.7429133653640747454069614 lost, with u lil yuri相似歌曲 和 相似度 分别为:Get High DEATH+ 0.9772735238075256signing out (prod. color hue & imdepression)  Poppy Tears 0.9652343392372131My Bloody Valentine   DURANGO 0.935904324054718Vibe (Prod. Paulie)    lil peep 0.9245784282684326nah its not too bad  mathbonus 0.9129632115364075Goodbye (prod. Totinoboy)   E L O I M M E T H 0.9099273681640625Got you morgan roberts 0.9096885919570923Just Like Me   skean 0.9062730073928833can i walk you home one last time   RAHK GEE 0.900177538394928Affection ✶ YUNG ✞ DEATH ✶ 0.8994686603546143434974175 now you're gone   Color Hue相似歌曲 和 相似度 分别为:i miss you  bb 0.8271276950836182:) Slon 0.774053692817688Wouldn't Mind Having You Here    BWL 0.766472339630127fine (prod. killedmyself)  Atlas 0.7463758587837219between us two  aleksia 0.7422382831573486eleven thirty-six GRXXXVES 0.7350780963897705you are everything i'm not  Scum 0.7272778749465942silk killstation 0.7263938188552856you cried as loud as you could but nobody heard   WRAITH 0.7258841395378113Anxiety    The Gnarly Neighbors 0.719833493232727​
​
"""
进一步思考"""
"""
进一步思考
所以我们用word2vec学会了哪些歌曲和哪些歌曲最接近。
我们来思考一些很现实同时又很难解决的问题。比如:
1)冷启动问题
我们经常会遇到冷启动的问题,比如没有任何信息的歌曲,我们如何对它做推荐呢?
如果是歌手发行的新歌曲,我们怎么进行推荐呢?
如果我听完(并收藏)了一首很冷门的歌,怎么进行推荐呢?
我们知道新歌(或者小众的歌)是非常难和其他的歌关联上的,我们有的信息太少了(很少有用户在它上面发生行为)。
1.1 一种解决办法当然是推荐热门的歌曲,但是其实没从个人兴趣出发,我们知道这并不是最好的办法,并没有太大的卵用。
1.2 我们把问题的粒度放粗一点,用同样的思路,比如一个可考虑的解决方案是,我们把歌曲的粒度上升到对应的歌手,
把刚才的song_list替换成artist_list,重新用word2vec建模,这样我们可以得到和一个歌手最相关(接近)的歌手,
再推荐这个歌手最热门的歌曲,相对1.1的方法针对性强一些。
商品 => 品类
品类list => 送到word2vec里面去学习
[上衣,上衣,上衣,牛仔裤,牛仔裤,连衣裙...]
2)用户兴趣预测问题
我们刚才完成的功能,类似酷狗音乐和网易音乐里针对一首歌的“相似音乐”,那么问题又来了,
如果我们现在要对一个user用这套song2vec的方式推荐,我们怎么做呢?
​每个人的兴趣都是有时效性的,这意味着说,3年前我喜欢王菲的歌,去年我喜欢五月天的歌,
而今年我可能就改摇滚路线,喜欢汪峰的歌了。
每一首歌的热度也是不一样的,有一些热门的歌,如果用户能喜欢,当然是首选
那么,我们来做一个粗暴一点点的处理,把这2个维度拉进来,一起来针对一个用户做推荐。
​**把每个用户喜欢(收藏)过的歌,沿着时间轴排好,同时由近到远给不同的衰减因子(比如最近一首歌是1,
前一首是0.98,再前一首是0.98^2,以此类推...),同时我们针对不同的歌曲热度,给定不同的推荐因子(比如热度100的是1,热度80的是0.9...),
每一首歌都可以拿回一个song2vec的推荐列表和对应的相似度,对相似度以时间衰减因子和热度权重进行加权,最后的结果排序后,展示给用户。
"""

gensim从word2vec到song2vec 在推荐领域的应用相关推荐

  1. 【新闻文本分类】(task4)使用gensim训练word2vec

    学习总结 (1)学习训练Word2Vec 词向量,为后面task搭建 TextCNN 模型.BILSTM 模型训练预测作准备.Word2vec 的研究中提出的模型结构.目标函数.负采样方法.负采样中的 ...

  2. python根据词向量计算相似度_如何使用gensim的word2vec模型和python计算句子相似度...

    如何使用gensim的word2vec模型和python计算句子相似度 根据Gensim Word2Vec,我可以使用gensim包中的word2vec模型来计算2个单词之间的相似度. 例如 trai ...

  3. Word2vec原理浅析及gensim中word2vec使用

    本文转载于以下博客链接:Word2vec原理浅析:https://blog.csdn.net/u010700066/article/details/83070102: gensim中word2vec使 ...

  4. gensim的word2vec如何得出词向量(python)

    首先需要具备gensim包,然后需要一个语料库用来训练,这里用到的是skip-gram或CBOW方法,具体细节可以去查查相关资料,这两种方法大致上就是把意思相近的词映射到词空间中相近的位置. 语料库t ...

  5. 用gensim学习word2vec

    20211224 输入为分词列表 import gensim # Train Word2Vec model model = gensim.models.Word2Vec(all_data_test[' ...

  6. 深度学习在推荐领域的应用

    深度学习在推荐领域的应用 2017-05-31 20:50youtube/微博/社交 作者: 吴岸城,菱歌科技首席算法科学家,致力于深度学习在文本.图像.预测推荐领域的应用.曾在中兴通讯.亚信(中国) ...

  7. 自然语言处理库——Gensim之Word2vec

    Gensim(http://pypi.python.org/pypi/gensim)是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达. 主要用于 ...

  8. 深度学习 —— 使用 gensim 实现 word2vec

    在自然语言处理领域中,将单词(words)或词语(phases)映射到向量空间(vector space)中可以很容易就得到单词之间的相似度,因为向量空间中两个向量的相似度很容易求得,比如余弦相似度. ...

  9. Gensim:word2vec(jieba分词,去停用词)

    参考https://www.cnblogs.com/pinard/p/7278324.html 计算词向量 gensim计算词向量需要执行三个步骤 model=gensim.models.Word2V ...

最新文章

  1. 机会!搞科研的同伴注意了,再忙也要看一下!
  2. LeetCode-240 Search a 2D Matrix II
  3. python计算一个数的个各位上的数字之和
  4. 有些人总是在进步,因为他随时懂得回溯、调试、纠错,进而提升自己
  5. operator() error
  6. php smarty数学函数,smarty详解二:从文件读取变量、保留变量、数学计算、内建函数...
  7. 极客大学架构师训练营 系统架构 一致性哈希 Consistent Hashing 第五次作业
  8. jquery进度条组件
  9. 蓝牙车库门禁卡原理及实践
  10. 计算机电源检测软件,电脑电源检测工具
  11. “己欲立而立人,己欲达而达人。”
  12. C#实现检测打印机状态(包括打印机是否缺纸、打印队列任务数)
  13. 慕课软件工程(第五章.初始模块结构图精化的原则)
  14. eeepc linux 软件管理,Linux_为EeePC增添活力 EeePC安装Ubuntu预览,虽然Eee PC运行基于Xandros的Linux - phpStudy...
  15. stm32下OLED屏的应用
  16. CorelDRAW插件-CPG插件开发-环境搭建-VS2017-TLB文件-CDR插件
  17. c# autoscroll_禁用Firefox中令人讨厌的AutoScroll功能
  18. 使用终端模拟器通过wifi连接eclipse
  19. 还不会用Vue写出的excel表实现pdf导出吗?来,豪豪手把手教你
  20. 英语、日语学习网站软件

热门文章

  1. openstack实例之间大报文分片不生效
  2. 常⻅锁策略(1. 乐观锁 悲观锁2. 公平锁 非公平锁3. 读写锁4. 可重入锁 自旋锁)
  3. Docker Swarm 学习
  4. 怎么把联通ADSL上网的家庭网关当做无线路由器使用?
  5. 企业招聘管理系统哪家好?应该如何选择
  6. kali删除启动栏图标的方法
  7. 对box-sizing border-box的理解:
  8. python数据处理——同一行或同一列的错位相减法
  9. 从最简单的源代码开始,切勿眼高手低---(第一波)
  10. uniapp 解决ios软键盘弹出input框被遮住或光标不在input框内