当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于社会化编程网站的领域专家发现方法技术

技术编号:14208271 阅读:50 留言:0更新日期:2016-12-18 16:39
本发明专利技术公开了一种基于社会化编程网站的领域专家发现方法,该方法在给定输入搜索关键字的前提下,基于用户开发的历史项目,从GitHub所有用户中,找出该搜索关键字领域专家并进行排序。本发明专利技术能够基于GitHub数据集对用户在特定领域的编程能力进行建模,并发现给定领域的专家,实现IT领域的在线招聘;本发明专利技术方法在概率评分的基础上,引入了一种约束性假设,并以图正则的方式整合到概率评分模型中,有效地提升了搜索效率。

A domain expert discovery method based on social programming website

The invention discloses a method for finding experts in the field of social programming website based on this method, enter search keywords on the premise of a given user, the history of development project based on GitHub from all users in the field of search keywords, find experts and sort. The invention can GitHub data sets to model users in the domain specific programming ability based on the experts and found that a given domain, IT domain is the basis of online recruitment; the method of the invention in probability score, introduced a kind of restrictive assumptions, and to regular way to integrate the probability grading model, effective to improve the efficiency of search.

【技术实现步骤摘要】

本专利技术属于信息检索
,具体设计一种基于社会化编程网站的领域专家发现方法
技术介绍
随着社交网络的发展,整合社交媒体与分布式版本控制系统的社会化编程网站(Social Coding Sites,SCS)正逐渐改变着传统的软件开发模式。GitHub作为目前最大、最受欢迎的社会化编程网站之一,记录了所有用户的操作记录,项目信息。自2008年上线以来,最近几年一直以加速的方式快速发展,据统计,截至2015年6月10日,GitHub上的注册用户及托管项目已分别达到11,610,094和20,598,603。在IT领域,程序员的招聘一直是一个高代价、困扰公司的难题,根据搜索关键字有效地搜索相关领域的编程人员,能够极大减少公司在招聘上的开销,并且能为公司的发展带来极大的价值。目前已有的招聘方式是基于LinkedIn来进行的,招聘方通过浏览应聘者在LinkedIn上传的简历来寻找合适的人员。但LinkedIn上的简历是需要应聘者去更新的,是“静态”的、不可信的。这样往往导致招聘方招不到合适的人员,或应聘者的能力与简历上的能力有较大的偏差。而GitHub能够为用户提供一个动态的、更加真实的编程能力的呈现。GitHub的核心思想是强调以协同开发为主。GitHub不仅记录了用户在GitHub上参与开发的项目以及贡献的具体代码,而且用户之间形成了一个协作开发网络。在GitHub上用户之间可以进行关注,用户对项目可以进行修改、提交、关注等操作。GitHub很好地刻画了用户的编程能力,从用户开发的项目以及贡献量来衡量一个人对知识的掌握程度正好弥补了招聘领域只看简历的不足。因此,结合GitHub数据能为IT公司提供一种更加实际的招聘方式。
技术实现思路
基于上述,本专利技术提供了一种基于社会化编程网站的领域专家发现方法,在给定输入搜索关键字的前提下,基于用户开发的历史项目,从GitHub所有用户中,找出该搜索关键字领域专家并进行排序。一种基于社会化编程网站的领域专家发现方法,包括如下步骤:(1)对于社会化编程网站中的任一项目,从该项目的自述文件中抽取项目的描述文本,进而利用描述文本计算该项目与搜索关键词之间的语义相似度;依此遍历所有项目,组成项目与搜索关键词之间的语义相似度向量x0;(2)根据所述的语义相似度向量x0,建立以下目标函数Ω(x)并对其进行最小化求解,得到项目与搜索关键词之间的关联度向量x;Ω(x)=xT(I-SR)x+μR||x-x0||2其中:I为单位矩阵,SR为项目之间的相似度矩阵,μR为正则化因子,T表示转置;(3)根据公式计算出开发者在搜索关键词领域的专业度向量,该专业度向量中的每一元素值即对应各开发者在搜索关键词领域的专业分值,进而按专业分值从高到低对开发者进行排序展现;其中:QR为n维对角矩阵且其中第i行第i列对角线元素值即对应为第i个项目的质量,n为社会化编程网站中的项目总数,PRD为开发者与项目之间的关联矩阵。所述的步骤(1)中从自述文件中抽取项目的描述文本,具体过程如下:首先,将自述文件分割成多段,其中对于markdown格式的自述文件,以markdown中特殊标签(如“##”,“==”,“-”)对其进行文本切割;对于纯文本格式的自述文件,取其中字符数小于40且全为字母的行为标题行,并以标题行对其进行文本切割;然后,取自述文件的前三段进行分析,若存在某段标题中含有description或feature,则抽取该段作为项目的描述文本,否则抽取第一段作为项目的描述文本。所述的步骤(1)中采用TF-IDF(term frequency–inverse document frequency)计算描述文本与搜索关键词之间的余弦相似度作为项目与搜索关键词之间的语义相似度。所述的步骤(2)中采用以下迭代方程对目标函数Ω(x)进行最小化求解,待迭代收敛或达到最大迭代次数时的输出作为所述的关联度向量x;xt+1=αSRxt+(1-α)x0其中:xt+1和xt分别为第t+1次和第t次迭代项目与搜索关键词之间的关联度向量,α=1/(1+μR),t为自然数。所述的相似度矩阵SR的表达式如下:SR=Π-1/2WΠ-1/2其中:W为n维方阵,若第i个项目与第j个项目被同一个人开发过,则方阵W中第i行第j列元素值Wij=1,否则Wij=0;∏为n维对角矩阵且其中第i行第i列对角线元素值i和j均为自然数且1≤i≤n,1≤j≤n。任一项目的质量采用其在社会化编程网站中被关注数来表征。所述的关联矩阵PRD为n×m维矩阵,其中第i行第k列元素值对应为第k个开发者对于第i个项目的贡献率,若第k个开发者未开发过第i个项目,则该贡献率为0;若第k个开发者开发过第i个项目,则该贡献率为li为第i个项目的总代码量,为第k个开发者对第i个项目的代码贡献量;k为自然数且1≤k≤m,m为社会化编程网站中的开发者总人数。本专利技术的有益技术效果如下:(1)本专利技术能够基于GitHub数据集对用户在特定领域的编程能力进行建模,并发现给定领域的专家,实现IT领域的在线招聘。(2)本专利技术方法在概率评分的基础上,引入了一种约束性假设,并以图正则的方式整合到概率评分模型中,有效地提升了搜索效率。附图说明图1为本专利技术方法的流程示意图。具体实施方式为了更为具体地描述本专利技术,下面结合附图及具体实施方式对本专利技术的技术方案进行详细说明。GitHub作为一个社会化编程网站,记录了所有用户的操作记录,项目信息。本专利技术在给定输入搜索关键字的前提下,基于用户开发的历史项目,从GitHub所有用户中,找出该搜索关键字领域专家并进行排序。本专利技术首先提出了一种概率评分模型,然后在概率模型之上基于用户协同开发网络引入了一个约束假设。图1描述了在给定搜索关键字的前提下,发现该领域的专家并排序的算法流程。本专利技术方法及其系统的思路在于:在评定一个专家候选者在某领域的专业程度时,我们认为该候选者的专业分数为他所开发项目与给定搜索关键字的相关性及开发质量的和;具体过程如下:步骤一:数据抽取在专家发现的过程中,需要计算给定搜索关键字与用户开发项目之间的语义相关性,在本实施方式中我们采用Language Model进行语义相关性计算。由于项目之间的文本信息主要出现在description字段以及README文件中,而README文件中含有大量的代码,这将成为计算相关性的噪声,所以我们需要从README文件中提取出真正描述项目的文本。首先对README文件进行分类,经过分析README主要以markdown和纯文本形式存在。对于markdown格式的README,我们以markdown中特殊标签,如“##”,“==”,“-”进行文本切割。对于纯文本格式的README,我们认为字符数小于40且全为字母的行为标题行,并以此标题行进行文本切割。对于分段好的README文件,我们取出前3段进行分析,如果段标题中含有“description”,“feature”等搜索关键字的我们认为该段为描述文本,否则我们取第一段为描述文本。步骤二:网络构建将开发者集合表示为D={d1,d2,…,dm本文档来自技高网
...
一种基于社会化编程网站的领域专家发现方法

【技术保护点】
一种基于社会化编程网站的领域专家发现方法,包括如下步骤:(1)对于社会化编程网站中的任一项目,从该项目的自述文件中抽取项目的描述文本,进而利用描述文本计算该项目与搜索关键词之间的语义相似度;依此遍历所有项目,组成项目与搜索关键词之间的语义相似度向量x0;(2)根据所述的语义相似度向量x0,建立以下目标函数Ω(x)并对其进行最小化求解,得到项目与搜索关键词之间的关联度向量x;Ω(x)=xT(I‑SR)x+μR||x‑x0||2其中:I为单位矩阵,SR为项目之间的相似度矩阵,μR为正则化因子,T表示转置;(3)根据公式计算出开发者在搜索关键词领域的专业度向量,该专业度向量中的每一元素值即对应各开发者在搜索关键词领域的专业分值,进而按专业分值从高到低对开发者进行排序展现;其中:QR为n维对角矩阵且其中第i行第i列对角线元素值即对应为第i个项目的质量,n为社会化编程网站中的项目总数,PRD为开发者与项目之间的关联矩阵。

【技术特征摘要】
1.一种基于社会化编程网站的领域专家发现方法,包括如下步骤:(1)对于社会化编程网站中的任一项目,从该项目的自述文件中抽取项目的描述文本,进而利用描述文本计算该项目与搜索关键词之间的语义相似度;依此遍历所有项目,组成项目与搜索关键词之间的语义相似度向量x0;(2)根据所述的语义相似度向量x0,建立以下目标函数Ω(x)并对其进行最小化求解,得到项目与搜索关键词之间的关联度向量x;Ω(x)=xT(I-SR)x+μR||x-x0||2其中:I为单位矩阵,SR为项目之间的相似度矩阵,μR为正则化因子,T表示转置;(3)根据公式计算出开发者在搜索关键词领域的专业度向量,该专业度向量中的每一元素值即对应各开发者在搜索关键词领域的专业分值,进而按专业分值从高到低对开发者进行排序展现;其中:QR为n维对角矩阵且其中第i行第i列对角线元素值即对应为第i个项目的质量,n为社会化编程网站中的项目总数,PRD为开发者与项目之间的关联矩阵。2.根据权利要求1所述的领域专家发现方法,其特征在于:所述的步骤(1)中从自述文件中抽取项目的描述文本,具体过程如下:首先,将自述文件分割成多段,其中对于markdown格式的自述文件,以markdown中特殊标签对其进行文本切割;对于纯文本格式的自述文件,取其中字符数小于40且全为字母的行为标题行,并以标题行对其进行文本切割;然后,取自述文件的前三段进行分析,若存在某段标题中含有description或feature,则抽取该段作为项目的描述文本,否则抽取第一段作为项目的描述文本...

【专利技术属性】
技术研发人员:吴健万瑶陈亮梁婷婷高维应豪超韩玉强王皓然邓水光李莹尹建伟吴朝晖
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江;33

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

1