CN103530428A - 一种基于开发者实践技能相似性的同行推荐方法 - Google Patents

一种基于开发者实践技能相似性的同行推荐方法 Download PDF

Info

Publication number
CN103530428A
CN103530428A CN201310538491.0A CN201310538491A CN103530428A CN 103530428 A CN103530428 A CN 103530428A CN 201310538491 A CN201310538491 A CN 201310538491A CN 103530428 A CN103530428 A CN 103530428A
Authority
CN
China
Prior art keywords
developer
project
attribute
technical ability
log
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310538491.0A
Other languages
English (en)
Other versions
CN103530428B (zh
Inventor
李兵
何鹏
杨习辉
汪文娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201310538491.0A priority Critical patent/CN103530428B/zh
Publication of CN103530428A publication Critical patent/CN103530428A/zh
Application granted granted Critical
Publication of CN103530428B publication Critical patent/CN103530428B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于开发者实践技能相似性的同行推荐方法,本发明通过结合Sourceforge.net社区开发者的实践技能相似性与共同开发者数,计算两个开发者之间的得分,并通过对实践技能与共同开发者数之间的比重系数,以及表示开发者实践技能的各属性的比重系数分配情况进行分析,最终确定为社区开发者提供潜在合作同行推荐的最佳方案。本方法具有如下优点:(1)没有局限于单个开源项目下开发者社区推荐,而是以整个社区为推荐对象(如sourceforge.net),从一个更大的视角审视知识共享与群体智能优势;(2)不仅考虑了共同开发者数,还引入了开发者的实践技能相似性,确保在具有相同的共同开发者数情况下,实践技能越相似的开发者优先推荐。

Description

一种基于开发者实践技能相似性的同行推荐方法
技术领域
本发明属于群体软件工程领域,涉及一种基于开发者实践技能相似性的同行推荐方法,尤其涉及一种基于开发者实践技能相似性与共同开发者数的潜在合作同行推荐方法。
背景技术
信息推荐是一种支持在大量信息中为用户提供可供决策参考的有用信息。它根据用户的历史数据或用户的偏好向用户推荐可能感兴趣的人或物,已经被广泛应用于不同领域。常见的推荐系统例如Amazon、Netflix、淘宝、Movielens等。随着社交网络的流行,人-人推荐也备受关注。通过朋友推荐用户可以结识更多的新朋友,扩大自己的交际圈,如国内的微博、朋友网、人人网;国外的Facebook、MySpace、LinkedIn等。
电子商务推荐系统的目的是为用户推送最可能感兴趣的产品,而社交网络推荐系统主要是为用户推荐最可能发生交互的其他用户。各种推荐系统都有助于用户在缺乏经验或无法考虑周全手上所有数据的情况下获取所需信息,做出相应决策。人们在大量信息空间中导航所面临的挑战,在群体软件开发过程中同样存在,尤其是当前流行的开源社区,对于一个软件开发团队,领导者更希望知道“谁知道什么”,有利于他们寻找合适的团队成员。一个开发者遇到问题时,更想知道“谁能帮忙处理这个问题”。如果缺乏这些信息,开发者需要花费精力在大量的人员中进行查找,这无疑是软件工程实践中需要极力避免的情况。为协助开发者从代码重用到合作关系选择的各种行为,提出软件工程推荐系统(RecommendationSystems for Software Engineering,简称RSSE)。
开源社区(SourceForge.net)作为一类典型的在线虚拟群体开发社区,它是一个自组织的合作网络,有着成千上百万来自不同国家,不同文化与专业知识背景的开发者。开发者自愿加入社区与其他开发者建立互惠合作关系,不断地相互学习,共享知识,加强团队开发管理经验,提高自身的专业技能或丰富业余时间,且这些开源开发者在现实生活中往往很少能够面对面的交流。然而,据统计在SourceForge.net社区中,90%以上的项目只有不足5个开发者,其中很多项目因未能及时找到合适的开发人选而被延时或停滞;同时,95%以上的开发者也只参与了不超过5个项目,大量的人力处于空闲状态,整个社区开发者的合作关系表现为一个稀疏的网络。为此,我们提出一种为开发者推荐潜在合作对象的方法。
发明内容
本发明主要是针对各大开源社区(如SourceForge.net)中开发者合作稀疏性,开发者实践技能的表示,人力资源和项目资源的有效利用等问题,提出一种基于开发者实践技能相似性的同行推荐方法。
本发明所采用的技术方案是:一种基于开发者实践技能相似性的同行推荐方法,其特征在于,包括以下步骤:
步骤1:计算开发者间实践技能相似性,其具体实现包括以下子步骤,
步骤1.1:根据获得的社区数据,从中提取用于表示开发者实践技能的各种属性信息,将开发者实践技能Expertise表示为由开发者在项目中担任的角色ATp、项目的状态ATs、项目的主题ATt、项目的开发语言ATlan、项目的目标受众ATia和项目的认证ATlic六个属性构成的向量,即Expertise=(ATp,ATs,ATt,ATlan,ATia,ATlic),其中每一个属性又表示为ATi=(wi1,wi2,wi3,...,win),n为每个属性中所涉及的元素个数,wij为第i个属性的第j个元素的权值;
步骤1.2:采用文本挖掘方法中的TF-IDF公式,经对数变换处理得到一个开发者d在第i个属性的元素j上的权重wdij与属性向量|AT|标准化的表达式为:
w dij = ( log f dij + 1 ) log # devs # dev j
| AT | = 1 Σ j ∈ d i ( ( log f dij + 1 ) · log # devs # dev j ) 2
对于开发者d,如果第i个属性的第j个元素在他参与的项目中出现的次数fdij越多,且参与含有属性元素j的项目开发的开发者数#devj与总开发者数#devs的比值越小,则这个开发者在该属性元素上的实践技能越高;
步骤1.3:采用余弦相似性计算两个开发者A和B的实践技能相似性Sim(A,B),两个开发者A和B在第i个属性上的实践技能相似性为:
cos ( A A T i , B AT i ) = Σ j ∈ AT i ∩ BT i ( log f Aij + 1 ) ( log f Bij + 1 ) ( log # devs # dev j ) 2 Σ j ∈ AT i ( ( log f Aij + 1 ) · log # devs # dev j ) 2 · Σ j ∈ BT i ( ( log f Bij + 1 ) · log # devs # dev j ) 2
则,两个开发者A和B的实践技能相似性Sim(A,B)为:
Sim ( A , B ) = Σ i = 1 n α i cos ( A AT i , B AT i ) , n = 6
其中,αi依次为六个属性对应的比重系数,且αi满足∑αi=1,(i=1,2,...6);
步骤2:计算开发者间共同开发者数,其具体实现包括以下子步骤,
步骤2.1:根据开发者与项目的隶属关系,构建开发者-项目二分网络BDEV_Net=(Nd,Np,Edp),Nd表示开发者的节点集,Np表示项目的节点集,Edp为开发者与项目之间的隶属关系集;
步骤2.2:根据上述的BDEV_Net网络投影得到开发者合作网络DEV_Net=(Nd,Ed),即
如果两个开发者参与了同一个项目的开发,则视为他们之间存在一条合作连边,Nd表示开发者的节点集,Ed为开发者合作连边集;
步骤2.3:基于开发者合作网络DEV_Net,网络中最短路径为2的两个开发者A,B之间存在共同的合作同行,路径条数便为开发者间共同开发者数CDAB
步骤2.4:为标准化开发者间共同开发者数的影响,采用平方根函数处理CDAB,得到标准
化后的两个开发者A和B的共同开发者数:
F ( CD AB ) = 1 - 1 CD AB + 1 ;
步骤3:开发者潜在合作同行推荐,其具体实现包括以下子步骤,
步骤3.1:给定任意一个开发者,结合该开发者与其他开发者的实践技能相似性与共同开发者数,计算开发者之间的得分Score(A,B):
Score ( A , B ) = ( 1 - E ab ) ( βSim ( A,B ) + ( 1 - β ) F ( CD AB ) ) = ( 1 - E ab ) ( β Σ i = 1 n α i cos ( A AT i , B AT i ) + ( 1 - β ) ( 1 - 1 CD AB + 1 ) )
其中,β用来权衡实践技能相似性与共同开发者数的影响比重,β满足0≤β≤1;在开发者合作网络DEV_Net的Ed集中,若开发者A,B有合作,则Eab=1,否则为Eab=0;
步骤3.2:根据开发者间的得分情况,对潜在的合作同行按照得分降序排列,最后为开发者返回前10个最可能建立合作的同行;
步骤3.3:将推荐的结果与之后一年内开发者的实际合作情况进行对比,推荐的十个同行中,开发者只要与其中的任何一个建立了合作,则推荐成功,然后采用平均排序倒数MRR和平均准确率MAP进行评价推荐效果。
作为优选,步骤3.1所述的β用来权衡实践技能相似性与共同开发者数的影响比重,其具体实现包括以下子步骤:
步骤3.1.1:首先,设定属性的比重系数分布如下:
(1)比重系数平均分配,即α123456=16;
(2)比重系数非平均分配,设定主题的属性系数α3=0.4其他5个属性的系数α12456=0.12;
(3)比重系数独立分配,设αi=1,αk≠i=0,即每次只考虑一个属性与共同开发者数的作用;
步骤3.1.2:对比三种情况下,β在[0,1]变化时推荐成功的开发者数与平均排序倒数MRR,平均准确率MAP精度;
步骤3.1.3:根据步骤C1.2得知项目主题比重系数α3与目标受众比重系数α5在β=0.2或0.3时,推荐效果最好,进一步分析当β=0.2或0.3时,两者比重系数在满足α35=1的何种情况能使推荐效果最佳。
本发明通过结合Sourceforge.net社区开发者的实践技能相似性与共同开发者数,计算两个开发者之间的得分,并通过对实践技能与共同开发者数之间的比重系数,以及表示开发者实践技能的各属性的比重系数分配情况进行分析,最终确定为社区开发者提供潜在合作同行推荐的最佳方案。本方法具有如下优点:(1)没有局限于单个开源项目下开发者社区推荐,而是以整个社区为推荐对象(如sourceforge.net),从一个更大的视角审视知识共享与群体智能优势;(2)不仅考虑了共同开发者数,还引入了开发者的实践技能相似性,确保在具有相同的共同开发者数情况下,实践技能越相似的开发者优先推荐。
附图说明
图1:是本发明实施例的数据表之间的关联关系。
图2:是本发明实施例中表示开发者实践技能的关系网络与开发者-项目二分网络及其对应的开发者合作网络示意图。
具体实施方式
以下结合实施例和附图对本发明做进一步的阐述。
实施例是基于Sourceforge.net,本实施例选取Sourceforge.ne上的开发者为研究对象,除了因为它是目前最大的开源软件开发社区,拥有大量的开源项目信息之外,还考虑了它的知名度和数据的易获取性。到2013年2月止已部署了40多万个开源项目和拥有上百万的开发者或用户。为便于开发者间的协调合作,社区为每个开源项目都提供了多种交互渠道,包括邮件列表、bug追踪库、SVN/CVS、论坛等。同时,每个项目在存储过程中都提供各种属性信息,因此满是本发明的研究需求。
选自以Sourceforge.net上至2007年4月份的开发者/项目数据为载体,可以根据开发者的需要提供潜在合作同行推荐。本实施例选取了所有属性中常接触的6个属性展开分析。具体实施时,可以通过开发专门的网络爬虫从网上收集开发者与项目的信息,也可以直接与FLOSSmole组织联系,从该组织提供的平台上下载相关信息,所有数据共涉及9张表包括:开发者表、项目表、5个项目属性表、开发者-项目表、以及项目在数据收集时前两个月的动态表,根据数据表之间的关联关系做相应的处理,尽量减少数据中的错误,并将存在信息缺少的开发者/项目过滤掉;另外,对于那些在数据收集时前两个月内没有变化的项目,被视为已停止开发,这类数据也被排除在外。
最终,满足要求的数据集中包含6171个开发者和3186个开源项目,其中有403个开发者在接下来的一年内与其他开发者建立了合作,对应的项目数为327个,开发者在项目中担任的角色有22种,项目的主题、项目的目标受众、项目的开发语言、项目的状态、项目的认证5个属性分别涉及217、19、61、7、37种。
本发明所采用的技术方案是:一种基于开发者实践技能相似性的同行推荐方法,包括以下步骤:
步骤1:计算开发者间实践技能相似性,其具体实现包括以下子步骤,
步骤1.1:根据获得的社区数据,从中提取用于表示开发者实践技能的各种属性信息,将开发者实践技能Expertise表示为由开发者在项目中担任的角色ATp、项目的状态ATs、项目的主题ATt、项目的开发语言ATlan、项目的目标受众ATia和项目的认证ATlic六个属性构成的向量,即Expertise=(ATp,ATs,ATt,ATlan,ATia,ATlic),其中每一个属性又表示为ATi=(wi1,wi2,wi3,...,win),n为每个属性中所涉及的元素个数,wij为第i个属性的第j个元素的权值;
请见图1,在本实施例中,首先根据数据表之间的关联关系,从中提取表示开发者实践技能的各种属性信息,请见图2,开发者1(开发者代号)参与了两个项目,其中一个项目的主题-Site Management、目标受众-Developers、开发语言-JAVA、状态-pre-Alpha、认证-BSDLicense、角色-Developer;另一个项目的主题-Site Management、目标受众-Administrator、开发语言-PHP、状态-Alpha、认证-BSD License、角色-No specific role。因此,该开发者的实践技能可简单描述为Expertise1=(Developer/No specific role,pre-Alpha/Alpha,SiteManagement,PHP/JAVA,Developers/Administrator,BSD License),在表示开发者实践技能的每一个属性向量时,如果某一个属性的某个元素存在,则该属性向量上该元素对应的值为出现的次数,其他元素值为0,即Status=(0,0,0,...,fdj,...,0),开发者1适应的状态有两种,对应的状态向量
Status=(Planning,Pre-Alpha,Alpha,Beta,Stable,Mature,Inactive)=(0,1,1,0,0,0,0);
步骤1.2:采用文本挖掘方法中的TF-IDF公式,经对数变换处理得到一个开发者d在第i个属性的元素j上的权重wdij与属性向量|AT|标准化的表达式为:
w dij = ( log f dij + 1 ) log # devs # dev j
| AT | = 1 Σ j ∈ d i ( ( log f dij + 1 ) · log # devs # dev j ) 2
对于开发者d,如果第i个属性的第j个元素在他参与的项目中出现的次数fdij越多,且参与含有属性元素j的项目开发的开发者数#devj与总开发者数#devs的比值越小,则这个开发者在该属性元素上的实践技能越高;
对于开发者1:
角色-Developer/No specific role,
w111=(log1+1)*0.5793=0.5793,w112=(log1+1)*0.3016=0.3016,
状态-pre-Alpha/Alpha,
w122=(log1+1)*0.1248=0.1248,w123=(log1+1)*0.1437=0.1437,
主题-Site Management,
w134=(log2+1)*0.1433=0.1864;
开发语言-PHP/JAVA,
w141=(log1+1)*0.4014=0.4014,w142=(log1+1)*0.3591=0.3591
目标受众-Developers/Administrator,
w151=(log1+1)*0.5599=0.5599,w143=(log1+1)*0.2583=0.2583,
认证-BSD License,
w163=(log1+1)*0.0890=0.0890,
其它位置上的权重均为0,因此ATs=(0,0.1248,0.1437,0,0,0,0),其他属性向量表示类似,这里不再给予列举;
步骤1.3:采用余弦相似性计算两个开发者A和B的实践技能相似性Sim(A,B),由于开发者实践技能涉及6个属性,每个属性本身又是一个向量,以至在计算向量相似性时,需要先计算每个属性间的相似性,最后再综合六个属性的相似性,为了表示不同属性的重要性,给每个属性赋予一个比重系数,此时n=6;
两个开发者A和B在第i个属性上的实践技能相似性为:
cos ( A A T i , B AT i ) = Σ j ∈ AT i ∩ BT i ( log f Aij + 1 ) ( log f Bij + 1 ) ( log # devs # dev j ) 2 Σ j ∈ AT i ( ( log f Aij + 1 ) · log # devs # dev j ) 2 · Σ j ∈ BT i ( ( log f Bij + 1 ) · log # devs # dev j ) 2
则,两个开发者A和B的实践技能相似性Sim(A,B)为:
Sim ( A , B ) = Σ i = 1 n α i cos ( A AT i , B AT i ) , n = 6
其中,αi依次为六个属性对应的比重系数,且αi满足∑αi=1,(i=1,2,...6);
在给定的几种比重系数αi分配情况下,每一个开发者根据与其他开发者的实践技能相似性,对其潜在的合作同行进行降序排序,请见图2,开发者1与开发者6之间的三种分配情况下的相似性:
( 1 ) Sim ( 1,6 ) = Σ i = 1 6 α i cos ( A A T i , B A T i ) = 1 6 ( 0.8870 + 0 + 1 + 0.6667 + 0 + 0 ) = 0.4256
( 2 ) Sim ( 1,6 ) = Σ i=1 6 α i cos ( A A T i , B AT i ) = 0.12 * ( 0.8870 + 0 + 0.6667 + 0 + 0 ) + 0 . 4 * 1 = 0.5976
Figure BDA0000408029970000083
步骤2:计算开发者间共同开发者数,其具体实现包括以下子步骤,
步骤2.1:请见图2,根据开发者与项目的隶属关系,构建开发者-项目二分网络BDEV_Net=(Nd,Np,Edp),Nd表示开发者的节点集,Np表示项目的节点集,Edp为开发者与项目之间的隶属关系集;整个二分网络中开发者节点数为6171,项目节点数为3184,是一个无向非加权的稀疏网络,且包含多个连通子图;
步骤2.2:根据上述的BDEV_Net网络投影得到开发者合作网络DEV_Net=(Nd,Ed),即如果两个开发者参与了同一个项目的开发,则视为他们之间存在一条合作连边,Nd表示开发者的节点集,Ed为开发者合作连边集;请见图2,开发者1参与了项目p1,p2的开发,参与这两个项目开发的其他开发者有2、3、4、5,则在得到的开发者合作网络中,开发者1与其他四个开发者之间都有一条合作连边;整个网络也是一个无向非加权的稀疏网络,且包含多个连通子图;
步骤2.3:基于开发者合作网络DEV_Net,网络中最短路径为2的两个节点A,B之间存在共同的合作同行,路径条数便为开发者间共同开发者数CDAB;请见图2,开发者对(1,6)、(2,3)、(2,4)、(4,5)、(5,6)之间都没有直接合作,他们之间的共同开发者数CDAB依次为1、2、1、2、
1,因此,(2,3)与(4,5)之间建立合作的潜在性越大;
步骤2.4:为标准化开发者间共同开发者数的影响,采用平方根函数处理CDAB,得到标准化后的两个开发者A和B的共同开发者数:
F ( CD AB ) = 1 - 1 CD AB + 1 ;
经处理后开发者对(1,6)、(2,3)、(2,4)、(4,5)、(5,6)之间合作的可能性分别为:0.2929、0.4227、0.2929、0.4227、0.2929;
再以前面提到的403个开发者为计算对象,对他们可能合作的同行按共同开发者数降序排序。
步骤3:开发者潜在合作同行推荐,其具体实现包括以下子步骤,
步骤3.1:给定任意一个开发者,结合该开发者与其他开发者的实践技能相似性与共同开发者数,计算开发者之间的得分Score(A,B):
Score ( A , B ) = ( 1 - E ab ) ( βSim ( A,B ) + ( 1 - β ) F ( CD AB ) ) = ( 1 - E ab ) ( β Σ i = 1 n α i cos ( A AT i , B AT i ) + ( 1 - β ) ( 1 - 1 CD AB + 1 ) )
其中,β用来权衡实践技能相似性与共同开发者数的影响比重,β满足0≤β≤1;在开发者合作网络DEV_Net的Ed集中,若开发者A,B有合作,则Eab=1,否则为Eab=0;所以,1-Eab用于表示只保存未曾合作的开发者之间相似性;
β用来权衡实践技能相似性与共同开发者数的影响比重,其具体实现包括以下子步骤:
步骤3.1.1:首先,设定属性的比重系数分布如下:
(1)比重系数平均分配,即α123456=16,表示开发者实践技能的六个属性同等重要;
(2)比重系数非平均分配,设定主题的属性系数α3=0.4其他5个属性的系数α12456=0.12;采用这种分配的主观原因是在sourceforge.net主页查找一个开源项目时,优先提供按主题搜索,其次通过高级设置可以实现其他几个属性的并行搜索,因此我们将主题的属性设置的更高,其他几个属性赋予相同的系数;
(3)比重系数独立分配,设αi=1,αk≠i=0,即每次只考虑一个属性与共同开发者数的作用,便于观察哪几个属性表现更明显,哪些属性表现不突出;
当β=0.2时,开发者1与6的得分:
(1)Score(1,6)=0.2*0.4256+0.8*0.2929=0.3194
(2)Score(1,6)=0.2*0.5796+0.8*0.2929=0.3538
( 3 ) Score ( 1,6 ) = 0.2 * 0.8870 + 0.8 * 0.2929 = 0.4117 0.2 * + 0.8 * 0.2929 = 0.4343 0.2 * 0.6667 + 0.8 * 0.2929 = 0.3677 0.2 * 0 + 0.8 * 0.2929 = 0.2343
步骤3.1.2:以0.1为单位,调整β使其在[0,1]区间变化,对比三种情况下,β在[0,1]变化时推荐成功的开发者数与平均排序倒数MRR,平均准确率MAP精度;在这个过程中,涉及两个问题,(1)以只考虑共同开发者数为基线,对比引入开发者实践技能对推荐的影响,在测试的403个开发者中,存在16个开发者当只考虑共同开发者数时推荐的10个同行中,开发者只与其中不超过3个同行合作,但引入开发者实践技能后,16个开发者中有6个开发者与推荐的Top10个开发者均建立了合作;(2)对比独立分配下,六个属性当中哪些属性对推荐有正作用,哪些属性起负作用或不起作用,其中很明显项目主题比重系数α3与目标受众比重系数α5两个系数在β=0.2或0.3时推荐效果明显突然,推荐成功的开发者数与推荐精度都有较大的提高;
步骤3.1.3:根据步骤C1.2得知项目主题比重系数α3与目标受众比重系数α5在β=0.2或0.3时,推荐效果最好,在保持β=0.2与0.3时,两者比重系数在满足α35=1的情况下,不断以0.1为单位调整两者的比例,统计每种情况,试图找到一个能使推荐效果最佳的分布,在α3=0.8(0.4),α5=0.2(0.6)时,能保证推荐成功的开发者数与推荐精度都最好;
步骤3.2:根据开发者间的得分情况,对潜在的合作同行按照得分降序排列,最后为开发者返回前10个最可能建立合作的同行;在实验之前,本实施例事先统计了合作网络中开发者的平均度为6.8,即开发者之间的平均合作同行数,为此,多种属性比重系数分配下,当β在[0,1]区间变化时,为每个测试开发者返回前10个最可能建立合作的同行;
步骤3.3:将推荐的前10个结果与推荐之后一年内开发者的实际合作情况进行对比,分别采用平均排序倒数(Mean Reciprocal Rank,MRR)和平均准确率(Mean Average Precision,MAP)计算开发者在推荐的10个同行中的推荐效果:
MRR = 1 Q Σ i = 1 | Q | max ( 1 rank ij ) , 1 ≤ j ≤ 10 , MAP = 1 Q Σ i = 1 | Q | AveP i = 1 Q Σ i = 1 | Q | Σ r = 1 N ( P ( r ) × rel ( r ) ) m ,
其中,MRR为首次被接纳的同行位置的倒数的平均值,rankij为被接纳的同行位置,Q为总查询次数,
Figure BDA0000408029970000111
为每个查询首次被接纳的开发者位置的倒数;MAP则为每个开发者推荐准确率的平均值的算术平均值,N=10为推荐的同行数,m为开发者i接纳的同行数,rel(r)表示处在r位置的同行是否被接纳,如果被接纳则为1,否则为0;P(r)为处在当前位置时的准确率,可采用公式
Figure BDA0000408029970000112
计算,r'表示到当前位置r为止,被接纳的同行数(r'≤r)。在评价过程中,同时统计推荐的前10个同行被开发者在每个位置接纳的情况。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (2)

1.一种基于开发者实践技能相似性的同行推荐方法,其特征在于,包括以下步骤:
步骤1:计算开发者间的实践技能相似性,其具体实现包括以下子步骤,
步骤1.1:根据获得的社区数据,从中提取用于表示开发者实践技能的各种属性信息,将开发者实践技能Expertise表示为由开发者在项目中担任的角色ATp、项目的状态ATs、项目的主题ATt、项目的开发语言ATlan、项目的目标受众ATia和项目的认证ATlic六个属性构成的向量,即Expertise=(ATp,ATs,ATt,ATlan,ATia,ATlic),其中每一个属性又表示为ATi=(wi1,wi2,wi3,...,win),n为每个属性中所涉及的元素个数,wij为第i个属性的第j个元素的权值;
步骤1.2:采用文本挖掘方法中的TF-IDF公式,经对数变换处理得到一个开发者d在第i个属性的元素j上的权重wdij与属性向量|AT|标准化的表达式为:
w dij = ( log f dij + 1 ) log # devs # dev j
| AT | = 1 Σ j ∈ d i ( ( log f dij + 1 ) · log # devs # dev j ) 2
对于开发者d,如果第i个属性的第j个元素在他参与的项目中出现的次数fdij越多,且参与含有属性元素j的项目开发的开发者数#devj与总开发者数#devs的比值越小,则这个开发者在该属性元素上的实践技能越高;
步骤1.3:采用余弦相似性计算两个开发者A和B的实践技能相似性Sim(A,B),则开发者A和B在第i个属性上的实践技能相似性为:
cos ( A A T i , B AT i ) = Σ j ∈ AT i ∩ BT i ( log f Aij + 1 ) ( log f Bij + 1 ) ( log # devs # dev j ) 2 Σ j ∈ AT i ( ( log f Aij + 1 ) · log # devs # dev j ) 2 · Σ j ∈ BT i ( ( log f Bij + 1 ) · log # devs # dev j ) 2
因此,两个开发者A和B的实践技能相似性Sim(A,B)为:
Sim ( A , B ) = Σ i = 1 n α i cos ( A AT i , B AT i ) , n = 6
其中,αi依次为六个属性对应的比重系数,且αi满足∑αi=1,(i=1,2,...6);
步骤2:计算开发者间共同开发者数,其具体实现包括以下子步骤,
步骤2.1:根据开发者与项目的隶属关系,构建开发者-项目二分网络BDEV_Net=(Nd,Np,Edp),Nd表示开发者的节点集,Np表示项目的节点集,Edp为开发者与项目之间的隶属关系集;
步骤2.2:根据上述的BDEV_Net网络投影得到开发者合作网络DEV_Net=(Nd,Ed),即如果两个开发者参与了同一个项目的开发,则视为他们之间存在一条合作连边,Nd表示开发者的节点集,Ed为开发者合作连边集;
步骤2.3:基于开发者合作网络DEV_Net,网络中最短路径为2的两个开发者A,B之间存在共同的合作同行,路径条数便为开发者间共同开发者数CDAB
步骤2.4:为标准化开发者间共同开发者数的影响,采用平方根函数处理CDAB,得到标准化后的两个开发者A和B的共同开发者数:
F ( CD AB ) = 1 - 1 CD AB + 1 ;
步骤3:开发者潜在合作同行推荐,其具体实现包括以下子步骤,
步骤3.1:给定任意一个开发者,结合该开发者与其他开发者的实践技能相似性与共同开发者数,计算开发者之间的得分Score(A,B):
Score ( A , B ) = ( 1 - E ab ) ( βSim ( A,B ) + ( 1 - β ) F ( CD AB ) ) = ( 1 - E ab ) ( β Σ i = 1 n α i cos ( A AT i , B AT i ) + ( 1 - β ) ( 1 - 1 CD AB + 1 ) )
其中,β用来权衡实践技能相似性与共同开发者数的影响比重,β满足0≤β≤1;在开发者合作网络DEV_Net的Ed集中,若开发者A,B有合作,则Eab=1,否则为Eab=0;
步骤3.2:根据开发者间的得分情况,对潜在的合作同行按照得分降序排列,最后为开发者返回前10个最可能建立合作的同行;
步骤3.3:将推荐的结果与之后一年内开发者的实际合作情况进行对比,推荐的十个同行中,开发者只要与其中的任何一个建立了合作,则推荐成功,然后采用平均排序倒数MRR和平均准确率MAP进行评价推荐效果。
2.根据权利要求1所述基于开发者实践技能相似性的同行推荐方法,其特征在于:步骤3.1所述的β用来权衡实践技能相似性与共同开发者数的影响比重,其具体实现包括以下子步骤:
步骤3.1.1:首先,设定属性的比重系数分布如下:
(1)比重系数平均分配,即α123456=16;
(2)比重系数非平均分配,设定主题的属性系数α3=0.4,其他5个属性的系数α12456=0.12;
(3)比重系数独立分配,设αi=1,αk≠i=0,即每次只考虑一个属性与共同开发者数的作用;
步骤3.1.2:对比三种情况下,β在[0,1]变化时推荐成功的开发者数与平均排序倒数MRR,平均准确率MAP精度;
步骤3.1.3:根据步骤C1.2得知项目主题比重系数α3与目标受众比重系数α5在β=0.2或0.3时,推荐效果最好,进一步分析当β=0.2或0.3时,两者比重系数在满足α35=1的何种情况能使推荐效果最佳。
CN201310538491.0A 2013-11-04 2013-11-04 一种基于开发者实践技能相似性的同行推荐方法 Active CN103530428B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310538491.0A CN103530428B (zh) 2013-11-04 2013-11-04 一种基于开发者实践技能相似性的同行推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310538491.0A CN103530428B (zh) 2013-11-04 2013-11-04 一种基于开发者实践技能相似性的同行推荐方法

Publications (2)

Publication Number Publication Date
CN103530428A true CN103530428A (zh) 2014-01-22
CN103530428B CN103530428B (zh) 2016-08-17

Family

ID=49932437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310538491.0A Active CN103530428B (zh) 2013-11-04 2013-11-04 一种基于开发者实践技能相似性的同行推荐方法

Country Status (1)

Country Link
CN (1) CN103530428B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104267973A (zh) * 2014-10-21 2015-01-07 北京航空航天大学 一种群体软件工程过程开发方法
CN105279180A (zh) * 2014-07-07 2016-01-27 南京理工大学常熟研究院有限公司 一种基于双向选择的推荐框架
CN105894330A (zh) * 2016-04-01 2016-08-24 西安电子科技大学 基于物品相似度和二分网络的物品推荐方法
CN106529562A (zh) * 2016-09-09 2017-03-22 浙江工业大学 一种基于Email网络的开源软件项目开发者预测方法
CN107391542A (zh) * 2017-05-16 2017-11-24 浙江工业大学 一种基于文件知识图谱的开源软件社区专家推荐方法
CN108334353A (zh) * 2017-08-31 2018-07-27 科大讯飞股份有限公司 技能开发系统及方法
CN109460978A (zh) * 2018-11-15 2019-03-12 泉州师范学院 一种基于社会关系认知的群智服务节点选择算法
CN110020121A (zh) * 2017-10-16 2019-07-16 上海交通大学 基于迁移学习的软件众包项目推荐方法及系统
CN110908980A (zh) * 2018-08-28 2020-03-24 北京京东金融科技控股有限公司 用户标识映射关系建立方法、系统、设备及存储介质
CN111191882A (zh) * 2019-12-17 2020-05-22 安徽大学 一种识别异质信息网络中有影响力的开发者的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299305A1 (en) * 2009-05-22 2010-11-25 Microsoft Corporation Programming element modification recommendation
US8572129B1 (en) * 2010-04-19 2013-10-29 Facebook, Inc. Automatically generating nodes and edges in an integrated social graph

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299305A1 (en) * 2009-05-22 2010-11-25 Microsoft Corporation Programming element modification recommendation
US8572129B1 (en) * 2010-04-19 2013-10-29 Facebook, Inc. Automatically generating nodes and edges in an integrated social graph

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105279180A (zh) * 2014-07-07 2016-01-27 南京理工大学常熟研究院有限公司 一种基于双向选择的推荐框架
CN104267973B (zh) * 2014-10-21 2017-11-21 北京航空航天大学 一种群体软件工程过程开发方法
CN104267973A (zh) * 2014-10-21 2015-01-07 北京航空航天大学 一种群体软件工程过程开发方法
CN105894330A (zh) * 2016-04-01 2016-08-24 西安电子科技大学 基于物品相似度和二分网络的物品推荐方法
CN106529562A (zh) * 2016-09-09 2017-03-22 浙江工业大学 一种基于Email网络的开源软件项目开发者预测方法
CN107391542B (zh) * 2017-05-16 2021-01-01 浙江工业大学 一种基于文件知识图谱的开源软件社区专家推荐方法
CN107391542A (zh) * 2017-05-16 2017-11-24 浙江工业大学 一种基于文件知识图谱的开源软件社区专家推荐方法
CN108334353A (zh) * 2017-08-31 2018-07-27 科大讯飞股份有限公司 技能开发系统及方法
CN108334353B (zh) * 2017-08-31 2021-04-02 科大讯飞股份有限公司 技能开发系统及方法
CN110020121A (zh) * 2017-10-16 2019-07-16 上海交通大学 基于迁移学习的软件众包项目推荐方法及系统
CN110908980A (zh) * 2018-08-28 2020-03-24 北京京东金融科技控股有限公司 用户标识映射关系建立方法、系统、设备及存储介质
CN109460978A (zh) * 2018-11-15 2019-03-12 泉州师范学院 一种基于社会关系认知的群智服务节点选择算法
CN109460978B (zh) * 2018-11-15 2021-12-03 泉州师范学院 一种基于社会关系认知的群智服务节点选择方法
CN111191882A (zh) * 2019-12-17 2020-05-22 安徽大学 一种识别异质信息网络中有影响力的开发者的方法及装置
CN111191882B (zh) * 2019-12-17 2022-11-25 安徽大学 一种识别异质信息网络中有影响力的开发者的方法及装置

Also Published As

Publication number Publication date
CN103530428B (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
CN103530428A (zh) 一种基于开发者实践技能相似性的同行推荐方法
US11659050B2 (en) Discovering signature of electronic social networks
CN112084422B (zh) 一种账号数据智能处理方法和装置
Al-garadi et al. Identification of influential spreaders in online social networks using interaction weighted K-core decomposition method
Narayanam et al. A shapley value-based approach to discover influential nodes in social networks
Kang et al. Modeling topic specific credibility on twitter
Huang et al. Topic-aware social sensing with arbitrary source dependency graphs
US8554910B2 (en) Method and device for pushing data
KR20120126093A (ko) 네트워크에서 프렌드 피드를 관리하는 방법, 시스템 및 서버
TW201939400A (zh) 目標用戶群體的確定方法和裝置
CN103279515B (zh) 基于微群的推荐方法及微群推荐装置
CN103279512A (zh) 利用社会网络上最有影响力节点实现高效病毒营销的方法
Gloor et al. Put your money where your mouth is: Using deep learning to identify consumer tribes from word usage
Chen et al. Influence maximization on signed social networks with integrated pagerank
US20150334198A1 (en) Method for providing a set of services of a first subset of a social network to a user of a second subset of said social network
Squicciarini et al. Automatic social group organization and privacy management
Li et al. Team formation with influence maximization for influential event organization on social networks
Sun et al. Overlapping community detection based on information dynamics
CN109241120A (zh) 一种用户推荐方法及装置
Xia et al. Characterization of user online dating behavior and preference on a large online dating site
CN108052961B (zh) 一种活动社交网络用户参加活动推荐的多因素决策方法
CN110196951A (zh) 用户匹配方法及设备
US20160225103A1 (en) Methods, systems, and computer readable media for determining social compatibility using a selected group
Hafiene et al. A new structural and semantic approach for identifying influential nodes in social networks
CN104035967A (zh) 社交网络中的领域专家发现方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant