基于在线增量演化主题模型的软件自动分类方法

文档序号:6367601阅读:734来源:国知局
专利名称:基于在线增量演化主题模型的软件自动分类方法
技术领域
本发明涉及软件自动分类技术领域,尤其涉及一种基于在线增量演化主题模型的软件自动分类方法,该方法通过在线增量式的建立开源社区软件文本流的主题模型,自动挖掘软件文本流中隐含的主题,并将每一个开源软件文本分配到挖掘得到的主题中,然后对该主题自动添加相应的语义标签,从而实现开源软件的自动分类。
背景技术
开源软件(又称开放源代码软件)是一种源代码可以任意获取的计算机软件。开源软件通常是按照某种许可证协议发布的,许可证协议可以保障软件用户自由使用及接触源代码的权利,用户可以遵照许可证协议自行修改、复制以及再分发开源软件。开源社区又称为开放源代码社区,是根据相应的开源软件许可证协议公布源代码的平台,当前最典型的开源社区是基于Web的托管网站,例如Sourcefbrge. net。通常开源社区中提供了较为完 善的用于辅助开源软件开发的基础设施(代码库、邮件列表和错误追踪系统等),开源社区的参与者利用基础设施建立开源软件项目,并在社区中通过协同开发的方式完成软件代码的编制、测试和发布,最终形成具有特定功能并能下载使用的软件程序。开源社区中除了包含丰富的源代码之外,还包含大量的软件文本,比如开发过程文本(需求、设计文档)、邮件通信记录、软件测试报告和软件描述文本等等。随着开源软件及其应用的飞速发展,互联网中开源社区已经形成了规模巨大、种类丰富的开源软件。为了有效的管理和组织海量的软件资源,方便用户搜索,通常将软件按照功能、运行平台、编程语言、开发状态、软件许可证等维度进行分类,其中最主要的就是按照功能分类,通常分类按照层次结构组织,每个类属称为一个主题,每个主题反映了软件功能应用的领域,在此我们将这种主题的层次结构称为软件主题分类本体(taxonomy)。用户通过浏览主题分类本体,可以从指定的分类中进一步查找自己需要的软件。软件主题分类本体对于浏览式的软件搜索是至关重要的。软件主题分类本体是由各软件社区的组织者制定的,每个软件提交者根据软件的功能参照主题分类本体为软件选择最合适的一个或多个主题。为了选择每一个适合软件的主题,软件提交者需要浏览整个软件分类本体,这通常会使他们感到不方便,很多提交者可能会由于缺乏耐心而放弃选择主题,或者直接选择无主题;另外,由于分类本体的局限性,提交者很有可能在主题分类本体中找不到适合自己软件的主题。所以通过人工的方式为软件项目选择主题,开销将是巨大的,如何为软件进行自动分类成为了极具挑战的问题。现有的软件自动分类方法通常利用软件文本(比如代码、注释、开发过程文本、开发日志、网页等等)来表征软件,通过文本分类和挖掘领域的技术对软件文本进行自动分类,从而间接实现对软件的自动分类。现有的软件自动分类方法主要基于主题挖掘技术,通过建立软件文本主题模型,将软件文本集合按照主题进行聚类,聚类的结果是每个软件文本自动归属于某个聚类主题,从而达到软件自动分类的目标,这类方法最主要的局限有两个(1)聚类主题通常都只是用特征关键词列表表示,而没有使用语义类标来标注这些聚类,要判断一个主题的语义需要人工判断,目前也有研究提出了标注方法,但是需要利用非软件领域的第三方词汇本体比如wordnet,增加了复杂度,效果并不理想;(2)开源社区的软件文本集合通常都是以很快的速度增长,大量新词汇的出现增长和消亡的演化规律决定了文本主题也是随时间演化的,那么如果按照静态的主题发现方法,就会生成错误的软件分类,所以需要动态挖掘文本主题在线演化的规律。比如,通过分析ceForge社区在2003年和2011年关于Internet主题的分类本体(taxonomy),发现由于社区主题的演化,相对于03年的分类本体,2011年的本体新增了很多项,如blogging、wiki等,这些项是社区的设计者根据社区内项目主题的变化,人为修改增加的。(3)开源社区中的软件文本集合是庞大的,同时主题挖掘技术的开销是巨大的,如果利用主题挖掘技术对开源社区的所有文本进行挖掘是不现实的,所以需要提供一种更高效的分类方法。LDA (潜式狄利克雷分布 Latent Dirichlet Allocation)主题模型是D. Μ· Blei 在2003年提出的一种产生式的(Generative)概率主题模型(Probabilistic Topic Model),它是在潜在语义分析LSA(Latent Semantic Analysis)模型的基础上发展而来的。LDA模型的基本假设是文本是主题的混合,其中主题是词空间上的分布。LDA模型是一种文本的生成模型,它描述了用来生成文本的概率过程(probabilistic procedure)。Gibbs抽样 方法是针对扩展的LDA模型的参数推理方法,扩展的LDA模型是在原始的LDA模型基础上使用参数β控制的狄利克雷先验分布作为主题词汇分布,扩展后的主题概率模型为主要由两个参数控制参数α和β,其中α代表主题文本分布Θ的参数,β代表主题词汇分布 Φ 的参数,详细可参考文献([l]Griffiths T. , Steyvers M. . Finding ScientificTopics[C]. Proceedings Of The National Academy Of Sciences,2004,101(Suppl I)5228. [2]Griffiths T. . Gibbs Sampling In the Generative Model of Latent DirichletAllocation[M]. Standford University http://www-psych. Stanford, edu/ gruffydd/cogsci02/l.)。其中,Φ和Θ为Gibbs抽样方法的结果,利用输出结果Φ可以清楚地了解每一个词汇在给定主题中的分布概率;利用输出结果Θ可以了解每一个文本在每个主题中的分布概率。将分布概率最高(或者分布概率按照大小排序靠前的k个主题)的主题作为文本的类属,可以实现对文本进行分类的目的。LDA模型的Gibbs抽样方法的输入是文本集合C和主题个数T,输出就是Φ和Θ。通常互联网中的文本集合是随着时间的推移而不断增长的,这些文本集合都表现为在线的文本流,新文本的不断涌现导致新词汇的出现,新词汇往往经历着发展、流行和消亡的演化周期,这将导致文本集合的主题会随着时间发生演化,挖掘在线文本流的主题演化规律是正确分析文本类属的关键。Qi He等人给出了在线主题演化的问题描述对于文本集合C,按照时间片(time slice)将文本流划分为一个一个的片段(本文中用时间片直接表示文本流片段),即C = UL1 C(t)(其中n表示时间片的个数),利用基于LDA模型的Gibbs抽样方法分别对每一个时间片中的文本集合进行主题挖掘,得到输出结果Φ (t)和0(t)。Φ (t)和Θ (t)分别表示时间片t中发生的文本流C(t)中的T(t)个主题的主题词汇分布和主题文本分布。现有的在线文本流主题挖掘技术是分析时间片t的主题分布与时间片t-Ι的主题分布之间的演化关系,利用上一时间片的计算结果Φ (t-Ι)和Θ (t-Ι)推算当前时间片的Φ (t)和Θ (t)结果。传统的基于相邻时间片的演化主题模型只能反映前一个时间片对后一个时间片的影响,不能反映历史时间片的对当前时间片的影响。
对于开源社区中的软件文本流来说,仅仅了解当前时间片内语料的主题(新增主题)是不够的,因为(I)开源软件文本通常会随着软件项目的演化而不断更改,因此任何提交到系统中的文本都会是重要的语料,不能仅仅研究一个时间片内的语料,而是应该研究某个时刻之前的所有时间片的历史语料;(2)语料的变化很可能导致开源软件类属的改变,如果一直按照演化前的主题分布来对软件文本进行分类必将导致分类的错误,所以每一时刻之前的整个历史语料是必要的。基于以上两方面原因,需要一种适合开源社区的在线增量演化主题模型,模型中每个时间片中词汇的主题分布是依赖于所有历史时间片中的词汇主题分布,而不是仅仅依赖于上一个时间片中的词汇主题分布,所有历史时间片的词汇主题分布作为当前时间片主题分布的先验。另外,现有技术认为文本流的每个时间片中的隐含主题个数是恒定的,即在挖掘每个时间片的文本集合时,将主题个数都设置为相同的数值。然而,由于软件文本发布时间的无规律性,每个时间片中包含文本的数目以及词汇种类不是均匀分布的,意味着每个时间片中隐含的主题也应该是有差异的,这种差异表现为每个时间片中隐含主题的个数不同;每个时间片中隐含主题的种类不同。所以,需要一种能够处理上述差异的主题挖掘方法,从而对海量的、经历过长时间积累的开源软件进行快速自动分类。·

发明内容
本发明的目的在于针对现有技术的不足,提出一种基于在线增量演化主题模型的软件自动分类方法。步骤I获取软件相关文本,所述软件相关文本包括开源软件的项目名称、项目主题标签、项目描述文本以及项目创建时间,如果所述项目主题标签为空,则将其设置为未标注,以预定时间片进行分组和预处理;进一步地,所述以预定时间片进行分组进一步包括根据所述项目创建时间将所有项目描述文本按照时间升序排列,并按照时间片At为单位将所有项目描述文本分组,对每个分组的软件相关文本进行预处理;进一步地,所述预处理包括通过词根提取将所述项目主题标签转换为其词根,并将相同词根的标签合并,删除标签数小于预定数目的项目,针对所述项目主题标签生成预设主题词汇表;将项目描述文本转换为单词包。步骤2基于扩展LDA模型,生成在线演化主题模型的概率模型,针对预处理后的以时间片分组的项目描述文本,计算最优主题个数,在最优主题个数的基础上依据所述在线演化主题模型的概率模型增量式计算当前时间片内项目描述文本的主题词汇分布和主题文本分布,所述主题词汇分布和所述主题文本分布可使用矩阵表示。进一步地,所述生成在线演化主题模型的概率模型的步骤进一步包括以步骤I中各个分组的项目名称、项目描述文本为输入,通过吉布斯抽样过程对输入数据进行训练,生成文本流中的聚类主题及主题数目,所述聚类主题是指将项目描述文本中的词汇进行分类,有相同特征的词汇聚集到一起而形成的集合,集合中的词汇称为核心词汇。进一步地,所述在线演化主题模型的概率模型中使用先验概率参数βΡ所述先验概率参数表示文本集合Cts中的词汇出现之前抽样词汇在主题k中出现的概率,是当前文本集合Cts进行抽样的先验。进一步地,所述最优主题个数的步骤包括,使用Kullback-Leibler距离衡量两个主题词汇分布的相对差距,其计算公式如下
_8] KL(zp II Zq) - i (Σ^ι Φ^ ) ο§%7 + ΣΖ Φ Γ) 0β ΡΙ))
zq磷 Zp其中Zp和Zq表不两个主题,每个主题用一个概率向量表不,向量的第i个分量
'Φζζ ^Φζζ ^^ i个i司汇属于主题zp和zq mmm, w表示两个主题共有η司'汇数目, KL(zp| Zq)的数值越大表示两个主题越不相似,当KL (Zp I Zq) = O的时候表示两个主题完全相同,如果这个值小于一个阈值,则认为两个主题是相似或者相同主题并进行合并。进一步地,所述增量式计算是指每次计算一个时间片内项目描述文本的主题分布,然后利用已经计算得到的之前的历史时间片的主题分布参数来估计当前所有文本的主题分布。步骤3获取未知分类主题的文本d,根据步骤2中生成的所有时间片的主题词汇分布和主题文本分布计算所述文本d从属的η个主题的主题词汇分布,并选择排序靠前的若干个主题作为所述文本d的文本主题,从而将所述文本d分类到相应的主题中。进一步地,步骤3还包括下列步骤查找所述未知分类主题的文本d从属的时间片ts,计算所述文本d在最优化主题个数中的分布概率Θ (d)(ts),将
沒按照概率从大到小的顺序排列,取概率排序靠前的η个主题t1;t2,. . .,tn作为所述文本d的分类主题位置。步骤4基于词汇表和基于词汇本体查询的方法,为主题自动添加语义标签,其中所述词汇表基于步骤I中爬取到的所有软件项目对应的已标注预设主题标签构建,所述词汇本体进行没有匹配到任何预设标签的聚类主题中核心词汇的上位概念的查询。进一步地,步骤4中基于词汇表为主题自动添加语义标签的步骤进一步包括获取由项目主题标签构建的预设主题词汇表,依据标签与项目描述文本的对应关系找出所有已经由用户标注主题的项目描述文本,将相同主题的项目描述文本整合成一个文本,经过整合项目文本后,每个预设主题对应一个文本;使用开源搜索引擎为整合后的项目文本建立索引,然后利用生成在线增量演化主题模型的概率模型过程中产生的聚类主题的核心词汇的词组作为查询匹配项目文本,最终按照匹配的分值对项目文本排序,选取排名靠前的预设主题名称作为聚类主题的标签。进一步地,步骤4中基于词汇本体查询为主题自动添加语义标签的步骤包括对于没有匹配任何预设标签的聚类主题,在词汇本体中查询聚类主题核心词汇的上位概念,选择覆盖最多核心词汇的上位概念作为该主题的标签,所述上位概念是指外延更广的词汇或者短语,在语义上可以很好地表征其包含的词汇。采用本发明可以达到以下技术效果本方法可以发现开源社区中的新主题、得到开源社区中最优的主题个数,聚类主题及核心词汇分布,同时可以得到每个软件文本在各主题中的分布。从而对开源社区中的主题进行在线增量演化,实现软件自动分类,并为其相应的主题添加语义标签。本方法适用于开源社区管理者,及时发现开源社区出现的新主题,并对软件项目进行自动分类,方便软件开发者依据软件主题搜索需要的开源软件项目,从而提高软件开发的效率,提高开源社区质量和保障。


