一种基于GitHub社交技术网络的开发者推荐方法技术

技术编号:37440219 阅读:10 留言:0更新日期:2023-05-06 09:12
本发明专利技术提供一种基于GitHub社交技术网络的开发者推荐方法,该方法包括:获取GitHub社交技术网络中的行为数据并进行基础的数据清洗;根据行为数据对社交网络中开发者节点进行向量化表示;训练命名开发者价值度量模型;接收用户输入的指定开发者节点向量,根据开发者价值度量模型计算节点所在的社交技术网络中其余开发者节点的价值;将价值排名Top

【技术实现步骤摘要】
一种基于GitHub社交技术网络的开发者推荐方法


[0001]本专利技术涉及开源软件生态系统领域和开发者推荐
,尤其是一种基于GitHub社交技术网络的开发者推荐方法。

技术介绍

[0002]近年来,随着开源生态的快速崛起,开源已经成为软件行业发展的一种趋势。开源软件已经成为现代社会数字基础设施的重要依赖,开源软件的维护和可持续健康发展至关重要。开源软件的不断发展过程中逐渐形成了一套分布式协作的模式,基于版本控制系统的协作开发平台(如GitHub)已经成为现代开源软件的标准化协作平台。所有的用户都能实时关注社区内任何一个开源项目的发展动态,无限制地向其感兴趣的软件项目提交代码合并请求,自由地评论其他开发者的贡献。在任何一个开源项目中,都会存在项目的核心开发者,核心开发者对于项目的贡献度高,在项目中的影响力大,对于对特定项目感兴趣的普通开发者而言,需要尽可能多的通过接触核心开发者了解项目的发展和动向。但目前对于项目内开发者的价值度量方法仍不完善,普通开发者难以准确追随项目的核心信息并参与到开源项目中。
[0003]综上所述,针对开发者价值度量复杂、推荐不准确的问题,建立完善的开发者价值度量模型并引入全面的指标进行开发者推荐具有重要的意义。

技术实现思路

[0004]本专利技术的目的是针对现有技术的不足提出的一种基于GitHub社交技术网络的开发者推荐方法,采用链接预测模型,根据项目内开发者协作网络的社交和技术属性,构建开发者价值度量模型,来获得项目内的开发者推荐。本专利技术有效解决了开源软件生态中,开发者的价值度量和开源项目核心开发者的推荐问题,能够帮助普通开发者更快融入开源社区,降低了解项目核心信息的成本,对开源项目的长久发展有着极大的帮助。
[0005]实现本专利技术目的的具体技术方案是:
[0006]一种基于GitHub社交技术网络的开发者推荐方法,特点是构建了基于开发者社交协作网络的较为全面的开源社区开发者的价值度量体系,提出了完善的网络评价指标,其构建包括以下具体步骤:
[0007]步骤1:获取GitHub社交技术网络中的行为数据并进行基础的数据清洗
[0008]从GitHub上爬取代码仓库中开发者的日志行为数据,所爬取到的行为数据存在各种缺失或其他原因导致的脏乱,要对其进行数据清洗,删除有属性缺失的不可用数据,处理成整洁规范易于阅读处理的数据集;
[0009]步骤2:开发者节点进行向量化表示
[0010]将步骤1中得到的开发者行为数据根据行为类型划分为两类:开发者之间的社交类行为数据和开发者与代码仓库之间的技术类行为数据,两类行为数据中包含的日志数据类型不同;选取两类行为数据中的7种行为数据对仓库中的开发者节点进行向量化表示;
[0011]步骤3:建立开发者价值度量模型
[0012]对步骤2中得到的代表开发者节点行为特征的向量数据,基于开发者与仓库的交互关系和开发者之间的协作关系构建社交技术网络,对网络中的连边赋差异化的权重,在构建完成的社交技术网络的基础上建立并训练开发者价值度量模型,得到网络中的开发者节点价值;
[0013]步骤4:开发者推荐模型的构建与训练
[0014]基于同质网络特征,对数据集中的开发者节点应用步骤3中的度量模型,构建开发者推荐网络;基于步骤3中得到的开发者节点价值,结合链接预测算法对开发者间的协作关系进行预测,使用步骤1得到的数据集进行模型的训练与验证;
[0015]步骤5:开发者推荐模型的使用
[0016]在步骤4中训练完成开发者推荐模型后,将步骤2中得到的开发者节点行为数据的向量化表示,输入进得到的开发者推荐模型;根据开发者的价值度量结果,从仓库所有开发者中确定出前N个开发者作为推荐结果;其中,N为正整数。
[0017]其中,步骤2所述的开发者节点向量模型,按下述步骤构建:
[0018]2‑
1:数据集中包含大量Github项目的日志数据,通过项目名称在数据集中筛选出要应用开发者推荐方法的项目的对应数据;
[0019]2‑
2:选取所有开发者都有权限操作的关注(Star)、创建副本(Fork)、问题评论(IssueComment)、问题创建(OpenIssue)、代码提交创建(OpenPullRequest)、代码提交审阅(PullRequestReviewComment)和代码提交合入(PullRequestMerged)的7类社交和技术行为数据构建节点的向量化表示。
[0020]其中,开发者在所选项目中每创建一个issue,记1次OpenIssue;在issue中每评论一次,记1次IssueComment;为项目提交一个pullrequest,记1次OpenPullRequest;对pullrequest进行review并提出相应的建议,记1次PullRequestReviewComment,对特定代码行的评论记为PullRequestReviewComment,直接对pullrequest的评论记为IssueComment事件;开发者提出的一个pullrequest被合入,记1次PullRequestMerged;开发者star项目,记1次Star;开发者fork项目,记1次Fork。
[0021]所述步骤3所述的开发者价值度量模型,按下述步骤构建:
[0022]3‑
1:对开发者的7类行为数据赋不同权重,权重值分别为2、1、3、4、2、1和2,开发者的价值度量由下述(1)式计算:
[0023]V
u_d
=C
issue_comment
+2C
open_issue
+3C
open_pr
+4C
review_comment
+2C
pr_merged
+C
star
+2C
fork
(1)
[0024]其中:C
issue_comment
为该开发者对代码仓库内issue的评论次数,C
open_issue
为该开发者在代码仓库内新建的issue数量,C
open_pr
为该开发者在代码仓库内新提交pullrequest的次数,C
review_comment
为该开发者对代码仓库内pullrequest的评论次数,C
pr_merged
为该开发者在代码仓库内提交pullrequest的被合入次数,C
star
为该开发者对代码仓库的关注状态,只考虑当前状态,开发者star项目计为1,否则计为0,C
fork
为该开发者对代码仓库产生fork行为的次数;
[0025]3‑
2:基于PullRequest中包含的代码行数对PullRequestMerged事件计数进行了权重修正,即对于单PullRequest修改的代码行数在100

