算法大公开!开源项目的Gitee指数是如何计算的?
经常逛 Gitee 的同学一定会注意到,在 Gitee 上衡量一个开源项目优质与否,除了 Star 的数量以外,还有一个很重要的指标——Gitee 指数。如果该项目 Star 数量很多但 Gitee 指数较低,那么该项目可能“年久失修”或已无人维护,如果该项目 Star 数量并不多但 Gitee 指数较高,那么说明这个项目是个“潜力股”,值得持续关注。
综合 Gitee 八年来的经验,我们明白想要对开源项目的质量进行合理评估,仅仅只看 Star 数量是远不够的,要想全方位地评估一个项目,就必须收集其各方面的基础数据。
在没有推荐算法的情况下,用户会通常会选择高 Star 数的项目,而忽略低 Star 数的项目,低 Star 数的项目就不值得推荐吗?根据这个问题引发了 Gitee 团队对什么是优质开源项目的探讨。最后提出了好的开源项目应该从以下角度切入(以下的数据信息和分析都是依据于真实的开源软件社区)。
Gitee指数评估维度
1.影响力
用来判断开发者是否真正关注过该项目,低 Star 数可能是由种种原因被埋没,而长时间无 Star,可能这个项目并没有辐射到其他开发者。
2.代码活跃度
项目代码“年久失修”,维护人员可能已经抛弃了该项目,只是忘了清除仓库,这样的项目在全球范围内不在少数,但也有可能是已经较为完善的项目,不需要过多地维护。
3.社区活跃度
你对一个项目提了一个 Issue,在短时间内就得到回应,这样的感觉是极好的,反映其项目作者与社区普通用户的互动频率。
4.团队健康
这一点也相当的重要,如果项目实际的贡献者只有那么几位,关键贡献者从团队退出是经常导致一个软件的停更的原因,该指数与贡献者人数和稳定度相关。
5.流行趋势
与项目近期收到用户的关注程度相关。
有了评估维度后,就需要对各个维度进行权重划分,各维度具体的权重如下图所示:
维度计算方法
有权重后就可以对不同维度进行计算了,各维度的计算方法如下:
为项目画像的维度, 为维度下的各个分支特征,是基于业务场景中的经验权重。
要做到数据更加易懂及好看,还要进行特征归一化:
其中为输入的数据,为所有数据样本中的最小值,为所有数据样本中的最大值。
该方法能够将需要对比的数据映射到[0,1]区间中,给用户展示可对比的数据。
归一化后的项目特征如下图:
最终呈现在线上的就是大家在文中最开始看到的效果了。
目前占据 Gitee 指数全站排名第一的项目是来自华为的 AI 框架 MindSpore ,如果你自己项目的 Gitee 指数想要追上它,通过这次的算法大公开,相信你知道要从哪方面努力了,那就赶快行动起来吧!
同时我们也开放各位开发者对于算法的各种建议,目的就是能够最大限度的为大家提供一个科学、合理、公平的开源项目指标,如果你对该算法有什么想法,欢迎留言告诉我们哦~