基于开发人员社交网络的软件众包任务推荐系统及方法与流程

文档序号:15636780发布日期:2018-10-12 21:34阅读:1010来源:国知局

本发明涉及的是一种信息过滤领域的技术,具体是一种基于开发人员社交网络的软件众包任务推荐系统及方法。



背景技术:

近些年来,topcoder、解放号以及猪八戒等软件众包平台利用互联网的优势发展迅速。软件众包平台的基本流程是:1)任务发布者将任务发布到众包平台,并提供相应的报酬;2)众包平台的开发人员可以浏览到任务,如果他们感兴趣可以报名该任务;3)任务发布者从众多的报名人员中选择合适的人员开发该任务;4)开发人员成功完成任务并获得相应的报酬。如果开发人员不能及时找到合适的任务,任务不能及时完成,任务开发者和开发人员都会遭受极大的损失。因此,良好的推荐系统对于软件众包平台的发展至关重要。

推荐系统中有两大类方法,分别为基于内容的方法和基于协同过滤的方法。基于协同过滤的方法具有易于理解、在很多领域有非常好的效果以及不需要知识工程等优点,但同时也存在着数据稀疏的问题,容易引起任务推荐的冷启动,并导致任务推荐的准确度下降。



技术实现要素:

本发明针对现有技术无法在初始状态下进行优化且对历史数据的依赖性过强等缺陷,提出了一种基于开发人员社交网络的软件众包任务推荐方法及系统,能够解决推荐目标人员的冷启动问题,提高任务推荐的准确度。

本发明是通过以下技术方案实现的:

本发明涉及一种基于开发人员社交网络的软件众包任务推荐系统,包括:数据库、开发人员操作分析模块、社交网络构建模块和推荐模块,其中:数据库与开发人员操作分析模块相连并输出开发人员操作记录信息,数据库与社交网络构建模块相连并输出开发人员好友关系信息以及开发人员操作记录信息,开发人员操作分析模块与社交网络构建模块相连并输出开发人员的分类信息与历史任务的评分信息,社交网络构建模块与推荐模块相连并输出社交信息,推荐模块输出活跃人员和非活跃人员的目标任务推荐信息。

所述的开发人员操作记录信息包括:浏览、报名和完成任务的信息。

所述的社交信息包括开发人员好友关系信息及社交影响程度。

本发明涉及上述系统的软件众包任务推荐方法,将软件众包平台上的开发人员分为曾经报名过任务的活跃人员和从未报名过任务的非活跃人员;以活跃人员为节点、开发人员在平台上的好友关系为线建立社交网络,并根据社交网络内互为好友的开发人员浏览和报名历史任务的重合度,优化社交网络;在建立和优化社交网络的同时对活跃人员报名历史任务后未获得任务或完成任务的情况给予相应的评分,得到历史任务评分;最后根据优化的社交网络和历史任务评分采用协同过滤方法建立活跃人员目标任务的推荐模型,为活跃人员推荐合适的目标任务,对于非活跃人员根据优化的社交网络找到与之关联的活跃好友,修正活跃人员目标任务的推荐模型后为该非活跃人员推荐目标任务。

技术效果

与现有的技术相比,本发明在为非活跃人员推荐合适的任务的f1-score平均提高16.7%。其中p和r表示推荐结果的准确率和召回率;a和t表示推荐的任务集合和正确的任务集合。可见本发明能够利用开发人员的社交信息,量化开发人员的好友影响程度,同时对于操作信息较少的非活跃人员,解决推荐目标任务的冷启动问题,提高任务推荐的准确度。

附图说明

图1为本发明的系统模块拓扑图

图2为本发明方法流程图。

具体实施方式

下述实施例涉及的参数包括:u∈u,u为开发人员,u为开发人员集合;i∈i,i为任务,i为任务集合;f∈u×u表示开发人员之间的好友关系矩阵,fu表示开发人员u对应的好友集合;v∈u×i表示开发人员和任务之间的浏览关系矩阵,b∈u×i表示开发人员和任务之间的报名关系矩阵,c∈u×i表示开发人员和任务之间的完成关系矩阵,vu、bu和cu分别表示开发人员u浏览、报名和完成的任务集合,vv和bv分别表示开发人员v浏览和报名的任务集合;r∈u×i表示开发人员和任务之间的评分矩阵,多数众包平台人员没有直接对于项目的评分,因此需要根据人员对项目的操作定义规则,计算人员对项目的评分。

