`
wbj0110
  • 浏览: 1603841 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

tag推荐系统的关键问题以及解决方案

阅读更多

产品形态以及主要问题

tag 的推荐系统,顾名思义,利用用户或者item的 tag信息进行推荐,涉及到两个产品形态:

1.tag-based recommend,基于tag信息推荐item给用户

2.tag recommend,给用户推荐tag

无论1,还是2,都面临一个问题,tag从哪里来?这个是tag推荐系统最为关键的事情。通常来讲,有4个:

1.专家标注,貌似jnni是这样做的

2.UGC,由用户产生,douban等很多都是这样搞得

3.系统产生,利用用户/item数据

4.人工和系统相结合

解决了tag产生的问题,构建tag体系后,我们只需要抽取相关的feature,就可以完成item推荐或者tag推荐。

tag产生

工程上分析一下如何生成tag:

1.专家标注

目前大多数公司不现实,尤其是startup时,不可能有这么大的投入。

在垂直领域,这个问题可以简化,成熟的相关网站抓取,比如3C类,可以去京东,中关村在线等,结构化数据,效果不错。

覆盖率可能不够,但是作为startup公司或者要求不高时,应该够用,如果做深,是一个无底洞,taobao N多人N年搞产品库,投入很大。

所以有朋友希望兼职做做产品库挖掘,尤其说类似淘宝那种,直接拒绝。

2.UGC

tag的获取不是问题,产生的tag有很大的随意性,问题在于如何处理这些tag,主要问题:

1.书写不规范,最重要的问题,比如 美女,大美女,recomend system recomendation system, RS 等等,需要做归一化

2.同义关系

目前UGC 产生标签,是最主要的形式,不过产品前期比较多,稳定后用户更多的会采用推荐的tag

3.系统产生

用系统产生tag,基于user或者item信息,最简单的方式,将用户访问item的title取出来,处理后生成tag给用户,比如用户浏览”美女范冰冰“,可以将”美女“”范冰冰“作为该item的tag。

这种方式在系统初始化时,非常有效,无UGC数据,如果给用户提供tag,提高用户体验以及规范用户行为

目前的工作主要是针对用户的浏览的web,提供该web的tag信息,供用户选择。问题是web的title包含的信息太好,尤其是非文本类web页面。主要处理的方式,对title分词后

1.过滤掉停用词,比如数字,的,一个 等,极端一点过滤掉所有的单字,但是会将其中的名词滤掉

2.只考虑名词,动名词,地名,人名等实体词,这些词对title的信息描述比较好,类似 购买,采购等动词没有意义,这些信息可以在分词是获取到词性信息

3.计算每个token的idf值,对于title来讲,token的 tf值一般都是1,所以只需要idf,出现在title的次数越多,idf越小,生僻token的idf值偏大

目前没有办法很好的计算token的全局或者在title中的分数,只能用idf来描述,大多数情况下还行,但是不够准确。

将用户访问过过的所有item title获取到,提取出来的tag可以作为用户的profile 

4.人工和系统结合

这个依赖稍微多一些,1,通过专家或者其他方式获取一批种子数据,比如某些item的tag,然后通过item间的相似性或者其他方式将item关联起来,将tag扩散出去,同样可以生成item的tag列表,当然会有一个权重信息,将低权重滤掉即可。UR

产生种子后,搜索数据中在同query下,url的内容相似性也很大 ,可以获取query->clicked url list以及 clicked url->qurey list,目标是同时对query以及url产生tag,初始化P(Tag_{q}) = \alpha * sum_{u:(q,u)}{w_{qu}}P(Tag_{u}=tag),其中w_{qu} 表示通过改query点击url的次数除以通过query点击所有url的总次数。

同时 P(Tag_{u}) = \alpha * sum_{q:(q,u)}{w_{qu}}P(Tag_{q}=tag) ,w_{uq} 表示通过通过q访问u的次数除以通过所有qeury访问u的总次数,不停地迭代,最后将seed中的tag扩散出去,针对每个url/query,去概率最大的几个tag。

tag推荐

当有了tag数据后,就是利用tag完成那两个产品推荐,首先说明一下可能的feature

1.用户user 使用tag的次数N_{u,t}

2.item被打上tag的次数N_{i,t}

3,tag被多少个user使用过N_{t}^{u}

4.tag被用在多少个item上面N_{i}^{t}

5.p(tag|user)

6.p(item|tag)

7.p(tag|item)

8.p(user|tag)

利用这些数据以及常用的理论,进行推荐:

1.基于tag给用户推荐item

计算user对item的喜好程度,最直接的做法 sum_{t}{N_{u,t}N_{t,i}} 用户使用tag越多,tag用户item的越多,那么用户可能越喜欢。

很容易想到万能的tf-idf,如果这个tag被其他用户用过的越少,说明这个tag也能代表user的兴趣,同样如果item被使用的其他的tag越少,tag越能刻画item,转化为:

sum_{t}{N_{u,t}N_{t,i}}/(\alpha + N_{t}^{u})(\alpha + N_{i}^{t})

也可以利用 概率模型直接算,p(u,i) = sum_{t}p(t|u)p(i|t) 。

在实际使用时,无法两类,基于用户还是基于item,比如item-based,用户最近访问的item,选取item最可能的属于的tag,p(tag|item)分值较大的,然后将这个tag热门的内容推荐出来,p(item|tag)比较大的item,准确率可能比较低,但是复杂度低。

2.tag推荐

两个思路,推荐用户常用的tag以及item上常用的tag,也就是N_{u,t} N_{i,t} 大的tag列表。

<推荐系统实践>做过对比试验,两个都提供,用户使用的概率最大,所以类似douban等都会将内容提供出来

一些思考:

tag是连接user 和item的手段,更清楚的表达的用户的意图,比较像topic model,在user-item中间引入一层具备 语义信息的概念。

http://blog.sina.com.cn/s/blog_546abd9f0101bsv2.html

 

分享到:
评论

相关推荐

    jsp开发中遇到的问题及解决方案.rar

    以下是针对JSP、Web开发以及J2EE开发的一些关键知识点和常见问题的解决方案: 1. **JSP基本语法问题**:JSP页面由HTML、CSS、JavaScript和Java代码混合组成。初学者常犯的错误是Java代码不规范地插入到HTML中,导致...

    DISCUZ 7.x 标签 TAG 获取失效的临时解决方案

    针对“DISCUZ 7.x 标签 TAG 获取失效”的问题,有一个临时的解决方法是通过修改系统文件来恢复功能。这个方法涉及到替换DISCUZ根目录下的`relatekw.php`文件。首先,你需要下载提供的压缩包,其中包含修复这个问题的...

    推荐系统的循序渐进读物

    - 针对推荐系统中多样性和准确性之间的权衡问题提出了解决方案,对于优化推荐效果非常有帮助。 - **2009 NJP: Accurate and Diverse Recommendations via Eliminating Redundant Correlations** - 提出了消除冗余...

    [其他类别]Noka tag 软件标签 v3.0_noka3.9.rar

    总的来说,Noka Tag软件标签系统v3.0提供了标签管理的解决方案,其源码分析对于学习软件开发和理解标签系统原理的人员具有很高的价值。通过研究源码,开发者不仅可以学习到软件设计和实现的技巧,还能从中获取灵感,...

    系统测试问题总结

    "jstl - 学习笔记 - BlogJava.mht"可能讲解了JSTL(JavaServer Pages Standard Tag Library)在处理这些接口时的使用方法,而"el表达式.doc"可能涉及了Expression Language在传递和解析数据时的常见问题。...

    帝国cms-TAG高级管理 UTF-8完整版.zip

    总结来说,"帝国cms-TAG高级管理 UTF-8完整版.zip"提供了自动化和智能化的TAG管理和内链建设工具,对于那些希望优化SEO并提升网站内容相关性的帝国CMS用户来说,这是一个极具价值的解决方案。通过高效利用这个插件,...

    关于定制化业务类系统代码管理分析和解决方案

    ### 关于定制化业务类系统代码管理分析和解决方案 #### 一、背景介绍 随着信息技术的发展,越来越多的企业开始重视定制化软件的开发,以满足自身特定的业务需求。然而,在定制化软件开发过程中,如何有效地进行代码...

    RFID气瓶安全管理解决方案.pdf

    RFID技术在气瓶安全管理中的应用是一套高效的解决方案,旨在实现对气瓶的实时监控、追踪以及管理,提高安全水平,减少事故发生的概率。RFID(无线射频识别技术)是一种非接触式的自动识别技术,通过无线信号自动识别...

    Social_Tag_Enrichment_via_Automatic_Abstract_Tag_Refinement

    #### 解决方案:构建概念本体 为了解决抽象标签的问题,研究者们构建了一个概念本体(Concept Ontology)。这个本体包含了各种概念及其之间的关系,用于检测大规模社交图像中的抽象标签。通过分析标签的共现上下文...

    tag 学生成绩管理系统

    学生成绩管理系统作为毕业设计课题,不仅锻炼了学生的编程技能,还强化了他们解决实际问题的能力,为将来的工作或进一步研究打下坚实基础。 【压缩包子文件的文件名称】"VB021学生成绩管理系统(无版权)"可能包含了...

    帝国CMS的Tag关键词自动锚文本插件.zip

    "使用说明.txt"则是提供给用户安装和配置插件的指南,通常会包含步骤说明、注意事项以及可能出现的问题解决方法。"访问起源地模板网.url"则可能是一个快捷方式,方便用户访问一个可能提供额外模板或插件资源的网站。...

    Java 音频Tag解码 源代码

    本文将深入探讨如何使用Java解析MP3和WMA文件的Tag信息,包括ID3V1和ID3V2标签,以及如何解决可能出现的乱码问题。 ID3标签是一种元数据格式,用于存储关于音频文件的信息,如艺术家、专辑、歌曲名和歌词等。ID3V1...

    fastReport修正htmlTag不支持中文.rar

    总之,面对FastReport在处理HTML标签中文内容时的显示问题,我们需要检查编码设置、解析器逻辑以及字符串处理函数,通过源码修改或应用层面的解决方案来解决问题。提供的压缩包文件应该包含了开发者对此问题的解决...

    vs2005水晶报表横向打印问题完整解决方法

    ### VS2005水晶报表横向打印问题及解决方法详解 在使用Visual Studio 2005(简称VS2005)进行开发时,水晶报表(Crystal Reports)作为一项重要的报表工具,被广泛应用于数据展示和打印。然而,用户在尝试设置水晶...

    leetcode-tag-dynamic programming

    此外,识别问题的重叠子问题和最优子结构是构造动态规划解决方案的关键步骤。 在LeetCode的动态规划题目中,通常需要编写高效的代码来处理边界情况和优化空间复杂度。通过不断实践和分析,可以逐渐掌握这一方法,...

    Hawkboard J-Tag示例

    在嵌入式开发领域,Hawkboard是一款基于TI(德州仪器)OMAPL138处理器的开源硬件平台,常用于教学和实验目的。...这个过程中,理解和掌握J-Tag协议、嵌入式系统的启动流程、以及特定硬件的调试方法是非常重要的。

    三大技术javaBean+servlet+jsp常见问题和解决方案

    ### 三大技术:JavaBean + Servlet + JSP 常见问题及解决方案 #### 引言 JavaBean、Servlet 和 JSP 是 Java Web 开发中非常重要的三个技术组件。JavaBean 主要用于封装数据和业务逻辑;Servlet 则是处理客户端请求...

    公共安全移动互联解决方案.pdf

    2. 行业解决方案:针对公共安全管理中的关键问题,如保安巡检签到、人流量监控、突发事件应对以及公共信息服务,提供了具体的应用策略。 - 安保人员巡检签到:通过B-TAG与CloudBeacon的配合,可以实时追踪安保人员...

    前端项目-tagmanager.zip

    7. **文档支持**:通常,这样的开源项目会附带详细的文档,帮助开发者了解如何安装、配置和使用插件,以及解决可能遇到的问题。 8. **社区支持**:作为开源项目,Tag Manager很可能拥有活跃的开发者社区,提供问题...

Global site tag (gtag.js) - Google Analytics