图I为现有方法中LDA概率模型的图形表示图;图2为现有方法中扩展LDA概率模型的图形表示图;图3为本发明在线增量演化主题的概率模型生成的图形表示图;图4为本发明中生成的聚类主题的示意图;
图5为本发明中对生成的主题进行自动标注的流程图;图6为依据本发明的一个实施例对SourceForge在2009年时间片内对20个聚类主题进行标注的结果示意图;图7为本发明的整体流程具体实施例方式本发明主要基于项目描述文本对开源社区中的海量开源软件进行自动分类。步骤I获取软件相关文本与预处理,软件相关文本指与软件相关的一些文本信息。首先用爬虫技术和网页抽取技术从开源社区(如sourceforge. net)中获取大量(>100K)开源软件的项目名称、项目主题标签(如果有则获取,否则设置为未标注)、项目描述文本以及项目创建时间(即项目注册时间)。实施例中,利用爬虫技术和网页抽取技术从sourceforge社区中获取2000年至2009年的所有项目信息,从中抽取需要的字段包括项目名称、项目注册时间、项目主题标签和项目描述,表I展示了两个例子。
权利要求
1.一种基于在线增量演化主题模型的软件自动分类方法,包括下列步骤 步骤I获取软件相关文本,所述软件相关文本包括开源软件的项目名称、项目主题标签、项目描述文本以及项目创建时间,如果所述项目主题标签为空,则将其设置为未标注,以预定时间片进行分组和预处理; 步骤2基于扩展LDA模型,生成在线演化主题模型的概率模型,针对预处理后的以时间片分组的项目描述文本,计算最优主题个数,在最优主题个数的基础上依据所述在线演化主题模型的概率模型增量式计算当前时间片内项目描述文本的主题词汇分布和主题文本分布,所述主题词汇分布和所述主题文本分布可使用矩阵表示。
步骤3获取未知分类主题的文本d,根据步骤2中生成的所有时间片的主题词汇分布和主题文本分布计算所述文本d从属的η个主题的主题词汇分布,并选择排序靠前的若干个主题作为所述文本d的文本主题,从而将所述文本d分类到相应的主题中; 步骤4基于词汇表和基于词汇本体查询的方法,为主题自动添加语义标签,其中所述词汇表基于步骤I中爬取到的所有软件项目对应的已标注预设主题标签构建,所述词汇本体进行没有匹配到任何预设标签的聚类主题中核心词汇的上位概念的查询。
2.如权利要求I所述的方法,其中步骤I中,所述以预定时间片进行分组进一步包括根据所述项目创建时间将所有项目描述文本按照时间升序排列,并按照时间片At为单位将所有项目描述文本分组,对每个分组的软件相关文本进行预处理。
3.如权利要求I所述的方法,其中步骤I中,所述预处理包括通过词根提取将所述项目主题标签转换为其词根,并将相同词根的标签合并,删除标签数小于预定数目的项目,针对所述项目主题标签生成预设主题词汇表;将项目描述文本转换为单词包。
4.如权利要求I所述的方法,其中步骤2中,所述生成在线演化主题模型的概率模型的步骤进一步包括以步骤I中各个分组的项目名称、项目描述文本为输入,通过吉布斯抽样过程对输入数据进行训练,生成文本流中的聚类主题及主题数目,所述聚类主题是指将项目描述文本中的词汇进行分类,有相同特征的词汇聚集到一起而形成的集合,集合中的词汇称为核心词汇。
5.如权利要求I所述的方法,其中步骤2中,所述在线演化主题模型的概率模型中使用先验概率参数,所述先验概率参数表示文本集合Cts中的词汇出现之前抽样词汇在主题k中出现的概率,是当前文本集合Cts进行抽样的先验。
6.如权利要求I所述的方法,其中步骤2中,计算所述最优主题个数的步骤包括,使用Kullback-Leibler距离衡量两个主题词汇分布的相对差距,其计算公式如下 kl(% II %) = | OIKi+ Ζι 其中%和Zq表示两个主题,每个主题用一个概率向量表示,向量的第i个分量Φ{ζ ^ 表示第I个i司汇属于主题Zp和Zq的概率,W表示两个主题共有H司汇数目,KL (zp I zq)的数值越大表示两个主题越不相似,当KL (zp I zq) = O的时候表示两个主题完全相同,如果这个值小于一个阈值,则认为两个主题是相似或者相同主题并进行合并。
7.如权利要求I所述的方法,其中步骤2中,所述增量式计算是指每次计算一个时间片内项目描述文本的主题分布,然后利用已经计算得到的之前的历史时间片的主题分布参数来估计当前所有文本的主题分布。
8.如权利要求I所述的方法,其中步骤3中还包括下列步骤查找所述未知分类主题的文本d从属的时间片ts,计算所述文本d在最优化主题个数fts中的分布概率Θ (d)(ts),将按照概率从大到小的顺序排列,取概率排序靠前的η个 ^*ts主题t1; t2,...,tn作为所述文本d的分类主题位置。
9.如权利要求I所述的方法,其中步骤4中基于词汇表为主题自动添加语义标签的步骤进一步包括获取由项目主题标签构建的预设主题词汇表,依据标签与项目描述文本的对应关系找出所有已经由用户标注主题的项目描述文本,将相同主题的项目描述文本整合成一个文本,经过整合项目文本后,每个预设主题对应一个文本; 使用开源搜索引擎为整合后的项目文本建立索引,然后利用生成在线增量演化主题模型的概率模型过程中产生的聚类主题的核心词汇的词组作为查询匹配项目文本,最终按照匹配的分值对项目文本排序,选取排名靠前的预设主题名称作为聚类主题的标签。
10.如权利要求I所述的方法,其中步骤4中基于词汇本体查询为主题自动添加语义标签的步骤包括对于没有匹配任何预设标签的聚类主题,在词汇本体中查询聚类主题核心词汇的上位概念,选择覆盖最多核心词汇的上位概念作为该主题的标签,所述上位概念是指外延更广的词汇或者短语,在语义上可以很好地表征其包含的词汇。
全文摘要
一种基于在线增量演化主题模型的软件自动分类方法,包括获取软件相关文本,以预定时间片进行分组和预处理;生成在线演化主题模型的概率模型,针对以时间片分组的项目描述文本,计算最优主题个数,增量式计算当前时间片内项目描述文本的主题词汇分布和主题文本分布;获取未知分类主题的文本d,根据主题词汇分布和主题文本分布计算文本d从属的n个主题的主题词汇分布,所述文本d分类到相应的主题中基于词汇表和基于词汇本体查询,为主题自动添加语义标签,最终完成软件项目的分类。能够及时发现开源社区出现的新主题,并对软件项目进行自动分类,方便软件开发者依据软件主题搜索需要的开源软件项目,从而提高软件开发的效率,提高开源社区质量和保障。
文档编号G06F17/30GK102902700SQ20121009717
公开日2013年1月30日 申请日期2012年4月5日 优先权日2012年4月5日
发明者尹刚, 王怀民, 朱沿旭, 余跃, 史殿习, 李翔, 王涛, 袁霖 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1