徐天宇,曹 瑋,蘇藝博,王艷嬌
(中國船舶集團有限公司第八研究院,南京 211153)
雷達軟件的特點是任務(wù)場景復雜、功能集成度高、數(shù)據(jù)交互頻繁,對接口的要求是吞吐量、速率和實時性等,對人機交互界面的要求是友好性和易用性等。目前在裝備中已大量使用C/C++和FPGA語言代碼,且代碼量規(guī)模較大,導致雷達軟件缺陷組合復雜,如何有效提高雷達軟件缺陷預(yù)測和識別,有助于提高對軟件缺陷分布規(guī)律和現(xiàn)象的認知,成為影響雷達軟件測試設(shè)計工作質(zhì)量和效率的關(guān)鍵。
與一般軟件不同,雷達軟件缺陷具有比較復雜的領(lǐng)域特征,難以使用當前可用的文本分類技術(shù)或通用主題獲取模型,例如通用的隱含狄利克雷分布(Latent Dirichlet Allocation,LDA)主題模型,對雷達軟件缺陷數(shù)據(jù)執(zhí)行精確的文本分類或主題獲取[1]。同時,雷達用戶對系統(tǒng)的整體功能、性能等質(zhì)量因素要求較高,而配置項和系統(tǒng)級軟件測試更關(guān)注軟件需求和系統(tǒng)需求是否符合要求,以及軟件任務(wù)的可靠性和用戶體驗的潛在需求,并且需要大量人力資源及其他資源用于配置項級和系統(tǒng)級的軟件合格性測試。上述多個原因直接影響雷達缺陷數(shù)據(jù)分類的準確性和召回率。
為了提升雷達軟件測試效率,減少測試工作量,本文研究并改進現(xiàn)有軟件缺陷分類算法,提出的算法適用于配置項級測試和系統(tǒng)級測試的雷達軟件缺陷分類。
支持向量機(Support Vector Machine,SVM)按監(jiān)督學習方式對數(shù)據(jù)進行二元分類,可表示為在特征空間內(nèi)使分類間隔最大的線性分類器,其學習目標是使分類間隔最大化,可以化為求解凸二次規(guī)劃的問題。當訓練數(shù)據(jù)線性可分時,利用間隔最大化求最優(yōu)分類超平面,以便所有數(shù)據(jù)樣本在平面內(nèi)可以被正確劃分開[2]。圖1為數(shù)據(jù)線性可分情況下SVM分類示意。
圖1 SVM分類示意圖
LDA主題模型是一種文檔主題生成模型,包含文本、主題和關(guān)鍵詞3個層次,也可稱為三層貝葉斯模型。通過LDA建模,可以將文本映射到主題空間上,從而對其進行主題分類和判斷相似度等操作[3]。LDA主題模型文本分類原理如圖2所示。
圖2 基于LDA主題模型的分類示意圖
首先分析雷達領(lǐng)域相關(guān)標準、系統(tǒng)需求、軟件需求、軟件設(shè)計、測試用例、測試記錄、測試問題報告單等語料集,并根據(jù)雷達領(lǐng)域系統(tǒng)和軟件開發(fā)專家的經(jīng)驗確定每個術(shù)語的同義詞,從多個角度建立“雷達領(lǐng)域術(shù)語詞典”:
(1)雷達領(lǐng)域?qū)I(yè)術(shù)語集合:與雷達系統(tǒng)、配置項、軟件等相關(guān)的專業(yè)術(shù)語;
(2)雷達領(lǐng)域停用詞集合:在公共停用詞列表的基礎(chǔ)上,去掉在雷達測試領(lǐng)域中與主題無關(guān)的詞,如調(diào)試助手、軟件、人員、數(shù)據(jù)等;
(3)雷達領(lǐng)域同義詞集合:雷達專業(yè)術(shù)語的同義詞集合,如“靜默區(qū)”的同義詞為“沉默區(qū)”等;
(4)典型雷達軟件異常缺陷集合:例如目標丟失、航跡點溢出、目標批號不同步等;
(5)雷達軟件需求特征集合:例如扇區(qū)劃分、航跡、回波接收任務(wù)、主被動切換等。
基于雷達領(lǐng)域術(shù)語詞典和逆向最大匹配算法的軟件缺陷文本分詞方法如圖3所示。
圖3 軟件缺陷文本分詞方法流程圖
借助LDA模型對語料庫(即軟件缺陷數(shù)據(jù)庫)D中的任意文檔(即軟件缺陷數(shù)據(jù))d建模,生成主題概率分布:
(1)
得到聯(lián)合概率公式:
針對式(1)和式(2)中的變量說明如下:假設(shè)雷達缺陷數(shù)據(jù)庫有D個缺陷數(shù)據(jù)集合,總字數(shù)為Nd、wd,n,n表示d數(shù)據(jù)中的第n個字。缺陷數(shù)據(jù)由k個主題組成,則每個主題下的主題詞概率分布фk服從以β為參數(shù)的狄利克雷分布;θd是文檔主題分布,每個缺陷數(shù)據(jù)對應(yīng)不同的主題分布,服從狄利克雷分布,以α為參數(shù);Zd,n表示缺陷數(shù)據(jù)d中主題和關(guān)鍵詞之間的指定分布,服從多項式分布,以θz為參數(shù)。
根據(jù)式(1)、式(2)以及相應(yīng)變量,基于LDA模型的雷達軟件缺陷的獲取過程描述如下[4]:
(1)對于每個缺陷數(shù)據(jù)d∈D,根據(jù)θd~Dir(α)(即θd服從狄利克雷分布,以α為參數(shù)),得到多項式分布參數(shù)θd;
(2)對于每個主題z∈k,根據(jù)θd~Dir(α),得到多項式分布參數(shù)θd;
(3)對于缺陷數(shù)據(jù)d中的第i個字Wd,i:
·根據(jù)多項式分布Zd,i~Mult(θd),得到缺陷主題Zd,i;
·根據(jù)多項式分布Wd,i~Mult(θz),得到缺陷關(guān)鍵詞Wd,i。
傳統(tǒng)的LDA模型沒有考慮領(lǐng)域上下文中的關(guān)鍵詞權(quán)重信息,且主題分配偏向高頻關(guān)鍵詞所屬的主題。在許多情況下,具有強大領(lǐng)域背景的重要術(shù)語,如雷達軟件需求,可能不會經(jīng)常出現(xiàn),因此很難成為主題關(guān)鍵字的輸出。通過構(gòu)建基于融合雷達軟件需求特征的改進LDA主題模型,本文提升了描述雷達軟件需求關(guān)鍵詞的權(quán)重和文本長度,具體實現(xiàn)如下:
步驟1:提升關(guān)鍵詞的詞頻權(quán)重
針對原始缺陷數(shù)據(jù)集D={d1,d2,…,dn}中的分詞結(jié)果,查找描述雷達軟件。
需求的關(guān)鍵詞V={v1,v2,…,vs}(V∈D),例如功能需求、性能參數(shù)、接口名稱、接口類型、工作狀態(tài)等,同時提升這些關(guān)鍵詞的詞頻權(quán)重。
步驟2:擴充軟件缺陷數(shù)據(jù)集
針對雷達軟件需求關(guān)鍵詞V,為其中的每個關(guān)鍵詞vi,i=1~s匹配相關(guān)的需求信息,例如針對某需求vi,可將其功能需求、性能參數(shù)、接口名稱、接口類型、工作狀態(tài)等文本信息自動添加到原始缺陷數(shù)據(jù)集中,形成擴充數(shù)據(jù)集V′={v1,v2,…,vs,vs+1,vs+2,…,VS},最終擴充軟件缺陷數(shù)據(jù)集D′=D∪V′ (軟件缺陷數(shù)據(jù)集的長度為S+n)。
步驟3:循環(huán)迭代計算主題分布和主題關(guān)鍵詞分布
對經(jīng)過擴充的雷達軟件缺陷數(shù)據(jù)集D′,構(gòu)造概率向量模型:
(θ1×(φ11,…,φ1,S+n),…,θz×(φz1,…,φz,S+n),
θn×(φS1,…,φS,S+n))
(3)
因此,構(gòu)造的概率向量模型為n×S維。這種擴充后的軟件缺陷數(shù)據(jù)集合既保留了LDA主題模型降維降噪的效果,也融合了雷達軟件需求特征,具有更好的語義可解釋性[5]。
為了獲取上述模型中的關(guān)鍵詞概率分布,須估算隱含參數(shù)θ與φ。本文借助Gibbs抽樣方法,結(jié)合擴充后的軟件缺陷數(shù)據(jù)集合,獲得θ與φ的估計值。θ與φ的估算過程可以看作軟件缺陷數(shù)據(jù)文本生成的逆過程,即在給定軟件缺陷數(shù)據(jù)集的情況下,通過參數(shù)估計得到隱含參數(shù)的估計值。
Gibbs抽樣在于確定每個關(guān)鍵詞的主題,隱含主題參數(shù)可以通過統(tǒng)計主題頻數(shù)來獲得。假定在排除當前關(guān)鍵詞主題分配的情況下,根據(jù)其他詞的主題分配估計當前詞分配各個主題的概率[6],公式如下:
(4)
假定每個關(guān)鍵詞的主題被確定,則可以按照下式估算θ與φ:
(5)
(6)
式中,θm,k為缺陷數(shù)據(jù)m中主題k的概率;φk,t為主題k中關(guān)鍵詞t的概率。
循環(huán)迭代計算軟件缺陷數(shù)據(jù)m的主題分布θ以及主題關(guān)鍵詞分布φ。
利用雷達領(lǐng)域術(shù)語詞典的軟件缺陷文本分詞算法,并借助雷達領(lǐng)域術(shù)語詞典,提取文本中的單詞。對雷達軟件缺陷數(shù)據(jù)集D中的每項軟件缺陷數(shù)據(jù)di,i=1~N進行預(yù)處理,獲得N個軟件缺陷數(shù)據(jù)的文本分詞向量集合Ds=ds1,ds2,…,dsN;然后根據(jù)2.3節(jié)確定隱含主題的個數(shù)k(k值可以預(yù)先設(shè)置,k值越大,實驗產(chǎn)生的結(jié)果信息越多,主題就越發(fā)散;k值越小,主題越收斂),方法如圖4所示。
圖4 確定k值方法流程
結(jié)合雷達軟件測試領(lǐng)域應(yīng)用場景,根據(jù)雷達軟件項目中功能數(shù)量、性能數(shù)量、接口數(shù)量等需求信息和測試類型個數(shù)等,初步確定預(yù)期隱含主題個數(shù)k,通過多次實驗調(diào)參,并根據(jù)專家經(jīng)驗采用最優(yōu)密度模型等方法,設(shè)置較為合理的k值。由于各型號雷達軟件具有相似性,可根據(jù)各型號雷達軟件提前確定k值。
將軟件缺陷數(shù)據(jù)的文本分詞向量集合Ds=ds1,ds2,…,dsN以及預(yù)期的隱含主題個數(shù)k,代入融合雷達軟件需求特征的改進LDA主題模型中進行模擬訓練[7],得到主題模型個數(shù)k,記為DM=dM1,dM2,…,dMK。每個主題模型DMj,j=1~k都由s個關(guān)鍵詞組成,即關(guān)鍵詞向量集合為DMj={dmj1,…,dmjk},dmjk∈Ds。
在所生成的雷達軟件缺陷數(shù)據(jù)的k個主題模型基礎(chǔ)上,借助Gibbs抽樣方法,采用JS散度,計算每項軟件缺陷數(shù)據(jù)文本分詞向量dsi,與每個主題模型DMj之間的主題相似度因子。Gibbs抽樣方法可以估算軟件缺陷數(shù)據(jù)集D中任意缺陷數(shù)據(jù)dsi的主題概率分布向量,采用JS散度和KL散度計算軟件缺陷數(shù)據(jù)的主題相似度[8]。因此,得到面向雷達軟件缺陷數(shù)據(jù)與主題模型的相似度因子LS的計算式為
(7)
式中,DKL為KL散度,且
(8)
針對每項缺陷數(shù)據(jù)dsi,分別計算其與每個主題模型DMj的相似度因子LS,若LS的取值超出閾值,則可判定該項缺陷數(shù)據(jù)dsi大概率屬于該主題模型DMj,即缺陷數(shù)據(jù)dsi的從屬主題模型。重復上述相似度因子計算和分析過程,對每項缺陷數(shù)據(jù)dsi都能找到相應(yīng)的從屬主題模型DMj,也可以稱為缺陷數(shù)據(jù)dsi從屬與主題模型DMj。
最后,若m,m≤k個主題模型下有屬于自己的缺陷數(shù)據(jù)集,雷達軟件缺陷數(shù)據(jù)分類完成,即將雷達軟件缺陷數(shù)據(jù)D分為m類,對應(yīng)m個主題模型。整個流程如圖5所示。
圖5 基于主題相似因子的軟件缺陷分類算法流程
本實驗選用某型雷達顯控軟件的90項測試問題報告單,預(yù)先按照各類測試問題報告單所屬功能,人工將其分為9類,形成軟件缺陷標準分類集合,如圖6所示。
圖6 軟件缺陷標準分類集合流程圖
對比選用的缺陷數(shù)據(jù)分類算法包括:傳統(tǒng)LDA主題模型(記為LDA)、本文提出的融合雷達軟件需求特征的改進LDA主題模型(記為I-LDA)以及主流的支持向量機的文本分類算法(記為SVM)。
以下3個主要指標用于評價雷達軟件缺陷數(shù)據(jù)分類算法的性能:
(1)分類精確率P=(算法準確實現(xiàn)的軟件缺陷分類數(shù))/(算法實現(xiàn)的所有軟件缺陷分類數(shù))*100%;
(2)分類召回率R=(算法準確實現(xiàn)的軟件缺陷分類數(shù))/(缺陷數(shù)據(jù)庫中實際的軟件缺陷分類數(shù))*100%;
(3)綜合指標F1=2PR/(P+R)。
當實際評估一個分類算法的性能時,應(yīng)同時考慮P和R,但同時要比較兩個數(shù)值,很難做到一目了然。作為P和R的調(diào)和平均,綜合指標F1值可以對二者進行綜合評價,最終利用F1值并結(jié)合P值和R值對分類結(jié)果進行效果評估[9]。
采用Python語言在Win7操作系統(tǒng)下實現(xiàn)改進LDA主題模型。針對LDA主題模型的主要參數(shù)設(shè)置如下:采用Gibbs抽樣方法進行參數(shù)估計,雷達軟件缺陷數(shù)據(jù)的訓練集和測試集比例設(shè)置為5:1,文檔主題概率分布參數(shù)α為0.1,主題關(guān)鍵詞概率分布參數(shù)β設(shè)置為0.01,每個主題下的關(guān)鍵詞個數(shù)設(shè)置為10。
(1)步驟1:設(shè)置改進LDA主題模型的預(yù)期主題個數(shù)K
在測試問題標準分類集合中,已人工將其分為9類,所以設(shè)置LDA和I-LDA兩個主題模型的預(yù)期主題個數(shù)K為9。
(2)步驟2:雷達軟件缺陷數(shù)據(jù)文本分詞
借助本文提出的“基于雷達領(lǐng)域術(shù)語詞典的缺陷文本分詞”算法,對90項測試問題報告單的缺陷數(shù)據(jù)進行分詞。
(3)步驟3:基于3種模型算法訓練的分類過程
將LDA、I-LDA和SVM等3種模型分類算法,對90項測試問題報告單的缺陷數(shù)據(jù)分詞集合進行模擬訓練,形成各自對應(yīng)的分類結(jié)果。以I-LDA模型算法為例,其軟件缺陷數(shù)據(jù)的分類結(jié)果如下:
在90項缺陷數(shù)據(jù)中有6項數(shù)據(jù)(如表1所示,原始數(shù)據(jù)文本較長,做了一定簡化)與“初始化”功能相關(guān)。I-LDA模型將這6項數(shù)據(jù)歸為同一個主題模型S。
表1 雷達軟件初始化功能的6項缺陷文本
主題模型S:(0.046*“接收”+0.035*“上電初始化”+0.035*“站點”+0.029*“配置文件”+0.028*“標識”+0.025*“雷達站A”+0.025*“雷達站B”+0.024*“目標”+0.024*“讀取”+0.022*“過程”)。
在主題模型S包含的關(guān)鍵詞集合中,與初始化功能的描述比較接近,例如“上電初始化”、“接收”、“配置文件”等,因此將這6項初始化缺陷數(shù)據(jù)歸為主題模型S符合預(yù)期。在標準分類集中,也是將這6項缺陷數(shù)據(jù)歸為同一類,屬于“初始化”功能。
(4)步驟4:實驗結(jié)果分類比對和分析
根據(jù)3種模型分類算法對90項軟件缺陷數(shù)據(jù)進行分類實驗,并計算3種指標P、R和F1,結(jié)果如表2所示。
表2 貝葉斯網(wǎng)絡(luò)原因變量集合C示例
可以看出,I-LDA算法的分類效果比其他兩種算法有明顯提升,即I-LDA性能最優(yōu)。在步驟(3)中,I-LDA分類結(jié)果表明其與標準分類集一致。相反,LDA算法的分類結(jié)果將第4個數(shù)據(jù)項分類到其他模型中,而不是有效的分類結(jié)果中,這是因為第4個數(shù)據(jù)項中沒有出現(xiàn)“開機,初始化”字樣,而“默認工作模式”的接口數(shù)據(jù)屬于“開機初始化”功能;而在I-LDA算法中,“工作模式”和“開機初始化”自動關(guān)聯(lián)在一起,通過修改相似度因子LS的閾值,增加了“工作模式”在分類中的權(quán)重,從而獲得準確的分類結(jié)果。
本文提出一種改進LDA主題模型的雷達軟件缺陷分類算法:基于雷達領(lǐng)域術(shù)語詞典,準確實現(xiàn)軟件缺陷文本分詞;依據(jù)雷達軟件需求特征信息,構(gòu)建改進的LDA主題模型;在融合雷達需求特征的主題后,如功能需求、性能參數(shù)、接口名稱、接口類型、工作狀態(tài)等,提高獲取主題的精度;基于獲得的主題模型實現(xiàn)了改進LDA主題模型的雷達軟件缺陷數(shù)據(jù)分類;針對某型雷達顯控軟件進行算法實驗,本文算法在綜合指標F1上相比于通用LDA主題模型分類算法提高了24%,證明了其準確度和有效性。通過將軟件缺陷問題報告從傳統(tǒng)的高維單詞空間映射到低維主題空間,根據(jù)文本相似度進行數(shù)據(jù)分類,從而降低了待處理空間的維度,并提高了算法執(zhí)行效率和準確性,減輕了人工分類缺陷數(shù)據(jù)的工作量和重復性,進而提升了雷達軟件測試設(shè)計工作的質(zhì)量和效率。