基于GitHub软件仓库数据集的开源项目个性化检索推荐方法与流程

文档序号:24403806发布日期:2021-03-26 16:10阅读:108来源:国知局
基于GitHub软件仓库数据集的开源项目个性化检索推荐方法与流程
基于github软件仓库数据集的开源项目个性化检索推荐方法
技术领域
1.本发明属于开源项目检索个性化推荐技术领域,具体涉及一种基于github软件仓库数据集的开源项目个性化检索推荐方法、电子设备及可读存储介质。


背景技术:

2.bert是由google发布的一种预训练语言表示的方法,它在一个大型文本语料库上训练一个通用的语言理解模型,然后使用该模型执行下游nlp任务,比如回答问题、情绪判断等。相比于之前word2vec或是elmo的方法,它是第一个用于预训练nlp的无监督、深度双向系统,所以在下游的nlp任务上,bert的效果要远远由于以往的方法。实验证明,bert在11项自然语言理解任务上刷新了最好指标。
3.milvus是一款开源向量相似度搜索引擎,建立在faiss、nmslib、annoy等向量索引库基础之上,具有功能强大、稳定可靠以及易于使用等特点。milvus集成了这些向量索引库,对外提供了一套简单而一致的api。除了提供针对向量的近实时搜索能力外,milvus可以对标量数据进行过滤。随着数据和查询规模的增加,milvus还提供了集群分片的解决方案,支持读写分离、水平扩展、动态扩容等功能,实现了对于超大数据规模的支持。
4.github是个面向开源及私有软件项目的托管平台,除了git代码仓库托管及基本的web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(gist)等功能。目前,其注册用户已经超过350万,开源软件项目的资源也非常多。由此,许多开发者都会选择在github上搜索可以学习借鉴或是使用的软件项目资源。
5.github目前提供的项目仓库检索功能是基于普通的文本匹配和项目流行度来进行搜索推荐。随着开源软件项目资源的增多,使用这种传统检索方法,很难在较短时间内让开发人员轻松地搜索到优质的开源软件。


技术实现要素:

6.本发明的目的是提供一种基于github软件仓库数据集的开源项目个性化检索推荐方法、电子设备及可读存储介质,对于开源软件项目本身进行质量评估,从而提升搜索结果的质量,提升搜索项目的可参考性。
7.为达到上述目的,本发明提供一种基于github软件仓库数据集的开源项目个性化检索推荐方法,包括:
8.对github活动数据集进行预处理,形成“标题

描述

url”数据集和“标题

star

watch

fork”数据集;
9.基于milvus搜索引擎结合bert预处理模型搭建关键字搜素引擎,并将“标题

描述

url”数据集作为搜索数据源;
10.接收用户输入的查询关键字,使用所述关键字搜索引擎进行软件资源检索定位,获得开源项目候选集;
11.根据所述“标题

star

watch

fork”数据集对所述开源项目候选集中各个候选项
目进行质量评分;
12.根据质量评分结果,将top

n的候选项目推荐给用户。
13.进一步的,在上述基于github软件仓库数据集的开源项目个性化检索推荐方法中,所述根据所述“标题

star

watch

fork”数据集对所述开源项目候选集中各个候选项目进行质量评分,包括:
14.针对每一候选项目,从所述“标题

star

watch

fork”数据集中获取该候选项目的star、watch、fork数量并进行归一化处理,再使用线性组合方法对该候选项目的质量进行计算,得到质量评分。
15.进一步的,在上述基于github软件仓库数据集的开源项目个性化检索推荐方法中,采用如下公式对候选项目的质量进行计算:
16.pq(i)=nor(nor(watch(i))+nor(fork(i))+nor(star(i))),
17.其中,pq(i)表示候选项目i的质量评分,watch(i)、star(i)、fork(i)分别表示候选项目i的watch、star、fork数量,nor(x)表示对参数x进行归一化处理。
18.进一步的,在上述基于github软件仓库数据集的开源项目个性化检索推荐方法中,所述方法还包括:
19.获取用户在github开源社区中的活动数据;
20.根据所述活动数据,使用textrank算法构建用户近期关注倾向词汇库;
21.基于bert预处理模型,对所述开源项目候选集中各个候选项目与所述词汇库进行语义相似度评价,获得各个候选项目与用户的关联程度评分。
22.进一步的,在上述基于github软件仓库数据集的开源项目个性化检索推荐方法中,所述根据质量评分结果,将top

n的候选项目推荐给用户,包括:
23.根据所述质量评分结果和所述关联程度评分结果,使用线性组合方法计算最终评分,将最终评分结果中top

n的候选项目推荐给用户。
24.进一步的,在上述基于github软件仓库数据集的开源项目个性化检索推荐方法中,采用如下公式计算最终评分:
25.value(i)=α
×
nor(sm(i))+β
×
nor(pq(i));
26.式中,value(i)表示候选项目i的最终评分,sm(i)表示候选项目i与用户的关联程度评分,pq(i)表示候选项目i的质量评分,α、β表示权重值,nor(x)表示对参数x进行归一化处理。
27.进一步的,在上述基于github软件仓库数据集的开源项目个性化检索推荐方法中,所述方法还包括:
28.提供github oauth第三方登录页面,以连接到用户的github账号,用于获取用户在github开源社区中的活动数据。
29.进一步的,在上述基于github软件仓库数据集的开源项目个性化检索推荐方法中,所述将top

