本文是在《推荐系统实践》(项亮)的基础上总结,主要介绍UGC标签的应用。
0.推荐系统的主要方法
推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介。目前流行的推荐系统基本上通过以下3种方式联系用户兴趣和物品:
- 利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品
- 利用和用户兴趣相似的其他用户,给用户推荐那些和他们兴趣爱好相似的其它用户喜欢的物品
- 通过一些特征联系用户和物品,给用户推荐那些具有用户喜欢的特征的物品。这里的特征有不同的表现方式,可以是物品的属性集合,也可以是隐语义向量。本文主要介绍标签系统。

1.标签应用的分类
主要分两类
- 让作者或者专家给物品打标签
- 让普通用户给物品打标签,即UGC标签应用,既描述了用户的兴趣又将表达了物品的语义。
本文主要讨论UGC标签应用
2.UGC标签系统的应用
以豆瓣为例,介绍
-
下图展示了豆瓣图书的所有标签,有分类浏览和热门标签两种组织方式
豆瓣图书标签
-
以搜索《数据挖掘导论》一书为例

- 以点击“想读”功能按钮为例,会弹出如下的对话框。可以看到页面上列出了
“我的标签”(即我曾经用过的标签)、
“常用标签”(该书最常被打上的标签),准确地概括了这本书的内容信息
最上面的“标签”一栏,用户可以选择自己手动输入,也可以选择下面的“我的标签”或者“常用标签”中的某个标签进行标注

3.标签系统中的推荐问题
标签系统中的推荐问题主要有两个:
- 如何利用用户打标签的行为为其推荐物品(基于标签的推断)?
- 如何在用户给物品打标签时为其推荐适合该物品的标签(标签推荐)?
为了研究上面的两个问题,首先需要解决下面3个问题:
- 用户为什么要打标签?
- 用户怎么打标签?
- 用户打什么样的标签?
3.1 用户为什么要打标签
- 社会维度,有些是给内容上传者使用的(便于上传者组织自己的信息);有些则是给广大用户使用的(便于帮助其他用户找到信息)
- 功能维度,有些标注用于更好地组织内容,方便用户将来的查找;有些标注用来传达某种信息,比如照片的拍摄时间和地点等
3.2用户如何打标签
标签的流行度分布呈现非常典型的长尾分布
(定义,一个标签被一个用户使用在一个物品上,它的流行度就加1)
基于Delicious数据集,德国研究人员得到的标签流行的分布如下:
(横坐标:流行度k,纵坐标:数据集中流行度为k的标签总数)

3.3用户打什么样的标签
用户在看到一个物品时,我们希望他打的标签是能够准确描述物品内容属性的关键词,但用户往往不是按照我们的想法操作,而是可能会给物品打上各种奇奇怪怪的标签。所以需要后期的人工编辑。
以Hulu视频网站为例,它将电视剧的标签分成了如下几类:

- 类型,表示电视剧的类别,比如《豪斯医生》属于医学剧情片
- 时间,主要包括电视剧发布的时间,有时也包括电视剧中时间发生的时间,比如20世纪90年代
- 人物,主要包括电视剧的导演、演员和剧中重要人物
- 地点,剧情发生的地点,或者视频拍摄的地点等
- 语言,这部电视剧使用的语言
- 奖项,这部电视剧获得的相关奖项
- 其他,包含不能归类到上面各类中的其他所有标签
以豆瓣读书为例,其标签分类如下

4.基于标签的推荐系统
4.1最简单的算法
- 统计每个用户最常用的标签
- 对于每个标签,统计被打过这个标签次数最多的物品
- 对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门物品推荐给这个用户
数据稀疏性:对于新用户或者新物品来说,其标签数量可能过少,需要对标签进行扩展,即对每个标签找到和它相似的标签,也就是计算标签相似度。
标签清理:
- 并不是所有标签都能反应用户的兴趣。比如,在一个视频网站中,用户可能对一个视频打了“不好笑”的标签,但不能认为用户对“不好笑”有兴趣,并给其推荐这个类型的视频。
- 将标签作为推荐解释。这对标签的质量要求就很高。这些标签不能包含没有意义的停止词或者表示情绪的词,其次这些推荐解释里不能包含很多意义相同的词语
4.2基于标签的推荐解释
基于标签的推荐其最大好处是可以利用标签做推荐解释。
以豆瓣读书的个性化推荐界面为例:

豆瓣读书推荐结果包括两部分:
- 标签云,表示用户的兴趣分布。标签的尺寸越大,表示用户对这个标签相关的图书越感兴趣,可以看出“编程、机器学习、软件开发”是当前用户的兴趣点
- 图书列表,对应标签下的图书推荐。
这样组织界面的好处:
- 提高了推荐结果的多样性,用户的兴趣在长时间内是很广泛的,但在某一天却很具体。想在某一天击中用户当天的兴趣是很困难的,但通过标签云展示了用户的所有兴趣,让用户自由选择,更容易满足用户的多样性顺序;
- 标签云提供了推荐解释功能,用户通过这个界面可以知道豆瓣给自己推荐的每一本书都是基于它认为自己对某个标签感兴趣。对于每个标签,用户总能通过回忆自己之前的行为知道自己是否真的对这个标签感兴趣。
5.给用户推荐标签
前面提到了豆瓣读书的标签系统,可以看到它给用户推荐了标签。
5.1为什么给用户推荐标签
- 方便用户输入标签,让用户从键盘输入标签无疑会增加用户打标签的难度,这样很多用户不愿意给物品打标签,所以就需要一个辅助工具来减小用户打标签的难度,从而提高用户打标签的参与度。
- 提高标签质量,同一个语义不同的用户可能用不同的词语来表示,这些同义词会是词表变得很庞大,而且会是计算相似度不太准确。而使用推荐标签时,可以对词表进行选择,首先保证词表不出现太多的同义词,同时保证出现的词都是一些较热门、有代表性的词。
5.2如何给用户推荐标签
列举比较简单的4种方法:
- 给用户推荐整个系统里最热门的标签(方法太简单了)
- 给用户u推荐物品i上最热门的标签
- 给用户u推荐他自己经常使用的标签
- 前面两种的融合,通过一个系数将上面的推荐结果线性加权,然后生成最终的推荐结果。
用户标签数据暂时写到这~~
微信公众号:
产品新人学习路 ( i-pm-road),欢迎交流
(๑•ᴗ•๑)

网友评论