專利名稱:基于在線增量演化主題模型的軟件自動分類方法
技術領域:
本發(fā)明涉及軟件自動分類技術領域,尤其涉及一種基于在線增量演化主題模型的軟件自動分類方法,該方法通過在線增量式的建立開源社區(qū)軟件文本流的主題模型,自動挖掘軟件文本流中隱含的主題,并將每一個開源軟件文本分配到挖掘得到的主題中,然后對該主題自動添加相應的語義標簽,從而實現(xiàn)開源軟件的自動分類。
背景技術:
開源軟件(又稱開放源代碼軟件)是一種源代碼可以任意獲取的計算機軟件。開源軟件通常是按照某種許可證協(xié)議發(fā)布的,許可證協(xié)議可以保障軟件用戶自由使用及接觸源代碼的權(quán)利,用戶可以遵照許可證協(xié)議自行修改、復制以及再分發(fā)開源軟件。開源社區(qū)又稱為開放源代碼社區(qū),是根據(jù)相應的開源軟件許可證協(xié)議公布源代碼的平臺,當前最典型的開源社區(qū)是基于Web的托管網(wǎng)站,例如Sourcefbrge. net。通常開源社區(qū)中提供了較為完 善的用于輔助開源軟件開發(fā)的基礎設施(代碼庫、郵件列表和錯誤追蹤系統(tǒng)等),開源社區(qū)的參與者利用基礎設施建立開源軟件項目,并在社區(qū)中通過協(xié)同開發(fā)的方式完成軟件代碼的編制、測試和發(fā)布,最終形成具有特定功能并能下載使用的軟件程序。開源社區(qū)中除了包含豐富的源代碼之外,還包含大量的軟件文本,比如開發(fā)過程文本(需求、設計文檔)、郵件通信記錄、軟件測試報告和軟件描述文本等等。隨著開源軟件及其應用的飛速發(fā)展,互聯(lián)網(wǎng)中開源社區(qū)已經(jīng)形成了規(guī)模巨大、種類豐富的開源軟件。為了有效的管理和組織海量的軟件資源,方便用戶搜索,通常將軟件按照功能、運行平臺、編程語言、開發(fā)狀態(tài)、軟件許可證等維度進行分類,其中最主要的就是按照功能分類,通常分類按照層次結(jié)構(gòu)組織,每個類屬稱為一個主題,每個主題反映了軟件功能應用的領域,在此我們將這種主題的層次結(jié)構(gòu)稱為軟件主題分類本體(taxonomy)。用戶通過瀏覽主題分類本體,可以從指定的分類中進一步查找自己需要的軟件。軟件主題分類本體對于瀏覽式的軟件搜索是至關重要的。軟件主題分類本體是由各軟件社區(qū)的組織者制定的,每個軟件提交者根據(jù)軟件的功能參照主題分類本體為軟件選擇最合適的一個或多個主題。為了選擇每一個適合軟件的主題,軟件提交者需要瀏覽整個軟件分類本體,這通常會使他們感到不方便,很多提交者可能會由于缺乏耐心而放棄選擇主題,或者直接選擇無主題;另外,由于分類本體的局限性,提交者很有可能在主題分類本體中找不到適合自己軟件的主題。所以通過人工的方式為軟件項目選擇主題,開銷將是巨大的,如何為軟件進行自動分類成為了極具挑戰(zhàn)的問題?,F(xiàn)有的軟件自動分類方法通常利用軟件文本(比如代碼、注釋、開發(fā)過程文本、開發(fā)日志、網(wǎng)頁等等)來表征軟件,通過文本分類和挖掘領域的技術對軟件文本進行自動分類,從而間接實現(xiàn)對軟件的自動分類?,F(xiàn)有的軟件自動分類方法主要基于主題挖掘技術,通過建立軟件文本主題模型,將軟件文本集合按照主題進行聚類,聚類的結(jié)果是每個軟件文本自動歸屬于某個聚類主題,從而達到軟件自動分類的目標,這類方法最主要的局限有兩個(1)聚類主題通常都只是用特征關鍵詞列表表示,而沒有使用語義類標來標注這些聚類,要判斷一個主題的語義需要人工判斷,目前也有研究提出了標注方法,但是需要利用非軟件領域的第三方詞匯本體比如wordnet,增加了復雜度,效果并不理想;(2)開源社區(qū)的軟件文本集合通常都是以很快的速度增長,大量新詞匯的出現(xiàn)增長和消亡的演化規(guī)律決定了文本主題也是隨時間演化的,那么如果按照靜態(tài)的主題發(fā)現(xiàn)方法,就會生成錯誤的軟件分類,所以需要動態(tài)挖掘文本主題在線演化的規(guī)律。比如,通過分析ceForge社區(qū)在2003年和2011年關于Internet主題的分類本體(taxonomy),發(fā)現(xiàn)由于社區(qū)主題的演化,相對于03年的分類本體,2011年的本體新增了很多項,如blogging、wiki等,這些項是社區(qū)的設計者根據(jù)社區(qū)內(nèi)項目主題的變化,人為修改增加的。(3)開源社區(qū)中的軟件文本集合是龐大的,同時主題挖掘技術的開銷是巨大的,如果利用主題挖掘技術對開源社區(qū)的所有文本進行挖掘是不現(xiàn)實的,所以需要提供一種更高效的分類方法。LDA (潛式狄利克雷分布 Latent Dirichlet Allocation)主題模型是D. Μ· Blei 在2003年提出的一種產(chǎn)生式的(Generative)概率主題模型(Probabilistic Topic Model),它是在潛在語義分析LSA(Latent Semantic Analysis)模型的基礎上發(fā)展而來的。LDA模型的基本假設是文本是主題的混合,其中主題是詞空間上的分布。LDA模型是一種文本的生成模型,它描述了用來生成文本的概率過程(probabilistic procedure)。Gibbs抽樣 方法是針對擴展的LDA模型的參數(shù)推理方法,擴展的LDA模型是在原始的LDA模型基礎上使用參數(shù)β控制的狄利克雷先驗分布作為主題詞匯分布,擴展后的主題概率模型為主要由兩個參數(shù)控制參數(shù)α和β,其中α代表主題文本分布Θ的參數(shù),β代表主題詞匯分布 Φ 的參數(shù),詳細可參考文獻([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抽樣方法的結(jié)果,利用輸出結(jié)果Φ可以清楚地了解每一個詞匯在給定主題中的分布概率;利用輸出結(jié)果Θ可以了解每一個文本在每個主題中的分布概率。將分布概率最高(或者分布概率按照大小排序靠前的k個主題)的主題作為文本的類屬,可以實現(xiàn)對文本進行分類的目的。LDA模型的Gibbs抽樣方法的輸入是文本集合C和主題個數(shù)T,輸出就是Φ和Θ。通常互聯(lián)網(wǎng)中的文本集合是隨著時間的推移而不斷增長的,這些文本集合都表現(xiàn)為在線的文本流,新文本的不斷涌現(xiàn)導致新詞匯的出現(xiàn),新詞匯往往經(jīng)歷著發(fā)展、流行和消亡的演化周期,這將導致文本集合的主題會隨著時間發(fā)生演化,挖掘在線文本流的主題演化規(guī)律是正確分析文本類屬的關鍵。Qi He等人給出了在線主題演化的問題描述對于文本集合C,按照時間片(time slice)將文本流劃分為一個一個的片段(本文中用時間片直接表示文本流片段),即C = UL1 C(t)(其中n表示時間片的個數(shù)),利用基于LDA模型的Gibbs抽樣方法分別對每一個時間片中的文本集合進行主題挖掘,得到輸出結(jié)果Φ (t)和0(t)。Φ (t)和Θ (t)分別表示時間片t中發(fā)生的文本流C(t)中的T(t)個主題的主題詞匯分布和主題文本分布?,F(xiàn)有的在線文本流主題挖掘技術是分析時間片t的主題分布與時間片t-Ι的主題分布之間的演化關系,利用上一時間片的計算結(jié)果Φ (t-Ι)和Θ (t-Ι)推算當前時間片的Φ (t)和Θ (t)結(jié)果。傳統(tǒng)的基于相鄰時間片的演化主題模型只能反映前一個時間片對后一個時間片的影響,不能反映歷史時間片的對當前時間片的影響。
對于開源社區(qū)中的軟件文本流來說,僅僅了解當前時間片內(nèi)語料的主題(新增主題)是不夠的,因為(I)開源軟件文本通常會隨著軟件項目的演化而不斷更改,因此任何提交到系統(tǒng)中的文本都會是重要的語料,不能僅僅研究一個時間片內(nèi)的語料,而是應該研究某個時刻之前的所有時間片的歷史語料;(2)語料的變化很可能導致開源軟件類屬的改變,如果一直按照演化前的主題分布來對軟件文本進行分類必將導致分類的錯誤,所以每一時刻之前的整個歷史語料是必要的?;谝陨蟽煞矫嬖?,需要一種適合開源社區(qū)的在線增量演化主題模型,模型中每個時間片中詞匯的主題分布是依賴于所有歷史時間片中的詞匯主題分布,而不是僅僅依賴于上一個時間片中的詞匯主題分布,所有歷史時間片的詞匯主題分布作為當前時間片主題分布的先驗。另外,現(xiàn)有技術認為文本流的每個時間片中的隱含主題個數(shù)是恒定的,即在挖掘每個時間片的文本集合時,將主題個數(shù)都設置為相同的數(shù)值。然而,由于軟件文本發(fā)布時間的無規(guī)律性,每個時間片中包含文本的數(shù)目以及詞匯種類不是均勻分布的,意味著每個時間片中隱含的主題也應該是有差異的,這種差異表現(xiàn)為每個時間片中隱含主題的個數(shù)不同;每個時間片中隱含主題的種類不同。所以,需要一種能夠處理上述差異的主題挖掘方法,從而對海量的、經(jīng)歷過長時間積累的開源軟件進行快速自動分類。·
發(fā)明內(nèi)容
本發(fā)明的目的在于針對現(xiàn)有技術的不足,提出一種基于在線增量演化主題模型的軟件自動分類方法。步驟I獲取軟件相關文本,所述軟件相關文本包括開源軟件的項目名稱、項目主題標簽、項目描述文本以及項目創(chuàng)建時間,如果所述項目主題標簽為空,則將其設置為未標注,以預定時間片進行分組和預處理;進一步地,所述以預定時間片進行分組進一步包括根據(jù)所述項目創(chuàng)建時間將所有項目描述文本按照時間升序排列,并按照時間片At為單位將所有項目描述文本分組,對每個分組的軟件相關文本進行預處理;進一步地,所述預處理包括通過詞根提取將所述項目主題標簽轉(zhuǎn)換為其詞根,并將相同詞根的標簽合并,刪除標簽數(shù)小于預定數(shù)目的項目,針對所述項目主題標簽生成預設主題詞匯表;將項目描述文本轉(zhuǎn)換為單詞包。步驟2基于擴展LDA模型,生成在線演化主題模型的概率模型,針對預處理后的以時間片分組的項目描述文本,計算最優(yōu)主題個數(shù),在最優(yōu)主題個數(shù)的基礎上依據(jù)所述在線演化主題模型的概率模型增量式計算當前時間片內(nèi)項目描述文本的主題詞匯分布和主題文本分布,所述主題詞匯分布和所述主題文本分布可使用矩陣表示。進一步地,所述生成在線演化主題模型的概率模型的步驟進一步包括以步驟I中各個分組的項目名稱、項目描述文本為輸入,通過吉布斯抽樣過程對輸入數(shù)據(jù)進行訓練,生成文本流中的聚類主題及主題數(shù)目,所述聚類主題是指將項目描述文本中的詞匯進行分類,有相同特征的詞匯聚集到一起而形成的集合,集合中的詞匯稱為核心詞匯。進一步地,所述在線演化主題模型的概率模型中使用先驗概率參數(shù)βΡ所述先驗概率參數(shù)表示文本集合Cts中的詞匯出現(xiàn)之前抽樣詞匯在主題k中出現(xiàn)的概率,是當前文本集合Cts進行抽樣的先驗。進一步地,所述最優(yōu)主題個數(shù)的步驟包括,使用Kullback-Leibler距離衡量兩個主題詞匯分布的相對差距,其計算公式如下
_8] KL(zp II Zq) - i (Σ^ι Φ^ ) ο§%7 + ΣΖ Φ Γ) 0β ΡΙ))
zq磷 Zp其中Zp和Zq表不兩個主題,每個主題用一個概率向量表不,向量的第i個分量
'Φζζ ^Φζζ ^^ i個i司匯屬于主題zp和zq mmm, w表示兩個主題共有η司'匯數(shù)目, KL(zp| Zq)的數(shù)值越大表示兩個主題越不相似,當KL (Zp I Zq) = O的時候表示兩個主題完全相同,如果這個值小于一個閾值,則認為兩個主題是相似或者相同主題并進行合并。進一步地,所述增量式計算是指每次計算一個時間片內(nèi)項目描述文本的主題分布,然后利用已經(jīng)計算得到的之前的歷史時間片的主題分布參數(shù)來估計當前所有文本的主題分布。步驟3獲取未知分類主題的文本d,根據(jù)步驟2中生成的所有時間片的主題詞匯分布和主題文本分布計算所述文本d從屬的η個主題的主題詞匯分布,并選擇排序靠前的若干個主題作為所述文本d的文本主題,從而將所述文本d分類到相應的主題中。進一步地,步驟3還包括下列步驟查找所述未知分類主題的文本d從屬的時間片ts,計算所述文本d在最優(yōu)化主題個數(shù)中的分布概率Θ (d)(ts),將
沒按照概率從大到小的順序排列,取概率排序靠前的η個主題t1;t2,. . .,tn作為所述文本d的分類主題位置。步驟4基于詞匯表和基于詞匯本體查詢的方法,為主題自動添加語義標簽,其中所述詞匯表基于步驟I中爬取到的所有軟件項目對應的已標注預設主題標簽構(gòu)建,所述詞匯本體進行沒有匹配到任何預設標簽的聚類主題中核心詞匯的上位概念的查詢。進一步地,步驟4中基于詞匯表為主題自動添加語義標簽的步驟進一步包括獲取由項目主題標簽構(gòu)建的預設主題詞匯表,依據(jù)標簽與項目描述文本的對應關系找出所有已經(jīng)由用戶標注主題的項目描述文本,將相同主題的項目描述文本整合成一個文本,經(jīng)過整合項目文本后,每個預設主題對應一個文本;使用開源搜索引擎為整合后的項目文本建立索引,然后利用生成在線增量演化主題模型的概率模型過程中產(chǎn)生的聚類主題的核心詞匯的詞組作為查詢匹配項目文本,最終按照匹配的分值對項目文本排序,選取排名靠前的預設主題名稱作為聚類主題的標簽。進一步地,步驟4中基于詞匯本體查詢?yōu)橹黝}自動添加語義標簽的步驟包括對于沒有匹配任何預設標簽的聚類主題,在詞匯本體中查詢聚類主題核心詞匯的上位概念,選擇覆蓋最多核心詞匯的上位概念作為該主題的標簽,所述上位概念是指外延更廣的詞匯或者短語,在語義上可以很好地表征其包含的詞匯。采用本發(fā)明可以達到以下技術效果本方法可以發(fā)現(xiàn)開源社區(qū)中的新主題、得到開源社區(qū)中最優(yōu)的主題個數(shù),聚類主題及核心詞匯分布,同時可以得到每個軟件文本在各主題中的分布。從而對開源社區(qū)中的主題進行在線增量演化,實現(xiàn)軟件自動分類,并為其相應的主題添加語義標簽。本方法適用于開源社區(qū)管理者,及時發(fā)現(xiàn)開源社區(qū)出現(xiàn)的新主題,并對軟件項目進行自動分類,方便軟件開發(fā)者依據(jù)軟件主題搜索需要的開源軟件項目,從而提高軟件開發(fā)的效率,提高開源社區(qū)質(zhì)量和保障。
圖I為現(xiàn)有方法中LDA概率模型的圖形表示圖;圖2為現(xiàn)有方法中擴展LDA概率模型的圖形表示圖;圖3為本發(fā)明在線增量演化主題的概率模型生成的圖形表示圖;圖4為本發(fā)明中生成的聚類主題的示意圖;
圖5為本發(fā)明中對生成的主題進行自動標注的流程圖;圖6為依據(jù)本發(fā)明的一個實施例對SourceForge在2009年時間片內(nèi)對20個聚類主題進行標注的結(jié)果示意圖;圖7為本發(fā)明的整體流程具體實施例方式本發(fā)明主要基于項目描述文本對開源社區(qū)中的海量開源軟件進行自動分類。步驟I獲取軟件相關文本與預處理,軟件相關文本指與軟件相關的一些文本信息。首先用爬蟲技術和網(wǎng)頁抽取技術從開源社區(qū)(如sourceforge. net)中獲取大量(>100K)開源軟件的項目名稱、項目主題標簽(如果有則獲取,否則設置為未標注)、項目描述文本以及項目創(chuàng)建時間(即項目注冊時間)。實施例中,利用爬蟲技術和網(wǎng)頁抽取技術從sourceforge社區(qū)中獲取2000年至2009年的所有項目信息,從中抽取需要的字段包括項目名稱、項目注冊時間、項目主題標簽和項目描述,表I展示了兩個例子。
權(quán)利要求
1.一種基于在線增量演化主題模型的軟件自動分類方法,包括下列步驟 步驟I獲取軟件相關文本,所述軟件相關文本包括開源軟件的項目名稱、項目主題標簽、項目描述文本以及項目創(chuàng)建時間,如果所述項目主題標簽為空,則將其設置為未標注,以預定時間片進行分組和預處理; 步驟2基于擴展LDA模型,生成在線演化主題模型的概率模型,針對預處理后的以時間片分組的項目描述文本,計算最優(yōu)主題個數(shù),在最優(yōu)主題個數(shù)的基礎上依據(jù)所述在線演化主題模型的概率模型增量式計算當前時間片內(nèi)項目描述文本的主題詞匯分布和主題文本分布,所述主題詞匯分布和所述主題文本分布可使用矩陣表示。
步驟3獲取未知分類主題的文本d,根據(jù)步驟2中生成的所有時間片的主題詞匯分布和主題文本分布計算所述文本d從屬的η個主題的主題詞匯分布,并選擇排序靠前的若干個主題作為所述文本d的文本主題,從而將所述文本d分類到相應的主題中; 步驟4基于詞匯表和基于詞匯本體查詢的方法,為主題自動添加語義標簽,其中所述詞匯表基于步驟I中爬取到的所有軟件項目對應的已標注預設主題標簽構(gòu)建,所述詞匯本體進行沒有匹配到任何預設標簽的聚類主題中核心詞匯的上位概念的查詢。
2.如權(quán)利要求I所述的方法,其中步驟I中,所述以預定時間片進行分組進一步包括根據(jù)所述項目創(chuàng)建時間將所有項目描述文本按照時間升序排列,并按照時間片At為單位將所有項目描述文本分組,對每個分組的軟件相關文本進行預處理。
3.如權(quán)利要求I所述的方法,其中步驟I中,所述預處理包括通過詞根提取將所述項目主題標簽轉(zhuǎn)換為其詞根,并將相同詞根的標簽合并,刪除標簽數(shù)小于預定數(shù)目的項目,針對所述項目主題標簽生成預設主題詞匯表;將項目描述文本轉(zhuǎn)換為單詞包。
4.如權(quán)利要求I所述的方法,其中步驟2中,所述生成在線演化主題模型的概率模型的步驟進一步包括以步驟I中各個分組的項目名稱、項目描述文本為輸入,通過吉布斯抽樣過程對輸入數(shù)據(jù)進行訓練,生成文本流中的聚類主題及主題數(shù)目,所述聚類主題是指將項目描述文本中的詞匯進行分類,有相同特征的詞匯聚集到一起而形成的集合,集合中的詞匯稱為核心詞匯。
5.如權(quán)利要求I所述的方法,其中步驟2中,所述在線演化主題模型的概率模型中使用先驗概率參數(shù),所述先驗概率參數(shù)表示文本集合Cts中的詞匯出現(xiàn)之前抽樣詞匯在主題k中出現(xiàn)的概率,是當前文本集合Cts進行抽樣的先驗。
6.如權(quán)利要求I所述的方法,其中步驟2中,計算所述最優(yōu)主題個數(shù)的步驟包括,使用Kullback-Leibler距離衡量兩個主題詞匯分布的相對差距,其計算公式如下 kl(% II %) = | OIKi+ Ζι 其中%和Zq表示兩個主題,每個主題用一個概率向量表示,向量的第i個分量Φ{ζ ^ 表示第I個i司匯屬于主題Zp和Zq的概率,W表示兩個主題共有H司匯數(shù)目,KL (zp I zq)的數(shù)值越大表示兩個主題越不相似,當KL (zp I zq) = O的時候表示兩個主題完全相同,如果這個值小于一個閾值,則認為兩個主題是相似或者相同主題并進行合并。
7.如權(quán)利要求I所述的方法,其中步驟2中,所述增量式計算是指每次計算一個時間片內(nèi)項目描述文本的主題分布,然后利用已經(jīng)計算得到的之前的歷史時間片的主題分布參數(shù)來估計當前所有文本的主題分布。
8.如權(quán)利要求I所述的方法,其中步驟3中還包括下列步驟查找所述未知分類主題的文本d從屬的時間片ts,計算所述文本d在最優(yōu)化主題個數(shù)fts中的分布概率Θ (d)(ts),將按照概率從大到小的順序排列,取概率排序靠前的η個 ^*ts主題t1; t2,...,tn作為所述文本d的分類主題位置。
9.如權(quán)利要求I所述的方法,其中步驟4中基于詞匯表為主題自動添加語義標簽的步驟進一步包括獲取由項目主題標簽構(gòu)建的預設主題詞匯表,依據(jù)標簽與項目描述文本的對應關系找出所有已經(jīng)由用戶標注主題的項目描述文本,將相同主題的項目描述文本整合成一個文本,經(jīng)過整合項目文本后,每個預設主題對應一個文本; 使用開源搜索引擎為整合后的項目文本建立索引,然后利用生成在線增量演化主題模型的概率模型過程中產(chǎn)生的聚類主題的核心詞匯的詞組作為查詢匹配項目文本,最終按照匹配的分值對項目文本排序,選取排名靠前的預設主題名稱作為聚類主題的標簽。
10.如權(quán)利要求I所述的方法,其中步驟4中基于詞匯本體查詢?yōu)橹黝}自動添加語義標簽的步驟包括對于沒有匹配任何預設標簽的聚類主題,在詞匯本體中查詢聚類主題核心詞匯的上位概念,選擇覆蓋最多核心詞匯的上位概念作為該主題的標簽,所述上位概念是指外延更廣的詞匯或者短語,在語義上可以很好地表征其包含的詞匯。
全文摘要
一種基于在線增量演化主題模型的軟件自動分類方法,包括獲取軟件相關文本,以預定時間片進行分組和預處理;生成在線演化主題模型的概率模型,針對以時間片分組的項目描述文本,計算最優(yōu)主題個數(shù),增量式計算當前時間片內(nèi)項目描述文本的主題詞匯分布和主題文本分布;獲取未知分類主題的文本d,根據(jù)主題詞匯分布和主題文本分布計算文本d從屬的n個主題的主題詞匯分布,所述文本d分類到相應的主題中基于詞匯表和基于詞匯本體查詢,為主題自動添加語義標簽,最終完成軟件項目的分類。能夠及時發(fā)現(xiàn)開源社區(qū)出現(xiàn)的新主題,并對軟件項目進行自動分類,方便軟件開發(fā)者依據(jù)軟件主題搜索需要的開源軟件項目,從而提高軟件開發(fā)的效率,提高開源社區(qū)質(zhì)量和保障。
文檔編號G06F17/30GK102902700SQ20121009717
公開日2013年1月30日 申請日期2012年4月5日 優(yōu)先權(quán)日2012年4月5日
發(fā)明者尹剛, 王懷民, 朱沿旭, 余躍, 史殿習, 李翔, 王濤, 袁霖 申請人:中國人民解放軍國防科學技術大學