CSDN个性化推荐系统-负反馈测试

这篇具有很好参考价值的文章主要介绍了CSDN个性化推荐系统-负反馈测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

CSDN个性化推荐系统-负反馈测试

大家好,我是空空star,本篇给大家分享一下《CSDN个性化推荐系统-负反馈测试》

一、uc不感兴趣标签过滤测试

用户:weixin_38093452

1.uc不感兴趣标签获取(uc_unlike_tag_list)

1.1个人中心界面

CSDN个性化推荐系统-负反馈测试

1.2从标签中可以发现什么?

  • 标签有一级标签、二级标签
  • 标签并不都是全小写,也有一些字母大写
  • 同一个标签在感兴趣和不感兴趣里都出现

1.3与研发确认点

  • 一级标签和二级标签在过滤侧会拆开用到还是只用了二级标签?
  • 获取到的uc标签与推荐流文章标签匹配时有无统一转小写或大写后才去匹配?
  • 当同一个标签在感兴趣和不感兴趣里都出现时,屏蔽的优先级是不是高于增强的优先级?
  • uc标签维护好后,在推荐流的生效时间?

1.4设计开发

def get_uc_tag_list(username, interest_type):
    uc_tag_list = []
    # 获取uc不感兴趣标签
    url = f'http://xxx.csdn.net/user_csdn_tag/get_tag_list?username={username}&type={interest_type}'
    response = requests.get(url)
    res = response.json()
    for i in res['data']:
        name = i['name']
        for tag in i['tags']:
            if tag['select']:
                # 添加小写后的一级标签
                uc_tag_list.append(name.lower())
                # 添加小写后的二级标签
                uc_tag_list.append(tag['name'].lower())
    return uc_tag_list

1.5接口获取结果

unlike_uc_tag_list = get_uc_tag_list('weixin_38093452', 1)
print(unlike_uc_tag_list)

[‘python’, ‘pillow’, ‘java’, ‘java’, ‘编程语言’, ‘php’, ‘大数据’, ‘odps’, ‘大数据’, ‘大数据’, ‘人工智能’, ‘人工智能’, ‘aigc’, ‘chatgpt’]

2.推荐流文章标签获取(tag_list)

用户:weixin_38093452
请求推荐接口50次

2.1部分代码

    items = result['data']['items']
    for data in items:
        # 过滤掉nps
        if 'username' in data:
            tags = data["tags"]
            temp_tag = []
            for tag in tags:
                # 用来判断一个item中返回的标签是否重复(ml和title合并,只保留ml)
                temp_tag.append(tag['name'])
                # 多次请求后,用来跟uc的不感兴趣标签/负反馈标签做对比
                tag_list.append(tag['name'])
                # 多次请求后,用来判断ml标签和title标签是否有返回
                tag_type_list.append(tag['type'])
                if tag['name'] == '':
                    print(f"存在空标签,博客:{data['product_id']},标签类型:{tag['type']},标签名称:{tag['name']}")
            if len(temp_tag) != len(set(temp_tag)):
                print(f"同一篇博客{data['product_id']}存在重复标签:{temp_tag}")
if len(set(tag_type_list)) == 2:
    print(f'返回文章标签类型:{set(tag_type_list)}')

2.2基本标签校验

  • ml标签和title标签是否都有返回;
  • 是否有空标签结构返回;
  • 同一篇博客是否返回重复标签;

2.3基本标签校验结果

返回文章标签类型:{‘ml’, ‘title’}

3.推荐流uc不感兴趣标签过滤验证

3.1校验方法

  1. 获取用户的uc不感兴趣标签列表(uc_unlike_tag_list);
  2. 获取用户50次请求推荐流返回文章的标签列表(tag_list);
  3. 求uc_unlike_tag_list和tag_list的交集。

3.2部分代码

    print(f'【推荐返回的标签】:{set(tag_list)}')
    unlike_uc_tag_list = get_uc_tag_list(username, '1')
    print(f'【uc-不感兴趣标签】:{set(unlike_uc_tag_list)}')
    intersection_tag = list(set(tag_list).intersection(set(unlike_uc_tag_list)))
    print(f'【uc-不感兴趣标签过滤】验证结果,标签交集:{intersection_tag}')

