掌桥专利:专业的专利平台
掌桥专利
首页

面向开源软件的任务单元推荐方法、装置和计算机设备

文献发布时间:2023-06-19 11:29:13


面向开源软件的任务单元推荐方法、装置和计算机设备

技术领域

本申请涉及计算机技术领域,特别是涉及一种面向开源软件的任务单元推荐方法、装置、计算机设备和存储介质。

背景技术

开源作为当前软件创新的重要驱动力,已成为学术界和工业界关注的焦点。全球各类开源社区已创造出超过 8000 亿行代码、 500 万个开源项目,形成了 10 万个不同规模的开源组织,逐渐改变了全球信息产业发展的格局。

任务和贡献之间的关联以多种形式存在,有的关联还存在不同原因和形式交叉重叠的现象。这些复杂关系的存在,大大增加了项目理解的难度。复杂的开发单元关系一方面使得新手参与项目开发的门槛过高,不能吸引更多的贡献者参与到项目开发,使得项目开发进度变慢,另一方面也不利于已有参与者了解和掌握项目的开发现状,以至于不能很好地引导开发者的行为,出现重复开发等浪费时间精力的开发活动。这些无效的开发活动使贡献者的代码贡献被视作无效,打击了贡献者参与开源开发积极性,同时,维护者花费大量的时间和精力审阅了相同功能的代码,浪费了不必要的时间,阻碍了项目的发展。

当前开源软件开发支撑平台没有对任务单元之间的关联做统一的技术支持,主要还是依靠用户在开发过程中人工发现和标记这些关联,而用户的标记方法又依赖于差异较大的语言习惯,关联中包含的项目相关知识难以得到传播和复用。当前开源软件中使用的推荐系统功能单一,只能根据某一项任务进行相关推荐,不能贴合用户的个性化需求,难以实现关联知识的全面理解,存在适应性差,效率低的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够开源软件开发效率的面向开源软件的任务单元推荐方法、装置、计算机设备和存储介质。

一种面向开源软件的任务单元推荐方法,所述方法包括:

获取开源项目的历史开发单元数据,对所述历史开发单元数据进行预处理,得到所述历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与所述开发单元之间的关联信息;

以所述组件信息为关联图谱的实体,所述序号信息为实体属性,所述关联信息为关系,构建开发任务单元关联图谱;

通过知识图谱嵌入算法,将所述开发任务单元关联图谱中所述实体的实体信息和所述关系的关系信息嵌入到连续的向量空间,得到向量化信息;

根据所述开发任务单元关联图谱和所述向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型;

将训练好的所述任务单元推荐模型用于所述开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。

在其中一个实施例中,还包括:获取开发用户的行为信息,根据所述行为信息触发推荐机制;

根据所述行为信息确定使用场景,根据所述使用场景确定待推荐的任务单元;

判断所述开发任务单元关联图谱中是否存在所述待推荐的任务单元;

当不存在时,将所述待推荐的任务单元加入所述开发任务单元关联图谱;

通过训练好的所述任务单元推荐模型进行任务单元的推荐。

在其中一个实施例中,还包括:获取所述待推荐的任务单元;

对所述待推荐的任务单元中的数据进行预处理,得到所述待推荐的任务单元的实体信息、关系信息和实体属性信息;

根据所述实体信息、所述关系信息和所述实体属性信息,将所述待推荐的任务单元加入所述开发任务单元关联图谱。

在其中一个实施例中,还包括:在通过训练好的所述任务单元推荐模型进行任务单元的推荐之后,标识当前推荐场景以及推荐关联的原因。

在其中一个实施例中,还包括:在通过训练好的所述任务单元推荐模型进行任务单元的推荐之后,通过所述任务单元推荐模型对所述开源项目进行持续监听。

在其中一个实施例中,还包括:根据所述开发任务单元关联图谱和所述向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型;所述任务单元推荐模型中不同使用场景对应相应的任务单元。

在其中一个实施例中,还包括:所述开源项目为开源软件开发应用项目。

一种面向开源软件的任务单元推荐装置,所述装置包括:

数据预处理模块,用于获取开源项目的历史开发单元数据,对所述历史开发单元数据进行预处理,得到所述历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与所述开发单元之间的关联信息;

关联图谱构建模块,用于以所述组件信息为关联图谱的实体,所述序号信息为实体属性,所述关联信息为关系,构建开发任务单元关联图谱;

向量处理模块,用于通过知识图谱嵌入算法,将所述开发任务单元关联图谱中所述实体的实体信息和所述关系的关系信息嵌入到连续的向量空间,得到向量化信息;

任务单元推荐模型训练模块,用于根据所述开发任务单元关联图谱和所述向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型;

任务单元推荐模块,用于将训练好的所述任务单元推荐模型用于所述开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取开源项目的历史开发单元数据,对所述历史开发单元数据进行预处理,得到所述历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与所述开发单元之间的关联信息;

以所述组件信息为关联图谱的实体,所述序号信息为实体属性,所述关联信息为关系,构建开发任务单元关联图谱;

通过知识图谱嵌入算法,将所述开发任务单元关联图谱中所述实体的实体信息和所述关系的关系信息嵌入到连续的向量空间,得到向量化信息;

根据所述开发任务单元关联图谱和所述向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型;

将训练好的所述任务单元推荐模型用于所述开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取开源项目的历史开发单元数据,对所述历史开发单元数据进行预处理,得到所述历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与所述开发单元之间的关联信息;

以所述组件信息为关联图谱的实体,所述序号信息为实体属性,所述关联信息为关系,构建开发任务单元关联图谱;

通过知识图谱嵌入算法,将所述开发任务单元关联图谱中所述实体的实体信息和所述关系的关系信息嵌入到连续的向量空间,得到向量化信息;

根据所述开发任务单元关联图谱和所述向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型;

将训练好的所述任务单元推荐模型用于所述开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。

上述面向开源软件的任务单元推荐方法、装置、计算机设备和存储介质,通过获取开源项目的历史开发单元数据,对历史开发单元数据进行预处理,得到历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与开发单元之间的关联信息;以组件信息为关联图谱的实体,序号信息为实体属性,关联信息为关系,构建开发任务单元关联图谱;通过知识图谱嵌入算法,将开发任务单元关联图谱中实体的实体信息和关系的关系信息嵌入到连续的向量空间,通过深度学习算法训练预设的任务单元推荐模型,将训练好的任务单元推荐模型用于开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。本发明根据用户处理的开发单元的具体信息,通过场景感知推荐相关的任务单元给用户,获取解决当前任务单元所需的背景知识,促进开发任务的推进和解决;缓解了开源软件开发视图不清晰的问题,从开发任务单元的角度出发,构建完整的关联图谱,有利于开源生态的积极发展。

附图说明

图1为一个实施例中面向开源软件的任务单元推荐方法的流程示意图;

图2为另一个实施例中面向开源软件的任务单元推荐方法的流程示意图;

图3为另一个实施例中面向开源软件的任务单元推荐方法中监听和推荐的流程示意图;

图4为一个实施例中面向开源软件的任务单元推荐装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的面向开源软件的任务单元推荐方法,可以应用于如图1所示的应用环境中。其中,终端执行一种面向开源软件的任务单元推荐方法,通过获取开源项目的历史开发单元数据,对历史开发单元数据进行预处理,得到历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与开发单元之间的关联信息;以组件信息为关联图谱的实体,序号信息为实体属性,关联信息为关系,构建开发任务单元关联图谱;通过知识图谱嵌入算法,将开发任务单元关联图谱中实体的实体信息和关系的关系信息嵌入到连续的向量空间,通过深度学习算法训练预设的任务单元推荐模型,将训练好的任务单元推荐模型用于开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。其中,终端可以但不限于是各种个人计算机、笔记本电脑和平板电脑。

在一个实施例中,如图1所示,提供了一种面向开源软件的任务单元推荐方法,包括以下步骤:

步骤102,获取开源项目的历史开发单元数据,对历史开发单元数据进行预处理,得到历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与开发单元之间的关联信息。

典型的开源软件开发实践中,维护者和外围贡献者在进行解决任务、报告缺陷、提出特征等活动时,常常要花很多时间了解与该开发单元相关的内容,以求掌握更多的信息。但是目前开源开发平台支持的机制尚有缺陷,单纯地通过关键字检索的方法很难准确全面地掌握相关信息,在这样的情况之下,就会出现重复、冲突等开发者不愿意看到的情况,既浪费了资源,又削减了贡献者的积极性。

