开源软件主题自动标注方法

文档序号:6363990阅读:561来源:国知局
专利名称:开源软件主题自动标注方法
技术领域
本发明涉及一种开源软件主题自动标注方法,特别是通过构建开源项目标签网络模型来对未知软件自动添加标签的方法。
背景技术
开源软件(OSS)在软件工程领域扮演者越来越重要的角色。在众多开源社区中已有成千上万个开源软件项目,部分巨型社区如sourceforge. net和googlecode含有海量的开源项目。其中含有关于开源项目的多种数据,对帮助软件工程领域的研究有着重大作用。随着开源项目数据的迅速累积,对项目工程师来说迅速找到所需开源项目的问题变得复杂。然而,针对项目概要的文本处理和标注技术能用于应对上述需求,这里的项目概要主要包括项目描述、项目层次化分类和社会化标签等信息。举例来说,现在每个开源项目 都有一段文字描述其功能和技术特征;在sourceforge中有363个软件类别,而freshmeat社区中有6000多个软件标签。这些标签数据在一方面能体现功能或技术特性,从而非常有助于了解某个特定软件;在另一方面,这些标签有效地索引和组织了大量的软件,为方便的浏览和搜索提供了帮助。应该说标签从用户角度反应了开源软件的语义关联,因此有助于构建项目间的内在联系,对组织和理解海量的项目有重要意义。综上,通过挖掘项目文本概述来揭露和构建这种标签信息网络将会对海量项目的挖掘与分析带来很大帮助。潜式狄利克雷分布(Latent Dirichlet Allocation,缩写为LDA)在文本处理和主题挖掘领域被作为统计模型广泛使用。在开源软件领域,LDA被用来发现源代码或漏洞报告的主题演化。S. Kawaguchi和K. Tian等人提出了使用基于LDA的源代码分析方法来对软件进行自动归类。S. ff. Thomas和E. Linseed等人使用主题模型来对软件资源库的主题演化进行建模。然而,这些应用主要关注于挖掘某些特定项目,而不是针对海量的开源软件进行分析。经过几年的发展,LDA模型有了一些变种,其中一种可用于文档标注的变种为带标注的LDA(Labeled LDA)通过将文档中的每个单词关联到合适的标签解决了多标签文档的主题归因问题。在传统LDA模型基础上,该方法将主题映射为已有的标签,以此来获得单词-标签关联关系。这个模型已被用于Yahoo !中多标签文本的分类问题,然而,开源项目的标签过于细化,且项目描述文本相对较短,导致Labeled LDA不适用。本发明将该方法进行了修改,提出一种开源软件标签网络模型。该模型能建立标签、软件和关键词之间的内在联系,从而利用该模型对未知开源软件进行自动标注。

