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

article/2025/7/1 5:15:48

文章目录

  • 前言
  • 一、uc不感兴趣标签过滤测试
    • 1.uc不感兴趣标签获取(uc_unlike_tag_list)
      • 1.1个人中心界面
      • 1.2从标签中可以发现什么?
      • 1.3与研发确认点
      • 1.4设计开发
      • 1.5接口获取结果
    • 2.推荐流文章标签获取(tag_list)
      • 2.1部分代码
      • 2.2基本标签校验
      • 2.3基本标签校验结果
    • 3.推荐流uc不感兴趣标签过滤验证
      • 3.1校验方法
      • 3.2部分代码
      • 3.3校验结果
      • 3.4结果分析
    • 4.用户场景回归
  • 二、用户推荐流负反馈过滤测试
    • 1.内容负反馈
      • 1.1提交API校验
      • 1.2获取API校验
      • 1.3过滤验证
        • 1.3.1获取内容负反馈资源列表(negative_item_list)
        • 1.3.2获取推荐流资源列表(item_list)
        • 1.3.3求item_list和negative_item_list交集
        • 1.3.4交集结果
        • 1.3.5结果分析
    • 2.标签负反馈
      • 2.1提交API校验
      • 2.2获取API校验
      • 2.3过滤验证
        • 2.3.1获取标签负反馈标签列表(negative_tag_list)
        • 2.3.2获取推荐流标签列表(tag_list)
        • 2.3.3求tag_list和negative_tag_list交集
        • 2.3.4交集结果
        • 2.3.5结果分析
    • 3.作者负反馈
      • 3.1提交API校验
      • 3.2获取API校验
      • 3.3过滤验证
        • 3.3.1获取作者负反馈作者列表(negative_user_list)
        • 3.3.2获取推荐流作者列表(user_list)
        • 3.3.3求user_list和negative_user_list交集
        • 3.3.4交集结果
        • 3.3.5结果分析
  • 三、未登录用户负反馈过滤测试
    • 1.提交API校验
    • 2.获取API校验
    • 3.过滤验证
  • 四、整体回归
  • 五、新老负反馈写入hbase对比

前言

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

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

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

用户:weixin_38093452

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

1.1个人中心界面

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:# 过滤掉npsif '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校验结果

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交集结果

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交集结果

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交集结果

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 个性化推荐的数据治理》



http://chatgpt.dhexx.cn/article/fZBRvyVu.shtml

相关文章

个性化推荐系统设计(2.1)——推荐算法介绍

协同过滤算法 协同过滤(Collaborative filtering, CF)算法是目前个性化推荐系统比较流行的算法之一。 协同算法分为两个基本算法:基于用户的协同过滤(UserCF)和基于项目的协同过滤(ItemCF)。 基于属性的推荐算法 基于…

[推荐系统]基于个性化推荐系统研究与实现(1)

目 录 一、搜索引擎与推荐系统 二、推荐系统原理与算法 2.1 Jaccard系数 2.2 余弦相似度 三、数据定向爬取及电影数据集 3.1 爬取近七日天气预报数据存入DB数据库,分为五步完成。 3.2 爬取豆瓣电影数据集存入CSV文件,分四步。 3.3 电影&#xf…

如何支持研发对CSDN个性化推荐系统重构

目录 大地图工具构建数据治理保持发布重视测试小结引用 一个以内容服务为主的软件,它的推荐系统在数据侧对软件产生着举足轻重的作用。数据的三个方面决定了这个内容软件的档次。 数据的质量好坏数据和用户需求的相关性好坏数据的层次体系好坏 通常,我…

智能个性化推荐系统设计

推荐系统构成 * 召回层 - 对海量的数据进行召回 * 排序层 - 对召回后的数据进行排序,排序结果返回给用户 推荐系统架构 基于物品的推荐系统架构 基于用户的推荐系统架构

个性化推荐系统设计(4.1)——案例分析

在过去的十年中,神经网络已经取得了巨大的飞跃。如今,神经网络已经得以广泛应用,并逐渐取代传统的机器学习方法。 接下来,我要介绍一下YouTube如何使用深度学习方法来做个性化推荐。 由于体量庞大、动态库和各种观察不到的外部因素…

141.如何个性化推荐系统设计-1

141.1 什么是个性化推荐系统? 个性化推荐系统就是根据用户的历史,社交关系,兴趣点,上下文环境等信息去判断用户当前需要或潜在感兴趣的内容的一类应用。大数据时代,我们的生活的方方面面都出现了信息过载的问题&#…

下一代个性化推荐系统