3.3校验结果

CSDN个性化推荐系统-负反馈测试

3.4结果分析

标签交集为空,说明没有badcase;
将【推荐返回的标签】中的高频标签维护到uc不感兴趣标签中,再次执行我们的脚本观察校验结果,结合服务端uc不感兴趣过滤日志,多次执行标签交集仍为空,说明uc不感兴趣标签在推荐流过滤生效。

4.用户场景回归

确保推荐接口有返回数据和返回数据正常。

  • 登录用户(未维护uc不感兴趣标签)
  • 未登录用户

二、用户推荐流负反馈过滤测试

1.内容负反馈

1.1提交API校验

负反馈项(directive):

  • duplicate:内容重复推荐
  • content poor quality:内容质量较低
  • advertising:内容夸张、涉及广告等

资源类型(type):

  • blog
  • ask
  • blink
  • live

1.2获取API校验

  • last_unlike_time:负反馈操作时间戳记录是否正确;
  • num:负反馈提交次数记录是否正确;
  • directive:负反馈项记录是否正确;
  • 是否以type和item_id两个字段作为唯一键。

1.3过滤验证

1.3.1获取内容负反馈资源列表(negative_item_list)
def get_negative_item_list(username):
    negative_item_list = []
    url = f'http://xxx.csdn.net/api/v2/recommend/insight/negative/items/by/{username}'
    response = requests.get(url)
    res = response.json()
    pprint.pprint(res)
    for i in res['result']['duplicate']:
        if 'object_id' in i.keys():
            negative_item_list.append(i['type']+':'+i['object_id'])
    for j in res['result']['content poor quality']:
        if 'object_id' in j.keys():
            negative_item_list.append(j['type']+':'+j['object_id'])
    for k in res['result']['advertising']:
        if 'object_id' in k.keys():
            negative_item_list.append(k['type']+':'+k['object_id'])
    return negative_item_list
1.3.2获取推荐流资源列表(item_list)
item_list.append(data['product_type']+':'+data['product_id'])
1.3.3求item_list和negative_item_list交集
    print(f'【推荐返回的item】:{set(item_list)}')
    negative_item_list = get_negative_item_list(username)
    print(f'【内容负反馈】:{set(negative_item_list)}')
    negative_intersection_item = list(set(item_list).intersection(set(negative_item_list)))
    print(f'【内容负反馈过滤】验证结果,item交集:{negative_intersection_item}')
1.3.4交集结果
CSDN个性化推荐系统-负反馈测试
1.3.5结果分析

交集为空,说明没有badcase;
将推荐结果返回的部分资源列表通过提交API写入内容负反馈,再求交集,多次执行交集为空,说明内容负反馈在推荐流过滤生效。

2.标签负反馈

2.1提交API校验

directive:

  • reduce:减少
  • block:屏蔽

2.2获取API校验

  • tag:标签是否统一转小写;
  • last_unlike_time:负反馈操作时间戳记录是否正确;
  • num:负反馈提交次数记录是否正确。

2.3过滤验证

2.3.1获取标签负反馈标签列表(negative_tag_list)
def get_negative_tag_list(username):
    negative_tag_list = []
    url = f'http://xxx.csdn.net/api/v2/recommend/insight/negative/tags/by/{username}'
    response = requests.get(url)
    res = response.json()
    for i in res['result']:
        negative_tag_list.append(i['tag'].lower())
    return negative_tag_list
2.3.2获取推荐流标签列表(tag_list)
tag_list.append(tag['name'])
2.3.3求tag_list和negative_tag_list交集
    negative_tag_list = get_negative_tag_list(username)
    print(f'【减少xx相似内容推荐】:{set(negative_tag_list)}')
    negative_intersection_tag = list(set(tag_list).intersection(set(negative_tag_list)))
    print(f'【减少xx相似内容推荐过滤】验证结果,标签交集:{negative_intersection_tag}')
