本發(fā)明提供一種基于lda的軟件故障專家系統(tǒng)的構(gòu)建方法,它涉及一種基于lda的軟件故障專家系統(tǒng)的實現(xiàn),屬于軟件可靠性、軟件故障診斷領(lǐng)域。
背景技術(shù):
::lda(latentdirichletallocation)即潛在狄利克雷分布,是一種非監(jiān)督機器學習技術(shù),可以用來識別大規(guī)模文檔集或語料庫中隱含的主題信息。目前,基于lda的技術(shù)已在文本挖掘、知識發(fā)現(xiàn)、話題跟蹤以及多文檔摘要等領(lǐng)域得到了廣泛應(yīng)用。例如,通過lda技術(shù)提取文檔的主題模型,并依此為依據(jù)建立文檔之間的相關(guān)性生成文檔的關(guān)系圖譜;通過lda技術(shù)對已知的被標記文檔內(nèi)容進行分析,進而推斷新文檔的標簽類別,實現(xiàn)互聯(lián)網(wǎng)文檔標簽推薦系統(tǒng)等。利用lda技術(shù),我們將提出一種軟件故障專家系統(tǒng)的構(gòu)建方法,該系統(tǒng)可以學習軟件故障的歷史數(shù)據(jù),建立對應(yīng)的故障屬性主題模型,當輸入故障癥狀后,系統(tǒng)利用癥狀信息建立癥狀主題模型,結(jié)合故障主題模型分析兩者之間潛在的語義聯(lián)系對故障案例進行關(guān)聯(lián)排序,最后將推理得到的排序結(jié)果提供給用戶作為故障診斷信息。該系統(tǒng)基于lda技術(shù)融合故障分析與故障處理等相關(guān)理論、方法和技術(shù)進行構(gòu)建,在提高軟件維護性的同時,達到提高軟件可靠性、安全性、可用性的目的。技術(shù)實現(xiàn)要素:(一)本發(fā)明目的:根據(jù)知識組織方式與推理機制的不同,專家系統(tǒng)可大致分為:基于規(guī)則的專家系統(tǒng)、基于模型的專家系統(tǒng)、基于模糊推理的專家系統(tǒng)、基于事例的診斷專家系統(tǒng)以及基于網(wǎng)絡(luò)的診斷專家系統(tǒng)等。盡管專家系統(tǒng)的種類很多,但這些專家系統(tǒng)并不能對故障間的潛在聯(lián)系進行分析來獲得故障推理結(jié)果。因此本發(fā)明將克服現(xiàn)有技術(shù)的不足,提供一種基于lda的軟件故障專家系統(tǒng)的構(gòu)建方法對上述問題進行解決。該系統(tǒng)利用“詞-主題-文檔”的三層貝葉斯概率網(wǎng)絡(luò)結(jié)構(gòu)分別對已有的歷史故障信息及待診斷的故障癥狀信息數(shù)據(jù)進行l(wèi)da建模,并對兩個模型間的主題相似性進行推理評分,從而獲得與待診斷故障最為匹配的診斷信息。可以看出基于lda的故障專家系統(tǒng)更加注重故障之間的主題關(guān)聯(lián),充分地挖掘故障信息的語義,為故障診斷領(lǐng)域提供了一種新的解決方法,并對現(xiàn)有的故障專家系統(tǒng)進行了創(chuàng)新。(二)技術(shù)方案本發(fā)明技術(shù)方案:一種基于lda的軟件故障專家系統(tǒng)的構(gòu)建方法,其步驟如下:步驟1、搜集大量與被診斷軟件相關(guān)的故障案例,篩選出合適的案例集。根據(jù)被診斷軟件所有可能發(fā)生的原因、現(xiàn)象以及其他故障屬性(如故障所在位置、故障嚴酷度等),對案例集中的案例逐條進行失效模式與影響分析即fmea(failuremodeandeffectanalysis)分析;步驟2、對fema形式案例集文本數(shù)據(jù)進行迭代,利用lda算法分別構(gòu)建故障屬性主題模型:故障現(xiàn)象主題模型、故障原因主題模型、故障措施主題模型;步驟3、針對待輸入的故障癥狀信息,結(jié)合lda算法構(gòu)建癥狀主題模型;步驟4、實現(xiàn)癥狀主題模型與故障屬性主題模型的語義關(guān)聯(lián)推理評分算法;步驟5、整合步驟2~4,完成推理子系統(tǒng)的構(gòu)建;步驟6、利用hadoop技術(shù)完成存儲子系統(tǒng)的構(gòu)建,實現(xiàn)對案例文本數(shù)據(jù)和lda主題模型數(shù)據(jù)存儲,以及推理評分數(shù)據(jù)存?。徊襟E7、基于springmvc框架,構(gòu)建服務(wù)子系統(tǒng),實現(xiàn)客戶端與后端的數(shù)據(jù)交互;步驟8、整合存儲子系統(tǒng)、推理子系統(tǒng)以及服務(wù)子系統(tǒng),完成專家系統(tǒng)的構(gòu)建。其中,在步驟1中所述的“fmea分析”,是指一種系統(tǒng)化的可靠性分析方法,它自下而上,通過對被診斷系統(tǒng)各組成部分潛在的各種故障模式及其對系統(tǒng)功能的影響分析,提出可能采取的預防改進措施,以提高產(chǎn)品的可靠性,它在保證產(chǎn)品可靠性方面起著重要的作用;其中,在步驟2中所述的“l(fā)da算法”,是指一種文檔主題生成模型方法,該方法可以用來識別大規(guī)模文檔集或語料庫中潛藏的主題信息。它采用了詞袋的方法,這種方法將每一篇文檔視為一個詞頻向量,將文本信息轉(zhuǎn)化為易于建模的數(shù)字信息,從而進行文本分析;其中,在步驟3中所述的“針對待輸入的故障癥狀信息,結(jié)合lda算法構(gòu)建癥狀主題模型”,其作法如下:使用基于向量的建模方法構(gòu)建癥狀主題模型,將故障癥狀表示為一個k維向量pu=<z1,z2,z3,z4…zk>。與故障案例的特征向量定義相同,pu表示故障癥狀的特征向量,k表示通過lda算法建模后的主題個數(shù),zk表示該故障癥狀在第k主題上的生成概率。需要注意的是,癥狀主題模型的生成方式與案例主題模型有所不同。癥狀主題模型無法直接從lda模型中生成,這是由于癥狀信息通常都是對故障現(xiàn)象的描述,不具備故障原因與故障措施等屬性信息。因此,需要聯(lián)合案例的故障屬性信息對故障癥狀主題模型進行構(gòu)建:首先定義故障屬性向量αi用于表示不同故障屬性對應(yīng)的評分權(quán)值,α1對應(yīng)故障現(xiàn)象的評分權(quán)值,α2對應(yīng)故障原因的評分權(quán)值,α3對應(yīng)故障措施的評分權(quán)值,該向量可以在新的故障屬性類型加入時被動態(tài)擴展。由此,故障癥狀對某個案例的故障屬性可描述為一個故障屬性向量cu,i=<c1,…,cα>,其中cα為該癥狀與第α故障屬性信息的關(guān)聯(lián)相似度,該值可通過計算文本與之對應(yīng)的主題概率分布求得。癥狀的故障屬性向量模型可以描述為:其中θk代表了文檔中第k個主題的比重,n表示該故障癥狀曾對比分析過的案例個數(shù)。上述公式使用了每一個被分析過的故障屬性向量乘以該屬性預先定義的權(quán)值αi,得到該癥狀信息在第k主題分量上的值zk,由此計算得出k維向量pu=<z1,z2,z3,z4…zk>,從而構(gòu)建故障癥狀主題模型;其中,在步驟4中所述的“實現(xiàn)癥狀主題模型與故障屬性主題模型的語義關(guān)聯(lián)推理評分算法”,其作法如下:該算法的核心即在已知語料庫下通過采樣算法來推算模型中的隱含變量過程,用于lda模型的采樣方法通常為吉布斯采樣,因此利用吉布斯采樣方法實現(xiàn)的推理評分算法如下:由此,便可以計算得出故障癥狀信息和每個故障案例的相似評分,系統(tǒng)可以根據(jù)評分獲取前n項案例提供給用戶作為故障診斷信息。其中,在步驟5中所述的“推理子系統(tǒng)”,它是指本發(fā)明構(gòu)建系統(tǒng)中,用于實現(xiàn)癥狀主題模型與故障屬性主題模型之間語義關(guān)聯(lián)推理評分的子系統(tǒng);其中,在步驟6中所述的“hadoop技術(shù)”,它是指由apache基金會組織所開發(fā)的一個分布式計算框架,其目的是在大量廉價的硬件設(shè)備組成的集群上進行大規(guī)模的并行處理,為應(yīng)用程序提供一套穩(wěn)定可靠的接口,構(gòu)建一個具有高可靠性和擴展能力的分布式系統(tǒng)。hadoop的優(yōu)點主要體現(xiàn)在擴展能力強,成本低,效率高以及免費和開源;其中,在步驟6中所述的“利用hadoop技術(shù)完成存儲子系統(tǒng)的構(gòu)建”,其作法如下:基于hadoop提供的分布式文件系統(tǒng)技術(shù)進行數(shù)據(jù)存取,本系統(tǒng)中所有的計算結(jié)果,包括推理評分算法產(chǎn)生的最終結(jié)果,以及算法產(chǎn)生的中間數(shù)據(jù),都將以二進制的向量形式保存在hadoop的分布式文件系統(tǒng)中。并且,案例數(shù)據(jù)的故障屬性文本,分詞后所有文本對應(yīng)的詞向量,lda算法生成的故障屬性主題模型及其對應(yīng)的主題向量和主題詞表,故障癥狀主題模型對應(yīng)的向量以及推理結(jié)果也都存儲在該分部是文件系統(tǒng)中。通過對本發(fā)明構(gòu)建系統(tǒng)中的文檔內(nèi)容數(shù)據(jù)、文檔詞條數(shù)據(jù)、詞典數(shù)據(jù)、文檔詞條向量、lda輸出模型、癥狀的故障屬性模型、癥狀主題模型以及診斷推理結(jié)果等數(shù)據(jù)進行結(jié)構(gòu)設(shè)計,利用這一存儲結(jié)構(gòu)進行集群搭建和環(huán)境配置,即可完成存儲子系統(tǒng)的構(gòu)建;其中,在步驟7中所述的“springmvc框架”,是一個開源的javaee的應(yīng)用框架,其關(guān)鍵特性是實現(xiàn)了基于javabean的控制反轉(zhuǎn)模式,使得應(yīng)用程序的模塊化管理更加容易。springmvc分離了代碼中的控制器、模型對象等角色,使得程序各個層次的組件更容易進行重用和定制。并且可以使用基于注解的方式在控制器上聲明資源的映射和參數(shù)的映射等信息;其中,在步驟7中所述的“基于springmvc框架,構(gòu)建服務(wù)子系統(tǒng)”,其作法如下:該子系統(tǒng)是與外部交互的接口,用于接收和返回外部的請求調(diào)用。服務(wù)子系統(tǒng)需要重點對輸入服務(wù)和內(nèi)容服務(wù)進行實現(xiàn),子系統(tǒng)框架其他部分的構(gòu)建并不用特別注意,因此在這里不再進行分析。其中輸入服務(wù)是指對用戶輸入的故障癥狀信息進行操作處理,內(nèi)容服務(wù)是指對案例文檔的以及推理結(jié)果的操作處理。對于輸入服務(wù),需要構(gòu)建對輸入數(shù)據(jù)操作的控制器symptomcontroller類,該控制器用來響應(yīng)用戶輸入請求。在symptomcontroller類中,需要實現(xiàn)addsymptom方法,這一方法可以將用戶輸入的文本信息添加至存儲子系統(tǒng)中,進一步交給推理子系統(tǒng)完成內(nèi)容建模和語義推理。對于內(nèi)容服務(wù)即系統(tǒng)相關(guān)數(shù)據(jù)的操作,是由控制器documentcontroller類來實現(xiàn)的,該控制器中包含:以分頁的方式獲取案例對象的方法getdocuments;向系統(tǒng)中添加案例對象的方法adddocument,adddocument方法會自動對創(chuàng)建的案例對象及故障屬性添加id值,并將該內(nèi)容添加到hdfs中;用于向客戶端提供推理結(jié)果的getrecommend方法,該方法會按評分由高到低的順序返回案例內(nèi)容;其中,在步驟8中所述的“整合存儲子系統(tǒng)、推理子系統(tǒng)以及服務(wù)子系統(tǒng)”,其作法如下:對子系統(tǒng)進行接口設(shè)計,實現(xiàn)子系統(tǒng)之間的連接,從而完成系統(tǒng)的整合工作。系統(tǒng)的整合有兩部分需要進行接口設(shè)計:服務(wù)-存儲子系統(tǒng)接口和推理-存儲子系統(tǒng)接口。這里,可以通過繼承hadoop的輔助類編寫入口程序?qū)崿F(xiàn)這兩個接口,其中hadoop的輔助類可以為子類提供讀取和解析配置數(shù)據(jù)的能力。繼承hadoop輔助類實現(xiàn)接口的優(yōu)點在于,當系統(tǒng)在子系統(tǒng)間進行數(shù)據(jù)處理任務(wù)時,入口程序不會對數(shù)據(jù)進行操作修改,會將處理任務(wù)分送給對應(yīng)的子系統(tǒng)模塊執(zhí)行。這樣,就可以利用繼承輔助類編寫的接口程序?qū)崿F(xiàn)三個子系統(tǒng)的連接,完成系統(tǒng)的整合。通過上述步驟,可以完成對基于lda的軟件故障專家系統(tǒng)的構(gòu)建,對于被診斷對象中的故障癥狀,通過建立癥狀主題模型,完成與故障屬性主題模型的語義關(guān)聯(lián)推理,獲取按推理評分排序的故障相關(guān)信息作為診斷結(jié)果,從而完成軟件故障診斷。本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于:目前,大部分專家系統(tǒng)對于歷史故障案例只能在文字層面上進行匹配檢索,并不能考慮到文字背后的語義關(guān)聯(lián)。對于沒有相同文字描述卻內(nèi)容相似的歷史故障數(shù)據(jù),這些專家系統(tǒng)并不能進行有效地識別。而本發(fā)明能夠充分挖掘故障間的語義關(guān)聯(lián),以此為依據(jù)進行推理,獲取與故障癥狀最為相似的故障數(shù)據(jù)作為診斷信息。同時,系統(tǒng)的診斷能力會隨著案例集的豐富而不斷提升,即系統(tǒng)具有自我完善能力。附圖說明圖1為本發(fā)明的總體步驟流程。圖2為本發(fā)明的推理評分算法流程。圖3為本發(fā)明的內(nèi)容建模流程。圖4為本發(fā)明的服務(wù)子系統(tǒng)架構(gòu)。圖5為本發(fā)明的系統(tǒng)整體邏輯架構(gòu)。圖中序號、符號、代號說明如下:圖1中的“步驟1~8”是本發(fā)明技術(shù)方案中對應(yīng)的步驟;圖3中的“l(fā)da”是潛在狄利克雷分布是構(gòu)建主題模型所使用的技術(shù);圖4中的“step1~8”是springmvc框架運行流程對應(yīng)的步驟;圖4中的“dispatcherservlet”是springmvc框架的前端控制器,客戶端發(fā)出的所有請求都經(jīng)由它進行統(tǒng)一分發(fā);圖4中的“handlermapping”是springmvc框架的處理器映射,用于完成客戶端請求到控制器controller的映射;圖4中的“symptomcontroller”是控制器中的一種,用于響應(yīng)用戶輸入的請求;圖4中的“documentcontroller”是控制器中的一種,用于響應(yīng)系統(tǒng)相關(guān)數(shù)據(jù)操作的請求;圖4中的“modelandview”是控制器處理完請求所返回的對象,該對象中通常包括模型與視圖的相關(guān)屬性;圖4中的“viewresolver”是springmvc框架的視圖解析器,用于把邏輯上的視圖名稱解析為視圖對象;圖5中的“hadoop”是構(gòu)建存儲子系統(tǒng)所采用的分布式計算框架;圖5中的“hdfs”是用于進行數(shù)據(jù)結(jié)構(gòu)設(shè)計的分布式文件系統(tǒng);圖5中的“map/reduce”是用于進行數(shù)據(jù)集并行運算的編程模型;具體實施方式為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖進行詳細描述。本發(fā)明提出了一種基于lda的軟件故障專家系統(tǒng)的構(gòu)建方法,利用該方法構(gòu)建的系統(tǒng)能夠?qū)收祥g的語義關(guān)聯(lián)信息進行充分挖掘,獲取與故障癥狀相似的故障信息。系統(tǒng)通過構(gòu)建主題模型,對歷史故障數(shù)據(jù)與癥狀數(shù)據(jù)進行語義關(guān)聯(lián)推理分析,從而獲得關(guān)聯(lián)程度最好的歷史故障數(shù)據(jù),作為與待診斷癥狀最匹配的故障診斷信息。本發(fā)明一種基于lda的軟件故障專家系統(tǒng)的構(gòu)建方法,如圖1所示,其具體構(gòu)建步驟如下:步驟一:搜集大量與被診斷軟件相關(guān)的故障案例,篩選出合適的故障案例組成案例集。根據(jù)被診斷軟件所有可能發(fā)生的原因、現(xiàn)象以及其他故障屬性(如故障所在位置、故障嚴酷度等),對案例集中的案例逐條進行fmea分析。這里,我們規(guī)定僅分析歸納出案例的故障現(xiàn)象,故障原因以及故障措施這三個屬性,即每條案例都是由這三部分構(gòu)成。這樣,我們就初步完成了歷史故障數(shù)據(jù)的處理;步驟二:利用基于lda的分析算法對完成fema處理的案例數(shù)據(jù)進行建模。系統(tǒng)通過lda算法在文檔和詞條之間建立基于主題的中間層,并用主題向量來描述歷史故障數(shù)據(jù)與待診斷故障癥狀的特征。這里,我們對fema形式案例集文本數(shù)據(jù)進行預處理然后進行迭代,分別為每條案例的故障現(xiàn)象屬性信息,故障原因?qū)傩孕畔⒁约肮收洗胧傩孕畔⑸蒶維向量qi=<z1,z2,z3,z4…zk>,其中qi表示故障屬性的特征向量,k表示通過lda建模后的主題個數(shù),zk表示該文檔在第k主題上的生成概率;步驟三:針對待輸入的故障癥狀信息,結(jié)合lda算法構(gòu)建癥狀主題模型。這里,我們使用基于向量的建模方法構(gòu)建癥狀主題模型,故障癥狀表示為一個k維向量pu=<z1,z2,z3,z4…zk>。與故障案例的特征向量定義相同,pu表示故障癥狀的特征向量,k表示通過lda算法建模后的主題個數(shù),zk表示該故障癥狀在第k主題上的生成概率。需要注意的是,癥狀主題模型的生成方式與案例主題模型有所不同。癥狀主題模型無法直接從lda模型中生成,這是由于癥狀信息通常都是對故障現(xiàn)象的描述,不具備故障原因與故障措施等屬性信息。但對于故障案例而言,其原因與解決措施的描述中,同樣包含對于故障現(xiàn)象相關(guān)信息的描述。這就意味著從歷史故障數(shù)據(jù)的故障原因與故障措施信息中,可以進行與現(xiàn)象信息關(guān)聯(lián)語義的挖掘工作。因此可以聯(lián)合故障屬性,區(qū)分不同屬性的評分權(quán)重,解決模型生成問題。首先定義故障屬性向量αi用于表示不同故障屬性對應(yīng)的評分權(quán)值,α1對應(yīng)故障現(xiàn)象的評分權(quán)值,α2對應(yīng)故障原因的評分權(quán)值,α3對應(yīng)故障措施的評分權(quán)值,該向量可以在新的故障屬性類型加入時被動態(tài)擴展。由此,故障癥狀對某個案例的故障屬性可描述為一個故障屬性向量cu,i=<c1,…,cα>,其中cα為該癥狀與第α故障屬性信息的關(guān)聯(lián)相似度,該值可通過計算文本與之對應(yīng)的主題概率分布求得。癥狀的故障屬性向量模型可以描述為:其中θk代表了文檔中第k個主題的比重,n表示該故障癥狀曾對比分析過的案例個數(shù)。上述公式使用了每一個被分析過的故障屬性向量乘以該屬性預先定義的權(quán)值αi,得到該癥狀信息在第k主題分量上的值zk。進一步即可計算得出k維向量pu=<z1,z2,z3,z4…zk>;步驟四:利用fmea案例數(shù)據(jù)與故障癥狀信息的模型向量,設(shè)計模型推理評分算法,該算法的核心即在已知語料庫下通過采樣算法來推算模型中的隱含變量過程,用于lda模型的采樣方法通常為吉布斯采樣,本發(fā)明利用吉布斯采樣方法實現(xiàn)推理評分算法。其具體操作如下:由此,便可以計算得出故障癥狀信息和每個故障案例的相似評分,系統(tǒng)可以根據(jù)該評分獲取前n項提供給用戶,該算法的流程如圖2所示;步驟五:本發(fā)明構(gòu)建的系統(tǒng)由三部分組成,即存儲子系統(tǒng)、推理子系統(tǒng)以及服務(wù)子系統(tǒng)。通過上述步驟中,完成了推理子系統(tǒng)的構(gòu)建,可以發(fā)現(xiàn)整體構(gòu)建流程可分為兩階段:內(nèi)容建模與語義推理。在內(nèi)容建模階段,對全部的文檔內(nèi)容數(shù)據(jù)進行遍歷,對文檔內(nèi)容進行分詞處理,生成詞條的列表,以該詞條列表作為輸入,運行l(wèi)da算法生成所有文檔內(nèi)容的主題向量以及主題對應(yīng)的詞條概率分布;在語義推理階段,聯(lián)合故障屬性,分配不同屬性的評分權(quán)重,計算故障癥狀主題模型,其構(gòu)建流程如圖3所示。因此,整個推理過程的具體步驟如下:1)系統(tǒng)讀入文本內(nèi)容數(shù)據(jù)。遍歷所有文本,使用分詞器對文本中的內(nèi)容進行分詞,為每一篇文本生成詞袋向量<w1,w2,w3…wn>;2)使用詞袋向量作為輸入,調(diào)用lda算法,生成所有文檔的主題分類矩陣和故障屬性模型矩陣。設(shè)分類數(shù)量k,其中表示主題的分類矩陣為:其中,該矩陣的每一行向量表示一個主題,向量的每一個分向量t代表該主題對應(yīng)詞條的生成概率。另一個生成的故障屬性模型矩陣為:其中,矩陣的每一行向量表示一個故障屬性,由k個分量組成,每一個分量表示該故障屬性對應(yīng)的主題特征;3)利用故障癥狀的故障屬性矩陣和上一步得到的主題向量,計算出故障癥狀以k個主題維度構(gòu)成的特征向量;4)計算故障屬性主題模型qi=<z1,z2,z3…zk>和故障癥狀主題模型pu=<z1,z2,z3…zk>,利用相似評分公式獲得故障癥狀與每個故障案例的相似評分,取前n個結(jié)果提供給用戶最為故障診斷信息。通過以上步驟,即可實現(xiàn)系統(tǒng)的整個推理流程,利用內(nèi)容建模模塊和語義推理模塊實現(xiàn)子系統(tǒng)的構(gòu)建,該子系統(tǒng)是本系統(tǒng)的核心,實現(xiàn)了所有的推理算法。在本系統(tǒng)中,推理子系統(tǒng)通過與存儲子系統(tǒng)的交互,完成文本數(shù)據(jù)的處理及推理結(jié)果的生成;步驟六:存儲子系統(tǒng)是整個系統(tǒng)的基礎(chǔ)。在本發(fā)明中,將利用hadoop技術(shù)構(gòu)建存儲子系統(tǒng)。該子系統(tǒng)采用hadoop的hdfs進行數(shù)據(jù)存取,在本系統(tǒng)中所有的計算結(jié)果,包括推理評分算法產(chǎn)生的最終結(jié)果,以及算法產(chǎn)生的中間數(shù)據(jù),都將以二進制的向量形式保存在hdfs中。并且,案例數(shù)據(jù)的故障屬性文本,分詞后所有文本對應(yīng)的詞向量,lda算法生成的故障屬性主題模型及其對應(yīng)的主題向量和主題詞表,故障癥狀主題模型對應(yīng)的向量以及推理結(jié)果也都存儲在hdfs中。本發(fā)明對基于hdfs文本數(shù)據(jù)結(jié)構(gòu)進行了設(shè)計,其具體數(shù)據(jù)結(jié)構(gòu)如下:1)文檔內(nèi)容數(shù)據(jù):該文件用于保存文檔的原始內(nèi)容。這些內(nèi)容來源于案例的故障屬性信息。文件中的每一行代表一篇文檔,其中第一個值為文檔的id;第二個值是純文本內(nèi)容。2)文檔詞條數(shù)據(jù):該文件用于保存文檔經(jīng)過分詞處理后的詞條。這些內(nèi)容經(jīng)過了分詞器的分詞,除去了停用詞,只保留了關(guān)鍵的名詞和動詞。文件的每一行代表一篇文檔,其中第一個值為文檔的id,第二個值是由空格分割的詞條列表。3)詞典數(shù)據(jù)該文件保存了整個語料庫中的詞典,該詞典維護了詞條和維度之間的對應(yīng)關(guān)系。文件的每一行代表一個詞條,第一個int類型值的作用是標示該詞條的索引,第二個text類型的值是詞條對應(yīng)的字符串。4)文檔詞條向量該文件用于保存文檔經(jīng)過詞典處理后的詞條向量。第一個text類型的值對應(yīng)文檔的id,第二個值由一個mapwritable構(gòu)成,該映射中的鍵表示了詞條在詞典中的索引位置,值表示了這個值在文檔中出現(xiàn)的次數(shù)。5)lda輸出模型該文件是lda算法產(chǎn)生的一系列文件,這些文件保存了在lda算法執(zhí)行過程中每一輪迭代之后產(chǎn)生的每一個主題對應(yīng)的詞條生成概率。每一行的第一個值對應(yīng)一個主題的一個詞條位置,例如(1,0)表示第0個主題生成第0個詞條的概率,第二個值代表了生成概率。6)癥狀的故障屬性向量該文件用于保存故障癥狀與案例故障屬性信息的文本相似度。每一行為故障癥狀與一條故障屬性信息的文本相似度,第一個值是存儲了文本的id,第二個值存儲了相似度數(shù)值。7)癥狀主題向量該文件表示了最終生成的癥狀主題模型向量。其中每一行代表了一個故障癥狀,第一個值為故障癥狀的id,第二個值為一個mapwritable,其中的key對應(yīng)主題的id,值對應(yīng)了癥狀對這個主題的語義關(guān)聯(lián)度。8)診斷推理結(jié)果該文件用于保存最終的推理評分結(jié)果,這些結(jié)果在推理子系統(tǒng)計算完成之后寫入。其中每一行代表一個評分結(jié)果,第一個值是故障案例的id,第二個值是該故障案例與故障癥狀的關(guān)聯(lián)相似度評分結(jié)果。以上是基于hdfs的數(shù)據(jù)結(jié)構(gòu)設(shè)計。在完成hadoop集群搭建與環(huán)境配置等相關(guān)工作后,利用這一存儲結(jié)構(gòu)完成存儲子系統(tǒng)的構(gòu)建;步驟七:在本發(fā)明中,將利用springmvc框架完成服務(wù)子系統(tǒng)的構(gòu)建,這一子系統(tǒng)是與外部交互的接口,用于接收和返回外部的請求調(diào)用。服務(wù)子系統(tǒng)需要重點對輸入服務(wù)和內(nèi)容服務(wù)進行實現(xiàn),其中輸入服務(wù)是指對用戶輸入的故障癥狀信息進行操作處理,內(nèi)容服務(wù)是指對案例文檔的以及推理結(jié)果的操作處理。對于輸入服務(wù),需要構(gòu)建對輸入數(shù)據(jù)操作的控制器symptomcontroller類,該控制器用來響應(yīng)用戶輸入請求。在symptomcontroller類中,需要實現(xiàn)addsymptom方法,這一方法可以將用戶輸入的文本信息添加至存儲子系統(tǒng)中,進一步交給推理子系統(tǒng)完成內(nèi)容建模和語義推理。對于內(nèi)容服務(wù)即系統(tǒng)相關(guān)數(shù)據(jù)的操作,是由控制器documentcontroller類來實現(xiàn)的,該控制器中包含:以分頁的方式獲取案例對象的方法getdocuments;向系統(tǒng)中添加案例對象的方法adddocument,adddocument方法會自動對創(chuàng)建的案例對象及故障屬性添加id值,并將該內(nèi)容添加到hdfs中;用于向客戶端提供推理結(jié)果的getrecommend方法,該方法會按評分由高到低的順序返回案例內(nèi)容。springmvc框架其他部分的構(gòu)建并不用特別注意,因此在這里不再進行分析,基于springmvc的服務(wù)子系統(tǒng)的架構(gòu)如圖4所示,該框架具體的執(zhí)行流程也在圖中詳細標明;步驟八:通過上述步驟,分別完成了推理子系統(tǒng)、存儲子系統(tǒng)以及服務(wù)子系統(tǒng)的構(gòu)建,整合后的系統(tǒng)整體邏輯架構(gòu)如圖5所示。因此需要進行接口設(shè)計對子系統(tǒng)進行連接,完成系統(tǒng)的整合工作。參照系統(tǒng)的整體邏輯架構(gòu)圖進行分析,有兩部分需要進行接口設(shè)計:服務(wù)-存儲子系統(tǒng)接口和推理-存儲子系統(tǒng)接口。這里,可以通過繼承hadoop的輔助類configured編寫入口程序?qū)崿F(xiàn)這兩個接口,其中configured類的作用是為子類提供讀取和解析配置數(shù)據(jù)的能力。繼承configured類實現(xiàn)接口的優(yōu)點在于,當系統(tǒng)在子系統(tǒng)間進行數(shù)據(jù)處理任務(wù)時,入口程序不會對數(shù)據(jù)進行操作修改,會將處理任務(wù)分送給對應(yīng)的子系統(tǒng)模塊執(zhí)行。這樣,就可以利用繼承configured類編寫的接口程序?qū)崿F(xiàn)三個子系統(tǒng)的連接,完成系統(tǒng)的整合。其中,在步驟四中所述的吉布斯采樣是一種采樣方法,該方法利用每個變量的條件分布實現(xiàn)從聯(lián)合分布中抽樣,在每個變量以固定次序從其他變量的條件分布中進行抽樣,構(gòu)造收斂于目標概率分布的馬爾科夫鏈,從鏈中抽取被認為接近該概率分布值的樣本。吉布斯采樣的基本過程是:1)隨機初始化:對語料庫中每篇文檔中的每個詞,隨機賦予一個主題;2)重新掃描語料庫,對每個詞,重新采樣它的主題,在語料庫中進行更新;3)重復以上語料庫的重新采樣過程,直到采樣收斂;4)統(tǒng)計語料庫中的頻率矩陣,該矩陣即為所需模型;在步驟六中所述的hdfs(hadoopdistributedfilesystem),即hadoop分布式文件系統(tǒng),hdfs最開始是作為apachenutch搜索引擎項目的基礎(chǔ)架構(gòu)而開發(fā)的,目前是apachehadoopcore項目的一部分。hdfs是適合運行在通用硬件上的分布式文件系統(tǒng),具有高度容錯性特點,該系統(tǒng)適合部署在廉價的機器上,能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用;在步驟六中所述的text,intwritable,doublewritable以及mapwritable是hadoop運行時的基本數(shù)據(jù)類型。這四個數(shù)據(jù)類型均來源于hadoop的核心類writable,一般來說,所有存儲在hdfs里的數(shù)據(jù)都需要使用writable來實現(xiàn);在步驟六中所述的keyvalue,sequencefile是hadoop中常使用的文件存儲結(jié)構(gòu)。在本系統(tǒng)中,hadoop利用這兩種結(jié)構(gòu)實現(xiàn)數(shù)據(jù)的輸入輸出;通過上述步驟,可以完成對基于lda的軟件故障專家系統(tǒng)的構(gòu)建,這一系統(tǒng)通過對故障歷史數(shù)據(jù)與故障癥狀進行l(wèi)da建模與關(guān)聯(lián)語義分析,完成故障癥狀與案例集的主題相似性推理評分,最后按評分對案例集排序作為故障診斷信息提供給用戶,完成軟件故障診斷。本發(fā)明未詳細闡述部分屬于本領(lǐng)域公知技術(shù)。以上所述,僅為本發(fā)明部分具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本領(lǐng)域的人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。當前第1頁12當前第1頁12