CN115221310B - 一种基于知识图谱的开源应用自动化推荐方法及装置 - Google Patents
一种基于知识图谱的开源应用自动化推荐方法及装置 Download PDFInfo
- Publication number
- CN115221310B CN115221310B CN202211140949.2A CN202211140949A CN115221310B CN 115221310 B CN115221310 B CN 115221310B CN 202211140949 A CN202211140949 A CN 202211140949A CN 115221310 B CN115221310 B CN 115221310B
- Authority
- CN
- China
- Prior art keywords
- knowledge
- source application
- open
- open source
- knowledge graph
- 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.)
- Active
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/335—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于知识图谱的开源应用自动化推荐方法与装置。该方法包括:通过软件开发层级知识目录,进入目标知识条目页面;根据目标知识条目页面的预设链接,获取目标开源应用;根据开源应用知识图谱,推荐与目标开源应用相适应的库和框架的组合。本发明通过软件开发层级知识目录,构建系统性的软件开发学习知识体系,并通过预设链接可以直接获取到与软件开发知识点相对应的开源应用,实现了软件开发理论和实践的连通,解决了现有开源应用组织的无序性。此外,通过构建开源应用知识图谱,在获取到开源应用的同时,可以自动地为初学者推荐在实际开发中配合使用的库和框架项目,提升了开源应用实践的高效性。
Description
技术领域
本文涉及软件技术领域,尤其涉及一种基于知识图谱的开源应用自动化推荐方法及装置。
背景技术
目前,软件开发初学者可以在以慕课网站为代表的一类学习系统中选择软件开发知识点进行学习,但软件开发初学者无法在此类学习系统中对这些软件开发知识点对应的开源应用进行学习、实践和贡献。但是,即便存在大量的开源应用可供学习,这些海量的开源应用缺乏系统化软件开发知识的组织。由于缺乏软件开发知识背景,软件开发初学者无法对这些开源应用进行深入的学习和开发。
除此之外,软件开发初学者能学习到的软件开发知识点都是孤立的,但在软件开发实践中,一个软件的开发往往需要用到多领域的框架项目和库项目,而现有的相关学习系统往往无法提供这一层关系,致使软件开发初学者学习零散的知识点后,难以找到与该知识点相对应的开源应用和关联的框架项目和库项目,从而进行具体的开发实践。由此导致,软件开发初学者无法学习到多知识点如何在软件工程实际开发中被综合使用。
因此,有必要开发一种开源应用推荐方法,以解决对软件开发初学者难以在软件开发实践中获取到适用的开源应用的问题。
发明内容
鉴于上述问题,本发明实施例提供了一种基于知识图谱的开源应用自动化推荐方法及装置,以便克服上述问题或者至少部分地解决上述问题。
本发明实施例的第一方面,提供了一种基于知识图谱的开源应用自动化推荐方法,包括:
通过软件开发层级知识目录,进入目标知识条目页面;
根据所述目标知识条目页面的预设链接,获取目标开源应用;
根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合。
可选地,所述软件开发层级知识目录是通过如下步骤得到的,所述步骤包括:
获取分类页面数据;所述分类页面数据包括分类页面和知识条目页面;
通过规则对所述分类页面数据进行筛选;
以筛选后的所述分类页面表示分支节点,以筛选后的所述知识条目页面表示叶子节点,构建树结构的所述软件开发层级知识目录。
可选地,所述知识条目页面还包括链接数据,所述步骤还包括:
根据所述链接数据,在各个知识条目页面建立对应的预设链接,以链接与所述知识条目页面对应的开源应用。
可选地,所述开源应用知识图谱是通过如下步骤到的:
获取开源应用数据,所述开源应用数据中包括开源应用和所述各个开源应用之间的依赖关系;
利用类型识别模型,得到各个所述开源应用的类型;
根据开源应用之间的依赖关系,确定出所述开源应用中的直链项目、被依赖项目和依赖项目;
根据所述开源应用的类型,从所述直链项目、所述被依赖项目和所述依赖项目中筛选出用于构建知识图谱的候选开源应用;
以所述候选开源应用为知识图谱实体,以所述依赖关系为知识图谱关系,构建所述开源应用知识图谱。
可选地,所述类型识别模型是通过如下步骤建立的:
获取训练数据集,并对各个训练数据进行标注,得到标注后的训练数据集,所述标注表征所述训练数据是否为框架或库类型的开源应用;
对所述标注后的训练数据集进行预处理,得到预处理后的训练数据集;
利用所述预处理后的训练数据集进行模型训练,得到所述类型识别模型。
可选地,根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合,包括:
根据开源应用知识图谱,确定所述目标开源应用的所有依赖项目;
根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量;
计算各个所述知识嵌入向量与所述目标开源应用的相似度,得到各个所述知识嵌入向量的相似度值;
根据所述相似度值,确定出多个目标依赖项目;
将所述多个目标依赖项目作为与所述目标开源应用相适应的库和框架的组合,进行推荐。
可选地,根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量,包括:
根据所述开源应用知识图谱中的所述实体和所述关系,利用TransD模型构建所述依赖项目的知识嵌入向量。
本发明实施例第二方面还提供了一种基于知识图谱的开源应用自动化推荐装置,包括:
层级知识目录模块,用于通过软件开发层级知识目录,进入目标知识条目页面;
链接模块,用于根据所述目标知识条目页面的预设链接,获取目标开源应用;
推荐模块,用于根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合。
本发明实施例第三方面还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现本发明实施例第一方面所提供的基于知识图谱的开源应用自动化推荐方法中的步骤。
本发明实施例第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,所述计算机程序/指令被处理器执行时实现本发明实施例第一方面所提供的基于知识图谱的开源应用自动化推荐方法中的步骤。
本发明实施例提供的基于知识图谱的开源应用自动化推荐方法包括:首先,通过软件开发层级知识目录,进入目标知识条目页面;然后,根据目标知识条目页面的预设链接,获取目标开源应用;最后,根据开源应用知识图谱,推荐与目标开源应用相适应的库和框架的组合。本发明通过软件开发层级知识目录,构建系统性的软件开发学习知识体系,并通过预设链接可以直接获取到与软件开发知识点相对应的开源应用,实现了软件开发理论和实践项目的连通,解决了现有开源应用组织的无序性。此外,通过构建开源应用知识图谱,在获取到开源应用的同时,为初学者推荐在实际开发中配合使用的库和框架项目,提升了软件项目实践的高效性。
具体有益效果如下:
1)本发明实施例通过构建软件开发层级知识目录,整合了大量软件开发知识点,形成了层次分明的软件开发知识点体系,有利于初学者准确且高效地获取相关知识点以及整体的学习架构,解决了现有软件开发知识点分散独立的问题。
2)本发明实施例通过预设链接,在找到对应的知识点后,能够通过该预设链接直接获取到该知识点对应的开源应用。这样有助于初学者在对知识点进行了学习后,可以直接利用链接对应的开源应用进行实践,从而实现了软件开发理论和实践项目的连通。解决了初学者难以从海量的开源应用库中查找到与知识点相适宜的开源应用的问题。
本发明实施例通过构建开源应用知识图谱,在初学者用户获取目标开源应用时,根据该知识图谱,为初学者推荐在实际开发中配合使用的库和框架项目,提升了开源应用实践的高效性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种基于知识图谱的开源应用自动化推荐方法的步骤流程图;
图2为本申请实施例中一种层级知识目录的结构示意图;
图3是本发明实施例中一种基于知识图谱的开源应用自动化推荐推荐装置的结构示意图;
图4是本发明实施例中一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参照图1,图1示出了一种基于知识图谱的开源应用自动化推荐方法的步骤流程图,如图1所示,本发明实施例提供了一种基于知识图谱的开源应用自动化推荐方法,包括:
通过软件开发层级知识目录,进入目标知识条目页面;
根据所述目标知识条目页面的预设链接,获取目标开源应用;
根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合。
本实施例是以所述软件开发层级知识目录作为建立的学习门户的入口,所述软件开发层级知识目录中包含了大量的软件开发知识点,具有全面且系统的软件开发知识体系。其中,知识点的名称通过目录层级的结构模式进行展示,用户通过访问层级知识目录,在目录中选择目标知识点,进入对应的目标知识条目页面,从而在该目标知识条目页面进行知识点的学习。具体的,目标知识条目页面包括该知识点的简要介绍,以及该知识点的课程链接,用户可以通过目标知识条目页面的课程链接直接获取到该知识点的学习课程。由此,基于层次分明的软件开发知识点体系,初学者能够准确且高效地获取相关知识点以及整体的学习架构,进而对软件开发知识层层递进地进行系统且全面的学习。在实践过程中,基于系统定位考虑,本实施例以层级知识目录作为学习门户的入口,具体的首先开发一个以JQuery前端框架爱进行视图层开发,Bootstrap进行界面优化和基于Python中Flask框架开发的服务端的Chrome插件,为用户访问开源软件社区 GitHub 时获取到学习门户的入口,进入学习门户网站;在学习门户网站的实现中,系统采用 Vue.js 作为前端视图层框架、使用 naïve-ui 进行界面优化并使用 Flask 框架开发 Web 网站的后端。由此实现包含一个Chrome浏览器拓展和一个轻量级 Web应用的学习门户系统,用户通过建立的学习门户可以查看软件开发层级知识目录,进而通过目录查看软件开发知识概念等。
其中,在所述软件开发层级知识目录的知识条目页面中还预先设置有预设链接,通过目标知识条目页面的预设链接可以直接获取到与该知识点相对应的目标开源应用。具体的,该预设链接可以以网页链接的形式设置在该目标知识条目页面中。开源应用,又成为开源软件项目,是指将软件程序与源代码文件一并打包的软件项目,用户在获取到该开源应用后,既可以不受限制地使用该软件的全部功能,还可以根据自己的需求对源代码进行任意的修改,甚至编制成为衍生产品再次发布出去。这样有助于用户在对知识点进行了学习后,可以直接利用链接的开源应用进行实践,从而实现了软件开发理论和实践项目的连通。解决了初学者难以从海量的开源应用库中查找到与知识点相适宜的开源应用的问题。
开源应用知识图谱负责保存包括节点(开源应用)和关系(各个开源应用之间的关系)等开源应用知识图谱相关信息,并通过该类进行开源应用知识图谱的相关操作,例如计算开源应用的知识嵌入、计算开源应用的相似度和获取组合应用的框架和库的开源应用推荐。本实施例通过构建知识图谱,将获取到的开源应用以及每个开源应用之间的依赖关系构建成可视化的结构图谱,在确定出目标开源应用后,能够通过知识图谱中的相关开源应用之间的依赖关系,确定出与该开源应用向适配的框架项目和库项目的组合。由此能为初学者推荐在实际开发中配合使用的库和框架项目,提升了软件项目实践的高效性。需要知道的是,框架项目和库项目也属于开源应用,是开源应用库中的一部分。
在一种实施例中,所述软件开发层级知识目录是通过如下步骤得到的,所述步骤包括:
获取分类页面数据;所述分类页面数据包括分类页面和知识条目页面;
通过规则对所述分类页面数据进行筛选;
以筛选后的所述分类页面表示分支节点,以筛选后的所述知识条目页面表示叶子节点,构建树结构的所述软件开发层级知识目录。
在本实施例中,分类页面数据可以从现有的百科数据中进行提取。示例性的,所述分类页面数据可以选取wikipedia网站英文百科的开放知识数据,wikipedia作为全球最大的百科网站,拥有千万数量条目的知识词条,具备全面且权威的知识语料,而其中英文知识条目是拥有知识条目最多的语言。
所述分类页面数据包括分类页面和知识条目页面,分类页面表征每个知识点或词条的类别或层级,提供了层次递进的知识结构;而知识条目页面提供该知识点的具体内容。具体的,在wikipedia的开放知识数据中,包括“分类索引”页面,该页面将所有知识点按照学科门类进行组织,包含了每个知识条目的若干子分类和知识条目页面的链接。
需要知道的是,获取到的分类页面数据是很庞大的,随着分类页面访问的不断深入,采集到的页面数量会指数级的上升,其中可能包含大量的无用知识点。这对于构建层级知识目录造成了干扰,且在后续使用过程中,同样会对用户查找知识点。在本实施例中,在获取到分类页面数据后,通过规则对所述分类页面数据进行了筛选。具体的,所述规则可以为限制访问分类页面的深度,和/或,限制分类页面词条名的关键词。示例性的,关键词可以为“albums”“blogs”“autobiographical”“screenshots”等。
由此,利用筛选后的分类页面数据,构建出树结构的软件开发层级知识目录。参照图2,图2示出了一种层级知识目录的结构示意图,如图2所示,在本实施例中,以筛选后的分类页面表示分支节点,从而展示层级结构,以筛选后的知识条目页面表示叶子节点,每个叶子节点对应一个知识点,通过点击该叶子节点可以获取到对应的知识点的具体内容。在实际应用过程中,用户进入系统后,可以通过“开始探索”按钮进入软件开发知识层级目录根节点的详情页,从头开始系统地学习软件开发知识,也可以通过阅读下方卡片里随机推荐的软件开发知识点简介,挑选感兴趣的部分点击“详情”按钮进入对应的软件开发知识的详情页进行学习。卡片中随机推荐的软件开发知识点是树结构的软件开发层级知识目录中的叶子结点,其简介可以引用自 Wikipedia 的公开数据。若用户对随机推荐的软件开发知识点不感兴趣,可以通过系统主页底部的“换一批”对卡片内的软件开发知识点内容进行更新。具体的,本实施例可以基于 vue 框架的实现机制,为所有页面类加入了统一的页面基类,用来提供对页面生命周期周各种操作的支持,并通过一个 APP 类实现系统中不同页面的相互导航和路由控制。由此,用户可以浏览到计算机各个知识点的具体内容和可视化地浏览其在软件开发层级知识目录的位置并进行上下层级探索。
本发明实施例通过构建软件开发层级知识目录,整合了大量软件开发知识点,形成了层次分明的软件开发知识点体系,有利于初学者准确且高效地获取相关知识点以及整体的学习架构,进而对软件开发知识层层递进地进行系统且全面的学习,解决了现有软件开发知识点分散独立的问题。
在一种实施例中,所述知识条目页面还包括链接数据,所述步骤还包括:
根据所述链接数据,在各个知识条目页面建立对应的预设链接,以链接与所述知识条目页面对应的开源应用。
为了便于用户在知识条目页面获取到知识点内容的同时,能够学习特定知识点所对应的开源应用,本实施例将软件开发层级知识目录上的每个知识条目连接至对应的开源应用。具体的,wikipedia网站的知识条目页面就包含有对应的GitHub开源应用信息,可供用户访问其开源应用的地址,本实施例可以直接从wikipedia网页的HTML源码中的“infobox”中抽取该软件项目对应GitHub仓库的URL链接。由此,本发明实施例通过预设链接,在找到对应的知识点后,能够通过该预设链接直接获取到该知识点对应的开源应用。这样有助于初学者在对知识点进行了学习后,可以直接利用链接的开源应用进行实践,从而实现了软件开发理论和实践项目的连通。
在一种实施例中,所述开源应用知识图谱是通过如下步骤到的:
获取开源应用数据,所述开源应用数据中包括开源应用和所述各个开源应用之间的依赖关系;
利用类型识别模型,得到各个所述开源应用的类型;
根据开源应用之间的依赖关系,确定出所述开源应用中的直链项目、被依赖项目和依赖项目;
根据所述开源应用的类型从所述直链项目、所述被依赖项目和所述依赖项目中筛选出用于构建知识图谱的候选开源应用;
以所述候选开源应用为知识图谱实体,以所述依赖关系为知识图谱关系,构建所述开源应用知识图谱。
在本实施例中,通过构建开源应用知识图谱,细粒度地刻画了每个开源应用之间的依赖关系,利用这些依赖关系,实现后续框架和库的推荐。知识图谱表示图结构的数据模型,一般情况下通过“主体-谓词-客体”表示实体之间的图结构关系,或者说,知识图谱由“实体”和“关系构成。在本实施例中,知识图谱中的实体有两类:一类为框架项目或库项目的开源应用,另一类为既不是框架项目,也不是库项目的开源应用,为描述简洁,又将这一类软件项目称为非框架项目或库项目。由此可以得到,知识图谱中的关系有四种:关系一,非框架项目或库项目依赖框架项目或库项目;关系二,框架项目或库项目依赖非框架项目或库项目;关系三,框架项目或库项目依赖框架项目或库项目;关系四,非框架项目或库项目依赖非框架项目或库项目。
利用类型识别模型,得到各个所述开源应用的类型;在本实施例中,识别开源应用的类型为完成框架和库的推荐服务的前提,具体的,可以通过类型识别模型来进行开源应用的类型识别,从而区分出为框架项目或库项目的开源应用以及既不是框架项目,也不是库项目的开源应用。
获取开源应用数据,所述开源应用数据中包括开源应用和所述各个开源应用之间的依赖关系。示例性的,本实施例可以获取GitHub 开源软件社区的开源应用数据,用于构建所述开源应用知识图谱。在获取到的开源应用数据中,包括了上述两类知识图谱实体,以及四种知识图谱关系,即依赖关系。举个例子,以Python流行的后端开发框架爱Flask为例,在获取到Flask这一开源应用数据中,不仅包括了该应用,该应用的链接,还能够获取到Flask的依赖关系,根据该依赖关系可以知道,Flask依赖于开源应用“kspi2410/twitter-bot”,被依赖于“pallets/jinja”等。
根据开源应用之间的依赖关系,确定出所述开源应用中的直链项目、被依赖项目和依赖项目。在本实施例中,根据获取到的开源应用之间的依赖关系,确定出其中的直链项目、被依赖项目和依赖项目。其中,直链项目表示被软件开发层级知识目录直接链接到的开源应用;被依赖项目表示依赖一个或者多个直链项目的开源应用;依赖项目表示被直链项目或者被依赖项目依赖的开源应用。
根据所述开源应用的类型从所述直链项目、所述被依赖项目和所述依赖项目中筛选出用于构建知识图谱的候选开源应用;具体的,在获取所述开源应用数据后,需要对获得的数据进行筛选,以得到适合的数据量。在本实施例中,可以利用构建的层级知识目录以及开源应用的类型对获取的开源应用数据进行筛选,对于每个能直接链接至软件开发层级知识目录的直链项目,选取类型为框架或库的所有的依赖项目和部分的被依赖项目,选择部分类型为框架或库的被依赖项目。由于被依赖项目的数据量过大,获取所有的被依赖项目用来构建知识图谱是不切实际的,本实施例通过对被依赖项目进行抽样,并通过开源应用的star数量进行排序后,筛选出一定数量的被依赖项目用于知识图谱构建。此外,在构建开源软件知识图谱的代码实现上,本实施例可以采用Python的NetworkX工具包对开源软件知识图谱进行构建,将图谱中的实体和关系通过GEXF的数据格式进行存储。
本发明实施例通过构建知识图谱,可视化地展示了开源应用之间的依赖关系,为后续框架和库项目的组合推荐服务提供基础。
在一种实施例中,所述类型识别模型是通过如下步骤建立的:
获取训练数据集,并对各个训练数据进行标注,得到标注后的训练数据集,所述标注表征所述训练数据是否为框架或库类型的开源应用;
对所述标注后的训练数据集进行预处理,得到预处理后的训练数据集;
利用所述预处理后的训练数据集进行模型训练,得到所述类型识别模型。
在本实施例中,识别开源应用的类型为完成框架和库的推荐服务的前提。需要知道的是,开发一个完整的开源应用可能会涉及不同编程语言的框架和库,所以需要对各类编程语言的开源应用的类型进行识别。本实施例提出了一种基于深度学习的开源应用的类型识别模型,利用该识别模型可以识别出框架项目和库项目。示例性的,本实施例可以采用英文书写描述文本的GitHub开源应用作为训练数据,具体的,可以利用其中开源应用的description文本标记readme文本,将标记好的readme文本作为训练数据集进行训练。具体的,可以采用描述文本关键词的自动化标注方法,即,当description文本中包含有类似“library”或“framework”等关键词时,将其对应的readme文本标注为框架类型或库类型的开源应用。除此之外,因为description文本中的关键词可能并不指代项目本身,为了避免由此导致标注产生的误差,在自动化标注方法的基础上,进一步采用人工校验的方法,对自动化标注后的数据集进行人工审查与校对,以保证标注数据集的准确性。
在实际应用中,需要对所述标注后的训练数据集进行预处理。如上述示例,GitHub开源应用中的readme文本的原始合适为包含Markdown语法的文本,为了能使该数据集能用于模型训练,需要对其进行预处理。具体的,所述预处理包括:Markdown格式去除、HTML标签去除、URL链接去除和停用词去除。由此,通过预处理,将描述文本处理成了纯自然语言且无停用词的描述文本,可做为类型识别模型的训练数据。
在本实施例中,可以在BERT模型架构的基础上利用所述预处理后的训练数据集进行模型训练。具体的,将readme文本作为训练数据输入类型识别模型后,首先会被输入到模型的 BERT 编码层,因为该层的 BERT 编码器已经在大规模的英文语料训练集上进行过预训练,因此可以通过该层对输入文本的词汇进行编码以获得通用的语义信息。为了生成文档级别而非词汇级别的语义特征向量表示,对待每个输入的单词序列数据,本实施例在其头部添加标识“[CLS]”,在其尾部添加标志“[SEP]”。在通过 BERT的编码层后,该层将会输出一组 token-level 的向量集合,接着本实施例将第一个标志“[CLS]”的语义特征向量取出作为输入的开源应用描述文本的文档向量。得到文档向量包含语义语义特征,并被输入进模型的全连接层,并最终通过 Sigmoid 层输出得到 GitHub开源应用的仓库类型预测。但是在实际应用的过程中,由于开源应用Readme描述文本的长短并不统一,还需要对输入文本进行处理:针对文本长度少于 BERT 模型输入长度的文本,本实施例对其进行了填充;针对文本长度多于 BERT 模型输入长度的文本,本实施例对其进行了截断。
在一种实施例中,根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合,包括:
根据开源应用知识图谱,确定所述目标开源应用的所有依赖项目;
根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量;
计算各个所述知识嵌入向量与所述目标开源应用的相似度,得到各个所述知识嵌入向量的相似度值;
根据所述相似度值,确定出多个目标依赖项目;
将所述多个目标依赖项目作为与所述目标开源应用相适应的库和框架的组合,进行推荐。
通过构建出的知识图谱中的开源应用实体之间的依赖关系,为用户推荐软件项目开发中常组合使用的框架和库项目。
根据开源应用知识图谱,确定所述目标开源应用的所有依赖项目。示例性的,用户通过层级知识目录进入知识点A对应的页面,从而获取到与知识点A对应的开源应用A的预设链接。由此知识图谱对开源应用A进行查找,根据知识图谱中的依赖关系,确定出项目A的所有依赖项目。
根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量。其中知识嵌入向量是指将实体与关系进行向量形式的表示,在捕捉到实体和关系间的相关性的同时,也更好地保留了知识图谱的结构化信息。知识嵌入向量的最终呈现形式为长度为30的一维向量。在本实施例中,可以通过离线计算的方式,为知识图谱中的每个开源应用计算知识嵌入向量,由此,使得用户在通过软件开发层级知识目录访问到具体的开源应用时,可以直接获得该项目的知识嵌入向量,从而进行后续的推荐。需要知道的是,当知识图谱中的开源应用数据发生改变时,需要对每个知识嵌入向量重新进行计算。
计算各个所述知识嵌入向量与所述目标开源应用的相似度,得到各个所述知识嵌入向量的相似度值。因为知识图谱中以图结构形式描述了开源应用之间的依赖关系,知识嵌入向量相近的框架与库项目体现了两者更容易在开发一个开源应用时同时被依赖。由此可以通过计算知识嵌入向量的相似度,实现常搭配的框架和库项目的推荐。示例性的,可以采用余弦相似度方法、欧氏距离方法以及皮尔逊相关系数方法计算知识嵌入向量的相似度。具体的,余弦相似度方法和欧氏距离方法可以用于度量不同框架与库的相似度和差异度,使相似度高的框架与库更常组合应用于软件开发实践中。皮尔逊相关系数方法可用于度量两个框架与库项目是否能共同应用于用以开源应用的一致性变化趋势。
根据所述相似度值,确定出多个目标依赖项目。具体的,根据知识嵌入向量的相似度,对所有依赖项目按照相似度高低进行重排序,通过Top-K方法选择出相似度最高的多个目标依赖项目,并将其作为实际软件开发中常组合应用的框架和库项目进行推荐。
由此,本实施例通过开源软件知识图谱,在获取到开源应用的同时,为用户推荐在实际开发中配合使用的库和框架项目,提升了关于开源应用实践的高效性。
在一种实施例中,根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量,包括:
根据开源应用知识图谱中的所述实体和所述关系,利用TransD模型构建所述依赖项目的知识嵌入向量。
在本实施例中,选择TransD模型作为知识嵌入模型,对知识图谱中的实体和关系构建知识嵌入向量。具体的,所述TransD模型是由TransE模型、TransH模型和TransR模型接连改进得到的。TransD模型为知识图谱中的每个实体和关系分别设置了两个向量,一个用于表示实体或者关系的意义,另一个用于构造投影矩阵。
1、类型识别模型的有效性和准确度验证
为了验证上述实施例提出的基于BERT分类模型建立的类型识别模型的有效性和准确度,本实施例提出一种测试方案,将其与五个传统机器学习方法训练开源应用分类模型进行对比实验,所述传统机器学习包括:决策树(Decision tree)、随机森林(Randomforest)、AdaBoost(Adaptive Boost)、GBDT(Gradient boosting)、XGBoost。考虑到决策树模型成熟且常用于解决分类问题,本实施例选择该模型作为基线。本实施例准备了 13472条开源应用标注数据集。其中,每条数据是开源应用 README 文件经过数据预处理后的描述文本,标签通过开源应用的 Description 描述文本的关键词识别和人工校验的方法进行标注。数据集按照 9:1 的比例划分为训练集和测试集。
为了评估本实施例提出的开源应用类型识别模型的有效性,本实施例采用了精确率(Precision)、召回率(Recall)和 F1 分数作为评估指标。将每个模型通过训练后对测试集的开源应用分类预测结果的统计,统计后根据如下公式分别计算出模型的精确率、召回率和 F1 分数;
精确率=TP/(TP+FP)
召回率=TP/(TP+FN)
F1 =(2×精确率×召回率)/(精确率+召回率)
公式中,所述TP表示模型输出预测结果为开源应用预测的类别是框架与库项目,且该项目的实际标记也是框架与库项目;所述FP表示模型输出预测结果为开源应用预测的类别是框架与库项目,但该项目的实际标记不是框架与库项目;所述FN表示模型输出预测结果为开源应用预测的类别不是框架与库项目,但该项目的实际标记是框架与库项目。
由此,测试结果如下表表1,表1示出了本申请的类型识别模型与常用分类模型的预测性能数据,如表1所示,本实施例提出的基于BERT的深度学习开源应用类型识别模型能准确判断一个项目是否为框架和库类型。同时在一系列的对比实验结果比较中,本实施例提出的基于BERT的开源应用类型识别模型无论在精确率、召回率还是在F1分数的结果上,相比于传统的机器学习模型,都有着显著的提升,进一步证明了模型的有效性。
表1
2、验证推荐框架和库项目的方法的有效性
为了验证推荐框架和库项目的方法的有效性,本实施例提出了一种测试方案。本实施例为每个开源软件层级知识目录中知识点能直接链接至 GitHub开源应用的直链项目选取了35个被依赖项目和全部的依赖项目,其中,只有框架与库项目才拥有被依赖项目。被选取的被依赖项目以4:1 的比例被分作训练集和验证集,训练集的开源应用实体参与开源应用知识图谱的知识嵌入训练。训练结束后,本实施例为每个直链项目推荐知识嵌入相似度排名靠前的Top-K的框架与库进行推荐方法验证。针对一个直链项目及其被依赖项目的验证集,因为被依赖直链项目在依赖直链项目对同时也依赖其他的框架与库开源应用,因此可以把验证集中的被依赖项目视作软件开发初学者在实际软件开发中可以开发的项目,接着通过比对推荐服务推荐的组合应用的框架与库项目集合和验证集中的被依赖项目依赖的框架与库项目集合的接近程度,最终验证本实施例提出推荐方法的有效性。具体的,本实施例为每个开源软件层级知识目录中知识点能直接链接至GitHub 开源应用的直链项目选取了35个被依赖项目,其中,被依赖项目个数不足30按照原数目进行选取,被依赖项目按照比例分为训练集和验证集。结合直链项目和被依赖项目的全部依赖项目,构建出具备18612个节点及 129476个SPO三元组的开源应用知识图谱。验证集包含322个开源应用,用于推荐方法的有效性验证。
1)验证相似度度量方法的准确性
首先本实施例验证关于相似度度量方法的选择,分别以余弦相似度、欧拉距离和皮尔森相关系数为知识嵌入相似性计算方法的推荐服务的实验结果如下表表2所示。
表2
表2示出了不同的相似度度量方法的命中率和精确率。其中计算精确率的公式与评估本实施例提出的开源应用类型识别模型的有效性测试中的精确率公式一致。命中率表示是Top-K推荐中常用的衡量召回率的指标。推荐数量表示推荐的框架和库项目数量。如表2所示,皮尔森相关系数在命中率上有着最好的表现。当推荐数量较少时皮尔森相关系数得到的推荐服务精确度结果略优于余弦相似度,当推荐数量较多时皮尔森相关系数得到的推荐服务精确度结果略逊于余弦相似度,两者在推荐服务结果的表现都远高于欧氏距离。考虑到使用余弦相似度作为相似性计算方法时的推荐服务效果与使用皮尔森相关系数作为相似性度量是的效果接近,在相近的基础上皮尔森相关系数作为相似度度量时推荐服务效果略有提升。因此最优方式是采取皮尔森相关系数作为知识嵌入的相似性度量完成框架与库项目的组合应用推荐。
2)验证TransD模型的准确性
接着,本实施例测试了不同的知识嵌入模型对推荐结果的影响,测试的模型包括TransE模型、TransH模型、TransR模型、TransD模型以及基于 doc2vec 的启发式推荐方法和随机推荐方法。本实施例采用了清华大学的开源知识嵌入框架OpenKE进行TransE模型、TransH模型、TransR模型和TransD模型的训练,为开源应用知识图谱中的每个开源应用生成200 维的知识嵌入向量,用于后续的推荐服务。在基于描述文本生成开源应用向量表示的启发式实验中,本实施例采用了Python 编程语言中的 gensim 库实现了doc2vec的训练,最终生成的开源应用表示向量的维度也为 200 维度。所述基于doc2vec的启发式推荐方法考虑到框架和库开源应用的描述文件中会涉及到该项目的功能描述和使用场景。以开源应用React和Jest为例,React的描述文件中提及该开源应用是用于构建用户界面的Javascript库,Jest的描述文件中提及该开源应用是一个轻量级的 Javascript 测试框架,通过描述可以判断这两个开源应用很可能常在编写 Javascript 项目的实践中配合使用,实际上这两个开源应用确实作为诸多 Javascript 开源应用的依赖项目同时出现。基于以上思想,本实施例中的启发式推荐方法采用了常用于生成文档向量的无监督算法Doc2vec处理开源应用的描述文本,生成文档向量作为开源应用的表示,通过相似度度量方法,最终启发式地推荐软件开发过程中常组合应用的框架与库项目。
框架与库组合应用推荐方法对比实验的命中率和准确率结果分别由表3和表4 所示。表3示出了一种框架与库组合应用推荐方法对比实验命中率对比结果,表4示出了一种框架与库组合应用推荐方法对比实验精确度结果对比结果。从表3和表4可以看出,本实施例提出的基于知识图谱的框架与库组合应用推荐方法在命中率和精确度上的表现均优于启发式验证方法和随机推荐方法,验证了本实施例方法的有效性。并且。基于doc2vec的启发式推荐实验与随机推荐实验相比命中率和精确度有明显的提升,也证明了本文设计的启发式实验的有效性。在不同的知识嵌入模型的对比实验中,通过实验结果可知基于TransD模型的推荐服务的命中率和精确度总体高于其它知识嵌入模型,因此本文选用TransD作为知识嵌入模型最终实现框架和库项目的组合应用推荐。
表3
表4
3、验证开源应用知识图谱合理且有效
为了验证本发明实施例提出的开源应用知识图谱的有效性和合理性,本实施例首先针对不同规模的开源应用知识图谱的构建实验,分析知识图谱规模对最终的框架与库的组合应用推荐的影响。影响知识图谱构建规模的因素主要为直链项目的被依赖项目的个数。在直链项目的被依赖项目个数的选取上,本实施例最终选取 35 个被依赖项目用于知识图谱的构建。由于被依赖项目的选取会影响知识图谱依赖项目的数量,而依赖项目的个数会对最终的推荐服务效果具有极大的影响,因为框架与库的组合应用集合,本质上就是开源应用开发过程中的依赖项目。当选取过少的被依赖项目时,会导致知识图谱中用于训练的依赖项目数量过少且覆盖不全面,验证集中就会存在无法被推荐到的依赖项目。当选取过多的被依赖项目时,尽管知识图谱中用于训练的依赖项目相对完整,但训练集中会产生增加知识图谱复杂度的依赖关系冗余,致使知识嵌入模型无法有效表达。由此可知,依赖项目的个数选取不能是随意的。为验证本文选取被依赖项目个数的合理性,本实施例基于不同的被依赖项目个数的选取进行实验,分析了随着被依赖项目个数的增长下开源软件知识图谱中依赖项目的增速的变化,最终通过对依赖项目增速函数的求导和分析拐点的意义,验证本实施例选取被依赖项目个数的合理性。实验中涉及函数拟合的部分,本实施例采用Python的scipy工具包进行实验。实验中涉及函数积分和求导的部分,本实施例采用了Python的 sympy工具包进行实验。
验证实验首先对比了直链项目的不同被依赖项目选取个数下的个数推荐服务的推荐效果,实验的命中率结果和精确度结果分别如表5 和表6 所示。表5示出了一种不同数目的被依赖项选取下推荐服务命中率结果,表6示出了一种不同数目的被依赖项选取下推荐服务精确度结果。由表5、表6可以看出,当为直链项目选取星数最高的前35个被依赖项目所构建的知识图谱,在后续的推荐服务中有最好的表现。随着直链项目选取的被依赖项目数量逐渐增大,在推荐较小数目的 Top-3 和 Top-5 框架与库项目时,推荐服务效果显示出了先上升接着下降最后稳定的趋势,在推荐较大数目的 Top-8、Top-10、Top-12 和 Top-15 框架与库项目的推荐服务时,推荐效果显示出了先提升接着下降最后缓慢下降的趋势。总体趋势上看,推荐效果随着被依赖项目选择数量的增加先增大接着快速减小最后趋于稳定,说明了被依赖项目选取数量和方法的选择,与推荐服务的效果存在较强的相关性。
表5
表6
本发明实施例还提供了一种基于知识图谱的开源应用自动化推荐装置,参考图3,图3示出了一种基于知识图谱的开源应用自动化推荐装置的结构示意图,如图3所示,所述装置包括:
层级知识目录模块,用于通过软件开发层级知识目录,进入目标知识条目页面;
链接模块,用于根据所述目标知识条目页面的预设链接,获取目标开源应用;
推荐模块,用于根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合。
在一种实施例中,所述装置还包括层级知识目录构建模块,所述层级知识目录构建模块包括:
获取子模块,用于获取分类页面数据;所述分类页面数据包括分类页面和知识条目页面;
筛选子模块,用于通过规则对所述分类页面数据进行筛选;
构建子模块,用于以筛选后的所述分类页面表示分支节点,以筛选后的所述知识条目页面表示叶子节点,构建树结构的所述软件开发层级知识目录。
在一种实施例中,所述装置还包括链接模块,用于根据所述链接数据,在各个知识条目页面建立对应的预设链接,以链接与所述知识条目页面对应的开源应用。
在一种实施例中,所述装置还包括开源软件知识图谱构建模块,所述开源软件知识图谱构建模块包括:
第一构建子模块,用于获取开源应用数据,所述开源应用数据中包括开源应用和所述开源应用之间的依赖关系;
第二构建子模块,用于利用类型识别模型,得到各个所述开源应用的类型;
第三构建子模块,用于根据开源应用之间的依赖关系,确定出所述开源应用中的直链项目、被依赖项目和依赖项目;
第四构建子模块,用于根据所述开源应用的类型从所述直链项目、所述被依赖项目和所述依赖项目中筛选出用于构建知识图谱的候选开源应用;
第五构建子模块,用于以所述候选开源应用为知识图谱实体,以所述依赖关系为知识图谱关系,构建所述开源应用知识图谱。
在一种实施例中,所述装置还包括类型识别模型建立模块,所述类型识别模型建立模块包括:
第一建立子模块,用于获取训练数据集,并对各个训练数据进行标注,得到标注后的训练数据集,所述标注表征所述训练数据是否为框架或库类型的开源应用;
第二建立子模块,用于对所述标注后的训练数据集进行预处理,得到预处理后的训练数据集;
第三建立子模块,用于利用所述预处理后的训练数据集进行模型训练,得到所述类型识别模型。
在一种实施例中,所述推荐模块包括:
第一确定子模块,用于根据开源应用知识图谱,确定所述目标开源应用的所有依赖项目;
向量计算子模块,用于根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量;
相似度计算子模块,用于计算各个所述知识嵌入向量与所述目标开源应用的相似度,得到各个所述知识嵌入向量的相似度值;
第二确定子模块,用于根据所述相似度值,确定出多个目标依赖项目;
推荐子模块,用于将所述多个目标依赖项目作为与所述目标开源应用相适应的库和框架的组合,进行推荐。
本发明实施例还提供了一种电子设备,参照图4,图4是本申请实施例提出的电子设备的结构示意图。如图4所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本申请实施例公开的基于知识图谱的开源应用自动化推荐推荐方法中的步骤。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例公开的基于知识图谱的开源应用自动化推荐推荐方法中的步骤。
本发明实施例提供了一种基于知识图谱的开源应用自动化推荐方法及装置,所述推荐方法包括:首先,通过软件开发层级知识目录,进入目标知识条目页面;然后,根据目标知识条目页面的预设链接,获取目标开源应用;最后,根据开源应用知识图谱,推荐与目标开源应用相适应的库和框架的组合。本发明通过软件开发层级知识目录,构建系统性的软件开发学习知识体系,并通过预设链接可以直接获取到与软件开发知识点相对应的开源应用,实现了软件开发理论和实践项目的连通,解决了现有开源应用组织的无序性。此外,通过构建开源应用知识图谱,在获取到开源应用的同时,自动地为初学者推荐在实际开发中配合使用的库和框架项目,提升了软件项目实践的高效性。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。“和/或”表示可以选择两者之中的任意一个,也可以两者都选择。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种基于知识图谱的开源应用自动化推荐方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种基于知识图谱的开源应用自动化推荐方法,其特征在于,包括:
通过软件开发层级知识目录,进入目标知识条目页面;
根据所述目标知识条目页面的预设链接,获取目标开源应用;
根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合;
其中,所述开源应用知识图谱是通过如下步骤到的:
获取开源应用数据,所述开源应用数据中包括开源应用和各个所述开源应用之间的依赖关系;
利用类型识别模型,得到各个所述开源应用的类型;
根据开源应用之间的依赖关系,确定出所述开源应用中的直链项目、被依赖项目和依赖项目;
根据所述开源应用的类型,从所述直链项目、所述被依赖项目和所述依赖项目中筛选出用于构建知识图谱的候选开源应用;
以所述候选开源应用为知识图谱实体,以所述依赖关系为知识图谱关系,构建所述开源应用知识图谱。
2.根据权利要求1所述的基于知识图谱的开源应用自动化推荐方法,其特征在于,所述软件开发层级知识目录是通过如下步骤得到的,所述步骤包括:
获取分类页面数据;所述分类页面数据包括分类页面和知识条目页面;
通过规则对所述分类页面数据进行筛选;
以筛选后的所述分类页面表示分支节点,以筛选后的所述知识条目页面表示叶子节点,构建树结构的所述软件开发层级知识目录。
3.根据权利要求2所述的基于知识图谱的开源应用自动化推荐方法,其特征在于,所述知识条目页面还包括链接数据,所述步骤还包括:
根据所述链接数据,在各个知识条目页面建立对应的预设链接,以链接与所述知识条目页面对应的开源应用。
4.根据权利要求1所述的基于知识图谱的开源应用自动化推荐方法,其特征在于,所述类型识别模型是通过如下步骤建立的:
获取训练数据集,并对各个训练数据进行标注,得到标注后的训练数据集,所述标注表征所述训练数据是否为框架或库类型的开源应用;
对所述标注后的训练数据集进行预处理,得到预处理后的训练数据集;
利用所述预处理后的训练数据集进行模型训练,得到所述类型识别模型。
5.根据权利要求1所述的基于知识图谱的开源应用自动化推荐方法,其特征在于,根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合,包括:
根据开源应用知识图谱,确定所述目标开源应用的所有依赖项目;
根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量;
计算各个所述知识嵌入向量与所述目标开源应用的相似度,得到各个所述知识嵌入向量的相似度值;
根据所述相似度值,确定出多个目标依赖项目;
将所述多个目标依赖项目作为与所述目标开源应用相适应的库和框架的组合,进行推荐。
6.根据权利要求5所述的基于知识图谱的开源应用自动化推荐方法,其特征在于,根据开源应用知识图谱,确定出所有依赖项目的知识嵌入向量,包括:
根据所述开源应用知识图谱中的所述知识图谱实体和所述知识图谱关系,利用TransD模型构建所述依赖项目的知识嵌入向量。
7.一种基于知识图谱的开源应用自动化推荐装置,其特征在于,包括:
层级知识目录模块,用于通过软件开发层级知识目录,进入目标知识条目页面;
链接模块,用于根据所述目标知识条目页面的预设链接,获取目标开源应用;
推荐模块,用于根据开源应用知识图谱,推荐与所述目标开源应用相适应的库和框架的组合;
其中,所述装置还包括开源软件知识图谱构建模块,所述开源软件知识图谱构建模块包括:
第一构建子模块,用于获取开源应用数据,所述开源应用数据中包括开源应用和所述开源应用之间的依赖关系;
第二构建子模块,用于利用类型识别模型,得到各个所述开源应用的类型;
第三构建子模块,用于根据开源应用之间的依赖关系,确定出所述开源应用中的直链项目、被依赖项目和依赖项目;
第四构建子模块,用于根据所述开源应用的类型从所述直链项目、所述被依赖项目和所述依赖项目中筛选出用于构建知识图谱的候选开源应用;
第五构建子模块,用于以所述候选开源应用为知识图谱实体,以所述依赖关系为知识图谱关系,构建所述开源应用知识图谱。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1至6中任一项所述的基于知识图谱的开源应用自动化推荐方法中的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至6中任一项所述的基于知识图谱的开源应用自动化推荐方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211140949.2A CN115221310B (zh) | 2022-09-20 | 2022-09-20 | 一种基于知识图谱的开源应用自动化推荐方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211140949.2A CN115221310B (zh) | 2022-09-20 | 2022-09-20 | 一种基于知识图谱的开源应用自动化推荐方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115221310A CN115221310A (zh) | 2022-10-21 |
CN115221310B true CN115221310B (zh) | 2022-12-16 |
Family
ID=83617704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211140949.2A Active CN115221310B (zh) | 2022-09-20 | 2022-09-20 | 一种基于知识图谱的开源应用自动化推荐方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221310B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949307A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的优化方法和系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073710B (zh) * | 2017-12-21 | 2022-04-01 | 儒安物联科技集团有限公司 | 基于动态网络图挖掘的Github开源代码库推荐系统 |
US10789054B2 (en) * | 2018-05-24 | 2020-09-29 | Find it EZ Software Corp. | Methods, systems, apparatuses and devices for facilitating change impact analysis (CIA) using modular program dependency graphs |
CN109492113B (zh) * | 2018-11-05 | 2022-05-13 | 扬州大学 | 一种面向软件缺陷知识的实体、关系联合抽取方法 |
CN111949800A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的建立方法和系统 |
CN111949306B (zh) * | 2020-07-06 | 2021-05-28 | 北京大学 | 一种支持开源项目碎片化学习的推送方法和系统 |
CN112860879A (zh) * | 2021-03-08 | 2021-05-28 | 南通大学 | 一种基于联合嵌入模型的代码推荐方法 |
CN112988135B (zh) * | 2021-05-20 | 2021-07-27 | 中国人民解放军国防科技大学 | 面向开源软件的任务单元推荐方法、装置和计算机设备 |
-
2022
- 2022-09-20 CN CN202211140949.2A patent/CN115221310B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949307A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的优化方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115221310A (zh) | 2022-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109145153B (zh) | 意图类别的识别方法和装置 | |
CN110399457B (zh) | 一种智能问答方法和系统 | |
CN106649786A (zh) | 基于深度问答的答案检索方法及装置 | |
CN112214670A (zh) | 一种在线课程推荐方法、装置、电子设备及存储介质 | |
CN111401049A (zh) | 一种实体链接方法及装置 | |
CN106682192A (zh) | 一种基于搜索关键词训练回答意图分类模型的方法和装置 | |
CN107102993B (zh) | 一种用户诉求分析方法和装置 | |
US20210173874A1 (en) | Feature and context based search result generation | |
US8121970B1 (en) | Method for identifying primary product objects | |
CN111831902A (zh) | 推荐理由筛选方法、装置、电子设备 | |
CN111291086A (zh) | 一种课程内容搜索方法、系统、设备及存储介质 | |
CN114661872A (zh) | 一种面向初学者的api自适应推荐方法与系统 | |
CN108153754B (zh) | 一种数据处理方法及其装置 | |
CN111666374A (zh) | 一种在深度语言模型中融入额外知识信息的方法 | |
CN116701791B (zh) | 基于人工智能的课程推荐方法及系统 | |
CN113343665A (zh) | 基于方面级细粒度的商品评论情感分析方法和系统 | |
CN115221310B (zh) | 一种基于知识图谱的开源应用自动化推荐方法及装置 | |
TW201502812A (zh) | 文本摘要編輯系統、文本摘要評量系統及其方法 | |
CN112632232B (zh) | 一种文本匹配方法、装置、设备及介质 | |
CN115098619A (zh) | 资讯去重方法、装置、电子设备及计算机可读取存储介质 | |
CN115203206A (zh) | 数据内容搜索方法、装置、计算机设备及可读存储介质 | |
CN113869058A (zh) | 基于lc-gcn方面级情感分析方法、系统、存储介质和电子设备 | |
CN113435213A (zh) | 针对用户问题和知识库返回答案的方法和装置 | |
Shawon et al. | Web links prediction and category-wise recommendation based on browser history | |
Abbasi et al. | Autonomous schema markups based on intelligent computing for search engine optimization |
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 |