本文结合技术及社会需求发展的大背景,讲述了当前推荐系统的价值及所面临的挑战,并指出了下一代个性化推荐系统的设计思路及需要注意的问题。 作为个性化推荐系统核心的协同过滤(Collabora-tive Filtering)算法,是Goldb…

基于大数据的个性化推荐系统

随着互联网时代的发展和大数据时代的到来,人们逐渐从信息匮乏的时代走入了信息过载的时代。为了让用户从海量信息中高效地获取自己所需的信息,推荐系统应运而生。 推荐系统的主要任务就是联系用户和信息,它一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在…

CSDN 个性化推荐系统的设计和演进

个性化推荐项目 个性化推荐的设计和演进项目概览项目梳理依赖管理实现代码的重构和改进持续演化 个性化推荐的设计和演进 CSDN 的个性化推荐系统,是从既有的推荐项目中剥离出来的一个子项目,这个项目随后移交到了我们AI组。在近一年的时间内&#xff0c…

【个性化推荐系统】简介

个性化推荐系统-简介 1. 推荐系统简介2. 推荐系统产生背景3. 推荐系统的作用4. 推荐系统和Web项目的区别 1. 推荐系统简介 ​ 个性化推荐 (推荐系统) 经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一,在电商(淘宝/京东…

个性化推荐系统研究综述

从最初接触个性化推荐系统已过去六天。今天是第七天,完全可以对前六日的学习做出复盘。推荐系统并没有如同网络上那般盛传的玄秘深晦,而是直白到令人一眼看穿。 本文从六个层面总结个性化推荐系统: 在用户建模上,详细总结了用户…

个性化推荐系统实践应用

个性化推荐已经成为现代人们生活的一部分, “猜你喜欢”、“相关阅读”你一定并不陌生。计算机如何做到对用户投其所好?企业在做个性化推荐时要如何精准把握用户兴趣?如何解决冷启动问题?如何避免推荐结果的单调与重复&#xff1f…

新闻个性化推荐系统

新闻个性化推荐系统 一、绪论及背景1.1、绪论1.2、背景1.3、发展历史 二、需求分析2.1、功能需求2.1.1、用户功能需求2.1.2、运营功能需求2.1.3、算法功能需求 2.2、非功能需求2.2.1、性能需求2.2.2、准确性需求2.2.3、稳定性需求2.2.4、可靠性需求 三、详细设计3.1、系统结构设…

【推荐系统】什么是好的推荐系统?个性化和非个性化推荐

最近在写一些关于推荐系统的介绍,找了不少案例及资料,总觉得不够具体及深入,没有一些可作为基础及科普类,于是萌生自己来写一篇试试。 定义:推荐系统是信息过滤系统的子类,旨在预测用户对产品或服务的“评…

个性推荐①——系统总结个性化推荐系统

个性推荐系列目录: 个性推荐②—基于用户协同过滤算法原及优化方案 个性推荐③—基于物品的协同过滤算法及优化方案 本文是整理于个性推荐经典之作《推荐系统实战》,将会以十个大家最想问的问题,揭开个性化推荐系统的神秘面纱(文…

个性化推荐算法(推荐系统)概要

读者读完本文后,你会知道每类范式常用的算法有哪些、实现的思路是什么、以及常用的应用场景。本文也可以作为读者落地推荐算法到真实推荐场景的参考指南。 一、推荐算法与产品介绍 什么是推荐系统? 在介绍推荐算法之前需要先介绍一下什么是信息过载。…

深度解析京东个性化推荐系统

向AI转型的程序员都关注了这个号👇👇👇 人工智能大数据与深度学习 公众号:datayx 作者简介: fisherman,时任推荐部门推荐系统负责人,负责推荐部门的架构设计及相关研发工作。Davidxiaozhi&…

个性化推荐系统实践

个性化推荐已经成为现代人们生活的一部分, “猜你喜欢”、“相关阅读”你一定并不陌生。计算机如何做到对用户投其所好?企业在做个性化推荐时要如何精准把握用户兴趣?如何解决冷启动问题?如何避免推荐结果的单调与重复&#xff1f…

Scratch Paper Minecraft

Paper Minecraft Scratch 也能创造奇迹 几乎还原了Paper Minecraft,我的世界2D版。| o | 注:文章末尾有下载链接。❤

指纹传感器和Blackfin处理器增强了生物识别设备的设计

生物识别与安全 在当今世界,对有效安全实施和有效实施的需求日益明显。必须确定个人身份以允许或禁止访问安全区域,或使他们能够使用计算机,个人数字助理(PDA)或移动电话。生物特征签名或生物特征用于通过测量某些独特…