2.3.4交集结果
CSDN个性化推荐系统-负反馈测试
2.3.5结果分析

交集为空,说明没有badcase;
将推荐结果返回的标签列表通过提交API写入标签负反馈,再求交集,多次执行交集为空,说明标签负反馈在推荐流过滤生效。

3.作者负反馈

3.1提交API校验

  • unlike_user_id大小写场景

3.2获取API校验

  • 作者是否转小写处理;
  • last_unlike_time:负反馈操作时间戳记录是否正确;
  • num:负反馈提交次数记录是否正确。

3.3过滤验证

3.3.1获取作者负反馈作者列表(negative_user_list)
def get_negative_user_list(username):
    negative_user_list = []
    url = f'http://xxx.csdn.net/api/v2/recommend/insight/negative/users/by/{username}'
    response = requests.get(url)
    res = response.json()
    for i in res['result']:
        negative_user_list.append(i.lower())
    return negative_user_list
3.3.2获取推荐流作者列表(user_list)
user_list.append(data['username'])
3.3.3求user_list和negative_user_list交集
    print(f'【推荐返回的作者】:{set(user_list)}')
    negative_user_list = get_negative_user_list(username)
    print(f'【不看此作者】:{set(negative_user_list)}')
    negative_intersection_user = list(set(user_list).intersection(set(negative_user_list)))
    print(f'【不看此作者过滤】验证结果,作者交集:{negative_intersection_user}')
3.3.4交集结果
CSDN个性化推荐系统-负反馈测试
3.3.5结果分析

交集为空,说明没有badcase;
将推荐结果返回的作者列表通过提交API写入作者负反馈,再求交集,多次执行交集为空,说明作者负反馈在推荐流过滤生效。

三、未登录用户负反馈过滤测试

1.提交API校验

pc传uuid,app传device_id

2.获取API校验

  • imei字段值不做大小写处理;
  • 根据imei字段值可以正确获取到负反馈的数据。

3.过滤验证

类似登录用户的校验流程,只是请求推荐接口的入参有调整。

四、整体回归

  • 召回策略验证;
  • 召回资源类型验证;
  • 未登录用户/登录用户(是否维护uc兴趣标签/是否维护身份标签)场景验证;
  • 单次请求结果中资源类型分布情况验证;
  • 单次请求结果中出现重复作者占比验证;
  • 单次请求结果中出现重复资源验证;
  • 单次请求结果中连续出现同作者资源验证;
  • 其他渠道数据验证(关注流、同城流、blink热门流、推荐用户列表等)
  • 多端验证(app/wap/pc/小程序等)

五、新老负反馈写入hbase对比

旧负反馈 新负反馈
流程 用户提交负反馈->上报到sls->flink消费sls->udf处理写入hbase 用户提交负反馈->通过API直接写入hbase
响应 flink任务时常延迟/迁移华为云等因素,需要重构 实时
文案 文案不统一,如wap端【内容重复推荐】叫【旧闻,重复】,【内容质量较低】叫【内容质量差】,【不看此作者】叫【不喜欢该作者】 各端文案已统一
数据 非blog资源的负反馈数据未正常解析,导致没有正确写入hbase 已兼容不同资源类型

引用
[1] 《如何支持研发对CSDN个性化推荐系统重构》
[2] 《CSDN 个性化推荐系统的设计和演进》
[3] 《CSDN 个性化推荐的数据治理》文章来源地址https://www.toymoban.com/news/detail-508652.html


