一种跨社区开源资源匹配关联方法_2

文档序号:9631558阅读:来源:国知局
0024]图1为本发明面向开源软件跨社区匹配关联方法的流程图;
[0025]图2为本发明开源软件跨社区匹配方法的实施例涉及的网络节点交互示意图;
【具体实施方式】
[0026]对于开源项目托管网站和开源社区网站各自维护一个数据采集站点列表。由通用的Web爬虫从两个站点列表中定期爬取开源软件数据和在线文档数据,分别存入开源软件数据服务器SDS和在线文档数据服务器DDS。
[0027]步骤101、在获取开源软件信息时,采用通用的Web爬虫技术从互联网的主要开源项目托管社区中采集开源软件的项目数据。采集包括开源软件的基本属性的项目数据,所述基本属性包括项目名称、项目描述、开发语言、创建时间、爬取时间、项目标签、项目源地址。由于一个开源软件可能含有多个标签,因此软件标签以[项目id,标签1]、[项目id,标签2]的格式单独存储在标签表中。开源软件的其他属性存储在开源软件表中。
[0028]步骤102、从各个知识分享社区获取在线文档信息。与步骤1类似,获取在线文档信息时,同样采用通用的Web爬虫从互联网主要的知识分享社区中采集开源软件相关的含博客、论坛讨论帖、新闻等在内的在线文档信息数据。所述在线文档信息数据包括文档标题、文档内容及文档基本属性,所述文档基本属性包括文档标签、文档发布时间、文档源地址。所述文档标签以[文档id,标签]的格式追加存储在标签表中,所述文档标题、文档内容和其他文档基本属性存储在文档表中。其中服务器根据设定的时间间隔定期从爬取列表中采集最新的文档数据。
[0029]步骤103、采用开源的全文检索工具Lucene为采集到的在线文档数据的标题、内容和开源软件的名称建立文件索引,以在进行关联匹配和检索时加快处理速度。
[0030]步骤104、用开源软件的项目名称与在线文档的文档标签进行匹配,其中以所述项目名称为关键词在数据库存储的标签表中查找在线文档,若所述在线文档具有与所述项目名称相同的标签,则为所述在线文档与所述开源软件建立关联,并赋予权值Wl,表示以项目名称和文档标签为度量时,所述在线文档针对所述开源软件的关联程度。
[0031]以开源软件Hadoop为例,匹配的过程为:从数据库存储的标签表中查找所有标签为“Hadoop” (不区分大小写)的社区文档,若文档D有“Hadoop”标签,则为该文档D与开源软件Hadoop建立关联,并将这次关联赋予权值Wi (在实际的计算中,取1)。
[0032]步骤105、用开源软件的项目名称在在线文档标题中进行检索,其中,以项目名称为关键词,从步骤3中建立的文件索引中搜索在线文档标题,若文档标题中含有项目名称,则为该文档与项目建立关联,并将这次关联赋予权值《2,表示以项目名称和文档标题为度量时,所述在线文档针对所述开源软件的关联程度。在实际的计算中,取w2= 0.8。
[0033]步骤106、在所有已建立的关联中,对开源软件的项目标签统计包含在在线文档标题中的项目标签个数X,计算权值w3= 0.5*log 2 (X2+l),其表示以项目标签在文档标题中的出现次数作为该项目与在线文档关联程度的度量,通过权值的计算判断关联结果的可信度。
[0034]由于匹配到的标签个数与关联结果的可信度不是呈线性关系,因此采用对数运算表明标签个数X与可信度的关系。系数0.5是为了控制w3的取值范围。根据数据分析,X的值一般不会超过2,但可能存在少量数据(文档标题特别长或软件标签很多的情况),其X的值可能很大,为了控制W3的取值范围,避免在计算最终的权值w时,因X较大使w结果很大,这样会降低结果的准确度。
[0035]例如,开源软件Hadoop的标签有1?&(*6”、“」&抑”和“大数据”,某一个讨论帖0的标题为:“基于Java的大数据处理工具”,则帖子D中含有的Hadoop标签数量为2 ( “ java”和“大数据”),计算出的w3= 0.5*log25。
[0036]步骤107、在所有已建立的关联中,对关联的开源软件的项目标签与在线文档的文档标签进行匹配,统计在两者中都出现的标签个数1,计算权值
[0037]w4= 0.6*log2(y2+l),其表示以项目标签和文档标签中相同的标签个数作为度量,通过权值的计算判断关联结果的可信度。
[0038]与步骤106中的公式原理类似,《4的计算公式是基于匹配到的标签个数y与关联结果可信度的非线性关系。系数0.6同样是为了控制《4的取值范围,且相对《3而言,开源软件标签与在线文档标签匹配的个数y比X对关联结果的可信度贡献更高,即,如果开源软件与在线文档的标签有交集,相比于在线文档标题中含开源软件的标签,前者更可能是互相关联的。因此w4的系数取值为0.6。
[0039]同样以Hadoop和帖子D为例,帖子D的标签有“ Java”、“分布式”、“Mapreduce”,开源软件Hadoop的标签有“Apache”、“ java”和“大数据”,则Hadoop和D共同的标签个数y为1,计算出的权值为w4= 0.6*log 23o
[0040]步骤108、计算最终权值
[0041]w = W!+W2+ (w!+w2) * (w3+w4),当关联的权值w大于阈值q时,认为该在线文档与开源软件是关联的,关联结果以[开源软件,在线文档,权重]的结果存储在数据库中,完成跨社区关联。
[0042]步骤104到步骤107对开源软件和在线文档的4种不同数据进行了匹配,并为每一步的关联结果赋予了相应的权值,这4步匹配结束后,计算最终的权值。
[0043]w的计算依据是,由于步骤104和步骤105的匹配过程在决定开源软件与在线文档是否关联上有很重要的作用,只有在步骤104或者步骤105中匹配到的(WlSw2不为0)才去计算步骤6和步骤7的权重,且用(wAwJ * (w3+w4)表示步骤106和107对最终权值的影响建立在步骤104和步骤105之上。
[0044]在实际的计算中,q值取1.3。根据对数据的分析,认为当开源软件与在线文档关联时,在线文档的标题和标签中,至少有一个含有软件名称(即《1或《2不为0),且软件标签在文档标题中有出现或者软件与文档的标签有交集(即《3或w 4不为0)。因此阈值q的取值应大于1,且q的取值越大,关联结果的准确度越高,但同时召回率越低,即匹配的结果数量越少。通过实验比较,当q取1.3时,关联的结果在保证较高准确率的同时,能召回率也较高。
[0045]关于权值^?w4和阈值q的值,主要采用实验的方式调整和确定。权重和阈值的值是相对的,每个权值代表对每一步匹配的信任度,例如在步骤4中,当在线文档标签中含有软件名时,认为在线文档与该开源软件关联的可能性很高。
[0046]在确定权值之前,首先通过实验分析了每一步关联的可信度。以步骤4为例,对所有在步骤4中建立的关联关系(即在线文档的标签中含有软件项目名称的关联关系),分析其准确率,发现其准确率在90%左右,在阈值确定的情况下,将权值Wl设置为1.0。其他的几个权值确定过程类似,确定各部分的权值和最终权值的计算方式之后,根据分析所有关联的结果和权值确定阈值。
[0047]通过本发明步骤101-108的关联方法,将SDS中的开源软件数据和DDS中的在线文档数据建立关联,关联关系按[开源软件,在线文档,关联权重]的格式单独存储在数据库的关联表中,其中开源软件和在线文档存储的是其在SDS和DDS中的id。例如开源软件Hadoop在数据库中的id为1234,与Hadoop关联的在线文档D的id为5678,关联权值为
1.58,则在数据库中存储的记录为[1234,5678,1.58]。将所有软件的关联关系存储到一张关联表中,便于查询和维护。
[0048]当采集到的数据更新或增加时,仅对变化的数据采用该方法进行关联,更新两组数据的关联关系,并更新数据库中的关联表。
[0049]当用户请求
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1