从零开始接入腾讯云智能推荐-程序员宅基地

技术标签: python  人工智能  

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~

作者:安斌 

导语: 由于信息过载,推荐系统基本成为互联网产品的标配, 如何快速的让自己的产品具有推荐的能力呢?稀缺专业人员投入、用户数据积累、用户冷启动问题等等都是自建推荐系统必须跨越的障碍。本文介绍如何接入腾讯云智能推荐, 快速获得上百人专业算法团队、二十亿+用户画像、几乎覆盖全部网民的推荐系统能力。

本文介绍如何使用豆瓣图书的openAPI抓取图书信息,上报图书信息、用户浏览点击行为到腾讯云智能推荐系统,通过API获取推荐结果。主要的步骤包括:

  1. 物料准备;

  2. 物料上报;

  3. 场景id申请;

  4. 获取推荐结果;

  5. 用户行为上报;

1. 物料准备

首先介绍下什么物料, 物料就是我们需要推荐的物品。推荐系统通过物料的属性、用户和场景的属性以及用户的历史行为,生产推荐结果。

为了方便的获取物料属性,这里我们使用douban图书API获取图书的基本信息。Api参考:https://developers.douban.com/wiki/?title=book_v2

其中,重要的信息包括:

  • isbn13: 可以作为图书物料的唯一标识;

  • title/author/pubisher: 与图书相关的重要信息;

  • rating: 用户评分;

  • tags: 图书的标签;

  • price: 价格

接下来, 我们购买主机和CDB,使用python脚本遍历豆瓣图书api,我们将感兴趣的属性记录到db中, 获得原始的物料库,如下表所示:

2. 物料上报:

步骤1我们已经获取到了物料库, 接下来通过腾讯云智能推荐item上报API上报物料,API详情参考API文档。

物料上报协议中, 重要的字段包括:

  • item_id:物料唯一标识, 推荐结果将返回物料id, 暂时不支持中文; 图书推荐使用图书的唯一标号isbn13作为item_id;

  • pool_id: 自定义物料池, 物料池将物料分类,在获取推荐结果时,可以指定在哪个物料池获取推荐结果, 适配不同的产品场景。同一个物品可以属于多个物料池; 本示例中, 所有物品都可以出现在任意场景下, 所以, 物料没有指定物料池, 需要分物料池时, 可以添加物料池分类, 重新上传物料信息。

  • tags: 物料的标签, 是物品推荐使用的关键属性,可以使用物品的标签描述、分级类目名、品牌等等信息, 越详细的信息, 对推荐结果越有帮助。 同时, 每个物品的描述应该具有可区分性,在给用户推荐时,如果每个物品都具有相同的tag, 那么, 推荐系统将无法通过这个tag,区分出当前用户对每个物品的喜好, 也就没法产生有效的推荐,所以tag的描述尽量准确、具有区分性。本示例中,标签使用douban提供的tags;

物料上报协议如下所示:

{

       'data_type': 1,

       'tags': u'\u9c81\u8fc5,\u4e2d\u56fd\u6587\u5b66....',

       'bid': 'b_teg_openrecom_xxxx,

       'describe': u '\u9c81\u8fc5\u5168\u96c6(2)',

       'free': 0,

       'item_id': u '9787020015252',

       'MD5': '8764084918781ab51493eaf43e6d0166',

       'url': u 'https://book.douban.com/subject/1002055/',

       'publish': 1,

       'platform': 1,

       'score': 9.5,

       'request_id': '1488358987',

       'vender': u '\u4eba\u6c11\u6587\u5b66\u51fa\u7248\u793e',

       'price': 31.75

}

 

3. 场景id申请:

智能推荐的所有行为都是围绕场景展开的, 首先上传适合当前场景的物料,接下来, 拉取当前场景下对用户的推荐结果;再上报用户在当前场景的流量、点击、转换等行为数据, 修正推荐结果。 场景可以理解为产品的一个推荐位, 比如很多产品有猜你喜欢的栏目。

可以在腾讯云官网智能推荐控制台创建场景, 获得场景id。 本文规划两个场景: 首页推荐和详情页推荐,申请两个场景id。

4. 获取推荐结果:

