基于LDA模型和PageRank算法建立特征接口有向圖的方法
【專利摘要】本發(fā)明公開了軟件工程領(lǐng)域內(nèi)的基于LDA模型和PageRank算法建立特征接口有向圖的方法,包括如下步驟:1)選取適當(dāng)?shù)拈_源軟件庫(kù)作為代碼支持;2)通過LDA主題模型提取出項(xiàng)目對(duì)應(yīng)的主題作為該項(xiàng)目的特征集合;3)檢索各項(xiàng)目中的接口信息,與各項(xiàng)目對(duì)應(yīng)的特征集合建立聯(lián)系,構(gòu)成由項(xiàng)目特征集合指向項(xiàng)目接口集合的特征-接口有向圖,利用PageRank算法計(jì)算接口在項(xiàng)目?jī)?nèi)部的調(diào)用次數(shù)作為特征-接口有向圖中邊的權(quán)值;4)在構(gòu)成特征-接口有向圖后,程序開發(fā)人員根據(jù)待開發(fā)項(xiàng)目的特征與所述特征-接口有向圖中的特征進(jìn)行匹配,根據(jù)有向圖邊的指向關(guān)系推薦可能的最優(yōu)接口列表供開發(fā)人員選擇使用,本發(fā)明提高了軟件開發(fā)的效率,可用于軟件開發(fā)中。
【專利說明】基于LDA模型和PageRank算法建立特征接口有向圖的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種項(xiàng)目接口選取方法,特別涉及一種建立特征接口有向圖的方法,屬于軟件工程領(lǐng)域。
【背景技術(shù)】
[0002]當(dāng)開發(fā)人員在開發(fā)新的程序時(shí),首先會(huì)根據(jù)需求分析進(jìn)行功能模塊的劃分,之后設(shè)定數(shù)據(jù)單元考慮數(shù)據(jù)庫(kù)等步驟。程序開發(fā)過程中接口的設(shè)置往往也會(huì)出現(xiàn)在開發(fā)人員的考慮范疇中,那么在這樣的背景之下,開發(fā)人員在進(jìn)行了功能模塊劃分之后,根據(jù)開發(fā)人員對(duì)程序的功能描述來為開發(fā)人員推薦程序合適的接口,供開發(fā)人員選擇,提高軟件開發(fā)效率。目前在軟件開發(fā)時(shí),通常會(huì)由項(xiàng)目負(fù)責(zé)人根據(jù)項(xiàng)目需求文檔手動(dòng)設(shè)置接口,在搜索接口時(shí)根據(jù)關(guān)鍵字查找,該方法存在查找不全面,檢索效率不高,對(duì)于代碼重用的實(shí)現(xiàn)不理想。
[0003]本發(fā)明的核心技術(shù)是生成“特征-接口”有向圖,通過生成的有向圖可以實(shí)現(xiàn)根據(jù)需求的開發(fā)的項(xiàng)目特征推薦接口的功能。本發(fā)明的核心技術(shù)需要提取出項(xiàng)目的特征與開源軟件庫(kù)中的項(xiàng)目接口的重要性,所使用的技術(shù)包括LDA主題模型和PageRank算法。LDA主題模型是一種概率語言模型,場(chǎng)應(yīng)用于文本建模,從文本中發(fā)現(xiàn)隱藏的主題信息,本發(fā)明中使用LDA主題模型對(duì)開源軟件庫(kù)中項(xiàng)目的主題特征進(jìn)行提取。PageRank算法是一種搜索引擎算法,用于衡量特定網(wǎng)頁相對(duì)于搜索引擎索引中的其他網(wǎng)頁的重要程度,PageRank算法實(shí)現(xiàn)了鏈接價(jià)值概念作為排名因素,本發(fā)明中PageRank算法應(yīng)用于計(jì)算某個(gè)項(xiàng)目特征下的不同接口的調(diào)用次數(shù),進(jìn)行排名。
[0004]根據(jù)LDA主題的特性,使用該模型提取項(xiàng)目特征。通過主題模型技術(shù)能夠識(shí)別開發(fā)人員的需求特征,同時(shí)獲取開源軟件庫(kù)中開源項(xiàng)目的特征(主題);利用簡(jiǎn)單的遍歷技術(shù)查找出開源軟件中的接口構(gòu)成有向圖。而類比于網(wǎng)頁鏈接重要性的計(jì)算形式,使用PageRank算法來計(jì)算項(xiàng)目中接口的重要程度,將項(xiàng)目的主題特征作為主頁面,而接口作為由主頁面鏈接的子頁面。利用PageRank技術(shù)檢索出開發(fā)人員需要的對(duì)應(yīng)特征的接口,反饋給開發(fā)人員,供其選擇使用。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種基于LDA模型和PageRank算法建立特征接口有向圖的方法,根據(jù)開發(fā)人員提供的程序特征,自動(dòng)從軟件庫(kù)中推薦適合該特征的程序接口供開發(fā)人員使用,從而提高了軟件開發(fā)的效率,實(shí)現(xiàn)代碼的接口重用。
[0006]本發(fā)明的目的是這樣實(shí)現(xiàn)的:一種基于LDA模型和PageRank算法建立特征接口有向圖的方法,其特征在于,包括如下步驟:
步驟I)選取適當(dāng)?shù)拈_源軟件庫(kù)作為代碼支持;
步驟2)對(duì)選取的開源軟件庫(kù)中的項(xiàng)目,通過LDA主題模型提取出項(xiàng)目對(duì)應(yīng)的主題作為該項(xiàng)目的特征集合;
步驟3)檢索各項(xiàng)目中的接口信息,與各項(xiàng)目對(duì)應(yīng)的特征集合建立聯(lián)系,構(gòu)成由項(xiàng)目特征集合指向項(xiàng)目接口集合的特征-接口有向圖,利用PageRank算法計(jì)算接口在項(xiàng)目?jī)?nèi)部的調(diào)用次數(shù)作為特征-接口有向圖中邊的權(quán)值;
步驟4)在構(gòu)成特征-接口有向圖后,程序開發(fā)人員根據(jù)待開發(fā)項(xiàng)目的特征與所述特征-接口有向圖中的特征進(jìn)行匹配,根據(jù)有向圖邊的指向關(guān)系推薦可能的最優(yōu)接口列表供開發(fā)人員選擇使用。
[0007]作為本發(fā)明的進(jìn)一步限定,簡(jiǎn)化步驟,提高效率,步驟2)的具體方法如下:LDA模型分別對(duì)開源軟件庫(kù)中的項(xiàng)目提取主題時(shí),通過對(duì)于LDA參數(shù)設(shè)置,實(shí)現(xiàn)每次只提取一個(gè)項(xiàng)目,以該項(xiàng)目為一個(gè)文檔庫(kù),通過LDA模型提取出該項(xiàng)目的主題,然后,依次對(duì)開源軟件庫(kù)中的其他開源項(xiàng)目使用同樣的方法提取主題;在當(dāng)前需要提取主題的項(xiàng)目中使用LDA模型主題時(shí),將分布值最高的前兩個(gè)主題作為最佳特征集合BestFi,最佳特征集合BestFi作為步驟4)中接口的匹配對(duì)象。
[0008]作為本發(fā)明的進(jìn)一步限定,簡(jiǎn)化步驟,提高效率,步驟3)的具體方法如下:遍歷當(dāng)前項(xiàng)目,檢索出項(xiàng)目文件中的接口并以“文件名.接口名”的形式定位該接口,建立由最佳特征集合BestFi指向接口集合的特征-接口有向圖;特征-接口有向圖建立之后,使用PageRank算法統(tǒng)計(jì)項(xiàng)目中各接口的調(diào)用次數(shù),同時(shí),依據(jù)計(jì)算值大小對(duì)接口進(jìn)行排序。
[0009]作為本發(fā)明的進(jìn)一步限定,簡(jiǎn)化步驟,提高效率,步驟4)的具體方法如下:當(dāng)程序開發(fā)人員進(jìn)行特征匹配時(shí),將開發(fā)人員選擇的待開發(fā)項(xiàng)目的特征集合f與權(quán)利要求2中的最佳特征集合BestFi進(jìn)行匹配,匹配方法為:將特征集合f中的每一個(gè)詞依次匹配BestFi中對(duì)應(yīng)的詞語,當(dāng)匹配成功詞數(shù)占特征集合f總詞數(shù)的百分比大于等于50%時(shí),判定特征集合f與所述最佳特征集合BestFi匹配成功,并根據(jù)特征-接口有向圖中邊的指向?yàn)槌绦蜷_發(fā)人員推薦接口列表供程序開發(fā)人員自行選擇;當(dāng)程序開發(fā)人員選擇某個(gè)接口之后,根據(jù)權(quán)利要求3中的定位方式確定具體的接口,并為開發(fā)人員推薦該接口。
[0010]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于,本發(fā)明通過LDA主題模型提取主題特征,簡(jiǎn)化了人工理解代碼來提取項(xiàng)目主題的步驟,通過接口關(guān)鍵字搜索接口并將其按照特定格式存儲(chǔ),提取出的主題構(gòu)成有向圖,在需要時(shí)通過PageRank算法根據(jù)有向圖中邊的關(guān)系排序推薦最優(yōu)的接口 ;該項(xiàng)技術(shù)帶來的優(yōu)點(diǎn)主要有以下幾點(diǎn):
1)為開發(fā)人員推薦功能接口,簡(jiǎn)化了軟件開發(fā)過程,提高開發(fā)效率;
2)根據(jù)開發(fā)人員的功能描述為開發(fā)人員推薦接口時(shí),能夠?yàn)殚_發(fā)人員進(jìn)行功能細(xì)化,完善軟件的功能;
3)接口的推薦使用可以幫助開發(fā)人員編寫可復(fù)用性更好的代碼;
4)當(dāng)項(xiàng)目接口定位好之后,不同模塊的開發(fā)人員可以先根據(jù)接口的定義開發(fā)自己的模塊,提高開發(fā)效率。本發(fā)明可用于軟件開發(fā)中。
【專利附圖】
【附圖說明】
[0011]圖1是本發(fā)明使用過程流程圖。
[0012]圖2是本發(fā)明中利用LDA主題模型提取主題過程流程圖。
[0013]圖3是本發(fā)明中建立特征-接口有向圖過程的流程圖。
[0014]圖4是根據(jù)待開發(fā)項(xiàng)目特征檢索特征-接口有向圖推薦接口過程示意圖。
[0015]其中,ILAD提取主題過程,2LDA計(jì)算分布值提取BestFi過程,3建立特征-接口有向圖過程,4接口定位過程,5特征匹配過程。
【具體實(shí)施方式】
[0016]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案作出詳細(xì)說明。
[0017]本發(fā)明的方法是通過LDA(Latent Dirichlet Allocation)主題模型提取出開源軟件庫(kù)中的主題,給予項(xiàng)目主題描述,使用LDA模型提取出的主題單詞集合作為該項(xiàng)目的特征描述,使用PageRank算法建立提取出的主題特征集合與遍歷查找出的接口的有向圖并計(jì)算出每條邊的權(quán)值,然后根據(jù)權(quán)值進(jìn)行排序,按照開發(fā)人員輸入的特征關(guān)鍵字檢索有向圖的頂點(diǎn),匹配成功則推薦該頂點(diǎn)下的節(jié)點(diǎn)(即接口)供開發(fā)人員選擇,如圖1所示。
[0018]一、參數(shù)定義
1、開源軟件庫(kù)文件
假設(shè)現(xiàn)有開源 軟件庫(kù)(以開源中國(guó)中的開源項(xiàng)目的整體作為開源軟件庫(kù)),開源軟件庫(kù)中有η個(gè)項(xiàng)目分別為PpPfPn。
[0019]2、LDA(Latent Dirichlet Allocation)模型參數(shù)
I)使用LDA模型對(duì)開源軟件庫(kù)中的軟件提取主題特征集合并按照項(xiàng)目編號(hào)對(duì)主題特征集合進(jìn)行編號(hào),如項(xiàng)目I提取的主題特征集合為F1,以此類推。
[0020]2)LDA模型提取的每條主題列的數(shù)目為K,設(shè)置為30,提取出盡可能多而全面的主題。
[0021]3)提取出每條的主題列中的詞數(shù)w的值域?yàn)閃 € (10,IOOj,詞數(shù)過少主題概括不全面,詞數(shù)過多冗余。
[0022]4)由LDA計(jì)算出的主題分布值大小前兩位的主題列構(gòu)成最佳特征集合,表示為BestFi, i的值與項(xiàng)目編號(hào)值相同。
[0023]3、開發(fā)人員進(jìn)行項(xiàng)目開發(fā)時(shí),對(duì)待開發(fā)的項(xiàng)目進(jìn)行功能描述,將開發(fā)人員功能描述的詞語作為開發(fā)項(xiàng)目的特征集合f,特征集合f中特征詞數(shù)為N,匹配每一個(gè)BestFi集合中的特征詞匯,將特征集合f中的每個(gè)詞語分別與BestFi集合中的每個(gè)特征詞語進(jìn)行匹
麗
配,匹配相似的匹配值η加I,當(dāng)匹配值η > +:時(shí),將該BestFi集合定義為最佳匹配集合,
2
查找出最佳匹配集合,檢索特征-接口有向圖的子節(jié)點(diǎn),根據(jù)子節(jié)點(diǎn)中接口定位前往對(duì)應(yīng)項(xiàng)目文件中,將接口列表反饋給開發(fā)人員,開發(fā)人員自行選擇合適的接口,根據(jù)接口的定位為開發(fā)人員推薦被選擇的接口。
[0024]二、方法流程
利用LDA模型和PageRank算法建立特征接口有向圖,為程序開發(fā)人員推薦適當(dāng)接口的過程主要分為兩個(gè)步驟:建立特征接口有向圖和根據(jù)需求推薦接口。
[0025]1、建立特征-接口有向圖1)選定開源軟件庫(kù)地址,檢索軟件庫(kù)中項(xiàng)目,使用LDA模型依次對(duì)項(xiàng)目Pp匕…Pn進(jìn)行主題提取操作,對(duì)于LDA參數(shù)設(shè)置每次只對(duì)一個(gè)項(xiàng)目進(jìn)行操作,以該項(xiàng)目為一個(gè)文檔庫(kù)。通過LDA模型提取出一個(gè)項(xiàng)目的特征(或者稱之為主題)之后,依次對(duì)開源庫(kù)中的開源項(xiàng)目使用同樣的方法提取特征并進(jìn)行編號(hào),分別得出對(duì)應(yīng)項(xiàng)目的全部主題列分別編號(hào)為FpF2-Fn ;例如開源軟件庫(kù)中有η個(gè)項(xiàng)目,第一個(gè)項(xiàng)目是關(guān)于音樂播放軟件的,通過LDA模型提取出的主題集合為{Fn: {play, next, stop}, F12: {load, download}, F13: {Lyricsdownload,singer},...}我們將這個(gè)主題特征集合定義為F1。對(duì)于其他開源軟件進(jìn)行相同的操作。主題特征集合的定義下標(biāo)不同;
2)LDA模型提取主題特征過程中獲得每一條主題列的主題分布值,取主題分布值最高的前兩個(gè)主題列作為最佳特征集合BestFi。如a)舉例集合F1中,F(xiàn)11與F12的主題分布值為前兩位,實(shí)際上由Fl集合可以看出F13實(shí)際上對(duì)于音樂播放軟件而言不是必須的,而是少數(shù)幾個(gè)播放軟件的特殊功能;最佳特征集合BestF1=F1 U F2,如圖2所示;
3)遍歷當(dāng)前項(xiàng)目,檢索出項(xiàng)目文件中的接口并以“文件名.接口名”的形式定位該接口,接口的遍歷通過接口關(guān)鍵字Interface或者類實(shí)現(xiàn)接口來查找?!拔募?接口名”的形式作為集合形式保存下來,其中文件名內(nèi)容包含了當(dāng)前項(xiàng)目名,項(xiàng)目下包名,包中類名每個(gè)單項(xiàng)之間以 “.” 隔開;形式如下:ProjectName.PackageName.ClassName.1nterfaceName,例如開源軟件庫(kù)中存在某音樂播放軟件名為Music,項(xiàng)目中有包名為Play (放音樂播放類),包下有用于調(diào)整時(shí)間軸的類名為SetTime,在類文件中設(shè)置了接口 setTime。那么對(duì)于該接口檢索出的“文件名.接口名”為:Music.Play.SetTime.setTime,做有向邊從BestF1指向接口,形成BestF1O接口的有向圖,如圖3所示;
4)有向圖建立之后我們使用PageRank算法計(jì)算有向圖中最佳特征集合BestF1與各個(gè)接口的鏈接次數(shù),即類似于PageRank算法用于網(wǎng)頁搜索時(shí)計(jì)算網(wǎng)頁與網(wǎng)頁之間的鏈接次數(shù)來確定網(wǎng)頁的重要性,同理能夠計(jì)算出同一特征下接口的重要性,計(jì)算值越大說明接口被調(diào)用的次數(shù)越多也就越重要應(yīng)當(dāng)首先被推薦,并依據(jù)計(jì)算值大小對(duì)接口進(jìn)行排名,例如通過LDA模型提取出最佳特征集合BestF1, BestF1下調(diào)用了接口 I的次數(shù)為η」,調(diào)用接口 2的次數(shù)為Iii,且 Iipni,那么當(dāng)推薦是應(yīng)當(dāng)首先推薦接口 1,其調(diào)用次數(shù)多于接口 2,如圖3所示。
[0026]2、根據(jù)用戶需求推薦接口
在用戶端,當(dāng)程序開發(fā)人員進(jìn)行特征選擇時(shí),將開發(fā)人員選擇的主題特征集合定義為f
與最佳特征集合BestF1進(jìn)行匹配,按照上述
【權(quán)利要求】
1.一種基于LDA模型和PageRank算法建立特征接口有向圖的方法,其特征在于,包括如下步驟: 步驟I)選取適當(dāng)?shù)拈_源軟件庫(kù)作為代碼支持; 步驟2)對(duì)選取的開源軟件庫(kù)中的項(xiàng)目,通過LDA主題模型提取出項(xiàng)目對(duì)應(yīng)的主題作為該項(xiàng)目的特征集合; 步驟3)檢索各項(xiàng)目中的接口信息,與各項(xiàng)目對(duì)應(yīng)的特征集合建立聯(lián)系,構(gòu)成由項(xiàng)目特征集合指向項(xiàng)目接口集合的特征-接口有向圖,利用PageRank算法計(jì)算接口在項(xiàng)目?jī)?nèi)部的調(diào)用次數(shù)作為特征-接口有向圖中邊的權(quán)值; 步驟4)在構(gòu)成特征-接口有向圖后,程序開發(fā)人員根據(jù)待開發(fā)項(xiàng)目的特征與所述特征-接口有向圖中的特征進(jìn)行匹配,根據(jù)有向圖邊的指向關(guān)系推薦可能的最優(yōu)接口列表供開發(fā)人員選擇使用。
2.根據(jù)權(quán)利要求1所述的基于LDA模型和PageRank算法建立特征接口有向圖的方法,其特征在于,步驟2)的具體方法如下:LDA模型對(duì)開源軟件庫(kù)中的項(xiàng)目提取主題時(shí),通過對(duì)于LDA參數(shù)設(shè)置,實(shí)現(xiàn)每次只提取一個(gè)項(xiàng)目,以該項(xiàng)目為一個(gè)文檔庫(kù),通過LDA模型提取出該項(xiàng)目的主題,然后,依次對(duì)開源軟件庫(kù)中的其他開源項(xiàng)目使用同樣的方法提取主題;在當(dāng)前需要提取主題的項(xiàng)目中使用LDA模型提取主題時(shí),將分布值最高的前兩個(gè)主題作為最佳特征集合BestFi,最佳特征集合BestFi作為步驟4)中接口的匹配對(duì)象。
3.根據(jù)權(quán)利要求2所述的基于LDA模型和PageRank算法建立特征接口有向圖的方法,其特征在于,步驟3)的具體方法如下:遍歷當(dāng)前項(xiàng)目,檢索出項(xiàng)目文件中的接口并以“文件名.接口名”的形式定位該接口,建立由最佳特征集合BestFi指向接口集合的特征-接口有向圖;特征-接口有向圖建立之后,使用PageRank算法統(tǒng)計(jì)項(xiàng)目中各接口的調(diào)用次數(shù),同時(shí),依據(jù)計(jì)算值大小對(duì)接口進(jìn)行排序。
4.根據(jù)權(quán)利要求3所述的基于LDA模型和PageRank算法建立特征接口有向圖的方法,其特征在于,步驟4)的具體方法如下:當(dāng)程序開發(fā)人員進(jìn)行特征匹配時(shí),將開發(fā)人員選擇的待開發(fā)項(xiàng)目的特征集合f與權(quán)利要求2中的最佳特征集合BestFi進(jìn)行匹配,匹配方法為:將特征集合f中的每一個(gè)詞依次匹配BestFi中對(duì)應(yīng)的詞語,當(dāng)匹配成功詞數(shù)占特征集合f總詞數(shù)的百分比大于等于50%時(shí),判定特征集合f與所述最佳特征集合BestFi匹配成功,并根據(jù)特征-接口有向圖中邊的指向?yàn)槌绦蜷_發(fā)人員推薦接口列表供程序開發(fā)人員自行選擇;當(dāng)程序開發(fā)人員選擇某個(gè)接口之后,根據(jù)權(quán)利要求3中的定位方式確定具體的接口,并為開發(fā)人員推薦該接口。
【文檔編號(hào)】G06F9/44GK103927177SQ201410156746
【公開日】2014年7月16日 申請(qǐng)日期:2014年4月18日 優(yōu)先權(quán)日:2014年4月18日
【發(fā)明者】孫小兵, 施偉, 李斌, 李云 申請(qǐng)人:揚(yáng)州大學(xué)