首页> 中国专利> 一种基于群体评论的开源软件推荐方法

一种基于群体评论的开源软件推荐方法

摘要

一种能够基于群体评论对开发者正在开发的软件项目进行有效的组合软件推荐方法,包括获取开源数据,对所述项目和评论文档标签进行预处理;提取用户本地项目特征,利用评论文档标签、标题和项目名称、标签,对项目和评论文档进行匹配;计算本地项目与采集的开源项目的相似性和相关性;对相关性和相似性进行线性加权求和,为用户生成项目推荐列表。本发明可以与开发者的软件开发环境集成,提高开发者对互联网范围内相关软件的检索效率,并从推荐的软件项目获得技术支持或者实现软件重用。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-12

    授权

    授权

  • 2016-04-13

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20150921

    实质审查的生效

  • 2016-03-09

    公开

    公开

说明书

技术领域

本发明涉及一种开源软件项目自动化推荐的方法,尤其涉及在互联网 开源社区中存在大量开源软件项目的条件下,一种能够基于群体评论对开 发者正在开发的软件项目进行有效的组合软件推荐方法。

背景技术

随着计算机技术的快速发展和革新,尤其是互联网技术的兴起,软件 已经渗入人们购物、交流、学习、生活等各个方面。2011年,著名风险投 资人以及网景创始人托马斯.舒尔茨发表文章称“软件正在吞噬整个世 界”。实际上,在此过程中开源软件扮演着关键角色,其以丰富开放的软 件资源、开发者资源以及知识资源被越来越多的软件企业及个人所依赖。 以Google为代表的大型互联网公司积极参与、引导并借鉴开源资源推导项 目发展,而一些中小型企业则依赖和复用开源模块实现高质量的软件开发 和发布。充分、高效的利用开源软件资源已经成为互联网软件企业持续保 持竞争力的关键因素。

开源软件迅速发展,一方面为开发者提供了大量可复用资源,缩短了 软件开发过程中的开发时间和成本,给软件开发者带来了极大的便利;另 一方面,开源软件规模巨大,数量高速增长且分布广泛,同时还在不断演 化。面对海量的软件资源,用户很难从中快速准确检索到自己真正需要的 软件资源,对开源软件资源的利用效率反而下降,这就是所谓的信息过载。 目前,针对这个问题的办法之一就是以搜索引擎为代表的信息检索系统, 比如Google、Baidu等,它们在帮助用户获取信息方面发挥着极其重要的 作用。但使用搜索引擎的不同用户在使用同一个关键词检索时,得到结果 是相同的,而用户需求却是多元化和个性化的,通过以搜索引擎为代表的信 息检索系统获得的结果不能满足用户的个性化需求,无法很好的解决软件 资源信息过载的问题。因此,开源生态系统急需一种新型技术来解决开源 软件资源的快速定位问题。

发明内容

本发明要解决的技术问题是:针对现有互联网软件信息检索技术的不 足,提出一种基于互联网开源社区中群体评论的开源软件自动推荐方法。 该方法将分布在互联网软件社区各类软件资源有效集成,通过对大规模开 发者群体和用户群体对开源资源的评论进行深度分析和挖掘,为开发者推 荐最相关的开源资源,使软件开发人员能够快速利用更大范围的相关软件 信息和资源进行高效开发。

本发明的技术方案包括以下步骤:

步骤101、建立开源软件数据服务器SDS(SoftwareDataServer),采 用通用的Web爬虫技术从互联网的主要开源社区中采集开源软件资源信息 数据,包括开源软件项目数据和评论文档数据,所述项目数据包括开源软 件的项目名称、项目标签、项目主页,评论文档数据包括文档标题和文档 标签。

步骤102、获取用户本地开发项目p的特征,主要包括本地项目名称和 本地项目标签,并提取SDS中已采集获得的项目名称、项目标签和文档标题、 文档标签,对本地开发项目及SDS中采集的项目与评论文档进行关联匹配。

步骤103、计算SDS中每一个项目q与本地开发项目p的标签文本相似性, 标签文本表示为由项目标签组成的单词集合,提取项目p与项目q的项目标 签,并将其表示为由自身标签组成的标签集合Tp和Tq,利用公式 计算项目p与项目q的标签文本相似性。