物料库上报以后, 就可以通过用户id从物料库中生成推荐结果了。这里使用请求服务接口。注意, 请求服务的地址与物料上报、行为上报地址不同。重要的字段包括:

  • scene_id: 场景id, 步骤3申请的bid;

  • pool_id: 物料池编码, 指定在特定的物料池中选择推荐结果; 如果不指定, 默认在全部物料中选择;

  • cid: 当前页面物料id, 用于详情页获取推荐的场景,cid使用当前物料id。 在本示例中,在详情页场景使用。

推荐结果请求如下所示:

{

       'scene_id': 538659,

       'request_num': 50,

       'uid': '3496892xx',

       'request_id': '1487861252',

       'service_type': 3,

       'bid': 'b_teg_openrecom_xxxx',

       'uid_type': '0',

       'MD5': '05bae728925ee937e760b06669089c27'

}

 

5. 用户行为上报:

用户行为上报接口, 上报某个时间点、某个场景下、某个用户发生了特定行为。 利用用户行为可以进一步优化推荐结果。 用户行为包括: 曝光、点击、转化、点赞等等; 行为上报时,需要保证事件发生的时间顺序,严格按照先有曝光,点击,再有转化, 否则系统会认为用户点击、转化行为行为无效。重要的字段:

Ø trace_id: 用户一系列行为的会话id。通过trace_id, 推荐系统可以串联用户行为。 trace_id的生命周期从曝光开始,依次在点击、转化、点赞等行为中传递。 下一次曝光需要生成新的trace_id;

协议如下所示:

{

       'uid': '3496892xx',

       'data_type': 2,

       'bid': 'b_teg_openrecom_xxx',

       'item_id': u '9787109061385',

       'scene_id': u '538659',

       'MD5': '8764084918781ab51493eaf43e6d0166',

       'action_time': 1487905960,

       'trace_id': u '1487905944',

       'action_type': 2,

       'request_id': '1487905960',

       'uid_type': '0'

}

相关阅读

主从复制延迟排查

刘炽平:腾讯云计算迅猛增长,正加强投资人工智能

 

追击实录(二):DDoS 黑产全链条遭斩断,腾讯云协助警方抓捕58人

 


 

此文已由作者授权腾讯云技术社区发布,转载请注明文章出处

原文链接:https://cloud.tencent.com/community/article/895984

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33918357/article/details/85940896

智能推荐

sqli-labs靶场第二十二关_sqlilabs第22-程序员宅基地

文章浏览阅读418次。第二十二关cookie编码注入!当我使用")编码后放入cookie中去请求发现报错了!说明很可能是")闭合的没注入成功,试一下 " , ’ , ‘)这几种情况吧 或不输入单引号和双引号把爱" and extractvalue(1,concat(’^’,(select database()),’^’)) --+ 注入失败" and extractvalue(1,concat(’^’,(select database()),’^’)) # 注入成功这里发现一个问题,在cookie注入时,使用–_sqlilabs第22

一次APM32替换STM32的经历分享_amp32-程序员宅基地

文章浏览阅读1.6w次,点赞55次,收藏101次。系列文章目录这几年相信大家知道STM32系列的芯片价格翻倍的涨,自己玩都快玩不起了,要是用于生产,这得多掏多少钱!所以现在大家都选择了国产芯片,哈哈不能说多差吧!价格你没得说。 这是我的一次APM32代替STM32的经历,你是不是也会遇到这样的坑呢?文章目录系列文章目录一、开始替换(流程)1.首先第一步找一个简单的工程,保证没有错误。警告没问题。2.寻找APM32芯片替换STM32芯片3.修改错误4.重点来了二、测试方法与结果1.测试2. SPI怎么测?总结一、开始替换(流程)&g_amp32

java中的进制转换及转换函数_java将八进制转五进制函数-程序员宅基地

文章浏览阅读4.4k次,点赞4次,收藏21次。Java的进制转换 进制转换原理 十进制 转二进制: 原理: 对十进制数进行除2 运算取余。 6 --> 110 二进制 转十进制 原理: 二进制 乘以 2 的n次幂 的过程 110 ->0*20 + 1*21 + 1 * 22 0 + 2 + 4=6 _java将八进制转五进制函数

Effective Java学习笔记--2017年5月_但构造完毕时,我们可以通过手工冻结对象-程序员宅基地

文章浏览阅读1.1k次。作为自己在大四最后一年时间学习书籍中的一本,EffectiveJava通过一周时间的完整阅读,根据自身的条件记录下重点,供自身以后学习参考借鉴_但构造完毕时,我们可以通过手工冻结对象

