欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

推荐系统:嵌入式召回--<2>I2I 召回

最编程 2024-04-29 07:12:20
...
i2i是不考虑user因素的。
“比如一个人喜欢买各种X类型的手机,那我从所有物品的Embedding中找跟X类型手机距离近的物品推荐给这个人即可”。所以I2I算法更多地是考虑如何求物品间的相关性,并表示成Embedding。

单纯使用 fasttext+faiss 就可以实现好几路召回算法,比如 :iten2vec,media2vec,tag2vec,loc2vec,title2vec。

tag2vec:
   就是利用词向量去做召回,比如可以用文章的标签向量来表示这篇文章。
   如果一个文章有 4 个 tag(keywords: “蒋凡;离婚;张大奕;网红张大奕”)
   我们的经验是取前 3 个 tag,做等权重向量相加,效果最好。
   当然了这不是唯一的做法。
   关于 embedding 向量的用法有很多种比如,等权重相加,加权相加,取平均,取最大等。

得到文章向量之后就是典型的 item2item 的计算过程了,
利用 faiss 计算每篇文章的相似文章,比如为每一篇文章查询询出 1000 篇候选文章后,按相似度作一个截断,比如 cosin sim<0.6 舍去,对余下的文章,再利用文章的其他特征比如热度,CTR,新鲜度作一个加权,一路最简单的 tag2vec 召回就诞生了。

其他召回和这个套路类似,就是训练 embedding 向量的时候,略有差异。
tag2vec 是训练中文词语的向量,而 item2vec 是训练文章 ID(aid)所对应的向量,media2vec 训练的是文章的作者 ID(mid)所对应的向量,loc2vec 是训练地域名称所对应的向量,title2vec 是用 LSTM 训练得到的文章标题向量,doc2vec 是用 bert 计算出的文章正文(或者摘要)的向量。entity2vec 是利用我们自己构建的知识图谱通过 transE 得到的