CN111191081A - 一种基于异质信息网络的开发者推荐方法及装置 - Google Patents
一种基于异质信息网络的开发者推荐方法及装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06311—Scheduling, 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,由这些元路径及其中包含的异质节点组成了异质信息网络;
优选的,所述步骤三包括:
通过邻接矩阵相乘的方式,得到不同元路径下的开发者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表示矩阵的转置;
优选的,所述步骤四包括:
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
优选的,所述步骤五包括:
步骤501:根据开发者ui更新后的表示向量利用公式计算各元路径下开发者ui的注意力得分,其中,为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,表示开发者ui的初始化权重,表示开发者ui的初始化偏置向量,初始化方式同样采用高斯分布;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重作为开发者ui的当前权重,开发者ui的初始化偏置向量作为开发者ui的当前偏置向量,利用公式更新开发者ui的权重,其中,为开发者ui的当前权重,为开发者ui更新后的权重,利用公式更新开发者ui的偏置向量,其中,为开发者ui的当前偏置向量,为开发者ui更新后的偏置向量;
项目pj的初始化权重作为项目pj的当前权重,项目pj的初始化偏置向量作为项目pj的当前偏置向量,利用公式更新项目pj的权重,其中,为项目pj的当前权重,为项目pj更新后的权重,利用公式更新项目pj的偏置向量,其中,为项目pj的当前偏置向量,为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式其中,ε为预先设定的允许误差的阈值。
优选的,所述步骤六包括:
步骤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,由这些元路径及其包含的异质节点组成了异质信息网络;
优选的,所述关联度矩阵获取模块还用于:
通过邻接矩阵相乘的方式,得到不同元路径下的开发者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表示矩阵的转置;
优选的,所述更新模块还用于:
根据项目pj的当前表示向量利用公式
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
优选的,所述加权融合模块还用于:
步骤501:根据开发者ui更新后的表示向量利用公式计算各元路径下开发者ui的注意力得分,其中,为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,表示开发者ui的初始化权重,表示开发者ui的初始化偏置向量;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重作为开发者ui的当前权重,开发者ui的初始化偏置向量作为开发者ui的当前偏置向量,利用公式更新开发者ui的权重,其中,为开发者ui的当前权重,为开发者ui更新后的权重,利用公式更新开发者ui的偏置向量,其中,为开发者ui的当前偏置向量,为开发者ui更新后的偏置向量;
项目pj的初始化权重作为项目pj的当前权重,项目pj的初始化偏置向量作为项目pj的当前偏置向量,利用公式更新项目pj的权重,其中,为项目pj的当前权重,为项目pj更新后的权重,利用公式更新项目pj的偏置向量,其中,为项目pj的当前偏置向量,为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式其中,ε为预先设定的允许误差的阈值。
优选的,所述推荐模块还用于:
步骤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的初始表示向量随机初始化项目P的表示向量获得项目pj的初始表示向量其中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得到的各元路径下的关联度矩阵更新开发者的表示向量以及项目的表示向量,具体过程为:
根据项目pj的当前表示向量利用公式
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
步骤S5:通过注意力机制将各元路径下开发者的表示向量加权融合,将各元路径下项目的表示向量加权融合,具体过程为:
步骤501:根据开发者ui更新后的表示向量利用公式计算各元路径下开发者ui的注意力得分,其中,为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,表示开发者ui的初始化权重,表示开发者ui的初始化偏置向量;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重作为开发者ui的当前权重,开发者ui的初始化偏置向量作为开发者ui的当前偏置向量,利用公式更新开发者ui的权重,其中,为开发者ui的当前权重,为开发者ui更新后的权重,利用公式更新开发者ui的偏置向量,其中,为开发者ui的当前偏置向量,为开发者ui更新后的偏置向量;
项目pj的初始化权重作为项目pj的当前权重,项目pj的初始化偏置向量作为项目pj的当前偏置向量,利用公式更新项目pj的权重,其中,为项目pj的当前权重,为项目pj更新后的权重,利用公式更新项目pj的偏置向量,其中,为项目pj的当前偏置向量,为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式其中,ε为预先设定的允许误差的阈值。
步骤S6:获取每个开发者与每个项目的预测关联度值,根据预测关联度值给每个开发者推荐项目,具体过程为:
步骤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,由各元路径及其包含的异质节点组成了异质信息网络;
具体的,所述关联度矩阵获取模块还用于:
通过邻接矩阵相乘的方式,得到不同元路径下的开发者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表示矩阵的转置;
具体的,所述更新模块还用于:
根据项目pj的当前表示向量利用公式
步骤404:将开发者ui更新后的表示向量作为开发者ui的初始表示向量,将项目pj更新后的表示向量作为项目pj的初始表示向量,返回执行步骤402和步骤403,直至新的交互列表Q'中所有的交互项遍历完毕;
步骤405:循环执行步骤402、步骤403以及步骤404共K次,K为预先设定的迭代次数;
步骤406:循环执行步骤401、步骤402、步骤403、步骤404以及步骤405,直至所有元路径都更新完毕。
优选的,所述加权融合模块还用于:
步骤501:根据开发者ui更新后的表示向量利用公式计算各元路径下开发者ui的注意力得分,其中,为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,表示开发者ui的初始化权重,表示开发者ui的初始化偏置向量;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重作为开发者ui的当前权重,开发者ui的初始化偏置向量作为开发者ui的当前偏置向量,利用公式更新开发者ui的权重,其中,为开发者ui的当前权重,为开发者ui更新后的权重,利用公式更新开发者ui的偏置向量,其中,为开发者ui的当前偏置向量,为开发者ui更新后的偏置向量;
项目pj的初始化权重作为项目pj的当前权重,项目pj的初始化偏置向量作为项目pj的当前偏置向量,利用公式更新项目pj的权重,其中,为项目pj的当前权重,为项目pj更新后的权重,利用公式更新项目pj的偏置向量,其中,为项目pj的当前偏置向量,为项目pj更新后的偏置向量;
步骤506:将开发者ui更新后的权重作为开发者ui的初始化权重,将开发者ui更新后的偏置向量作为开发者ui的初始化偏置向量,将项目pj更新后的权重作为项目pj的初始化权重,将项目pj更新后的偏置向量作为项目pj的初始化偏置向量,返回执行步骤501至步骤505,直至满足公式其中,ε为预先设定的允许误差的阈值。
优选的,所述推荐模块还用于:
步骤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。
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所述的一种基于异质信息网络的开发者推荐方法,其特征在于,所述步骤四包括:
根据项目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更新后的表示向量利用公式计算各元路径下开发者ui的注意力得分,其中,为m元路径下开发者ui的注意力得分,σ()为sigmoid函数,表示开发者ui的初始化权重,表示开发者ui的初始化偏置向量;
步骤504:重复步骤501至步骤503,直到所有的开发者的表示向量以及所有项目的表示向量都融合完成;
步骤505:开发者ui的初始化权重作为开发者ui的当前权重,开发者ui的初始化偏置向量作为开发者ui的当前偏置向量,利用公式更新开发者ui的权重,其中,为开发者ui的当前权重,为开发者ui更新后的权重,利用公式更新开发者ui的偏置向量,其中,为开发者ui的当前偏置向量,为开发者ui更新后的偏置向量;
项目pj的初始化权重作为项目pj的当前权重,项目pj的初始化偏置向量作为项目pj的当前偏置向量,利用公式更新项目pj的权重,其中,为项目pj的当前权重,为项目pj更新后的权重,利用公式更新项目pj的偏置向量,其中,为项目pj的当前偏置向量,为项目pj更新后的偏置向量;
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。
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)
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)
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 | 南京大学 | 一种结合多种用户反馈数据的基于相似度的物品推荐方法 |
-
2019
- 2019-12-17 CN CN201911297265.1A patent/CN111191081B/zh active Active
Patent Citations (3)
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)
Title |
---|
张以文、艾晓飞、崔光明、钱付兰: "《联合用户兴趣矩阵及全局偏好的推荐算法》", 《计算机科学与探索》 * |
Cited By (7)
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 |