图文个性化推荐案例
一、业务背景
某生活APP是以提供本地生活服务为主的一站式本地生活服务平台,覆盖餐饮、出行、公共服务、娱乐、购物、健康等生态,提供点餐、买单、外卖、等服务,以美食餐饮为主场景,为了提高APP商业转化和用户活跃率,需要以种草内容推荐带动各个板块业务目标。本案例主要介绍了使用智能推荐引擎实现图文类物料的个性化场景推荐。
二、数据准备
1、物料数据schema规范
数据样例:144 rows × 9 columns 家居40条、科技40条、美食60
2、行为数据schema规范
数据样例:155条
3、用户数据schema规范(非必传)
样例数据:18条
三、创建应用
在应用管理页,单击顶部【创建应用】按钮,进入创建应用页面,依次填写应用各项参数,选择图文推荐。点击【创建】按钮,进入创建应用提示页面,进入应用配置页面。
四、接入数据
进入应用配置页面,在数据接入选项卡下点击数据API卡片右上角的【启用服务】按钮一键开启3个数据接入服务。点击【刷新状态】按钮,直到三个服务的状态都显示为“服务中”时,即可根据生成的请求地址接入数据了。
1、了解使用SDK方式接入数据的流程:
第1步:下载代码模版,下载并解压代码模版(python文件),请仔细阅读readme.md文件。
第2步:下载并替换鉴权信息,点击下载鉴权信息,并参考代码模板中readme.md文件进行修改。
第3步:接入数据,返回'success':true即表明接入成功,刷新数据状态,接入必传数据即可。
2、分别接入三类数据
第一步:接入csv中的物料数据
注意:本案例脚本代码与sdk提供的存在差异仅供参考,您需要根据实际业务使用sdk中的代码或者开发代码。
1"""
2从csv中发送物料数据给cms
3"""
4import os
5import time
6import requests
7import json
8import pandas as pd
9
10def post_m(dic):
11 ctx = json.dumps(dic, ensure_ascii=False)
12 ctx = ctx.encode("utf-8")
13 rex = requests.post(url, ctx, headers=headers)
14 return rex
15
16url = "http://airec.baidu.com/airec/api/1-s6r5gitg/omni/cms/batch-sync"
17ak = "f5695cc1c9544ccd9088b29b417d395b"
18
19headers = {"Content-Type": "application/json", "X-Gw-Ak": ak}
20cmsdata = pd.read_csv('/Users/wangxuecong01/Desktop/1产品管理/1智能推荐引擎/演示数据/CMSdemo.csv')
21
22for idx, data in cmsdata.iterrows():
23 demo_cms= [{
24 "nid": str(data['nid']),
25 "site_name":data['site_name'],
26 "title":data['title'],
27 "content":data['content'],
28 "mthid":str(data['mthid']),
29 "publish_time":data['publish_time'],
30 "att":[data['att']],
31 "status":data['status'],
32 "ts":data['ts']
33 }]
34
35 begin = time.time()
36 rex = post_m(demo_cms)
37 end = time.time()
38 print("using time: {}, status {}, ret content: {}".format(round(end - begin, 6), rex.status_code, rex.text))
第二步:接入csv中的用户数据
1"""
2发送用户数据给ums
3"""
4
5import os
6import time
7import requests
8import json
9import pandas as pd
10
11def post_m(dic):
12 ctx = json.dumps(dic, ensure_ascii=False)
13 ctx = ctx.encode("utf-8")
14 rex = requests.post(url, ctx, headers=headers)
15 return rex
16
17url = "http://airec.baidu.com/airec/api/1-fd8wpxd0/omni/ums/batch-sync"
18ak = "f5695cc1c9544ccd9088b29b417d395b"
19
20headers = {"Content-Type": "application/json", "X-Gw-Ak": ak}
21
22umsdata = pd.read_csv('/Users/文件路径/演示数据/UMSdemo.csv')
23for idx, data in umsdata.iterrows():
24 demo_ums = [{
25 "uid":str(data['uid'])
26 }]
27 begin = time.time()
28 rex = post_m(demo_ums)
29 end = time.time()
30 print("using time: {}, status {}, ret content: {}".format(round(end - begin, 6), rex.status_code, rex.text))
第三步:接入csv中的用户数据
1"""
2发送用户数据给ums
3"""
4
5import os
6import time
7import requests
8import json
9import pandas as pd
10
11def post_m(dic):
12 ctx = json.dumps(dic, ensure_ascii=False)
13 ctx = ctx.encode("utf-8")
14 rex = requests.post(url, ctx, headers=headers)
15 return rex
16
17url = "http://airec.baidu.com/airec/api/1-fd8wpxd0/omni/ims/batch-sync"
18ak = "f5695cc1c9544ccd9088b29b417d395b"
19
20headers = {"Content-Type": "application/json", "X-Gw-Ak": ak}
21
22imsdata = pd.read_csv('/文件路径演示数据/IMSdemo.csv')
23for idx, data in imsdata.iterrows():
24 demo_ims = [{
25 "nid":str(data['nid']),
26 "uid":str(data['uid']),
27 "event":data['event'],
28 "ts":data['ts']
29 }]
30
31 begin = time.time()
32 rex = post_m(demo_ims)
33 end = time.time()
34 print("using time: {}, status {}, ret content: {}".format(round(end - begin, 6), rex.status_code, rex.text)
3、验证是否成功接入数据
在配置应用页面基础信息卡片查看数据接入条数是否符合预期。
五、服务调用
1、启用服务
进入智能推荐引擎配置页面,在服务调用选项卡下点击推荐API卡片【启用】按钮开启需要调用的服务。
点击【刷新状态】按钮,直到服务的状态都显示为“服务中”时,即可根据生成的请求地址调用接口。
2、了解调用流程
第1步:下载代码模版,下载并解压代码模版(python文件),请仔细阅读readme.md文件。 第2步:下载并替换鉴权信息,点击下载鉴权信息,并参考代码模板中readme.md文件进行修改。 第3步:调用服务,获取返回的推荐结果。 第4步:验证结果,正确返回值类似, status值应为 200。
3、开始调用接口
调用个性化接口
1 """
2个性化推荐接口
3"""
4
5import os
6
7import time
8import requests
9import json
10
11
12def post_m(dic):
13 rex = requests.get(url, dic, headers=headers)
14 return rex
15
16
17url = "http://10.137.16.168:8081/airec/api/3-zo179t-l/rec/p_rec"
18ak = "f5695cc1c9544ccd9088b29b417d395b"
19
20headers = {"Content-Type": "application/json", "X-Gw-Ak": ak}
21
22body = {
23 "uid": "uid_1",
24 "req_cnt": 20
25}
26
27begin = time.time()
28rex = post_m(body)
29end = time.time()
30print("using time: {}, status {}, ret content: {}".format(round(end - begin, 6), rex.status_code, rex.text))
六、模拟体验
在应用列表页面选择相应的应用点击【配置】按钮进入配置页面,切换到服务调用页面,点击【模拟体验demo】按钮。
1、体验个性化PC端推荐
点击【刷新】按钮,可以浏览推荐内容,您可以点击【阅读(曝光)】、【点击】、【评论】、【收藏】、【转发】按钮模拟用户的点击行为,每次点击都会生成一条行为数据用于给当前用户推荐。
查看用户兴趣点变化趋势:点击模拟用户的兴趣点可以查看该兴趣点(标签)在每天的变化趋势。
查看推荐内容分布和用户兴趣分布是否吻合,或者查询模拟行为记录。
2、体验手机端个性化推荐
在入pc demo页面点击【二维码】图标弹出二维码页面,选择模拟用户,手机微信或者其他应用扫一扫打开H5页面。
下拉刷新可以浏览推荐更多的内容,您可以点击【阅读(曝光)】、【点击】、【评论】、【收藏】、【转发】按钮模拟用户的点击行为,每次点击都会生成一条行为数据用于给当前用户推荐,暂不支持取消行为。 同样的,您可以上滑查看历史推荐内容。