[发明专利]基于动态网络图挖掘的Github开源代码库推荐系统有效
申请号: | 201711392111.1 | 申请日: | 2017-12-21 |
公开(公告)号: | CN108073710B | 公开(公告)日: | 2022-04-01 |
发明(设计)人: | 刘瀚诚;朱彤 | 申请(专利权)人: | 儒安物联科技集团有限公司 |
主分类号: | G06F16/9535 | 分类号: | G06F16/9535;G06Q50/00 |
代理公司: | 无锡市大为专利商标事务所(普通合伙) 32104 | 代理人: | 曹祖良;屠志力 |
地址: | 201800 上海市嘉*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 动态 网络图 挖掘 github 源代码 推荐 系统 | ||
1.一种基于动态网络图挖掘的Github开源代码库推荐系统,其特征在于,包括:
任务调度模块、演示网站中的用户交互页面、推荐算法模块、日志管理模块、以及数据库;
任务调度模块负责控制推荐算法模块的推荐结果更新和至少部分数据爬虫的运行;
日志管理模块从多方获取数据信息,并向其他模块开放查询接口;
推荐算法模块则根据相关数据计算推荐列表;相关数据将根据不同需要存储在不同类型的数据库,包括文档式数据库、图数据库和内存数据库三种数据库;
图数据库中主要实体包括用户、代码库、编程语言、排名四项,用户的行为包括:创建代码库、成为代码库的成员,贡献代码、提问、收藏、复制、关注其他用户;
以不同时间粒度为基准,代码库拥有多种形式的排名,以创建于属性标注排名产生时间;此外,开发者使用一种或多种编程语言编写代码库,语言名称以语言名称属性描述;对于用户,图数据库存储其编号、头像地址、邮箱、用户名与登录用户名;对于代码库,存储其编号、代码库名称、收藏人数、关注人数与复制代码库数量;
在文档式数据库和内存数据库中缓存推荐列表;
日志管理模块的主要目的是存储用户的行为日志以供推荐算法进行挖掘;这一目的是通过自动化的数据爬取和记录网站与用户的交互行为两种方式实现的;日志管理模块中实现了以下数据爬虫:
第一数据爬虫:基于wget远程数据请求指令与py2neo的Github Archive平台数据爬虫;该爬虫定时从Github Archive数据平台抓取存储的用户行为日志,将其转换为图数据库格式的数据条目,存储至图数据库中;
第二数据爬虫:基于scrapy的热门代码库定时信息更新程序;该程序使用Github数据接口爬取数据,按照收藏人数排名对收藏人数高于设定值的代码库的信息在图数据库中进行更新,对不存在的代码库在图数据库中予以创建;
第三数据爬虫:基于scrapy的用户信息爬取程序;该程序在用户许可的权限内,抓取用户的基本信息以及用户所收藏的代码库和所关注的其他用户,以此建立用户的个人喜好档案,为推荐算法提供便利;
第四数据爬虫:基于scrapy的代码库信息爬取程序,该程序抓取所有收藏了指定代码库的用户列表并保存至图数据库中;
第五数据爬虫:基于scrapy的代码库信息爬取程序,程序抓取指定代码库的详细信息并据此更新图数据库;
第一数据爬虫和第二数据爬虫根据任务调度模块所设计的规则执行,而第三、四、五数据爬虫则是通过用户的交互式行为触发的;
触发第三、四、五数据爬虫的规则如下:
1)当用户使用Github账户登录时,系统将在获得用户授权后,调用第三数据爬虫获取来自Github的用户的个人喜好档案;
2)当用户访问代码库详情时,系统将调用第四数据爬虫和第五数据爬虫更新代码库信息;
推荐算法模块中,
包括离线设置的PersonalRank算法:
对Github用户针对代码库所执行的各项行为记录进行量化;将收藏、提问、复制、贡献代码与合作这些行为定义成五个不同级别,分别赋予相应的分数;然后建立行为与事件之间的对应关系;
利用上述分数计算PersonalRank算法中的跳转概率矩阵,最终计算得出的代码库对于每个用户的评分结果缓存在文档式数据库中;对评分结果进行排序,选取评分最高的一个或一组形成推荐列表,作为最终的推荐结果向用户进行推荐;
包括基于社交网络的关联推荐算法:将开发者对代码库产生兴趣的两种行为模式转换为推荐算法,转换为以下两种模式:
1)收藏了当前代码库的用户也关注了其他哪些关联的代码库;
2)所关心的用户关注了哪些代码库;
即以这两种模式构造了语义等价的两个推荐算法;在算法的实现上倚仗图数据库所提供的子图匹配查询,以图模式进行查询并进行相关聚集、评分与排序;评分为所有与关联代码库有关的关注行为的评分总和;对评分结果进行排序,选取评分最高的一个或一组形成推荐列表,作为最终的推荐结果向用户进行推荐;
包括基于排名的推荐算法;基于排名的推荐算法分为两部分,
第一部分是时段排名,在行为评分基础上,对代码库在一定时段内的所有行为进行加和并按从大到小顺序排序;此部分的排名是离线的;
第二部分是综合排名,使用了代码库收藏数目作为排序基准,此部分的排名是在线的;
在排序基础上形成推荐列表;
最后进行组合算法:对推荐算法进行组合,用高覆盖率的推荐算法接续低覆盖率的推荐算法,确保推荐列表不会发生中断。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于儒安物联科技集团有限公司,未经儒安物联科技集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711392111.1/1.html,转载请声明来源钻瓜专利网。