推荐系统——利用用户标签数据

 

前言

       推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介。这些媒介在前面的博文中也提到过,一种是利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品;另一种是利用和用户兴趣相似的其他用户,给用户推荐那些和他们兴趣 爱好相似的其他用户喜欢的物品;还有一种就是通过一些特征(比方说电影的导演、演员、评分、类型等关键词)联系用户和物品,给用户推荐那些具有用户喜欢的特征的物品。下面就以特征中大家最为熟悉的一种­­­——标签,作为分析,这些特征是怎么样去联系用户的兴趣和物品的。

                             

                                   本图根据《推荐系统实战》一文中的介绍所绘制,本图的著作权归原著作权人所有。

       我们先来看看维基百科的定义,标签是一种无层次化结构、用来描述信息的关键词,它可以用来描述物品的语义。根据给物品打标签的人的不同,标签应用一般分为两种:一种是让作者或者专家给物品打标签;另一种是让普通用户给物品打标签,也就是UGC(User Generated Content,用户生成的内容)的标签应用。UGC的标签系统是一种表示用户兴趣和物品语义的重要方式。当一个用户对一个物品打上一个标签,这个标签一方面描述了用户的兴趣,另一方面则表示了物品的语义,从而将用户和物品联系了起来。

参考材料:维基百科对标签的定义

 

生成这样的推荐系统主要解决两个问题

  • 如何利用用户打标签的行为为其推荐物品 ?
  • 如何在用户给物品打标签时为其推荐适合该物品的标签 ?

 

在解决这两个问题之前首先弄明白以下三个问题

  • 用户为什么要打标签 ?
  1. 便于上传者组织自己的信息;
  2. 便于帮助其他用户找到信息;
  3. 用于更好地组织内容,方便用户将来的查找;
  4. 用于传达某种信息(比如照片的拍摄时间和地点)。
  • 用户怎么打标签 ?
  1. 参考前面博文https://blog.csdn.net/qq_38931949/article/details/84573095用户活跃度和物品流行度的长尾分布(趋于正比:一个标签被一个用户使用在一个物品上,它的流行度就加一)。
  • 用户打什么样的标签(最常用) ?
  1. 表明物品是什么,比如CSDN博客的‘CSDN’;
  2. 表明物品的种类,比如CSDN博客的‘博客’;
  3. 表明谁拥有物品,比如CSDN博客的博主等信息;
  4. 类型,比如CSDN博客属于IT行业类型;
  5. 人物,比如CSDN博客不同的博主,大牛,菜鸟类似的。

 

第一个问题的解决——基于标签推荐

实验设置

举个例子:从CSDN博客中获取所有文章的文章ID、用户ID、时间、标签等作为庞大的数据集(以user、article为主键)进行实验分析测试。

                             

                             本图根据《推荐系统实战》一文中的介绍所绘制,本图的著作权归原著作权人所有。

将上面的实验进行10次,每次选择不同的测试集,然后将每次实验的准确率和召回率的平均值作为最终的评测结果。

 

简单算法解决获得的用户标签行为数据

  • 统计每个用户最常用的标签。
  • 对于每个标签,统计被打过这个标签次数最多的物品。
  • 对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门物品推荐给这个用户。

 

算法改进

在算法设计时我们要注意,并不是所有标签都能反应用户的兴趣。所以我们要对标签进行清理,清理那些包含没有意义的停止词或者表示情绪的词,其次这些推荐解释里不能包含很多意义相同的词语。

官方的标签清理方法有如下三种:

  • 去除词频很高的停止词;
  • 去除因词根不同造成的同义词;
  • 去除因分隔符造成的同义词。

 

第二个问题的解决——给用户推荐标签

和前面的实验一样,我们用同样的方法将数据集按照9∶1分成训练集和测试集,循环10次然后通过训练集学习用户标注的模型。需要注意的是,这里的数据集不再是以user、article为主键,而是以user、article、tag(标签)为主键。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言: 这是本人开发的个人知识管理软件,特别适合需要阅读大量pdf\word\mht\txt等格式文献的科研人员,有效提高个人知识管理能力,减轻记忆压力。因为这几年来都没有时间开发和维护,所以现在开源,希望有人能发扬光大。由于时间关系,没有很好整理文档,而且不是最新版,需要的请联系。本人曾参与Sourceforge的latex2rtf项目,在知识管理方面具有独创见解,希望大家能共同探讨,促进我国科研人员的个人知识管理水平。 本软件综合了Tag2Find、Leapfrog Tag等Tag管理软件的优点,同时克服了这类软件速度奇慢的缺点,具有Everything一样的即时搜索性能。所以叫Tagging-Taggie。 大致工作流程: ------------------------------------------------------------ 1. 启动Tagging软件,此时后台会运行一些针对常用阅读软件开发的AutoHotkey脚本(可以自定义); 2. 在你熟悉的阅读软件中(例如Acrobat Adobe、Pdf Xchange Viewer, Office Word等里面)按下快捷键 Ctrl+`,将弹出一个迷你窗口(叫Taggie),可以输入各类标签(也可以从常用词中选择,如文章类型,重要性),同时显示以前的关键词,所有标签和当前页码等信息会自动保存到数据库中。 如果按下快捷键 Alt+`,则不弹出任何窗口,但是数据库中将记录此文件的标题,当前选中的文字前20个字等信息,这样方便地保存了您的访问记录,而且不受软件的限制。 3. 打开Tagging主界面(类似Everything),可以一边打字输入一边获得检索结果,同时有最近浏览记录、访问最多记录、最常用Tag等信息。 注:上述快捷键可以自定义,例如设置为F1是最轻松的。 背景知识: ----------------------------------------------------------- 一般来说,我们阅读科技文献时,希望随时快速记下带有自己思维方式的Tag,比如这篇文章是欧洲某国的,这一页很重要,这篇文章很重要,这篇文章是90年代的,这篇文章是某公司或某大学的,这是会议文章/期刊文章/技术报告/国际标准等等。但是如果采用重命名文件的方法(适用于Tag较短的情况),就会疲于应付。 如果你是研究生或者科研工作者,那么自然需要阅读大量的文献,采用其它知识管理软件都需要大量的鼠标和键盘动作,同样会疲于应付。 换句话说,采用文件夹管理只是实现了文件的树状分类,但是一篇文献在每个人脑海里面还有特殊的标签,只有采用标签和树状分类才能保证我们的每一篇文献都能快速找到。 采用本软件,你就可以从各种蛛丝马迹中找到你曾经阅读过的文献。 工作机理 ------------------------------------------------------- 1. Taggie会自动获得当前文件的特定属性,例如文件创建日期、pdf的页数、已有关键词等,并根据这些信息为该文件创建一个UUID.lnk,如果开启了Distributed Link Tracking Client服务,在本地计算机你可以随意重命名或者移动该文件,以后用Tagging搜索Tag时都可以找到该文件。 2. 当前版本用到的数据库其实就是类似csv或者xls的文本文件,你也可以通过OneNote接口把数据保存到One文件里面去,这样可以在OneNote里面补充注释,管理起来更加富有层次。 细节和讨论: ---------------------------------------------------------- 1. 多个标签数据库的同步和合并; 可以为不同电脑指定一个特定的数据库名字,在Tagging里面可以勾选要搜索的数据库,一般不用考虑数据同步。但是最好能随时把个人的数据库上传到快盘之类的地方,或者用Groove同步,实现团队成员的知识管理。 2. 采用Symbolic link的方式与采用快捷方式的对比。 还没有测试。 3. 。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值