到了这里,关于CSDN个性化推荐系统-负反馈测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python+Django+Mysql开发简单在线课程推荐系统简单教程 基于用户的协同过滤推荐算法 个性化课程推荐系统 爬虫 可视化数据分析 机器学习 人工智能 个性化推荐 相关推荐

    1、开发工具和使用技术 Python3及以上版本,Django3.6及以上版本,mysql8,navicat数据库管理工具或者sqlyog数据库管理工具,html页面,javascript脚本,jquery脚本,echarts.js可视化图表工具,自定义星星评分功能(使用font-awesome星星图标字体)等。 2、实现功能 前台首页地址:http://1

    2024年02月05日
    浏览(110)
  • python+django+协同过滤算法-基于爬虫的个性化书籍推荐系统(包含报告+源码+开题)

    为了提高个性化书籍推荐信息管理的效率;充分利用现有资源;减少不必要的人力、物力和财政支出来实现管理人员更充分掌握个性化书籍推荐信息的管理;开发设计专用系统--基于爬虫的个性化书籍推荐系统来进行管理个性化书籍推荐信息,以MySQL为后端数据库,以PYTHON为前

    2024年02月11日
    浏览(60)
  • 基于springboot图书个性化推荐系统的设计与实现【附ppt和万字文档(Lun文)和搭建文档】

    前台登录: ①首页:图书名称查询、图书信息推荐、好书推荐、图书信息展示 ②图书信息:图书类别、图书名称、名称类别作者查询、图书详情、收藏、点赞、评论 ③好书推荐:图书展示、点击查看 ④留言反馈:用户可以进行留言反馈 ⑤个人中心:可以查看自己的信息、

    2024年02月13日
    浏览(50)
  • LLM-Rec:基于提示大语言模型的个性化推荐

    论文题目:LLM-Rec: Personalized Recommendation via Prompting Large Language Models 作者:Hanjia Lyu, Song Jiang, Hanqing Zeng, Yinglong Xia, Jiebo Luo 机构:University of Rochester, University of California Los Angeles, Meta AI, University of Rochester 本文研究了通过输入增强来提高大语言模型个性化内容推荐性能的各种提示策略

    2024年02月11日
    浏览(55)
  • 基于联合表示学习、用户聚类和模型自适应的个性化联合推荐

    [Personalized Federated Recommendation via Joint Representation Learning, User Clustering, and Model Adaptation] (https://dl.acm.org/doi/abs/10.1145/3511808.3557668) CIKM2022(CCF-B) 文章主要创新点(消融实验分析的三个点): 联合表示学习 联合表示学习是指通过将用户的协作信息和属性信息结合起来,使用图神经网络

    2024年02月06日
    浏览(64)
  • 1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月07日
    浏览(84)
  • 二代水务系统架构设计分享——DDD+个性化

    C/S架构的单体桌面应用,可以满足客户个性化需求,易于升级和维护。相比于一代Winform,界面要求美观,控件丰富可定制。 依托.Net6开发平台,采用模块化思想设计(即分而治之的策略),每个模块采用DDD分层设计。前端选用WPF + Prism框架,后端选用ABP + EF框架,数据库选择SQ

    2024年02月14日
    浏览(42)
  • 利用网络教育系统构建个性化学习平台

    在现代教育中,网络教育系统作为一种创新的学习方式,为学生提供了更加个性化和灵活的学习体验。在本文中,我们将通过简单的技术代码,演示如何构建一个基础的网络教育系统,为学生提供个性化的学习路径和资源。 首先,确保你的系统已经安装了适当版本的Python和

    2024年02月04日
    浏览(62)
  • SaaS系统平台,如何兼顾客户的个性化需求?

    在当今数字化的商业环境中,SaaS系统已经成为企业运营的重要组成部分之一。 SaaS系统平台的好处是显而易见的,可以将业务流程数字化,从而帮助企业提高效率并节省成本。 但是,由于 每个企业的业务都不尽相同 ,所以在选择SaaS系统时,企业需要 考虑系统的个性化定制

    2024年02月06日
    浏览(96)
  • 陪诊系统源码开发:实现个性化医疗陪护的创新之路

    陪诊系统的源码开发在现代医疗中具有重要意义。本文将通过代码示例介绍陪诊系统的源码开发,展示如何实现个性化医疗陪护的创新方案。 首先,确保你的开发环境中已经安装了合适的编程语言和框架,比如Python和Django。使用以下命令创建一个新的Django项目: 在Django项目

    2024年02月11日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包