发明内容
本发明提出一种开源软件主题的自动标注方法,其中使用了标签网络模型,该模型构建了标签、软件和关键词之间的内在关系,针对当前LDA模型及其变种的不足,改进并设计了一种LDA模型来建立标签网络,该网络能用于开源软件项目的进一步分析,如利用该网络对软件进行自动标注。本发明的具体技术方案包括以下步骤
步骤I、爬取开源社区,获取开源项目数据,所述项目数据包括开源项目名称、标签和项目描述,对所述项目描述和项目标签进行预处理,所述预处理包括将所述项目标签转换为其词根后将相同词根的标签合并,删除标签数小于预定数目的项目,将项目描述转换为单词包。步骤2、以开源项目的名称、标签和项目描述作为输入,应用带标注LDA模型,通过吉布斯抽样过程对输入数据进行训练,稳定后获得项目描述中某单词所指派的所有标签及计数,生成单词到标签指派,建立单词与标签之间的映射。进一步的,步骤2包括下列步骤
步骤2. I、将LDA模型中的主题个数T设置为输入数据中的标签个数,设置吉布斯抽样的循环次数N。步骤2. 2、初始化每个单词的所属标签,将项目描述中的每个单词的每次出现指派到该项目所具有的其中任意的两个标签。步骤2. 3、使用倒塌的吉布斯抽样(collapsed Gibbs sampling)对每个单词的每次出现的标签进行重新指派,并将该步骤迭代N次,以达到稳定状态。进一步的,步骤2. 3中的所述重新指派满足下列条件每次迭代对每个单词Zi重新指派到某标签k,以使概率公式取最大值p(za = klz^, w, , β) =I- * ——-\
+ β,) Z^=1(n(kf]_} + akf)p(Zi = k|z_Sj β)指在其他单词出现赋予了标签的条件下,某单词t的一次
出现Zi被赋予标签k的条件概率,等式右边第一项表征单词t被指派到标签k的概率,第二项表示Zi所在的文档m含有标签k的概率。步骤2. 4、通过在迭代次数大于N的多次结果中进行抽样,记录稳定状态下每个不同单词的标签指派,根据每个单词的每次出现所赋予的标签,获得某单词被赋予某标签的次数,亦即某标签对应到某单词的次数。步骤3、根据生成的单词到标签指派构建标签网络,并计算其中节点的语义距离和语义内聚度。进一步的,步骤3中所述语义距离的计算满足对于标签网络节点中的两标签节点Ii和Ip设图中所有边的集合为E,直接以Ii和L为两端点的边集合为Eu (如果存在的话),与Ii(Ij)直接相邻的节点集合为Vi(Vj)15则定义Ii和Ij之间的语义距离(semanticdistance) Distance (Ii, Ij)为
… …、Σ^Φ)DiStanceOi, Ij) = --—---7^
ZeeBlj W(e) + EveVlHVj [W(Glijv) +W^eljivJ]其中w(e)是边e的权值,分子是网络中所有边权值总和,这对某个具体的标签网络是固定的,分母中EeeEilWfe)是指集合Ii和L之间所有边的权值,
EvEVjnV|[w(ei.iV) + w(eljAT)]是与Ii和Ij皆直接相邻的节点集合到Ii和Ij的边权值之和,两标签Ii和L的关联越多,关联边的权值越大,则其语义距离越小。
进一步的,步骤3中所述语义内聚度的计算满足对于多个标签节点组成的集合L={11,12,13, . . . In}, L 的语义内聚度 Cohesion (L)定义为
权利要求
1.一种开源软件主题自动标注方法,包括下列步骤 步骤I、爬取开源社区,获取开源项目数据,所述项目数据包括开源项目名称、标签和项目描述,对所述项目描述和项目标签进行预处理,所述预处理包括将所述项目标签转换为其词根后将相同词根的标签合并,删除标签数小于预定数目的项目,将项目描述转换为单词包; 步骤2、以开源项目的名称、标签和项目描述作为输入,应用带标注LDA模型,通过吉布斯抽样过程对输入数据进行训练,稳定后获得项目描述中某单词所指派的所有标签及计数,生成单词到标签指派,建立单词与标签之间的映射; 步骤3、根据生成的单词到标签指派构建标签网络,并计算其中节点的语义距离和语义内聚度; 步骤4、根据构建的标签网络对新项目进行自动标注,输入任意一个项目p的名称及其描述,对描述中每一个词在标签网络中查找,得到描述中每个不同单词i各自的标签集合Li,在每个Li中挑选一个标签li,使语义内聚度Cohesion(L)最大,其中L = {11,12,13,. . . , Ii, . . . , In},将满足条件的标签自动标注到新项目中。
2.如权利要求I所述的方法,其中步骤2进一步包括 步骤2. I、将LDA模型中的主题个数T设置为输入数据中的标签个数,设置吉布斯抽样的循环次数N ; 步骤2. 2、初始化每个单词的所属标签,将项目描述中的每个单词的每次出现指派到该项目所具有的其中任意的两个标签。
步骤2. 3、使用倒塌的吉布斯抽样(collapsed Gibbs sampling)对每个单词的每次出现的标签进行重新指派,并将该步骤迭代N次,以达到稳定状态; 步骤2. 4、通过在迭代次数大于N的多次结果中进行抽样,记录稳定状态下每个不同单词的标签指派,根据每个单词的每次出现所赋予的标签,获得某单词被赋予某标签的次数,亦即某标签对应到某单词的次数。
3.如权利要求2所述的方法,其中步骤2.3中,所述重新指派满足下列条件每次迭代对每个单词Zi重新指派到某标签k,以使概率公式取最大值
4.如权利要求I所述的方法,其中步骤3中所述语义距离的计算满足对于标签网络节点中的两标签节点Ii和Ip设图中所有边的集合为E,直接以Ii和L为两端点的边集合为Em,与Ii (Ij)直接相邻的节点集合为Vi(Vj)15则定义Ii和Ij之间的语义距离(semanticdistance) Distance (Ii, Ij)为
5.如权利要求I所述的方法,其中步骤3中所述语义内聚度的计算满足对于多个标签节点组成的集合L= {11,12,13, ... In}, L的语义内聚度Cohesion(L)定义为
全文摘要
一种开源软件主题自动标注方法,包括获取开源项目数据,将项目标签转换为其词根后将相同词根的标签合并,将项目描述转换为单词包;以开源项目的名称、标签和项目描述作为输入,应用带标注LDA模型,通过吉布斯抽样过程对输入数据进行训练,稳定后获得项目描述中某单词所指派的所有标签及计数,生成单词到标签指派;根据生成的单词到标签指派构建标签网络,计算点的语义距离和语义内聚度;根据构建的标签网络对新项目进行自动标注,输入任意一个项目p的名称及其描述,对描述中每一个词在标签网络中查找,得到描述中每个不同单词i各自的标签集合Li,在每个Li中挑选一个标签1i,使语义内聚度Cohesion(L)最大,将满足条件的标签自动标注到新项目中。
文档编号G06F17/30GK102760149SQ201210097159
公开日2012年10月31日 申请日期2012年4月5日 优先权日2012年4月5日
发明者丁博, 刘惠, 史殿习, 尹刚, 朱沿旭, 李翔, 滕猛, 王怀民, 王涛, 袁霖 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1