步骤104、计算SDS中每一个项目q与项目p的相关性,根据步骤102中的 关联匹配结果将项目p和q表示为向量vp和vq,向量的每一维表示与之相关联 的评论文档,向量值表示匹配权重,根据余弦相似性公式: Coop(p,q)=Vp×Vq|Vp|2|Vq|2计算相关性。

步骤105、生成本地开发项目p的推荐列表,并将推荐指数值排在前N 的项目的主页返回给用户,其中推荐指数值的计算是对项目相似性和相关 性进行线性加权,公式表示为:Score(q→p)=w1×TDoc(p,q)+w2×Coop(p,q), 其中,Score表示为项目q对项目p的推荐指数值,w1、w2均取为0.5。

进一步地,步骤101中对所述项目标签和文档标签进行预处理,所述预 处理包括:将项目标签和文档标签转换为其词根后将相同的词根的标签合 并,删除标签数小于3的项目。

进一步地,步骤102中的关联匹配具体步骤包括:

步骤102.1、用项目名称与评论文档进行匹配,以所述项目名称为关键 词查找评论文档,若所述评论文档具有与所述项目名称相同的标签,则为 所述评论文档与项目建立关联,并赋予权值W1

步骤102.2、用项目名称在评论文档标题中进行检索匹配,以项目名称 为关键字搜索所有评论文档,若某个评论文档标题包含该关键字,则将该 评论文档与项目建立关联,并赋予权值W2

步骤102.3、在所有已建立的关联中,对项目标签与评论文档标题进行 匹配,统计评论文档标题中包含项目标签的个数x,利用x计算项目与评论 文档关联权值W4,计算公式为:W3=0.5*log2(x2+1),采用对数运算表明 标签个数x与可信度的关系;

步骤102.4、在所有已建立的关联中,对项目标签与评论文档的标签进 行匹配,统计在两者共同出现的标签个数y,计算权值: W4=0.6*log2(y2+1);

步骤102.5、计算最终关联权重,权重公式表示为: W=W1+W2+(W1+W2)*(W3+W4),选取合适的阀值决定软件项目是否与评论 文档相关联,当权值w大于阈值q时,认为该文档与开源项目是关联的,关 联结果以[软件项目,评论文档,权重]的形式存储在数据库中,软件项目包 括本地开发项目及SDS中采集的项目。

进一步地,步骤104中的根据步骤102中的关联匹配结果将项目p和q表 示为向量vp和vq,向量vp和vq的值根据分别包含项目p和q匹配结果的结果集 中的权重值确定,项目p可表示为vp=(Wp1,Wp2,..,Wpn);项目q可以表示成 vq=(Wq1,Wq2,..,Wqk),Wpn及Wqk分别是结果集中的权重值,n和k均大于 等于1。

采用本发明可以达到以下技术效果:

本发明不仅适用于软件企业内部的集中式软件开发过程,也适用于开 源模式的软件开发过程。本发明根据开源社区中的软件项目的特征,首先 从互联网的开源社区中获取软件项目资源,然后根据资源特点进关联匹配, 并基于该匹配结果计算项目相关性和相似性,实现相关软件推荐。此外, 本方法首次将软件项目推荐机制引入开发环境,能够极大提高件项目的重 用和开发效率。本方法能够从海量软件数据库中定位相关软件项目,并自 动返回给开发者,从而有助于提高软件开发效率和资源重用效率。

附图说明

图1为本发明软件项目推荐方法的流程图;

图2为本发明的实施例涉及的网络节点交互示意图;

具体实施方式

下面结合实施例直观的说明本发明的效果。图1和图2分别是本实施例 的流程图和网络节点交互示意图。本实施例包含本地软件目录服务器SDS、 协同开发社区网站SF和知识分享社区网站SP。其中软件项目P是开发者D正 在本地开发环境(如Eclipse)中实施开发的项目。本发明将从SF中找到与P 最相关的前N个软件项目,并将其项目开发社区的主页列表反馈给开发者D, 该执行过程包括以下步骤:

