基于内容和用户画像的个性化推荐,有两个实体:内容和用户。需要有一个联系这两者的东西,即为标签。内容转换为标签即为内容特征化,用户则称为用户特征化。
因此,对于此种推荐,主要分为以下几个关键部分:
- 标签库
- 内容特征化
- 用户特征化
- 隐语义推荐
综合上面讲述的各个部分即可实现一个基于内容和用户画像的个性化推荐系统。如下图所示:
标签库
标签是联系用户与物品、内容以及物品、内容之间的纽带,也是反应用户兴趣的重要数据源。标签库的最终用途在于对用户进行行为、属性标记。是将其他实体转换为计算机可以理解的语言关键的一步。
标签库则是对标签进行聚合的系统,包括对标签的管理、更新等。
一般来说,标签是以层级的形式组织的。可以有一级维度、二级维度等。
标签的来源主要有:
- 已有内容的标签
- 网络抓取流行标签
- 对运营的内容进行关键词提取
对于内容的关键词提取,使用结巴分词 + TFIDF即可。此外,也可以使用TextRank来提取内容关键词。
内容特征化
内容特征化即给内容打标签。目前有两种方式:
- 人工打标签
- 机器自动打标签
针对机器自动打标签,需要采取机器学习的相关算法来实现,即针对一系列给定的标签,给内容选取其中匹配度***的几个标签。这不同于通常的分类和聚类算法。可以采取使用分词 + Word2Vec来实现,过程如下:
- 将文本语料进行分词,以空格,tab隔开都可以,使用结巴分词。
- 使用word2vec训练词的相似度模型。
- 使用tfidf提取内容的关键词A,B,C。
- 遍历每一个标签,计算关键词与此标签的相似度之和。
- 取出TopN相似度***的标签即为此内容的标签。(N这里取3)
用户特征化
用户特征化即为用户打标签。通过用户的行为日志和一定的模型算法得到用户的每个标签的权重。
- 用户对内容的行为:点击、不敢兴趣、浏览
- 对内容发生的行为可以认为对此内容所带的标签的行为
- 用户的兴趣是时间衰减的,即离当前时间越远的兴趣比重越低。时间衰减函数使用1/[log(t)+1], t为事件发生的时间距离当前时间的大小
- 要考虑到热门内容会干预用户的标签,需要对热门内容进行降权。使用click/pv来降低热门内容的权重
隐语义推荐
有了内容特征和用户特征,可以使用隐语义模型进行推荐。这里可以使用其简化形式,以达到实时计算的目的。
用户对于某一个内容的兴趣度(可以认为是CTR):
其中i=1…N是内容具有的标签,m(ci)指的内容c和标签i的关联度(目前都为1),n(ui)指的是用户u的标签i的权重值,q©指的是内容c的质量,暂时使用点击率表示。