IOS:简单说一下MVVM与MVC的优缺点和使用_ios mvc和mvvm优缺点-程序员宅基地

文章浏览阅读2.2k次。MVC :M是数据模型V是视图C是控制器Model和View是相互独立的。View只负责页面展示,Model只是数据的存储,那么也就达到了解耦和重用的目的。MVVM的优点:方便测试 便于代码的移植兼容MVC,缺点:类会增多,viewModel会越来越庞大,调用复杂度增加MVVM什么时候使用:mvvm其实是mvc的变种而已。mvvm只是帮mvc中controller做瘦身,就是把一些逻辑代码和_ios mvc和mvvm优缺点

在Java中轻松将HTML格式文本转换为纯文本(保留换行)_把html代码转换成java string格式,遇到换行加上\n-程序员宅基地

文章浏览阅读1.3w次。第一步:引入lang和lang3的依赖:这两个包里有转换所需的工具类<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version></dependen..._把html代码转换成java string格式,遇到换行加上\n

随便推点

PostgreSQL数据库_pg数据库-程序员宅基地

文章浏览阅读1.4w次,点赞16次,收藏133次。PostgreSQL是一个免费的对象·关系型数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL开发者把它念作post-gress-Q-L。PostgreSQL的Slogan是“世界上最先进的开源关系型数据库”。“开源界的Oracle”,去O首选。PostgreSQL官网:PosetgreSQL中文社区:全球数据库排行:国产数据库排行:命令说明\password设置当前密码\q退出\h查看sql命令的解释,如\h select?_pg数据库

java(十)【属性集,缓冲流、转换流、序列化流】_put(buffer,offset:0,len)-程序员宅基地

文章浏览阅读353次。day10【缓冲流、转换流、序列化流】今日目标IO资源的处理。finnally释放资源jdk 1.7开始的新技术 try-with-resources缓冲流提高字节流和字符流读写数据的性能的。转换流可以解决不同编码读取乱码的问题。序列化可以实现把Java对象存储到文件中去。打印流可以方便的写数据出去,支持写任意类型的数据到文件中去,非常方便和简单以及强大。属性集是一种Map集合。教学目标能够使用字节输入流读取数据到程序Input_put(buffer,offset:0,len)

《Three.js 开发指南》源码示例说明以及在线demo(原书第二版)附第三版的代码下载_threejs开发指南第三版 pdf-程序员宅基地

文章浏览阅读3.9k次,点赞4次,收藏33次。1. 用Three.js创建你的第一个三维场景1.1 具有所有基本元素的hello world示例src/chapter-01/06-screen-size-change.html2. 使用构建Three.js场景的基本组件2.1 添加、删除、枚举、通过名字获取场景中的对象src/chapter-02/01-basic-scene.html2.2 雾化效果src/chapter-02..._threejs开发指南第三版 pdf

开发语言的选择_开发语言应首选-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏2次。在软件这个行业里,怕是没有任何一个其话题域像开发语言这样引起争议了。对开发语言是非的争论,不单旷日持久,且深度亦是与时俱进。实现要强调下的是,在这里我们要专注的是开发语言的选择而非开发语言的优劣。从不同的视角对开发语言进行选择,其结论可能大相径庭。从项目的角度看,语言自身特性的多少,强弱往往并不成为一个关键选择因素。好比说某语言支持多重继承,而某语言不支持多重继承,但对大多项目而言多重继承这一语言_开发语言应首选

clickhouse(十二、踩坑之路)_attempt to read after eof: cannot parse int32 from-程序员宅基地

文章浏览阅读2.1w次,点赞11次,收藏36次。Q1DB::Exception: Cannot create table from metadata file /data/clickhouse/metadata/default/dwd_test.sql, error: DB::Exception: The local set of parts of table default.dwd_test doesn’t look like the set of parts in ZooKeeper: 65.88 million rows of 85.04 mi._attempt to read after eof: cannot parse int32 from string, because value is

python基础教程-数字与表达式——浮点数_python表达浮点数的两种方式-程序员宅基地

文章浏览阅读621次。1、python的加减乘数与计算机的加减乘除几乎差不多 + - * /2、如果参数除法中有一个为浮点数结果 亦为浮点数 >>> 1.0 / 2.0 0.5 >>> 1/2.0 0.53 、 双斜线 // 实现整除的操作符 >>> 1.0 // 2.0 0.0 >>> 1 // _python表达浮点数的两种方式

推荐文章

热门文章

相关标签