步骤101、建立一个开源软件数据服务器SDS(SoftwareDataServer)。 采用通用的Web爬虫技术从互联网的主要开源社区中采集开源软件资源信 息数据,包括开源社区中的开源软件项目数据和评论文档数据。所述项目 数据包括开源软件的项目名称、项目标签、项目主页,评论文档数据包括 文档标题和文档标签。对所述的项目标签和文档标签进行预处理,所述预 处理包括:将项目和文档标签转换为其词根后将相同的词根的标签合并, 删除标签数小于3的项目。

利用词根提取技术对项目和帖子的标签进行预处理。例如通过分词、 删除停用词。词根提取,将项目和帖子标签转换为单词包。如Mozilla Firefox在OpenHub上的标签描述信息“cssweb_browserdevelopment clientwebxhtmlgtkhtmltabbledhttpMozillachromejavascript browserxulwwwhtml5”,分词后得到单词包{css、web_browser、 development、client、web、xhtml、gtk、html、tabbled、http、Mozilla、 chrome、javascript、browser、xul、www、html5},词根提取,将一个词 的不同形态转换为其词根,处理后得到{css、web_brows、develop、client、 web、xhtml、gtk、html、tabbled、http、Mozilla、chrome、javasoript、 brows、xul、www、html5}。

步骤102、获取用户本地开发项目p的特征,主要包括本地项目名称和 本地项目标签,并提取SDS中已采集获得的项目名称、项目标签和文档标题、 文档标签,对本地开发项目及SDS中采集的项目与评论文档进行关联匹配。 关联匹配方法可以采用现有的方法,只要最终能达到将本地项目及采集的 开源项目在一定的条件下进行匹配和关联即可。本申请中采用的匹配具体 步骤包括:

步骤102.1、用项目名称与评论文档进行匹配,以所述项目名称为关键 词查找评论文档,若所述评论文档具有与所述项目名称相同的标签,则为 所述评论文档与项目建立关联,并赋予权值w1

以开源软件MySQL为例,匹配过程为:从SDS中查找包含标签“MySQL”(不 区分大小写)的所有评论文档,如果评论文档D包含标签“MySQL”,则建立项 目MySQL与评论文档D的关联,并将这次的关联赋予权值W1(在实际的计算中, 取W1=1)。

步骤102.2、用项目名称在评论文档标题中进行检索匹配,以项目名称 为关键字搜索所有评论文档,若某个评论文档标题包含该关键字,则将该 评论文档与项目建立关联,并赋予权值W2,在实际的计算中,取W2=0.8。

步骤102.3、在所有已建立的关联中,对项目标签与评论文档标题进行 匹配,统计评论文档标题中包含项目标签的个数x,利用x计算项目与评论 文档关联权值W3,计算公式为:W3=0.5*log2(x2+1),采用对数运算表明 标签个数x与可信度的关系。

例如项目MySQL有标签“database”、“mysql”、“server”,某一个评论文 档S标题为“Howtotransfermysqldatatocassandradatabase?”,则文 档标题中包含项目标签数为2(“mysql”和“database”),项目MySQL与评论文 档D的关联权重为:W3=0.5*log5。

步骤102.4、在所有已建立的关联中,对项目标签与评论文档的标签进 行匹配,统计在两者共同出现的标签个数y,计算权值: W4=0.6*log2(y2+1)。同样以项目MySQL和评论文档D为例,文档D有标签 “database”、“cassandra”、“nosql”,项目MySQL和文档D的共同标签数y=1(标 签“database”),计算出的匹配权重为W4=0.6*log22。

步骤102.5、计算最终匹配权重。步骤102.1到步骤102.4对开源软件和 评论文档的4种不同数据进行了匹配,并为每一步的关联结果赋予了相应的 权值,这4步匹配结束后,计算最终的权值,权重公式表示为: W=W1+W2+(W1+W2)*(W3+W4)。选取合适的阀值决定开源软件是否与评论 文档相关联。当关联的权值w大于阈值q时,认为该文档与开源项目是关联 的。在实际的计算中,q值取1.3。关联结果以[软件项目,评论文档,权重] 的形式存储在数据库中,完成关联,此处的软件项目包括本地开发项目及 SDS中采集的项目。

步骤103、计算SDS中每一个项目q与本地开发项目p的标签文本相似性, 标签文本表示为由项目标签组成的单词集合,提取项目p与项目q的项目标 签,并将其表示为由自身标签组成的标签集合Tp和Tq,利用公式 计算项目p与项目q的标签文本相似性。