用户的行为对应开源软件开发的不同场景,如创建任务单元、提交代码、参与任务单元讨论、任务单元审阅等。本发明所提出的方法可以利用开源软件的任务和贡献之间的关系进行相关任务单元推荐,通过场景感知,在不同场景下推荐不同的任务单元。具体地,根据用户处理的开发单元的具体信息,推荐相关的任务单元给用户,获取解决当前任务单元所需的背景知识,促进开发任务的推进和解决。

步骤104,以组件信息为关联图谱的实体,序号信息为实体属性,关联信息为关系,构建开发任务单元关联图谱。

关联图谱是把关联关系用图表达出来而构成的。通过关联图谱可以找出与问题有关系的要图,从而抓住重点用于帮助制定策略。本发明提出基于开源软件开发单元组件、和用户行为的单元关联,开发任务单元关联图谱的构造方法,以组件信息为关联图谱的实体,序号信息为实体属性,关联信息为关系,构建开发任务单元关联图谱,有利于从开发任务单元的角度出发,提供较多的信息。

开发单元之间的关联可以视作为一种特殊的通信方式,在关联中,开发者不仅贡献了自己关于项目的知识,还把不同的单元联系起来,达到了组合社区中碎片化知识的目的,为维护项目状态提供了很好的思路。因此,厘清任务和贡献之间的关系,不仅能从开发的角度促进项目发展,也有益于吸引新手进入项目贡献代码,扩大项目的影响力。

步骤106,通过知识图谱嵌入算法,将开发任务单元关联图谱中实体的实体信息和关系的关系信息嵌入到连续的向量空间,得到向量化信息。

向量空间又称线性空间,将图谱表示到连续的向量空间是将问题抽象化,简洁清晰地以数学方式表达,有利于后续推荐模型的训练和使用。

步骤108,根据开发任务单元关联图谱和向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型。

深度学习和传统的机器学习一样,学习的是一个函数映射,但相比于传统的机器学习表现更好,通过深度学习算法训练预设的任务单元推荐模型,可以充分利用历史开发单元的信息,形成信息交互,有利于将互联网上“碎片化、无序”的原生资源转变成“聚合、有序”的共享资源,实现大范围的开放式资源共享。

步骤110,用于将训练好的任务单元推荐模型用于开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。

通过本发明的方法实现的任务单元的推荐,充分整合了历史开发单元的信息,推荐更精准,使得开源软件的开发效率更高。

上述面向开源软件的任务单元推荐方法中,通过获取开源项目的历史开发单元数据,对历史开发单元数据进行预处理,得到历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与开发单元之间的关联信息;以组件信息为关联图谱的实体,序号信息为实体属性,关联信息为关系,构建开发任务单元关联图谱;通过知识图谱嵌入算法,将开发任务单元关联图谱中实体的实体信息和关系的关系信息嵌入到连续的向量空间,通过深度学习算法训练预设的任务单元推荐模型,将训练好的任务单元推荐模型用于开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。本发明根据用户处理的开发单元的具体信息,通过场景感知推荐相关的任务单元给用户,获取解决当前任务单元所需的背景知识,促进开发任务的推进和解决;缓解了开源软件开发视图不清晰的问题,从开发任务单元的角度出发,构建完整的关联图谱,有利于开源生态的积极发展。

在其中一个实施例中,还包括:获取开发用户的行为信息,根据行为信息触发推荐机制;根据行为信息确定使用场景,根据使用场景确定待推荐的任务单元;判断开发任务单元关联图谱中是否存在待推荐的任务单元;当不存在时,将待推荐的任务单元加入开发任务单元关联图谱;通过训练好的任务单元推荐模型进行任务单元的推荐。

在其中一个实施例中,还包括:获取待推荐的任务单元;对待推荐的任务单元中的数据进行预处理,得到待推荐的任务单元的实体信息、关系信息和实体属性信息;根据实体信息、关系信息和实体属性信息,将待推荐的任务单元加入开发任务单元关联图谱。

在其中一个实施例中,还包括:在通过训练好的任务单元推荐模型进行任务单元的推荐之后,标识当前推荐场景以及推荐关联的原因。

在其中一个实施例中,还包括:在通过训练好的任务单元推荐模型进行任务单元的推荐之后,通过任务单元推荐模型对开源项目进行持续监听。

在其中一个实施例中,还包括:根据开发任务单元关联图谱和向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型;任务单元推荐模型中不同使用场景对应相应的任务单元。