...

【技术保护点】

【技术特征摘要】
1.基于GitHub社交技术网络的开发者推荐方法,其特征在于,该方法包括以下具体步骤:步骤1:获取GitHub社交技术网络中的行为数据并进行基础的数据清洗从GitHub上爬取代码仓库中开发者的日志行为数据,所爬取到的行为数据存在各种缺失或其他原因导致的脏乱,要对其进行数据清洗,删除有属性缺失的不可用数据,处理成整洁规范易于阅读处理的数据集;步骤2:开发者节点进行向量化表示将步骤1中得到的开发者行为数据根据行为类型划分为两类:开发者之间的社交类行为数据和开发者与代码仓库之间的技术类行为数据,两类行为数据中包含的日志数据类型不同;选取两类行为数据中的7种行为数据对仓库中的开发者节点进行向量化表示;步骤3:建立开发者价值度量模型对步骤2中得到的代表开发者节点行为特征的向量数据,基于开发者与仓库的交互关系和开发者之间的协作关系构建社交技术网络,对网络中的连边赋差异化的权重,在构建完成的社交技术网络的基础上建立并训练开发者价值度量模型,得到网络中的开发者节点价值;步骤4:开发者推荐模型的构建与训练基于同质网络特征,对数据集中的开发者节点应用步骤3中的度量模型,构建开发者推荐网络;基于步骤3中得到的开发者节点价值,结合链接预测算法对开发者间的协作关系进行预测,使用步骤1得到的数据集进行模型的训练与验证;步骤5:开发者推荐模型的使用在步骤4中训练完成开发者推荐模型后,将步骤2中得到的开发者节点行为数据的向量化表示,输入进得到的开发者推荐模型;根据开发者的价值度量结果,从仓库所有开发者中确定出前N个开发者作为推荐结果;其中,N为正整数。2.根据权利要求1所述的基于GitHub社交技术网络的开发者推荐方法,其特征在于,步骤2所述的开发者节点的向量化表示,按下述步骤构建:2

1:数据集中包含大量Github项目的日志数据,通过项目名称在数据集中筛选出要应用开发者推荐方法的项目的对应数据;2

2:选取指定项目中所有开发者都有权限操作的关注即Star、创建副本即Fork、问题评论即IssueComment、问题创建即OpenIssue、代码提交创建即OpenPullRequest、代码提交审阅即PullRequestReviewComment和代码提交合入即PullRequestMerged的7类社交和技术行为数据构建节点的向量化表示;其中,开发者在所选项目中每创建一个issue,记1次OpenIssue;在issue中每评论一次,记1次IssueComment;为项目提交一个pull request,记1次OpenPullRequest;对pull request进行review并提出相应的建议,记1次PullRequestReviewComment,对特定代码行的评论记为PullRequestReviewComment,直接对pull request的评论记为IssueComment事件;开发者提出的一个pull request被合入,记1次PullRequestMerged;开发者star项目,记1次Star;开发者fork项目,记1次Fork。3.根据权利要求1所述的基于GitHub社交技术网络的开发者推荐方法,其特征在于,步骤3所述的开发者价值度量模型,按下述步骤构建:
3

1:对开发者的7类行为数据赋不同权重,权重值分别为2、1、3、4、2、1和2,开发者的价值度量由下述(1)式计算:V
...

【专利技术属性】
技术研发人员:朱香宁王伟蒲鹏钱卫宁周傲英
申请(专利权)人:华东师范大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1