本实施例涉及一种基于开发人员社交网络的软件众包任务推荐系统,包括:数据库、开发人员操作分析模块、社交网络构建模块和推荐模块,其中:数据库与开发人员操作分析模块相连并输出开发人员操作记录信息,数据库与社交网络构建模块相连并输出开发人员好友关系信息以及开发人员操作记录信息,开发人员操作分析模块与社交网络构建模块相连并输出开发人员的分类信息与历史任务的评分信息,社交网络构建模块与推荐模块相连并输出社交信息,推荐模块输出活跃人员和非活跃人员的目标任务推荐信息。

所述的开发人员操作分析模块包括:开发人员分类模块和历史任务评分模块,其中:数据库与开发人员分类模块相连并输出开发人员操作记录信息,开发人员分类模块与历史任务评分模块相连并输出活跃人员的历史任务报名与完成信息;

所述的开发人员分类模块用于根据开发人员是否报名过任务,将开发人员分为活跃人员和非活跃人员;

所述的历史任务评分模块用于对活跃人员的报名和完成历史任务情况进行评分。

所述的社交网络构建模块用于构建基于开发人员之间好友关系的社交网络,并依据好友间的社交影响程度进行社交网络优化。

所述的推荐模块包括:推荐生成模块和推荐修正模块,其中:推荐生成模块与社交网络构建模块相连用于直接生成活跃人员的目标任务推荐信息,推荐生成模块与推荐修正模块相连并输出活跃人员对于任务的评分。具体方法是使用协同过滤算法构建损失函数,使用sgd(stochasticgradientdescent)算法学习相应的参数。推荐修正模块与社交网络构建模块相连用于获得活跃人员与非活跃人员之间的社交影响程度。

所述的开发人员操作记录信息包括:浏览、报名和完成任务的信息。

所述的社交信息包括开发人员好友关系信息及社交影响程度。

如图1所示,本实施例涉及上述系统的任务推荐方法,将软件众包平台上的开发人员分为曾经报名过任务的活跃人员和从未报名过任务的非活跃人员;然后以活跃人员为节点、开发人员在平台上的好友关系为线建立社交网络,并根据社交网络内互为好友的开发人员浏览和报名历史任务的重合度,优化社交网络;在建立和优化社交网络的同时对活跃人员报名历史任务后未获得任务或完成任务的情况给予相应的评分,得到活跃人员的历史任务评分;最后根据优化的社交网络和历史任务评分采用协同过滤方法建立活跃人员目标任务推荐模型,为活跃人员推荐合适的目标任务,对于非活跃人员根据优化的社交网络找到与之关联的活跃好友,修正活跃人员目标任务推荐模型后为该非活跃人员推荐目标任务。

所述的开发人员集合u=au∪nau,其中:au为活跃人员的集合,nau为非活跃人员的集合。

所述的历史任务评分

所述社交网络通过社交影响程度du,v来优化,heat(p)=0.1×|vp|+0.3×|bp|,其中:fu,v=0表示开发人员u和v之间不存在好友关系,du,v=0,即不存在社交影响;fu,v=1表示开发人员u和v之间为好友关系;α表示浏览和报名历史任务的重合度对于社交影响程度贡献的权重,通过实验获得;heat(p)表示历史任务p的流行程度;vp和bp分别表示浏览和报名历史任务p的开发人员集合;即两个互为好友的开发人员之间浏览和报名历史任务p的重合度越高,说明开发人员之间兴趣和能力越相似,那么他们之间的社交影响程度越大。

所述的协同过滤方法采用sisvd(socialinfluencesingularvaluedecomposition)算法,通过计算活跃人员的目标任务评分建立推荐模型,进而向活跃人员推荐目标任务:

所述的目标任务评分评分误差其中:μ是众包平台所有评分的平均值,bu、bi分别表示人员u和任务i的平均评分与全局均值μ的差值,qi为任务i的特征向量,pu为用户u的特征向量,nu为活跃人员u隐式反馈涉及的任务集合,yj为ru,i的隐式反馈向量,nv为人员v隐式反馈涉及的任务集合,xj表示活跃人员好友的历史评分信息对于该活跃人员的目标任务评分信息的影响因素,j为人员v隐式反馈涉及的某一项任务。

根据目标任务评分公式,当活跃人员u没有任何好友,即fu集合为空时,

所述推荐生成模型中各参数(bu,bi,μ,qi,pu,yj,xj)通过损失函数l经sgd算法迭代学习获得,λ为正则化参数,防止训练陷入过拟合的状态。γ为学习率,控制每一步参数的更新大小:

所述的损失函数

所述的迭代学习过程为:

bu←bu+γ(eu,i-λbu);

bi←bi+γ(eu,i-λbi);

pu←pu+γ(eu,iqi-λpu);

所述的修正推荐模型后得到非活跃人员的目标任务评分,其中:活跃人员v是非活跃人员u的好友。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1