场景感知是指根据开源软件开发的不同阶段(创建任务单元、提交代码、参与任务单元讨论、任务单元审阅等)推荐不同关联类型的相关任务单元。如:创建任务单元时,着重推荐与当前单元相似、协同、替代等关系的任务单元;提交代码时,着重推荐与当前修改的代码文件以及代码片段交叉或者完成相同任务的任务单元;参与任务单元讨论时,着重推荐能够补充当前任务单元背景知识的其他单元;任务单元审阅时,着重推荐同类型的单元,辅助审阅者掌握这类任务单元的特点。

在其中一个实施例中,还包括:开源项目为开源软件开发应用项目。

应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个具体实施例中,如图2所示,提供了一种面向开源软件的任务单元推荐方法,包括:

S100:给定一个开源项目进行推荐时,首先收集该项目的历史开发单元,并对收集到的数据进行预处理;

S200:从开发单元中解析重要组件,作为开发任务单元关联图谱的实体,将用户行为以及单元之间的关联作为开发任务单元关联图谱的关系,开发单元的序号作为实体的属性,使用这些元素构造开发单元开发任务单元关联图谱;

S300:使用知识图谱嵌入算法,将开发任务单元关联图谱中实体和单元的关联嵌入到连续的向量空间中,为后续的算法提供输入;

S400:利用开发任务单元关联图谱中实体之间的关联,使用深度学习算法构造相关单元的推荐模型;

S500:对该项目持续监听,在不同场景下对任务单元进行相关单元推荐。

其中,监听和推荐的详细流程如图3所示:

S510:在持续监督项目的条件下,用户行为触发推荐机制;

S520:判断用户行为,感知使用场景,选定待推荐的任务单元;

S530:判断现有图谱中是否存在该任务单元;

S531:如果该单元不存在,那么收集该任务单元的数据,进行数据预处理;

S532:解析新单元实体、关系和属性,构成三元组加入开发任务单元关联图谱;

S540:使用推荐模型对任务单元进行推荐,并标识当前推荐场景以及推荐关联的原因;

S550:持续监听该项目。

在一个实施例中,如图4所示,提供了一种面向开源软件的任务单元推荐装置,包括:数据预处理模块402、关联图谱构建模块404、向量处理模块406、任务单元推荐模型训练模块408和任务单元推荐模块410,其中:

数据预处理模块402,用于获取开源项目的历史开发单元数据,对历史开发单元数据进行预处理,得到历史开发单元数据中开发单元的组件信息和序号信息,以及开发用户与开发单元之间的关联信息;

关联图谱构建模块404,用于以组件信息为关联图谱的实体,序号信息为实体属性,关联信息为关系,构建开发任务单元关联图谱;

向量处理模块406,用于通过知识图谱嵌入算法,将开发任务单元关联图谱中实体的实体信息和关系的关系信息嵌入到连续的向量空间,得到向量化信息;

任务单元推荐模型训练模块408,用于根据开发任务单元关联图谱和向量化信息,通过深度学习算法训练预设的任务单元推荐模型,得到训练好的任务单元推荐模型;

任务单元推荐模块410,用于将训练好的任务单元推荐模型用于开源项目的监听,根据开发用户的行为进行基于场景感知的任务单元的推荐。

任务单元推荐模块410还用于获取开发用户的行为信息,根据行为信息触发推荐机制;根据行为信息确定使用场景,根据使用场景确定待推荐的任务单元;判断开发任务单元关联图谱中是否存在待推荐的任务单元;当不存在时,将待推荐的任务单元加入开发任务单元关联图谱;通过训练好的任务单元推荐模型进行任务单元的推荐。

任务单元推荐模块410还用于获取待推荐的任务单元;对待推荐的任务单元中的数据进行预处理,得到待推荐的任务单元的实体信息、关系信息和实体属性信息;根据实体信息、关系信息和实体属性信息,将待推荐的任务单元加入开发任务单元关联图谱。

任务单元推荐模块410还用于在通过训练好的任务单元推荐模型进行任务单元的推荐之后,标识当前推荐场景以及推荐关联的原因。

任务单元推荐模块410还用于通过任务单元推荐模型对开源项目进行持续监听。

关于面向开源软件的任务单元推荐装置的具体限定可以参见上文中对于面向开源软件的任务单元推荐方法的限定,在此不再赘述。上述面向开源软件的任务单元推荐装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种面向开源软件的任务单元推荐方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 面向开源软件的任务单元推荐方法、装置和计算机设备
  • 面向开源软件的任务单元推荐方法、装置和计算机设备
技术分类

06120112942414