恰当的方式才是最好的

起因

公司的网站内容是由经纪人维护的,希望每个人都能有机会展示,因为流量和展示的好位置是有限的。
于是就需要一套算法来平衡这种关系。

调研

原本的实现方式

时间维度

算法:系数 * (当前时间 - 发布的时间),分数以此,线性递减的。

内容质量评分

  1. 图片分:系数 * 数量
  2. 内容分:系数 * 字数

点击量的评分

就是根据用户点击某个内容的次数给出响应的扣分,然后让其他分数低的内容顶上去。也是简单的累加减分。

当然实际项目比这个要复杂一些,这里只是为了说明问题,把重点的方法简单描述一下。

另外,这些评分规则都是通过定时任务定时刷新计算的。

调研过程

上述的原始解决方案一看就是很low,而且并不能给出一个恰当的评分。

于是就不免会想到能不能用AI相关的技术来完善评分功能:
比如图片评分可以进行图像识别,对高质量的图片给高分,而低质量的图片给低分,并且能够辨别是不是重复图片等等。
内容上通过语义识别判断写的内容质量好坏,是否重复照抄等。

另外,点击量减分功能实时计算的方式来实现的。

并且引入A/B Testing来验证效果。

然后就根据这个思路进行了学习,希望能够找到方法,可是越深入了解越觉得没有具体实施的思路和方法。
毕竟自己和团队里其他人都没有这个实力来解决这一系列的问题。

反思

经过了一段时间的学习了解之后,虽然暂时认为没法用高大上的方式来实现,但是多少在分数计算的算法思路上还是有些启发的。
于是觉得放弃那些高大上的想法,对我来说就是有点高不可攀,要接收现实。
然后回归问题本身来想办法,哪怕它low,只要能真实有效就好。

决策

改良的实现方式

时间维度

算法:(当前时间 - 发布的时间)不再采用线性递减的方式,而是差值越大的递减的速度越快。

内容质量评分

  1. 图片分:系数 * 数量 无法辨别优劣,降低权重
  2. 内容分:系数 * 字数 无法辨别优劣,降低权重
  3. 新增标题判断:重复标题,根据重复次数,指数级递减。(业务场景决定的会有重复内容,这是一个问题,但是目前不在解决的范围内)

点击量的评分

同样的也是弃用原来的简单粗暴的累加方式(线性递减)改用指数级递减。

优化原来的计算实现过程

经过实际阅读代码之后发现,原来的计算过程本身就有很多需要优化的地方,比如循环里面执行SQL之类的。

A/B Testing

放弃A/B Testing,虽然我认为AB测试非常重要,但是现实真的没有条件允许这样来做。所以放弃。

总结

  1. 实际工作,还是要以结果为导向,特别忌讳眼高手低。
  2. 眼高不奇怪,但是别忘了亲自学习了解,根据团队现状做出判断。认清现状及时放弃天马行空的想法,脚踏实地做事情。
  3. 先出效果,得到认可之后,继续往更好的解决方案努力。别忘了,企业做事情还需要考虑成本和收益。
加载评论框需要科学上网