CN111191081A - 一种基于异质信息网络的开发者推荐方法及装置 - Google Patents

一种基于异质信息网络的开发者推荐方法及装置 Download PDF

Info

Publication number
CN111191081A
CN111191081A CN201911297265.1A CN201911297265A CN111191081A CN 111191081 A CN111191081 A CN 111191081A CN 201911297265 A CN201911297265 A CN 201911297265A CN 111191081 A CN111191081 A CN 111191081A
Authority
CN
China
Prior art keywords
developer
item
vector
matrix
developers
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
CN201911297265.1A
Other languages
English (en)
Other versions
CN111191081B (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.)
Anhui University
Original Assignee
Anhui University
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 Anhui University filed Critical Anhui University
Priority to CN201911297265.1A priority Critical patent/CN111191081B/zh
Publication of CN111191081A publication Critical patent/CN111191081A/zh
Application granted granted Critical
Publication of CN111191081B publication Critical patent/CN111191081B/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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Human Resources & Organizations (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Artificial Intelligence (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Evolutionary Computation (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Educational Administration (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computing Systems (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Algebra (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于异质信息网络的开发者推荐方法及装置,所述方法包括:建立关系矩阵,构建异质信息网络,获取异质信息网络中每条元路径下每个开发者的初始表示向量以及每条元路径下每个项目的初始表示向量;获取关联度矩阵;更新开发者的表示向量以及项目的表示向量;将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合;获取预测关联度值并给每个开发者推荐项目;所述装置包括矩阵建立模块、初始化模块、关联度矩阵获取模块、更新模块、加权融合模块以及推荐模块;本发明的优点在于:推荐信息较为准确全面,推荐结果更加个性化。

Description

一种基于异质信息网络的开发者推荐方法及装置
技术领域
本发明涉及异质信息网络领域,更具体涉及一种基于异质信息网络的开发者推荐方法及装置。
背景技术
开源软件生态系统为软件开发者提供了便利的技术合作和交流平台,大量的专家和开发者受到吸引并加入其中。当前的背景下,开发者一般寻找合适且感兴趣的项目去参与,因此他们往往花费了大量的时间去找寻这些项目;而在另一方面,如果开发者加入了不熟悉的项目,不仅对开发者产生消极影响,更容易对这个项目造成较为严重的后果(例如项目延期)。而开发者推荐旨在为开发者推荐其感兴趣的项目,也为项目寻找合适的开发者,很大程度上避免了上述问题的产生,在开源软件生态中应用较为广泛。
中国专利公开号CN109032591A公开了一种基于神经网络的众包软件开发者推荐方法,所述方法中的模型总体包含三个主要组件,注册行为预测器,提交行为预测器,获胜行为预测器,所述提交行为预测器基于用户已经注册后的情况进行预测,获胜行为预测器基于用户已经提交后的情况进行预测,注册者预测器预测没有任何先决条件,在所述注册行为预测器对任务数据集进行学习中,如果输出的注册概率不在前top R,则用户获胜概率为0,终止该实例预测,否则继续使用提交行为预测器进行输出检测;在提交行为预测器中,如果输出的提交概率不在前top S,则用户的获胜概率为0,终止该实例预测,否则进入获胜行为预测器;最后由用户获胜行为预测器得到获胜概率,并根据获胜概率推荐前K个用户的列表。但是该发明针对众包软件进行开发者推荐,且没有考虑开发者与公司以及开发者与项目之间的联系,推荐信息可能存在不够准确不够全面的问题。
发明内容
本发明所要解决的技术问题在于如何一种基于异质信息网络的开发者推荐方法及装置,以使推荐信息较为准确全面。
本发明通过以下技术手段实现解决上述技术问题的:一种基于异质信息网络的开发者推荐方法,所述方法包括:
步骤一:提取github上开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的交互数据,建立关系矩阵;
步骤二:构建异质信息网络,获取异质信息网络中每条元路径下每个开发者的初始表示向量以及每条元路径下每个项目的初始表示向量;
步骤三:获取异质信息网络中每条元路径下开发者和项目的关联度矩阵;
步骤四:更新开发者的表示向量以及项目的表示向量;
步骤五:通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合;
步骤六:获取每个开发者与每个项目的预测关联度值,根据预测关联度值给每个开发者推荐项目。
本发明综合考虑开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的联系,构建异质信息网络,包含了多种类型的节点和边,并且涉及到了元路径,获取异质信息网络中每条元路径下开发者和项目的关联度矩阵和开发者的表示向量以及项目的表示向量,通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合,使用了多种类型的异质节点,使得这些节点信息得到了充分的利用,最终推荐信息较为全面,加入了异质信息网络所特有的元路径,清晰的描绘了节点间的语义关系,并结合其语义信息实现更为精确的推荐。
优选的,所述步骤一包括:
步骤101:根据github上公开的数据集获取包含开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据的数据表;
步骤102:建立|U|×|C|的UC矩阵,其中|U|为数据表中的开发者的数量,|C|为数据表中的公司的数量,对开发者以及其所属公司,在UC矩阵对应位置置为1;
步骤103:建立|U|×|P|的UP矩阵,其中|P|为数据表中的开发者参与的项目的数量,对开发者ui所参与的项目pj,在UP矩阵对应位置置为r,r为开发者为ui参加项目pj时所提交的commits数量;选取UP矩阵矩阵中非0元素构建开发者与项目的交互列表Q且Q=[[ui,pj],......];
步骤104:建立|P|×|L|的PL矩阵,其中,|L|为数据表中编程语言的数量,对每个项目所使用的语言,在PL矩阵对应位置置为1;
步骤105:建立|U|×|L|的UL矩阵,对于开发者ui所使用过的语言,在UL矩阵的对应位置置为c,c为开发者历史曾使用该语言参与的项目数量;
步骤106:建立|U|×|U|的UU矩阵,依据数据表,对于每个开发者所关注的其他开发者,在UU矩阵的对应位置置为1。
优选的,所述步骤二包括:
步骤201:根据开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据构建元路径U→U→P、元路径U→L→P、元路径U→C→U→P和元路径U→C→U→U→P,由这些元路径及其中包含的异质节点组成了异质信息网络;
步骤202:对异质信息网络中每条元路径,通过高斯分布随机初始化开发者U的表示向量获得开发者ui的初始表示向量
Figure BDA0002320881770000041
随机初始化项目P的表示向量获得项目pj的初始表示向量
Figure BDA0002320881770000042
其中m表示元路径的索引。
优选的,所述步骤三包括:
通过邻接矩阵相乘的方式,得到不同元路径下的开发者U和项目P的关联度矩阵UPm,其中,对于元路径U→U→P,UP1=UU×UP;对于元路径U→L→P,UP2=UL×(PL)T;对于元路径U→C→U→P,UP3=UC×(UC)T×UP;对于元路径U→C→U→U→P,UP4=UC×(UC)T×UU×UP;()T表示矩阵的转置;
优选的,所述步骤四包括:
步骤401:在开发者与项目的交互列表Q加入交互项,获得新的交互列表
Figure BDA0002320881770000043
其中
Figure BDA0002320881770000044
表示在元路径m下关联度矩阵UPm中对应于开发者ui和项目pj的值;
步骤402:将开发者ui的初始表示向量
Figure BDA0002320881770000045
作为开发者ui的当前表示向量,将项目pj的初始表示向量
Figure BDA0002320881770000051
作为项目pj的当前表示向量;
步骤403:根据开发者ui的当前表示向量利用公式
Figure BDA0002320881770000052
更新开发者当前表示向量,其中,
Figure BDA0002320881770000053
为开发者ui的当前表示向量,
Figure BDA0002320881770000054
为开发者ui更新后的表示向量,
Figure BDA0002320881770000055
为预设的开发者ui的调整参数;
根据项目pj的当前表示向量利用公式
Figure BDA0002320881770000056
更新项目表示向量;其中,
Figure BDA0002320881770000057
为项目pj的当前表示向量,
Figure BDA0002320881770000058
为项目pj更新后的表示向量,
Figure BDA0002320881770000059
为预设的项目pj的调整参数;
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
优选的,所述步骤五包括:
步骤501:根据开发者ui更新后的表示向量
Figure BDA00023208817700000510
利用公式
Figure BDA00023208817700000511
计算各元路径下开发者ui的注意力得分,其中,
Figure BDA00023208817700000512
为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,
Figure BDA00023208817700000513
表示开发者ui的初始化权重,
Figure BDA00023208817700000514
表示开发者ui的初始化偏置向量,初始化方式同样采用高斯分布;
根据项目pj更新后的表示向量
Figure BDA0002320881770000061
利用公式
Figure BDA0002320881770000062
计算各元路径下项目pj的注意力得分,其中,
Figure BDA0002320881770000063
为m元路径下项目pj的注意力得分,
Figure BDA0002320881770000064
表示项目pj的初始化权重,
Figure BDA0002320881770000065
表示项目pj的初始化偏置向量;
步骤502:利用公式
Figure BDA0002320881770000066
计算每元路径下开发者ui的注意力得分的权重;其中,
Figure BDA0002320881770000067
为m元路径下开发者ui的注意力得分的权重,exp()为以自然常数为底的指数函数,∑为求和符号;
利用公式
Figure BDA0002320881770000068
计算每元路径下项目pj的注意力得分的权重;其中,
Figure BDA0002320881770000069
为m元路径下项目pj的注意力得分的权重;
步骤503:利用公式
Figure BDA00023208817700000610
将各元路径下的开发者ui的表示向量加权融合,利用公式
Figure BDA00023208817700000611
将各元路径下的开发者ui的表示向量加权融合;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重
Figure BDA00023208817700000612
作为开发者ui的当前权重,开发者ui的初始化偏置向量
Figure BDA00023208817700000613
作为开发者ui的当前偏置向量,利用公式
Figure BDA00023208817700000614
更新开发者ui的权重,其中,
Figure BDA00023208817700000615
为开发者ui的当前权重,
Figure BDA00023208817700000616
为开发者ui更新后的权重,利用公式
Figure BDA00023208817700000617
更新开发者ui的偏置向量,其中,
Figure BDA00023208817700000618
为开发者ui的当前偏置向量,
Figure BDA00023208817700000619
为开发者ui更新后的偏置向量;
项目pj的初始化权重
Figure BDA0002320881770000071
作为项目pj的当前权重,项目pj的初始化偏置向量
Figure BDA0002320881770000072
作为项目pj的当前偏置向量,利用公式
Figure BDA0002320881770000073
更新项目pj的权重,其中,
Figure BDA0002320881770000074
为项目pj的当前权重,
Figure BDA0002320881770000075
为项目pj更新后的权重,利用公式
Figure BDA0002320881770000076
更新项目pj的偏置向量,其中,
Figure BDA0002320881770000077
为项目pj的当前偏置向量,
Figure BDA0002320881770000078
为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式
Figure BDA0002320881770000079
其中,ε为预先设定的允许误差的阈值。
优选的,所述步骤六包括:
步骤601:根据公式
Figure BDA00023208817700000710
分别计算每个开发者与每个项目的预测关联度值;
步骤602:根据开发者对每个项目的预测关联度值,取预测关联度值大小排在前N个的对应的项目作为推荐给该开发者的项目;
步骤603:重复步骤601和步骤602,直至所有开发者都推荐完毕。
本发明还提供一种基于异质信息网络的开发者推荐装置,所述装置包括:
矩阵建立模块,用于提取github上开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的交互数据,建立关系矩阵;
初始化模块,用于构建异质信息网络,获取异质信息网络中每条元路径下每个开发者的初始表示向量以及每条元路径下每个项目的初始表示向量;
关联度矩阵获取模块,用于获取异质信息网络中每条元路径下开发者和项目的关联度矩阵;
更新模块,用于更新开发者的表示向量以及项目的表示向量;
加权融合模块,用于通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合;
推荐模块,用于获取每个开发者与每个项目的预测关联度值,根据预测关联度值给每个开发者推荐项目。
优选的,所述矩阵建立模块还用于:
步骤101:根据github上公开的数据集获取包含开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据的数据表;
步骤102:建立|U|×|C|的UC矩阵,其中|U|为数据表中的开发者的数量,|C|为数据表中的公司的数量,对开发者以及其所属公司,在UC矩阵对应位置置为1;
步骤103:建立|U|×|P|的UP矩阵,其中|P|为数据表中的开发者参与的项目的数量,对开发者ui所参与的项目pj,在UP矩阵对应位置置为r,r为开发者ui参加项目pj时提交的commits数量;选取UP矩阵矩阵中非0元素构建开发者与项目的交互列表Q且Q=[[ui,pj],......];
步骤104:建立|P|×|L|的PL矩阵,其中,|L|为数据表中编程语言的数量,对每个项目所使用的语言,在PL矩阵对应位置置为1;
步骤105:建立|U|×|L|的UL矩阵,对于开发者ui所使用过的语言,在UL矩阵的对应位置置为c,c为开发者历史曾使用该语言参与的项目数量;
步骤106:建立|U|×|U|的UU矩阵,依据数据表,对于每个开发者所关注的其他开发者,在UU矩阵的对应位置置为1。
优选的,所述初始化模块还用于:
步骤201:根据开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据构建元路径U→U→P、元路径U→L→P、元路径U→C→U→P和元路径U→C→U→U→P,由这些元路径及其包含的异质节点组成了异质信息网络;
步骤202:对异质信息网络中每条元路径,通过高斯分布随机初始化开发者U的表示向量获得开发者ui的初始表示向量
Figure BDA0002320881770000091
随机初始化项目P的表示向量获得项目pj的初始表示向量
Figure BDA0002320881770000092
其中m表示元路径的索引。
优选的,所述关联度矩阵获取模块还用于:
通过邻接矩阵相乘的方式,得到不同元路径下的开发者U和项目P的关联度矩阵UPm,其中,对于元路径U→U→P,UP1=UU×UP;对于元路径U→L→P,UP2=UL×(PL)T;对于元路径U→C→U→P,UP3=UC×(UC)T×UP;对于元路径U→C→U→U→P,UP4=UC×(UC)T×UU×UP;()T表示矩阵的转置;
优选的,所述更新模块还用于:
步骤401:在开发者与项目的交互列表Q加入交互项,获得新的交互列表
Figure BDA0002320881770000093
其中
Figure BDA0002320881770000094
表示在元路径m下关联度矩阵UPm中对应于开发者ui和项目pj的值;
步骤402:将开发者ui的初始表示向量
Figure BDA0002320881770000101
作为开发者ui的当前表示向量,将项目pj的初始表示向量
Figure BDA0002320881770000102
作为项目pj的当前表示向量;
步骤403:根据开发者ui的当前表示向量利用公式
Figure BDA0002320881770000103
更新开发者当前表示向量,其中,
Figure BDA0002320881770000104
为开发者ui的当前表示向量,
Figure BDA0002320881770000105
为开发者ui更新后的表示向量,
Figure BDA0002320881770000106
为预设的开发者ui的调整参数;
根据项目pj的当前表示向量利用公式
Figure BDA0002320881770000107
更新项目表示向量;其中,
Figure BDA0002320881770000108
为项目pj的当前表示向量,
Figure BDA0002320881770000109
为项目pj更新后的表示向量,
Figure BDA00023208817700001010
为预设的项目pj的调整参数;
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
优选的,所述加权融合模块还用于:
步骤501:根据开发者ui更新后的表示向量
Figure BDA00023208817700001011
利用公式
Figure BDA00023208817700001012
计算各元路径下开发者ui的注意力得分,其中,
Figure BDA00023208817700001013
为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,
Figure BDA00023208817700001014
表示开发者ui的初始化权重,
Figure BDA0002320881770000111
表示开发者ui的初始化偏置向量;
根据项目pj更新后的表示向量
Figure BDA0002320881770000112
利用公式
Figure BDA0002320881770000113
计算各元路径下项目pj的注意力得分,其中,
Figure BDA0002320881770000114
为m元路径下项目pj的注意力得分,
Figure BDA0002320881770000115
表示项目pj的初始化权重,
Figure BDA0002320881770000116
表示项目pj的初始化偏置向量;
步骤502:利用公式
Figure BDA0002320881770000117
计算每元路径下开发者ui的注意力得分的权重;其中,
Figure BDA0002320881770000118
为m元路径下开发者ui的注意力得分的权重,exp()为以自然常数为底的指数函数,∑为求和符号;
利用公式
Figure BDA0002320881770000119
计算每元路径下项目pj的注意力得分的权重;其中,
Figure BDA00023208817700001110
为m元路径下项目pj的注意力得分的权重;
步骤503:利用公式
Figure BDA00023208817700001111
将各元路径下的开发者ui的表示向量加权融合,利用公式
Figure BDA00023208817700001112
将各元路径下的开发者ui的表示向量加权融合;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重
Figure BDA00023208817700001113
作为开发者ui的当前权重,开发者ui的初始化偏置向量
Figure BDA00023208817700001114
作为开发者ui的当前偏置向量,利用公式
Figure BDA00023208817700001115
更新开发者ui的权重,其中,
Figure BDA00023208817700001116
为开发者ui的当前权重,
Figure BDA00023208817700001117
为开发者ui更新后的权重,利用公式
Figure BDA00023208817700001118
更新开发者ui的偏置向量,其中,
Figure BDA00023208817700001119
为开发者ui的当前偏置向量,
Figure BDA00023208817700001120
为开发者ui更新后的偏置向量;
项目pj的初始化权重
Figure BDA0002320881770000121
作为项目pj的当前权重,项目pj的初始化偏置向量
Figure BDA0002320881770000122
作为项目pj的当前偏置向量,利用公式
Figure BDA0002320881770000123
更新项目pj的权重,其中,
Figure BDA0002320881770000124
为项目pj的当前权重,
Figure BDA0002320881770000125
为项目pj更新后的权重,利用公式
Figure BDA0002320881770000126
更新项目pj的偏置向量,其中,
Figure BDA0002320881770000127
为项目pj的当前偏置向量,
Figure BDA0002320881770000128
为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式
Figure BDA0002320881770000129
其中,ε为预先设定的允许误差的阈值。
优选的,所述推荐模块还用于:
步骤601:根据公式
Figure BDA00023208817700001210
分别计算每个开发者与每个项目的预测关联度值;
步骤602:根据开发者对每个项目的预测关联度值,取预测关联度值大小排在前N个的对应的项目作为推荐给该开发者的项目;
步骤603:重复步骤601和步骤602,直至所有开发者都推荐完毕。
本发明的优点在于:
(1)本发明综合考虑开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的联系,构建异质信息网络,包含了多种类型的节点和边,并且涉及到了元路径,获取异质信息网络中每条元路径下开发者和项目的关联度矩阵和开发者的表示向量以及项目的表示向量,通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合,使用了多种类型的异质节点,使得这些节点信息得到了充分的利用,最终推荐信息较为全面,加入了异质信息网络所特有的元路径,清晰的描绘了节点间的语义关系,并结合其语义信息实现更为精确的推荐。
(2)通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合,融合后的表示向量更加清楚的表征每个项目和每个开发者,使得推荐结果更加个性化。
附图说明
图1为本发明实施例所公开的一种基于异质信息网络的开发者推荐方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,一种基于异质信息网络的开发者推荐方法,所述方法包括:
步骤S1:提取github上开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的交互数据,建立关系矩阵,具体过程为:
步骤101:在github上公开的数据集选取users、followers、projects以及commits四个表格作为原始数据,对这四个表进行处理,对于users表格,首先对于每一行,如果其“fake”和“deleted”值为1,则删除该行。然后选取“id”和“company”列作为新的users表格;对于新的users表格,增加列“follower”,该列数据从followers表中获取,对于开发者ui,选取followers表中所有“user_id”为ui的“follower_id”,构建成列表加入到user表中对应开发者的“follower”属性中;对于projects表格,首先对于每一行,如果其“deleted”值为1,则删除该行。然后选取“id”和“language”列作为新的projects表格;对于commits表格,选取“author_id”和“project_id”列作为新的commits表格;对得到的新的users、projects和commits表格,依据commits.author_id=users.id、commits.project_id=projects.id进行SQL内连接,得到表data即数据表,该数据表包含了开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据;需要注意的是,github是一个面向开源及私有软件项目的托管平台,以上涉及的各种英文名称的表格以及表格中的行和列均为github的数据集中的内容,另外,SQL内连接的过程属于现有比较常规的操作,在此不做过多赘述。
步骤102:以上获取了数据表中的内容后,建立各类关系矩阵,首先,建立|U|×|C|的UC矩阵,其中|U|为数据表中的开发者的数量,|C|为数据表中的公司的数量,对开发者以及其所属公司,在UC矩阵对应位置置为1;
步骤103:建立|U|×|P|的UP矩阵,其中|P|为数据表中的开发者参与的项目的数量,对开发者ui所参与的项目pj,在UP矩阵对应位置置为r,r为开发者ui参加项目pj时所提交的commits数量,commits为github上的一个专有概念,是指开发者对项目做的一次提交;选取UP矩阵矩阵中非0元素构建开发者与项目的交互列表Q且Q=[[ui,pj],......];
步骤104:建立|P|×|L|的PL矩阵,其中,|L|为数据表中编程语言的数量,对每个项目所使用的语言,在PL矩阵对应位置置为1;
步骤105:建立|U|×|L|的UL矩阵,对于开发者ui所使用过的语言,在UL矩阵的对应位置置为c,c为开发者历史曾使用该语言参与的项目数量;
步骤106:建立|U|×|U|的UU矩阵,依据数据表表中的“author_id”以及“follower”列,对于每个开发者所关注的其他开发者,在UU矩阵的对应位置置为1。
步骤S2:构建异质信息网络,获取异质信息网络中每条元路径下每个开发者的初始表示向量以及每条元路径下每个项目的初始表示向量,具体过程为:
步骤201:根据开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据构建元路径U→U→P、元路径U→L→P、元路径U→C→U→P和元路径U→C→U→U→P,各元路径构建异质信息网络;以下通过具体实例说明各元路径的含义,其中,U→U→P表示开发者u1所关注的开发者u2参与了项目p,U→L→P表示开发者u1的编程语言偏好符合项目p的语言要求,U→C→U→P表示与开发者u1属同一公司的开发者u2参与了项目p,U→C→U→U→P表示与开发者u1属同一公司的开发者u2所关注的开发者u3,参与了项目p。
步骤202:对异质信息网络中每条元路径,通过高斯分布随机初始化开发者U的表示向量获得开发者ui的初始表示向量
Figure BDA0002320881770000161
随机初始化项目P的表示向量获得项目pj的初始表示向量
Figure BDA0002320881770000162
其中m表示元路径的索引。需要说明的是,利用高斯分布随机初始化一个参数,属于现有比较成熟的技术,在此不做过多赘述。
步骤S3:获取异质信息网络中每条元路径下开发者和项目的关联度矩阵;具体过程为:通过邻接矩阵相乘的方式,得到不同元路径下的开发者U和项目P的关联度矩阵UPm,其中,对于元路径U→U→P,UP1=UU×UP;对于元路径U→L→P,UP2=UL×(PL)T;对于元路径U→C→U→P,UP3=UC×(UC)T×UP;对于元路径U→C→U→U→P,UP4=UC×(UC)T×UU×UP;()T表示矩阵的转置;
步骤S4:依据步骤S3得到的各元路径下的关联度矩阵更新开发者的表示向量以及项目的表示向量,具体过程为:
步骤401:在开发者与项目的交互列表Q加入交互项,获得新的交互列表
Figure BDA0002320881770000163
其中
Figure BDA0002320881770000164
表示在元路径m下关联度矩阵U中对应于开发者ui和项目pj的值;
步骤402:将开发者ui的初始表示向量
Figure BDA0002320881770000165
作为开发者ui的当前表示向量,将项目pj的初始表示向量
Figure BDA0002320881770000166
作为项目pj的当前表示向量;
步骤403:根据开发者ui的当前表示向量利用公式
Figure BDA0002320881770000171
更新开发者当前表示向量,其中,
Figure BDA0002320881770000172
为开发者ui的当前表示向量,
Figure BDA0002320881770000173
为开发者ui更新后的表示向量,
Figure BDA0002320881770000174
为预设的开发者ui的调整参数;
根据项目pj的当前表示向量利用公式
Figure BDA0002320881770000175
更新项目表示向量;其中,
Figure BDA0002320881770000176
为项目pj的当前表示向量,
Figure BDA0002320881770000177
为项目pj更新后的表示向量,
Figure BDA0002320881770000178
为预设的项目pj的调整参数;
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
步骤S5:通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合,具体过程为:
步骤501:根据开发者ui更新后的表示向量
Figure BDA0002320881770000179
利用公式
Figure BDA00023208817700001710
计算各元路径下开发者ui的注意力得分,其中,
Figure BDA00023208817700001711
为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,
Figure BDA00023208817700001712
表示开发者ui的初始化权重,
Figure BDA00023208817700001713
表示开发者ui的初始化偏置向量;
根据项目pj更新后的表示向量
Figure BDA00023208817700001714
利用公式
Figure BDA00023208817700001715
计算各元路径下项目pj的注意力得分,其中,
Figure BDA00023208817700001716
为m元路径下项目pj的注意力得分,
Figure BDA0002320881770000181
表示项目pj的初始化权重,
Figure BDA0002320881770000182
表示项目pj的初始化偏置向量;
步骤502:利用公式
Figure BDA0002320881770000183
计算每元路径下开发者ui的注意力得分的权重;其中,
Figure BDA0002320881770000184
为m元路径下开发者ui的注意力得分的权重,exp()为以自然常数为底的指数函数,∑为求和符号;
利用公式
Figure BDA0002320881770000185
计算每元路径下项目pj的注意力得分的权重;其中,
Figure BDA0002320881770000186
为m元路径下项目pj的注意力得分的权重;
步骤503:利用公式
Figure BDA0002320881770000187
将各元路径下的开发者ui的表示向量加权融合,利用公式
Figure BDA0002320881770000188
将各元路径下的开发者ui的表示向量加权融合;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重
Figure BDA0002320881770000189
作为开发者ui的当前权重,开发者ui的初始化偏置向量
Figure BDA00023208817700001810
作为开发者ui的当前偏置向量,利用公式
Figure BDA00023208817700001811
更新开发者ui的权重,其中,
Figure BDA00023208817700001812
为开发者ui的当前权重,
Figure BDA00023208817700001813
为开发者ui更新后的权重,利用公式
Figure BDA00023208817700001814
更新开发者ui的偏置向量,其中,
Figure BDA00023208817700001815
为开发者ui的当前偏置向量,
Figure BDA00023208817700001816
为开发者ui更新后的偏置向量;
项目pj的初始化权重
Figure BDA00023208817700001817
作为项目pj的当前权重,项目pj的初始化偏置向量
Figure BDA00023208817700001818
作为项目pj的当前偏置向量,利用公式
Figure BDA00023208817700001819
更新项目pj的权重,其中,
Figure BDA0002320881770000191
为项目pj的当前权重,
Figure BDA0002320881770000192
为项目pj更新后的权重,利用公式
Figure BDA0002320881770000193
更新项目pj的偏置向量,其中,
Figure BDA0002320881770000194
为项目pj的当前偏置向量,
Figure BDA0002320881770000195
为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式
Figure BDA0002320881770000196
其中,ε为预先设定的允许误差的阈值。
步骤S6:获取每个开发者与每个项目的预测关联度值,根据预测关联度值给每个开发者推荐项目,具体过程为:
步骤601:根据公式
Figure BDA0002320881770000197
分别计算每个开发者与每个项目的预测关联度值;
步骤602:根据开发者对每个项目的预测关联度值,取预测关联度值大小排在前N个的对应的项目作为推荐给该开发者的项目;
步骤603:重复步骤601和步骤602,直至所有开发者都推荐完毕。
本发明提出的方法基于异质信息网络的背景,其中的元路径融入了语义信息,方法利用元路径更好的结合了开发者的社交关系及项目的自身特征进行推荐,提高了推荐的精准度;不同开发者对于不同元路径的偏重程度不一样,本发明的方法中使用注意力机制对各元路径得到的结果进行综合,使得推荐结果更加个性化。
实施例2
与本发明实施例相对应的,本发明实施例2还提供一种基于异质信息网络的开发者推荐装置,所述装置包括:
矩阵建立模块,用于提取github上开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的交互数据,建立关系矩阵;
初始化模块,用于构建异质信息网络,获取异质信息网络中每条元路径下每个开发者的初始表示向量以及每条元路径下每个项目的初始表示向量;
关联度矩阵获取模块,用于获取异质信息网络中每条元路径下开发者和项目的关联度矩阵;
更新模块,用于更新开发者的表示向量以及项目的表示向量;
加权融合模块,用于通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合;
推荐模块,用于获取每个开发者与每个项目的预测关联度值,根据预测关联度值给每个开发者推荐项目。
具体的,所述矩阵建立模块还用于:
步骤101:根据github上公开的数据集获取包含开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据的数据表;
步骤102:建立|U|×|C|的UC矩阵,其中|U|为数据表中的开发者的数量,|C|为数据表中的公司的数量,对开发者以及其所属公司,在UC矩阵对应位置置为1;
步骤103:建立|U|×|P|的UP矩阵,其中|P|为数据表中的开发者参与的项目的数量,对开发者ui所参与的项目pj,在UP矩阵对应位置置为r,r为开发者ui参加项目pj时提交的commits数量;选取UP矩阵矩阵中非0元素构建开发者与项目的交互列表Q且Q=[[ui,pj],......];
步骤104:建立|P|×|L|的PL矩阵,其中,|L|为数据表中编程语言的数量,对每个项目所使用的语言,在PL矩阵对应位置置为1;
步骤105:建立|U|×|L|的UL矩阵,对于开发者ui所使用过的语言,在UL矩阵的对应位置置为c,c为开发者历史曾使用该语言参与的项目数量;
步骤106:建立|U|×|U|的UU矩阵,依据数据表,对于每个开发者所关注的其他开发者,在UU矩阵的对应位置置为1。
具体的,所述初始化模块还用于:
步骤201:根据开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据构建元路径U→U→P、元路径U→L→P、元路径U→C→U→P和元路径U→C→U→U→P,由各元路径及其包含的异质节点组成了异质信息网络;
步骤202:对异质信息网络中每条元路径,通过高斯分布随机初始化开发者U的表示向量获得开发者ui的初始表示向量
Figure BDA0002320881770000211
随机初始化项目P的表示向量获得项目pj的初始表示向量
Figure BDA0002320881770000212
其中m表示元路径的索引。
具体的,所述关联度矩阵获取模块还用于:
通过邻接矩阵相乘的方式,得到不同元路径下的开发者U和项目P的关联度矩阵UPm,其中,对于元路径U→U→P,UP1=UU×UP;对于元路径U→L→P,UP2=UL×(PL)T;对于元路径U→C→U→P,UP3=UC×(UC)T×UP;对于元路径U→C→U→U→P,UP4=UC×(UC)T×UU×UP;()T表示矩阵的转置;
具体的,所述更新模块还用于:
步骤401:在开发者与项目的交互列表Q加入交互项,获得新的交互列表
Figure BDA0002320881770000221
其中
Figure BDA0002320881770000222
表示在元路径m下关联度矩阵UPm中对应于开发者ui和项目pj的值;
步骤402:将开发者ui的初始表示向量
Figure BDA0002320881770000223
作为开发者ui的当前表示向量,将项目pj的初始表示向量
Figure BDA0002320881770000224
作为项目pj的当前表示向量;
步骤403:根据开发者ui的当前表示向量利用公式
Figure BDA0002320881770000225
更新开发者当前表示向量,其中,
Figure BDA0002320881770000226
为开发者ui的当前表示向量,
Figure BDA0002320881770000227
为开发者ui更新后的表示向量,
Figure BDA0002320881770000228
为预设的开发者ui的调整参数;
根据项目pj的当前表示向量利用公式
Figure BDA0002320881770000229
更新项目表示向量;其中,
Figure BDA00023208817700002210
为项目pj的当前表示向量,
Figure BDA00023208817700002211
为项目pj更新后的表示向量,
Figure BDA00023208817700002212
为预设的项目pj的调整参数;
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
优选的,所述加权融合模块还用于:
步骤501:根据开发者ui更新后的表示向量
Figure BDA0002320881770000231
利用公式
Figure BDA0002320881770000232
计算各元路径下开发者ui的注意力得分,其中,
Figure BDA0002320881770000233
为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,
Figure BDA0002320881770000234
表示开发者ui的初始化权重,
Figure BDA0002320881770000235
表示开发者ui的初始化偏置向量;
根据项目pj更新后的表示向量
Figure BDA0002320881770000236
利用公式
Figure BDA0002320881770000237
计算各元路径下项目pj的注意力得分,其中,
Figure BDA0002320881770000238
为m元路径下项目pj的注意力得分,
Figure BDA0002320881770000239
表示项目pj的初始化权重,
Figure BDA00023208817700002310
表示项目pj的初始化偏置向量;
步骤502:利用公式
Figure BDA00023208817700002311
计算每元路径下开发者ui的注意力得分的权重;其中,
Figure BDA00023208817700002312
为m元路径下开发者ui的注意力得分的权重,exp()为以自然常数为底的指数函数,∑为求和符号;
利用公式
Figure BDA00023208817700002313
计算每元路径下项目pj的注意力得分的权重;其中,
Figure BDA00023208817700002314
为m元路径下项目pj的注意力得分的权重;
步骤503:利用公式
Figure BDA00023208817700002315
将各元路径下的开发者ui的表示向量加权融合,利用公式
Figure BDA00023208817700002316
将各元路径下的开发者ui的表示向量加权融合;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重
Figure BDA00023208817700002317
作为开发者ui的当前权重,开发者ui的初始化偏置向量
Figure BDA00023208817700002318
作为开发者ui的当前偏置向量,利用公式
Figure BDA0002320881770000241
更新开发者ui的权重,其中,
Figure BDA0002320881770000242
为开发者ui的当前权重,
Figure BDA0002320881770000243
为开发者ui更新后的权重,利用公式
Figure BDA0002320881770000244
更新开发者ui的偏置向量,其中,
Figure BDA0002320881770000245
为开发者ui的当前偏置向量,
Figure BDA0002320881770000246
为开发者ui更新后的偏置向量;
项目pj的初始化权重
Figure BDA0002320881770000247
作为项目pj的当前权重,项目pj的初始化偏置向量
Figure BDA0002320881770000248
作为项目pj的当前偏置向量,利用公式
Figure BDA0002320881770000249
更新项目pj的权重,其中,
Figure BDA00023208817700002410
为项目pj的当前权重,
Figure BDA00023208817700002411
为项目pj更新后的权重,利用公式
Figure BDA00023208817700002412
更新项目pj的偏置向量,其中,
Figure BDA00023208817700002413
为项目pj的当前偏置向量,
Figure BDA00023208817700002414
为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式
Figure BDA00023208817700002415
其中,ε为预先设定的允许误差的阈值。
优选的,所述推荐模块还用于:
步骤601:根据公式
Figure BDA00023208817700002416
分别计算每个开发者与每个项目的预测关联度值;
步骤602:根据开发者对每个项目的预测关联度值,取预测关联度值大小排在前N个的对应的项目作为推荐给该开发者的项目;
步骤603:重复步骤601和步骤602,直至所有开发者都推荐完毕。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于异质信息网络的开发者推荐方法,其特征在于,所述方法包括:
步骤一:提取github上开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的交互数据,建立关系矩阵;
步骤二:构建异质信息网络,获取异质信息网络中每条元路径下每个开发者的初始表示向量以及每条元路径下每个项目的初始表示向量;
步骤三:获取异质信息网络中每条元路径下开发者和项目的关联度矩阵;
步骤四:更新开发者的表示向量以及项目的表示向量;
步骤五:通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合;
步骤六:获取每个开发者与每个项目的预测关联度值,根据预测关联度值给每个开发者推荐项目。
2.根据权利要求1所述的一种基于异质信息网络的开发者推荐方法,其特征在于,所述步骤一包括:
步骤101:根据github上公开的数据集获取包含开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据的数据表;
步骤102:建立|U|×|C|的UC矩阵,其中|U|为数据表中的开发者的数量,|C|为数据表中的公司的数量,对开发者以及其所属公司,在UC矩阵对应位置置为1;
步骤103:建立|U|×|P|的UP矩阵,其中|P|为数据表中的开发者参与的项目的数量,对开发者ui所参与的项目pj,在UP矩阵对应位置置为r,r为开发者ui参加项目pj时所提交的commits数量;选取UP矩阵矩阵中非0元素构建开发者与项目的交互列表Q且Q=[[ui,pj],......];
步骤104:建立|P|×|L|的PL矩阵,其中,|L|为数据表中编程语言的数量,对每个项目所使用的语言,在PL矩阵对应位置置为1;
步骤105:建立|U|×|L|的UL矩阵,对于开发者ui所使用过的语言,在UL矩阵的对应位置置为c,c为开发者历史曾使用该语言参与的项目数量;
步骤106:建立|U|×|U|的UU矩阵,依据数据表,对于每个开发者所关注的其他开发者,在UU矩阵的对应位置置为1。
3.根据权利要求2所述的一种基于异质信息网络的开发者推荐方法,其特征在于,所述步骤二包括:
步骤201:根据开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据构建元路径U→U→P、元路径U→L→P、元路径U→C→U→P和元路径U→C→U→U→P,由各元路径及其包含的异质节点组成了异质信息网络;
步骤202:对异质信息网络中每条元路径,通过高斯分布随机初始化开发者U的表示向量获得开发者ui的初始表示向量
Figure FDA0002320881760000021
随机初始化项目P的表示向量获得项目pj的初始表示向量
Figure FDA0002320881760000022
其中m表示元路径的索引。
4.根据权利要求3所述的一种基于异质信息网络的开发者推荐方法,其特征在于,所述步骤三包括:
通过邻接矩阵相乘的方式,得到不同元路径下的开发者U和项目P的关联度矩阵UPm,其中,对于元路径U→U→P,UP1=UU×UP;对于元路径U→L→P,UP2=UL×(PL)T;对于元路径U→C→U→P,UP3=UC×(UC)T×UP;对于元路径U→C→U→U→P,UP4=UC×(UC)T×UU×UP;()T表示矩阵的转置。
5.根据权利要求4所述的一种基于异质信息网络的开发者推荐方法,其特征在于,所述步骤四包括:
步骤401:在开发者与项目的交互列表Q加入交互项,获得新的交互列表
Figure FDA0002320881760000031
其中
Figure FDA0002320881760000032
表示在元路径m下关联度矩阵UPm中对应于开发者ui和项目pj的值;
步骤402:将开发者ui的初始表示向量
Figure FDA0002320881760000033
作为开发者ui的当前表示向量,将项目pj的初始表示向量
Figure FDA0002320881760000034
作为项目pj的当前表示向量;
步骤403:根据开发者ui的当前表示向量利用公式
Figure FDA0002320881760000035
更新开发者当前表示向量,其中,
Figure FDA0002320881760000036
为开发者ui的当前表示向量,
Figure FDA0002320881760000037
为开发者ui更新后的表示向量,
Figure FDA0002320881760000038
为预设的开发者ui的调整参数;
根据项目pj的当前表示向量利用公式
Figure FDA0002320881760000039
更新项目表示向量;其中,
Figure FDA00023208817600000310
为项目pj的当前表示向量,
Figure FDA00023208817600000311
为项目pj更新后的表示向量,
Figure FDA00023208817600000312
为预设的项目pj的调整参数;
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
6.根据权利要求5所述的一种基于异质信息网络的开发者推荐方法,其特征在于,所述步骤五包括:
步骤501:根据开发者ui更新后的表示向量
Figure FDA0002320881760000041
利用公式
Figure FDA0002320881760000042
计算各元路径下开发者ui的注意力得分,其中,
Figure FDA0002320881760000043
为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,
Figure FDA0002320881760000044
表示开发者ui的初始化权重,
Figure FDA0002320881760000045
表示开发者ui的初始化偏置向量;
根据项目pj更新后的表示向量
Figure FDA0002320881760000046
利用公式
Figure FDA0002320881760000047
计算各元路径下项目pj的注意力得分,其中,
Figure FDA0002320881760000048
为m元路径下项目pj的注意力得分,
Figure FDA0002320881760000049
表示项目pj的初始化权重,
Figure FDA00023208817600000410
表示项目pj的初始化偏置向量;
步骤502:利用公式
Figure FDA00023208817600000411
计算每元路径下开发者ui的注意力得分的权重;其中,
Figure FDA00023208817600000412
为m元路径下开发者ui的注意力得分的权重,exp()为以自然常数为底的指数函数,∑为求和符号;
利用公式
Figure FDA00023208817600000413
计算每元路径下项目pj的注意力得分的权重;其中,
Figure FDA00023208817600000414
为m元路径下项目pj的注意力得分的权重;
步骤503:利用公式
Figure FDA00023208817600000415
将各元路径下的开发者ui的表示向量加权融合,利用公式
Figure FDA00023208817600000416
将各元路径下的开发者ui的表示向量加权融合;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重
Figure FDA0002320881760000051
作为开发者ui的当前权重,开发者ui的初始化偏置向量
Figure FDA0002320881760000052
作为开发者ui的当前偏置向量,利用公式
Figure FDA0002320881760000053
更新开发者ui的权重,其中,
Figure FDA0002320881760000054
为开发者ui的当前权重,
Figure FDA0002320881760000055
为开发者ui更新后的权重,利用公式
Figure FDA0002320881760000056
更新开发者ui的偏置向量,其中,
Figure FDA0002320881760000057
为开发者ui的当前偏置向量,
Figure FDA0002320881760000058
为开发者ui更新后的偏置向量;
项目pj的初始化权重
Figure FDA0002320881760000059
作为项目pj的当前权重,项目pj的初始化偏置向量
Figure FDA00023208817600000510
作为项目pj的当前偏置向量,利用公式
Figure FDA00023208817600000511
更新项目pj的权重,其中,
Figure FDA00023208817600000512
为项目pj的当前权重,
Figure FDA00023208817600000513
为项目pj更新后的权重,利用公式
Figure FDA00023208817600000514
更新项目pj的偏置向量,其中,
Figure FDA00023208817600000515
为项目pj的当前偏置向量,
Figure FDA00023208817600000516
为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式
Figure FDA00023208817600000517
其中,ε为预先设定的允许误差的阈值。
7.根据权利要求6所述的一种基于异质信息网络的开发者推荐方法,其特征在于,所述步骤六包括:
步骤601:根据公式
Figure FDA0002320881760000061
分别计算每个开发者与每个项目的预测关联度值;
步骤602:根据开发者对每个项目的预测关联度值,取预测关联度值大小排在前N个的对应的项目作为推荐给该开发者的项目;
步骤603:重复步骤601和步骤602,直至所有开发者都推荐完毕。
8.一种基于异质信息网络的开发者推荐装置,其特征在于,所述装置包括:
矩阵建立模块,用于提取github上开发者、开发者所属公司、开发者参与的项目、以及开发者参与项目所使用的编程语言之间的交互数据,建立关系矩阵;
初始化模块,用于构建异质信息网络,获取异质信息网络中每条元路径下每个开发者的初始表示向量以及每条元路径下每个项目的初始表示向量;
关联度矩阵获取模块,用于获取异质信息网络中每条元路径下开发者和项目的关联度矩阵;
更新模块,用于更新开发者的表示向量以及项目的表示向量;
加权融合模块,用于通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合;
推荐模块,用于获取每个开发者与每个项目的预测关联度值,根据预测关联度值给每个开发者推荐项目。
9.根据权利要求8所述的一种基于异质信息网络的开发者推荐装置,其特征在于,所述矩阵建立模块还用于:
步骤101:根据github上公开的数据集获取包含开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据的数据表;
步骤102:建立|U|×|C|的UC矩阵,其中|U|为数据表中的开发者的数量,|C|为数据表中的公司的数量,对开发者以及其所属公司,在UC矩阵对应位置置为1;
步骤103:建立|U|×|P|的UP矩阵,其中|P|为数据表中的开发者参与的项目的数量,对开发者ui所参与的项目pj,在UP矩阵对应位置置为r,r为开发者ui参加项目pj时提交的commits数量;选取UP矩阵矩阵中非0元素构建开发者与项目的交互列表Q且Q=[[ui,pj],......];
步骤104:建立|P|×|L|的PL矩阵,其中,|L|为数据表中编程语言的数量,对每个项目所使用的语言,在PL矩阵对应位置置为1;
步骤105:建立|U|×|L|的UL矩阵,对于开发者ui所使用过的语言,在UL矩阵的对应位置置为c,c为开发者历史曾使用该语言参与的项目数量;
步骤106:建立|U|×|U|的UU矩阵,依据数据表,对于每个开发者所关注的其他开发者,在UU矩阵的对应位置置为1。
10.根据权利要求9所述的一种基于异质信息网络的开发者推荐装置,其特征在于,所述初始化模块还用于:
步骤201:根据开发者U、开发者所属公司C、开发者参与的项目P以及开发者参与项目所使用的编程语言L的矩阵信息数据构建元路径U→U→P、元路径U→L→P、元路径U→C→U→P和元路径U→C→U→U→P,由各元路径及其包含的异质节点组成了异质信息网络;
步骤202:对异质信息网络中每条元路径,通过高斯分布随机初始化开发者U的表示向量获得开发者ui的初始表示向量
Figure FDA0002320881760000081
随机初始化项目P的表示向量获得项目pj的初始表示向量
Figure FDA0002320881760000082
其中m表示元路径的索引。
CN201911297265.1A 2019-12-17 2019-12-17 一种基于异质信息网络的开发者推荐方法及装置 Active CN111191081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911297265.1A CN111191081B (zh) 2019-12-17 2019-12-17 一种基于异质信息网络的开发者推荐方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911297265.1A CN111191081B (zh) 2019-12-17 2019-12-17 一种基于异质信息网络的开发者推荐方法及装置

Publications (2)

Publication Number Publication Date
CN111191081A true CN111191081A (zh) 2020-05-22
CN111191081B CN111191081B (zh) 2022-02-22

Family

ID=70707320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911297265.1A Active CN111191081B (zh) 2019-12-17 2019-12-17 一种基于异质信息网络的开发者推荐方法及装置

Country Status (1)

Country Link
CN (1) CN111191081B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930722A (zh) * 2020-09-21 2020-11-13 北京嘀嘀无限科技发展有限公司 异质信息网络处理方法、装置、服务器和可读存储介质
CN112508256A (zh) * 2020-12-01 2021-03-16 安徽大学 一种基于众包的用户需求主动预测方法及系统
CN112686736A (zh) * 2021-01-09 2021-04-20 青岛科技大学 一种系统推荐方法
CN113377858A (zh) * 2021-04-13 2021-09-10 北京思特奇信息技术股份有限公司 一种基于uc矩阵的过程数据分析方法、系统和存储介质
CN113935804A (zh) * 2021-10-15 2022-01-14 燕山大学 一种基于强化学习和加权元路径的语义推荐方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101713831B1 (ko) * 2016-07-26 2017-03-09 한국과학기술정보연구원 문서추천장치 및 방법
CN109271582A (zh) * 2018-08-20 2019-01-25 东南大学 一种基于带属性元路径的个性化信息推荐方法
CN110119478A (zh) * 2019-05-15 2019-08-13 南京大学 一种结合多种用户反馈数据的基于相似度的物品推荐方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101713831B1 (ko) * 2016-07-26 2017-03-09 한국과학기술정보연구원 문서추천장치 및 방법
CN109271582A (zh) * 2018-08-20 2019-01-25 东南大学 一种基于带属性元路径的个性化信息推荐方法
CN110119478A (zh) * 2019-05-15 2019-08-13 南京大学 一种结合多种用户反馈数据的基于相似度的物品推荐方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张以文、艾晓飞、崔光明、钱付兰: "《联合用户兴趣矩阵及全局偏好的推荐算法》", 《计算机科学与探索》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930722A (zh) * 2020-09-21 2020-11-13 北京嘀嘀无限科技发展有限公司 异质信息网络处理方法、装置、服务器和可读存储介质
CN112508256A (zh) * 2020-12-01 2021-03-16 安徽大学 一种基于众包的用户需求主动预测方法及系统
CN112508256B (zh) * 2020-12-01 2023-04-14 安徽大学 一种基于众包的用户需求主动预测方法及系统
CN112686736A (zh) * 2021-01-09 2021-04-20 青岛科技大学 一种系统推荐方法
CN113377858A (zh) * 2021-04-13 2021-09-10 北京思特奇信息技术股份有限公司 一种基于uc矩阵的过程数据分析方法、系统和存储介质
CN113935804A (zh) * 2021-10-15 2022-01-14 燕山大学 一种基于强化学习和加权元路径的语义推荐方法
CN113935804B (zh) * 2021-10-15 2024-05-14 燕山大学 一种基于强化学习和加权元路径的语义推荐方法

Also Published As

Publication number Publication date
CN111191081B (zh) 2022-02-22

Similar Documents

Publication Publication Date Title
CN111191081B (zh) 一种基于异质信息网络的开发者推荐方法及装置
CN103971161B (zh) 基于柯西分布量子粒子群的混合推荐方法
CA2802887A1 (en) Systems of computerized agents and user-directed semantic networking
Chen et al. When large language models meet personalization: Perspectives of challenges and opportunities
CN106845644A (zh) 一种通过相互关系学习用户及移动应用的联系的异构网络
CN104978396A (zh) 一种基于知识库的问答题目生成方法和装置
Yan et al. Profiling developer expertise across software communities with heterogeneous information network analysis
Zhiyuli et al. Bookgpt: A general framework for book recommendation empowered by large language model
Celino et al. Towards BOTTARI: using stream reasoning to make sense of location-based micro-posts
Srinivas et al. Artificial Intelligence Techniques for Chatbot Applications
Mao et al. Hybrid ecommerce recommendation model incorporating product taxonomy and folksonomy
CN114330704A (zh) 语句生成模型更新方法、装置、计算机设备和存储介质
CN113590976A (zh) 一种空间自适应图卷积网络的推荐方法
Wang et al. Online course recommendation algorithm based on multilevel fusion of user features and item features
Xiao et al. Research and implementation of hybrid recommendation algorithm based on collaborative filtering and word2vec
Saifudin et al. Systematic Literature Review on Recommender System: Approach, Problem, Evaluation Techniques, Datasets
CN115545833A (zh) 一种基于用户社交信息的推荐方法及系统
Ma Recommendation of sustainable economic learning course based on text vector model and support vector machine
Zeng Application of conditional random field model based on machine learning in online and offline integrated educational resource recommendation
Celino et al. Making Sense of Location-based Micro-posts Using Stream Reasoning.
Alinaghi et al. A multi-agent question-answering system for e-learning and collaborative learning environment
Furlan et al. A survey of intelligent question routing systems
Luo [Retracted] A Personalized Recommendation Algorithm for Political and Ideological Courses in Colleges Using Multiple Interests of Users
CN117520665B (zh) 一种基于生成对抗网络的社交推荐方法
Sun et al. Online programming education modeling and knowledge tracing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant