最新要闻
- 芯海科技(688595)跟踪报告之二:需求下滑影响短期业绩 工业与车规产品推动长期增长|关注
- 她是一位高校“青椒”:入驻企业,探索知行合一|每日视点
- 共绘两岸一家亲的和美画卷
- 八闽“梧桐”繁茂 企业“宾至如归” 全球快资讯
- 《文字玩出花》怎么通过怀旧岁月11关卡
- 【全球热闻】长沙:拟用住房公积金增值收益约4.35亿购买1100余套公租房
- 金花股份: 公司酒店剥离目前还在交割中,后期如有进展公司将及时公告
- ios16.5.1续航能力变差 ios16.5.1升级建议值得更新吗
- 第二批!泰山区发布事业单位公开招聘工作人员拟聘用人员公示
- 每日快讯!填补国内空白!我国首艘深远海多功能科考船开工建造
- 为何日本“迷你西瓜”卖天价?老外切开后,贵是有原因的|当前播报
- 疯狂盗窃15起,衡南摩电“惯偷”落网-世界消息
- 【世界速看料】服了,到底谁在用无线充电啊?
- 光伏50ETF(159864)开盘直线拉升涨超2% 海优新材涨超7%
- 天天热消息:马戏团狮子表演时欲出逃 观众被吓跑:现场一片恐慌 最终没人受伤
- 动力超宝马3系 零百加速6秒!奇瑞艾瑞泽8 2.0T版上市定档
手机
灌区渠道内提前蓄水保障农田用水 保证粮食安全 独家焦点
全球即时:济南市章丘区:读书分享 书香呵护“她”美丽
- 灌区渠道内提前蓄水保障农田用水 保证粮食安全 独家焦点
- 全球即时:济南市章丘区:读书分享 书香呵护“她”美丽
- 加强人才队伍建设 做好继续教育工作_焦点报道
- 端午假期昌江实现旅游收入逾2126万元 同比增长32.5%|世界今日报
- 湖北南漳:盛开在六月的天人菊很夏天
- 焦点速看:2023好网民·在山东|牛联中:27年无偿献血超一万毫升 用涓涓热血诠释人间大爱
家电
天天快看点丨关于项目初期,数据量小的内容推荐的实现方法
前言
当下,只要是一个初具规模的内容应用都具备个性化推荐系统。比如购物类的会有推荐商品模块,搜索条下有个性化的搜索关键词或词条补全词,社交类的有博主推荐,视频或文章推荐等等。这些功能除了要有庞大的数据量,还要有健全的数据存储仓库建设方案,以及后面对数据的清洗,排序,训练后的推荐模型算法。
但是,对于小公司或者说是小项目,在想法还未真正落地就设计大数据存储,推荐算法和一系列大型架构的方案,显然是不符合业务型产品开展的正常规律的。我想那些大厂早期开发应该也没有这么成熟的技术结构,都是不断迭代或者推倒重来一步步走过来的。
(资料图片)
那么,在小项目早期安排了有关于推荐功能的那要如何解决呢? 如何做到下一次迭代在不重构的基础上添加协同过滤推荐? 下面就从视频推荐和用户推荐两个功能展开,用PHP和MySQL进行代码实现。
视频推荐
这里主要通过一个内容热度值进行排序推荐,热度由内容质量和发布时间差决定,时差越长,热度越低,内容质量越高热度越高。而内容质量由视频点赞数,收藏数和评论数外带权重决定,总体就是单位时间内点赞,收藏,评论越高,热度提升,视频就越往前靠。相对的就是发布时间越久,热度就会逐步降低,视频越往后靠。
另外我们还要设计两个参数用于手动调节视频的热度,提高就只需要增加内容质量,所以额外加一个数可以说是初始值。降低可以对时间差添加一个指数,也就是时间差的次方,可以理解是重力,也就是随着时间拉长,重力增加则热度成倍降低。
1. 公式
1.1. ”H“:视频热度值
1.2. ”W“:视频质量,质量值自定(点赞数*权重,收藏数*权重之和,或者点赞率(点赞量/阅读量),收藏率(收藏量/阅读量)之和)等。
1.3. ”I“:初始值,可以手动调节热度或者用于后期用户账号的权重。比如系统已经有了成长体系,账号发育规则基本完善了,用于实时计算账号的权重分配的流量池,权重提升,则后面发布的视频推荐力度大。
1.4. ”T“:时间差,由当前时间 - 发布时间产生,加一的原因是防止时间差为0(分母为零),不过有审核机制下,这种情况并不存在。
1.5. ”G":热度衰减重力,这个也是用于手动调节热度设置的控制参数。不过后期如果添加了举报或者智能复审等环节,再随着诸如点赞和账户权重评估失控热度飙升的情况下,对视频违规或不良表现或临时情况进行减小推荐。默认值最好是1,这种情况就是在同等质量下新发布的越往前。
2. 表结构
CREATE TABLE `hhyp_short_video` ( `id` int(11) NOT NULL AUTO_INCREMENT, `hsvn` varchar(255) DEFAULT "" COMMENT "短视频编号", `type` tinyint(1) DEFAULT "0" COMMENT "类型:1. 视频 2.图文", `user_id` int(11) DEFAULT "0", `video_url` varchar(255) DEFAULT "", `img_url` json DEFAULT NULL, `content` text COMMENT "内容", `market_goods_id` int(11) DEFAULT "0", `address_id` int(11) DEFAULT "0" COMMENT "地址ID", `lat` decimal(4,0) DEFAULT "0" COMMENT "纬度", `lng` decimal(4,0) DEFAULT "0" COMMENT "经度", `ip` varchar(100) CHARACTER SET utf8 DEFAULT "" COMMENT "IP", `channel` tinyint(1) DEFAULT "0" COMMENT "渠道", `read_count` int(11) DEFAULT "0" COMMENT "浏览数", `like_count` int(11) DEFAULT "0" COMMENT "点赞数", `collect_count` int(11) DEFAULT "0" COMMENT "收藏数", `comment_count` int(11) DEFAULT "0" COMMENT "评论数", `share_count` int(11) DEFAULT "0" COMMENT "分享数", `is_top` tinyint(1) DEFAULT "0" COMMENT "是否置顶:0.否 1.是", `status` int(11) DEFAULT "0" COMMENT "0. 审核中 10. 推荐 20. 下架", `hot_int` int(11) DEFAULT "1" COMMENT "热度初始值", `gravity` int(11) DEFAULT "1" COMMENT "热度重力衰减值", `audit_time` int(11) DEFAULT "0" COMMENT "审核时间", `remark` text, `create_time` int(11) DEFAULT "0" COMMENT "创建时间", `delete_time` int(11) DEFAULT "0", `update_time` int(11) DEFAULT "0", PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8mb4;
3. 代码
public static function getList($map, $page = 1, $size = 20) { // 数据指标权重配置 $wcfg = [ "like_weight" => 4, "collect_weight" => 3, "comment_weight" => 1 ]; $timeUnit = 3600; // 单位小时 $where[] = ["delete_time", "=", 0]; $map = array_merge($where, $map); // 单位小时内,点赞/收藏/评论越多热度越高,发布越久热度越低 $alog = "(like_count*%s+collect_count*%s+comment_count*%s+hot_int)/pow((UNIX_TIMESTAMP(NOW())-create_time)/%s, gravity)"; $hotIndex = sprintf($alog, $wcfg["like_weight"], $wcfg["collect_weight"], $wcfg["comment_weight"], $timeUnit); $field = ["id, hsvn,type,user_id,video_url,img_url,content,market_goods_id, like_count,collect_count,address_id,comment_count,share_count,create_time, $hotIndex as hot_index"]; $list = self::field($field) ->json(["img_url"], true) ->with([ "user" => function ($query) { $query->withField("id, nickname, mobile, avatar"); }, "marketGoods" => function ($query) { $query->withField("id, content,freight,user_id"); }, "address" => function ($query) { $query->withField("id, mername"); } ]) ->where($map) ->page($page, $size) ->order("hot_index desc") ->select(); return $list; }
用户推荐
推荐用户,大部分是放在App里的个人中心感兴趣用户模块。有的是给用户推荐授权的通讯录好友,有的是根据行为数据,通过给用户打标签,再推荐与自己标签相似的用户等等方式。而我这里的用户推荐是放在发布视频的用户面板里,本来我想通过协同过滤的相似用户来做,由于数据太有限,加之我们业务本身就不能查看用户关注列表和粉丝列表,所以就暂时用了一个折中的方法,给用户推荐创作者关注的关注。
根据当前面板用户关注的用户里挑出粉丝数最多的前十个,然后再从这十个里分别挑出他们关注用户里粉丝最多的前十,最后合并去重,也就是给自己推荐打开用户关注的关注里粉丝最多的那批人。
1. 表结构
CREATE TABLE `hhyp_user_attention` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL DEFAULT "0" COMMENT "用户id", `comcemed_user_id` int(11) NOT NULL DEFAULT "0" COMMENT "关注的用户id", `create_time` int(11) DEFAULT "0" COMMENT "创建时间", `status` smallint(3) NOT NULL DEFAULT "0" COMMENT "关注状态 0未关注 1已关注", `update_time` int(11) DEFAULT "0" COMMENT "更新时间", PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=352 DEFAULT CHARSET=utf8mb4;
2. 代码
通过查询子查询里指定用户里粉丝最多的前十人(分组排序),然后递归往前查询就形成关注链条,最后再合并查询结果。其实这个也很看数据的,当我真正把这个方法放上去的时候,会发现很多面板里没有用户推荐的数据,因为很多用户根据就没关注几个人。所以通过深度学习或者协同过滤做用户推荐可能要等待一段时间,等用户行为数据产生差不多的时候,我再出一下协同过滤的用户相似度推荐吧。
// 关注链列表 public static function grandadList($userIds = [], &$allList = [], &$level = 1) { $field = ["comcemed_user_id, count(*) as fans_count, {$level} as level"]; $list = self::field($field) ->where("comcemed_user_id", "in", function ($query) use ($userIds) { $query->table("hhyp_user_attention") ->where("user_id", "in", $userIds) ->where("status", "=", 1) ->field("comcemed_user_id"); }) ->where("status", "=", 1) ->group("comcemed_user_id") ->order("fans_count desc") ->limit(10) ->select() ->toArray(); if ($list && $level < 4) { $level++; $comcemedUserIds = array_column($list, "comcemed_user_id"); $list = self::grandadList($comcemedUserIds, $list, $level); } $list = array_merge($allList, $list); return $list; }
关键词:
天天快看点丨关于项目初期,数据量小的内容推荐的实现方法
阴有雷雨或阵雨,局部有冰雹!烟台发布雷电黄色预警信号
受伤乌鸦遇北京高温惨变走地鸡 网友:希望小家伙早日回归大自然 环球视讯
天天动态:如何巧妙解释树图,准确送给男人理想礼物
独当一面!本赛季十大黄金配角:里夫斯成湖人希望,威少转型成功
速看:中国林科院科信所专家赴贵州独山县开展生态护林员统筹管理培训
这场世界级的攻坚考验,华为云GaussDB稳过
springboot~spring-javaformat插件惹的祸
冰雹+雷电+11级风+短时强降水!山东发重要预报,济南等9市有强对流
灌区渠道内提前蓄水保障农田用水 保证粮食安全 独家焦点
观焦点:热!电力股“起飞” 桂东电力、深南电A等涨停 板块轮动下机构盯上哪些股票?
提取jks文件证书和私钥
售价19.98万元 2023款红旗E-QM5 PLUS 560KM上市 环球热推荐
国家开发银行发行190亿元农业农村基础设施专题金融债券-天天微头条
环球播报:网贷逾期多少可以办理延期?网贷延期自己怎么申请办理?|天天消息
全球即时:济南市章丘区:读书分享 书香呵护“她”美丽
不是伊藤,不是张本,国乒头号对手崛起,曾赢孙颖莎,爷爷河北人 全球聚看点
芯海科技(688595)跟踪报告之二:需求下滑影响短期业绩 工业与车规产品推动长期增长|关注
加强人才队伍建设 做好继续教育工作_焦点报道
中交地产:为8个房地产项目公司提供不超8.99亿元财务资助
她是一位高校“青椒”:入驻企业,探索知行合一|每日视点
北京多处公共场所贴出警示:穿洞洞鞋乘扶梯易受伤!_天天播报
共绘两岸一家亲的和美画卷
塞尔达传说野之息女儿国隐藏商店暗号一览 当前热议
环球看点!鄂州00后少年因捐骨髓错过期末考试,校方:补考已安排
又到梅雨季,晾着的衣服为啥总有一股味儿?学会这几招轻松解决→_全球新要闻
天津武清区养老院一览表 全球新消息
环球播报:南通创新区企业租金政策兑现申报材料有哪些?
【时快讯】米体:德佬为奥斯梅恩标价1.8亿欧,若姆巴佩转会巴黎可能签他
欧股周一盘初下跌 势将创下去年10月以来最长连跌记录
2023温州乐清第二季汽车消费券申领入口|天天热推荐
八闽“梧桐”繁茂 企业“宾至如归” 全球快资讯
世界信息:宁波高发最新公告:拟注销全资子公司宝鸡高发
2023济南限行最新规定(持续更新)
“5G-A URLLC+汽车制造”,华为跑出工业数智转型的新加速度
【新视野】“Z世代”画像中国行 你好!香格里拉
环球热推荐:港股医药外包概念股集体上涨 昭衍新药涨超10%
世界快报:新城市:关于提前赎回城市转债的第二十四次提示性公告
十大券商看后市:A股短期或有所波动 流动性仍对市场有支撑
兴业银行潍坊分行开展“普及金融知识万里行”活动|新要闻
6月27日网络游戏板块涨幅达2%
重庆沿山货运通道核心区一期工程文峰山1号隧道左线顺利贯通
“边炒股边学习,力争少交学费”!著名媒体人胡锡进:已开一个股票账户 正式进入中国股市
环球快消息!遥望科技:公司与乐华娱乐有长期合作关系
天天观天下!中国信通院:5月5G手机出货量达2016.9万部 同比增长13.7%
PayerMax获印尼支付牌照,支持当地主流支付方式
如何降低糖尿病发生风险,听听院士怎么说
打造苏州首个大型综合租赁生活社区 恒泰·东延四季公寓开业|环球看点
【天天新视野】诚邀您报名参观2023华南国际工业博览会
每日焦点!让年轻人爱上白酒,不是伪命题
世界即时看!高温席卷,一场新型电力系统的历史级投资机遇来了?
端午假期昌江实现旅游收入逾2126万元 同比增长32.5%|世界今日报
滨州职业学院招生计划-各专业招生人数是多少_焦点速递
《文字玩出花》怎么通过怀旧岁月11关卡
强对流蓝色预警!吉林省部分地区将现8级以上雷暴大风或冰雹
世界快消息!长安期货6月27日早间看盘
科兴制药(688136.SH):将着力建设海外国家的本地化运营团队 全球观天下
【全球热闻】长沙:拟用住房公积金增值收益约4.35亿购买1100余套公租房
全球快资讯:成人麻腮风疫苗注意事项有哪些呢,有哪些症状
金花股份: 公司酒店剥离目前还在交割中,后期如有进展公司将及时公告
香港5月安老按揭登记23宗 环比升53.3% 中银香港(02388)市占率续居首
机器人板块走强,永磁材料受关注,中科磁业盘中涨超9% 今日热搜
罗锋:争取国家级甲鱼产业集群建设项目落户江西 世界热文
九三风采(2023.6.27):九三学社杭州市委员联合杭州图书馆组织“品味书香、守护安康”大型公益健康咨询活动
6月26日利华益集团硫磺价格下调-动态
环球播报:分享第072期大乐透晒票,理论是一码事,实际又是一码事
热讯:2023广东高考普通类物理一分一段表
融资客看好4股 买入占成交超三成 世界百事通
【世界时快讯】荆州职业技术学院新能源汽车学院开展一汽-大众“众育英才”联合培养项目考察
一季度山西煤炭产量创单季度新高-速读
武安:三个“聚焦”助推国有企业高质量发展
虚假宣传,诱导购买抖音短视频变现过程 世界即时看
环球关注:端午节期间日均132.1万人次出入境
ios16.5.1续航能力变差 ios16.5.1升级建议值得更新吗
杭州隐形首富诞生了,靠踩三轮卖冰棍赚600亿,却穿几十元的布鞋
快看点丨“状元概念股”三达膜市值大涨3亿,喜报已删除!员工称“董秘办正开会”
20岁殷若宁首夺大满贯_天天热议
恭喜梅西,获一重磅大奖!含金量高,预热第八座金球,姆巴佩服气 实时
微信群解散后 聊天记录 微信群解散后聊天记录还在 天天热门
湖北南漳:盛开在六月的天人菊很夏天
诸葛科技:持续稳中向好或将成为下半年土地市场的主旋律-每日讯息
【世界报资讯】看“美丽姐”家庭的幸福故事
中国女排公布世联赛韩国站大名单,赛程安排出炉 全球简讯
美前法官批共和党没骨气:支持特朗普是巨大政治误判 等于自我毁灭|最新
2023好网民·在山东|张立敏:讲好医患暖心故事
2022阜阳市中考成绩查询时间及查询入口
高考志愿填报,你需要注意什么
【世界聚看点】2022淮北市中考成绩查询时间及查询入口
环球速看:端午假期全国铁路累计发送旅客7037.9万人次
第二批!泰山区发布事业单位公开招聘工作人员拟聘用人员公示
环球资讯:山东继续募集就业见习岗位10万个
全球即时:云南2023二级建造师考试查分时间
心态崩了?中国足球小将4-3加泰联队,对手摇人+离谱判罚比赛终止_全球信息
斯基拉:廷伯即将加盟阿森纳,转会费4500万欧元签至2028年 全球观热点
马斯克获得2023年度世界航天最高奖
焦点速看:2023好网民·在山东|牛联中:27年无偿献血超一万毫升 用涓涓热血诠释人间大爱
全球视讯!疑似 OPPO K11 新机完成入网审批 直角边框或搭载天玑 9000 处理器
国家电网辛保安:今年电力供应总体可控 对局部缺口优化调度
“木头姐”继续减仓特斯拉,买入AMD和台积电-全球观速讯
车险恶性竞争再起 监管五大举措为费用之争上“紧箍咒” 每日关注