n的候选项目推荐给用户,包括:
30.将top

n的候选项目以“标题

描述”的形式推荐给用户,并提供对应的url以便于直接跳转到相应的候选项目。
31.基于同一发明构思,本发明还提供一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现上文任一项所述的基
于github软件仓库数据集的开源项目个性化检索推荐方法。
32.基于同一发明构思,本发明还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上文任一项所述的基于github软件仓库数据集的开源项目个性化检索推荐方法。
33.本发明提供一种基于github数据集的个性化搜索推荐方法、电子设备及可读存储介质,提升github开源托管平台中软件资源发现效率,本发明具有如下优点:
34.(1)通过利用bert预训练模型,提升语义相似度判断,可以有效提升候选集搜索的准确程度;
35.(2)结合软件仓库本身和用户关注项目的信息,以及项目本身质量的评判,进一步提升了目标软件定位的准确性;
36.(3)实现与用户自身已有github账号的绑定链接,以及搜索结果可直接跳转github的功能,有效增加用户使用的友好程度。
附图说明
37.图1是本发明一实施例提供的一种基于github软件仓库数据集的开源项目个性化检索推荐方法的流程图;
38.图2本发明一示例提供的实施流程图;
39.图3本发明一示例提供的系统架构图。
具体实施方式
40.以下结合附图1~3和具体实施方式对本发明提供的基于github软件仓库数据集的开源项目个性化检索推荐方法、电子设备及可读存储介质作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需要说明的是,附图采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施方式的目的。为了使本发明的目的、特征和优点能够更加明显易懂,请参阅附图。须知,本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
41.如图1所示,本发明提供的一种基于github软件仓库数据集的开源项目个性化检索推荐方法包括如下步骤:
42.步骤s100,对github活动数据集进行预处理,形成“标题

描述

url”数据集和“标题

star

watch

fork”数据集。
43.具体的,从ghtorrent上下载公开的github活动数据集,然后对数据集进行预处理,形成“标题

描述

url”、“标题

star

watch

fork”数据集。
44.步骤s200,基于milvus搜索引擎结合bert预处理模型搭建关键字搜素引擎,并将“标题

描述

url”数据集作为搜索数据源。
45.步骤s300,接收用户输入的查询关键字,使用所述关键字搜索引擎进行软件资源检索定位,获得开源项目候选集。
46.即,所述关键字搜索引擎在“标题

描述

url”数据集中搜索,查找与所述关键字相匹配的软件资源,获得开源项目候选集。
47.步骤s400,根据所述“标题

star

watch

fork”数据集对所述开源项目候选集中各个候选项目进行质量评分。
48.具体的,针对每一候选项目,从所述“标题

star

watch

fork”数据集中获取该候选项目的star、watch、fork数量并进行归一化处理,再使用线性组合方法对该候选项目的质量进行计算,得到质量评分。
49.可以采用如下公式对候选项目的质量进行计算:
50.pq(i)=nor(nor(watch(i))+nor(fork(i))+nor(star(i))),
51.其中,pq(i)表示候选项目i的质量评分,watch(i)、star(i)、fork(i)分别表示候选项目i的watch、star、fork数量,nor(x)表示对参数x进行归一化处理。
52.步骤s500,根据质量评分结果,将top

n的候选项目推荐给用户。
53.即,可以将质量评分排名靠前的若干个候选项目推荐给用户。具体的,将top

n的候选项目以“标题

描述”的形式推荐给用户,并提供对应的url以便于直接跳转到相应的候选项目。
54.由以上可见,本发明基于milvus搜索引擎,结合bert预处理模型,针对github开源软件仓库数据集,提供一种高性能的开源项目个性化搜索推荐方法,提升github平台中软件资源发现于定位的效率,利用开源项目的社区信息来判断项目质量,提升搜索结果的质量。
55.进一步的,本发明提供的一种基于github软件仓库数据集的开源项目个性化检索推荐方法还包括:对所述开源项目候选集中各个候选项目与用户的关联程度进行评分,从而根据各个候选项目自身的质量评分以及与用户的关联程度评分,来推荐候选项目给用户,实现针对用户的个性化搜索推荐,提高搜索项目的个性化程度和可参考性。
56.具体的,对所述开源项目候选集中各个候选项目与用户的关联程度进行评分,包括如下步骤:
57.获取用户在github开源社区中的活动数据;
58.根据所述活动数据,使用textrank算法构建用户近期关注倾向词汇库;
59.基于bert预处理模型,对所述开源项目候选集中各个候选项目与所述词汇库进行语义相似度评价,获得各个候选项目与用户的关联程度评分。
60.活动数据包括特定时间内(例如一年内)用户star(标星号)的项目、用户自身repositories(收藏)的项目等。对于这些活动数据中项目的名称和描述信息,使用textrank算法可构建用户近期关注倾向词汇库。然后,基于bert预处理模型对该词汇库和候选集中每一候选项目的描述信息进行词向量转换,完成语义相似度评价,并以此作为候选集中每一候选项目与用户的关联程度评分。
61.相应的,步骤s500所述根据质量评分结果,将top