计算SDS中每一个项目q与p的相似性。提取SDS中任意项目q(这里的提 取操作仅简单的遍历),计算项目q与项目p的相似性。例如用户本地项目p的 标签单词包为{clinet、http、web_brows、gecko、html、sugar、web、pyhton、 gtk、css、javascript、xul},项目q即为MozillaFirefox,项目p与项目q 的相似性计算Tp∩Tq为{css、web_brows、client、 web、gtk、gtk、javascript、xul};Tq∪Tp为{css、web_brows、client、 web、gtk、javascript、xul、develop、xhtml、tabbled、Mozilla、chrome、 brows、www、html5、gecko、sugar、Python};项目p与项目q的相似值为 TDoc(p,q)=818.

步骤104、计算SDS中每一个项目q与项目p的相关性,根据步骤102中的 关联匹配结果将项目p和q表示为向量vp和vq,向量的每一维表示与之相关联 的评论文档,向量值表示匹配权重,根据余弦相似性公式: Coop(p,q)=Vp×Vq|Vp|2|Vq|2计算相关性。

相关性呈现为软件之间的组合或依赖关系,例如Spring与Mybatis表现 为组合关系;Nutch依赖Lucene的文本索引与搜索。

例如,在计算SDS中每一个项目q与p的相关性时,提取匹配结果(匹配 结果以[开源软件,评论文档,权重]形式呈现)将匹配结果表示成向量模式, 例如,经过匹配,包含项目p的匹配结果中有结果集{[项目p,评论文档D1, W11]、[项目p,评论文档D2,W12]、[项目p,评论文档D4,W14]、[项目p, 评论文档D6,W16]},包含项目q的结果集中有{[项目q,评论文档D2,W22]、 [项目q,评论文档D3,W23]、[项目q,评论文档D5,W25]、[项目q,评论文 档D6,W26]},将匹配结果集转换为向量模式后,项目p可以表示成Vp=(W11, W12,0,W14,0,W16);项目q可以表示成Vq=(0,W22,W23,0,W25,W26),然后根据 余弦相似性公式:计算项目p和项目q的相关性,则项 目p与项目q的相关性:

Coop(p,q)=W12*W22+W16*W26W112+W122+W142+W162W222+W232+W252+W262

步骤105、生成本地开发项目p的推荐列表,并将推荐指数值排在前N 的项目的主页返回给用户,其中推荐指数值的计算是对项目相似性和相关 性进行线性加权,公式表示为:Score(q→p)=w1×TDoc(p,q)+w2×Coop(p,q), 其中,Score表示为项目q对项目p的推荐指数值,w1、w2均取为0.5。

步骤201:利用web爬虫技术(例如WebMagic)从协同开发社区(Openhub、 GitHub等)中获取项目数据信息,同时获取用户本地开发项目数据信息。 对项目数据进行预处理,并存入SDS中。

步骤202:利用web爬虫技术从知识分享社区(stackoverflow等)中获 取评论文档数据信息。对评论文档数据进行预处理,并存入SDS。

步骤203:提取项目名称、项目标签和评论文档标题、文档标签,对项 目和评论文档进行关联匹配,完成数据关联。

步骤204:从SDS中获取项目、评论文档、用户本地项目和关联匹配信 息,经过推荐引擎为本地用户D生成推荐项目列表。

步骤205:将推荐结果反馈给用户。

以上实施例可以反映出本发明能够在互联网范围为软件开发人员提供 与其开发的软件项目具有相似功能或技术特征的软件项目。由于开源社区 通常能够提供来自多个开源社区的软件资源信息(如OpenHub收录了近66万 个开源项目的主页,stackoverflow收录了710万评论文档资源信息),因此 多个开源目录站点能够一定程度上反映互联网范围的开源软件信息。同时, 基于资源匹配及软件特征匹配能够较为精确的找到相关软件项目,可以有 效避免关键字搜索过程出现的不准确和搜索结果冗余的情况。此外,由于 本发明与开发者的软件开发环境集成,能够提高开发者对互联网范围内相 关软件的检索效率,并从推荐的软件项目获得技术支持或者实现软件重用。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限 制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人 员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离 本发明技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号