之前做的一款基于语义的app搜索,当时公司希望做一款不仅仅能根据一般文本重合,而且能通过语义上的相关找到更好的推荐app,这里分享一下开发的过程和心得
——————————————————————————————————————————————————————————————————————————
目录:
一、基础特征的选择
二、特征的组合和特征的离散化
三、训练样本的获取
四、排序样本的调整


(三)如何rank

有了候选集后,如何把最优的app放在最前面?那么这时候leaning to rank 就派上用场了。
一、 基础特征的选择
基础特征大致可以分为三大类:
1)文本字面的重合:app文本描述有两处:标题和描述,利用三种分词方式:原子分词,正常分词,ngram组合切分
2)文本语义上的重合:app类别,LDA类别,W2V类别
3)搜索扩展:利用搜索对app标题进行扩展,扩展文本再重复1,2步骤
基础特征如图所示

2、 特征的组合和特征的离散化
这个单开一章吧,感觉还是蛮多东西可以讲的
3、 训练样本的获取
leaning to rank 是个有监督的学习过程,那么训练集如何获取是个很重要的过程。当然可以用人工标注出一批,在没有人工的情况下,怎么办呢。
首先公司原来的app推荐上有一批的点击日志,利用这些日志做出一个点击排名list。
问题来了利用原来非智能推荐的结果来监督学习智能推荐的模型,有效果么?我觉得这个问题是这样的,有两种可能,一种是陷入局部最优,无法达到我们想要的效果,另一种随着用户的使用模型的不断迭代,会不断的优化。
实践中我认为应该是后一种结果。另外我觉得还有许多意外的收获,比如一款游戏中的专业词“之刃”,人工未必知道是哪款游戏app,或者刚刚出现的新app“EXO”不是00后可能根本不知道是什么,又或者交友软件中陌陌和脉脉哪款更应该排在前面,利用点击统计则可以排除这些问题。

4、 排序样本的调整

UBM模型(A User Browsing Model to Predict Search Engine Click Data from Past Observations)
对于搜索的list来说排在后面的往往点击率更低,这个称为眼球模型,就是说人的眼睛一般是从上往下看,越靠上曝光的机会越多,所以点击率越大。
为了改进这个问题,生成更好的训练数据我们可以找list中排位靠后点击反而在前的数据组成pairwise作为训练样本。
升级的版本就为UBM,UBM在排序的模型中加入了用户点击的考虑,思想是用户点击了某一行,那么他一定看到这一行,于是紧接的行曝光率也增加,如下图所示。我们可以根据整体算出一个用户点击率和位置变化梯度表。当前后两个的点击比率和表中存在差异,我们把他们抽出来作为训练样本

点击排序list如图

语义相关app搜索(三)——qjzcy的博客相关推荐

  1. 第三百篇博客:写给自己的总结

    文章目录 返航 我的中考和高考 初入大学的迷茫与思考 人生第一个Hello World! 第一次尝试找实习 加入工作室 对技术的反思 第一次做外包项目 脱单纪念日 准备春招 人生第一个Offer 惨败 ...

  2. OO第三单元总结性博客

    OO第三单元总结性博客 JML理论基础与工具链 JML理论基础 JML是一种将java程序规格化表达的一种语言,其描述的是行为的规格,而非具体的代码实现. 通过对程序开展规格化设计,当然前提是使用JM ...

  3. 三十天博客计划之《引言》

    大学的时候开始维护一个博客:DarkScope从这里开始,断断续续几十篇文章,也累积了一些访问量.不过最近的一篇已经是17年12月了,没有继续下去的原因很多,但归根结底是没有找到一个可持续发展的方式去 ...

  4. 让 Google 搜索到自己的博客

    一开始以为自己创建了博客,就能通过 google 或者百度搜索得到,原来是自己想得太天真了,能够被搜索引擎搜索得到是需要自己的链接被搜索引擎所收录.当然,这里有两种方法能够被搜索引擎添加自己网站的索引 ...

  5. 博客与计算机相关的内容无法进行查看,博客检索的关键技术研究-计算机科学与技术专业论文.docx...

    博客检索的关键技术研究-计算机科学与技术专业论文 Classified Index: TP391.3 U.D.C.: 681.37 Dissertation for the Master Degree ...

  6. CSDN如何快速搜索自己/别人的博客(区分大小写)

    搜索csdn博主的文章,网上很多说可通过google输入site:blog- 确实这方法可以是可以,但也未免太麻烦了 下面我介绍一个快速搜索博客的方法 法一:快速搜索博客文章的方法 打开自己的博客主页 ...

  7. 个人博客系列【Hexo】-实现在百度中搜索到自己的博客

    目录 1.添加站点 2.选择协议头"http:// ",填写网站域名,点击下一步: 3.设置站点领域,这里选择信息技术(按需选择),点击下一步: 4.验证网站,选择CNAME验证, ...

  8. 怎样才能让百度搜索到自己的博客?

    怎么把自己的博客推荐到百度.Google等主要搜索引擎? 如果不把你的博客提交到各大搜索引擎中,它们一般是不会收录你的博客的,你可以先尝试一下看看能不能在百度搜到你的博客吧. 如果搜不到的话说明你的博 ...

  9. 博客系统后端设计(三) - 实现获取博客列表页功能

    文章目录 实现获取博客列表页功能 1. 约定前后端交互接口 2. 实现后端代码 3. 实现前端代码 4. 测试代码 5. 涉及到的两个 Bug 博客系统的后端设计: 1.准备工作与设计数据库 2.数据 ...

最新文章

  1. jquery 批量上下移动
  2. 向前欧拉公式 matlab_你可能不知道的MATLAB操作#第三话
  3. Fragment要点复习
  4. vue是什么软件_Angular vs React vs Vue:2020年的最佳选择是什么?
  5. mysql服务器程序_MySQL服务器
  6. (转载)c/c++笔试面试题(2)
  7. 创办私营企业必做的16件事
  8. iPhone 15 Pro有望实现屏下面容识别 三星已在研发相关技术
  9. sql azure 语法_Azure Data Studio中SQL Server Profiler
  10. 轻量化网络:SqueezeNext
  11. 第5章 高效的多线程日志
  12. 安全漏洞问题6:SQL注入
  13. pcie数据反_PCIe事务层の详解(一)
  14. 99.9%的数据分析师,都做不到这些
  15. 智能优化算法:足球联赛竞争算法-附代码
  16. c语言中gotoxy,关于gotoxy的问题....
  17. 20170306 小兵的觉悟就是好好吃饭
  18. 让我们努力的学习ruby吧
  19. 云专网和云专线的区别_什么是云网融合?
  20. 网站流量日志数据分析系统(模块开发----数据仓库设计)

热门文章

  1. 使用python和java一键替换word文件内容
  2. 12天背诵楞严咒的技巧_宣化上人:教你一个背诵〈楞严咒〉的妙法
  3. 架构师和程序员的区别
  4. fragment卡顿 的处理
  5. 通过10个例子快速掌握Python中的List
  6. java calendar获取日期_Java使用Calendar获取当前日期
  7. EVE-NG 连接ASA ASDM
  8. 开始→运行(cmd)命令大全
  9. 我的世界服务器自动锁箱,我的世界箱子上锁指令用法及解锁方法 箱子怎么上锁...
  10. 骑马与砍杀:战团 for Mac(角色扮演类游戏)支持m1