n的候选项目推荐给用户,具体包括:
62.根据所述质量评分结果和所述关联程度评分结果,使用线性组合方法计算最终评分,将最终评分结果中top

n的候选项目推荐给用户。
63.具体的,可采用如下公式计算最终评分:
64.value(i)=α
×
nor(sm(i))+β
×
nor(pq(i));
65.式中,value(i)表示候选项目i的最终评分,sm(i)表示候选项目i与用户的关联程度评分,pq(i)表示候选项目i的质量评分,α、β表示权重值,nor(x)表示对参数x进行归一化处理。
66.进一步的,还可以提供github oauth第三方登录页面,以连接到用户的github账号,如此可通过调用github api,获取用户在github开源社区中的活动数据。
67.由以上可知,本发明提供一种构建“用户近期关注词汇库”的方法,即根据用户过去在github平台上的行为,对过去特定时间内所关注的开源项目和仓库进行特征提取,构造该用户的近期关注词汇库,对搜索出的候选集与之进行比较,提升最终推荐结果的个性化程度和准确度。
68.请参考图2、3,下面通过一个具体示例对本发明提供的一种基于github软件仓库数据集的开源项目个性化检索推荐方法进行介绍。
69.s101、数据收集及预处理:从ghtorrent上下载github所有活动数据集,整理成“标题

描述

url”和“标题

star

watch

fork”数据集。
70.s102、搭建搜索引擎:基于milvus结合bert构建关键字搜索引擎,并导入s101中的“标题

描述

url”数据集,作为数据源。
71.s103、获取github授权:github oauth第三方登录授权,跳转到github,用户登录github并同意授权,系统获得授权码并请求获得令牌,获得令牌后即可向github获取用户数据。
72.s104、候选集搜索:用户在输入搜索关键字,s102搭建的关键字搜索引擎进行软件资源检索定位,获得候选集。
73.s105、候选集质量评分:根据候选集查询“标题

star

watch

fork”数据集,并归一化处理各候选项目在github平台的star、watch、forks数,归一化公式如下:nor(x)=x/max;
74.归一化的过程就是将每个特征值与该特征最大值相比,通过归一化,使得各个特征在相同的数量级下进行操作,便于参数调节。最后,为了量化度量每一候选项目的质量,通过如下公式对候选项目质量进行计算:
75.pq(i)=nor(nor(watch(i))+nor(fork(i))+nor(star(i))),
76.其中,pq(i)表示候选项目i的质量评分,watch(i)、star(i)、fork(i)分别表示候选项目i的watch、star、fork数量。
77.s106、候选集与用户关联程度评分:首先,调用github api,获取用户在开源社区中的活动数据,包括:一年内star项目的名称和描述信息、用户自身repositories的名称和描述信息。随后,对于这些数据,使用textrank来构建用户近期关注词汇库。然后,基于bert完成语义相似度评价,即获得候选集在每一候选项目与与用户的关联程度评分。
78.s107、候选集推荐排序及展示:候选集的排序由两个指标构成,一个是s105获得的候选项目质量评分,另一个是s106获得的候选项目与用户近期关注词汇库的相似程度评分。对于s105和s106获得的量化数据,使用线性组合的方式,手动调参获得最终评分,公式如下:
79.value(i)=α
×
nor(sm(i))+β
×
nor(pq(i)),
80.其中sm(i)表示候选项目和用户近期关注词汇库的相关联程度评分,pq(i)表示候选项目的质量评分。根据最终所得value的值,将top

n的候选项目推荐给用户。
81.综上可知,本示例通过构建用户近期关注词汇库来提升搜索推荐候选集的个性化程度,利用开源项目的社区信息来判断项目质量,最终可以提升搜索结果的可信度。
82.基于同一发明构思,本发明还提供一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上文所述的基于github软件仓库数据集的开源项目个性化检索推荐方法。
83.所述处理器在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器(例如gpu(graphics processing unit

图形处理器))、或其他数据处理芯片。该处理器通常用于控制所述电子设备的总体操作。本实施例中,所述处理器用于运行所述存储器中存储的程序代码或者处理数据,例如运行基于github软件仓库数据集的开源项目个性化检索推荐方法的程序代码。
84.所述存储器至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器可以是所述电子设备的内部存储单元,例如该电子设备的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmedia card,smc),安全数字(secure digital,sd)卡,闪存卡(flashcard)等。当然,所述存储器还可以既包括所述电子设备的内部存储单元也包括其外部存储设备。本实施例中,所述存储器通常用于存储安装于所述电子设备的操作方法和各类应用软件,例如基于github软件仓库数据集的开源项目个性化检索推荐方法的程序代码等。此外,所述存储器还可以用于暂时地存储已经输出或者将要输出的各类数据。
85.基于同一发明构思,本实施例还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述的基于github软件仓库数据集的开源项目个性化检索推荐方法。
86.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
87.尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1