本發(fā)明涉及一種軟件配置代碼制品的層次分類方法,尤其涉及一種面向多種軟件配置工具的大量可重用腳本代碼的層次化分類體系構(gòu)造和基于該分類體系的配置代碼制品的層次化分類,屬于計(jì)算機(jī)軟件技術(shù)領(lǐng)域。
背景技術(shù):
配置管理工具(Configuration Management Tool,CMT)是實(shí)現(xiàn)開發(fā)運(yùn)維一體化(Development and Operations,DevOps)的重要支撐工具,當(dāng)前主流的CMT采用代碼即基礎(chǔ)設(shè)施(Infrastructure as Code,IaC)的方式,通過代碼來描述目標(biāo)系統(tǒng)配置,實(shí)現(xiàn)自動(dòng)化的系統(tǒng)安裝和配置,從而滿足DevOps所倡導(dǎo)的持續(xù)交付、快速部署和高效運(yùn)維。基于此,使用CMT已成為運(yùn)維管理領(lǐng)域的主流趨勢。軟件配置代碼制品(以下簡稱CMT制品)是CMT工具用以安裝、配置和管理特定的軟件系統(tǒng)的可復(fù)用執(zhí)行腳本。在開源技術(shù)社區(qū)快速發(fā)展的背景下,CMT社區(qū)積累了大量的、并且持續(xù)快速增長的CMT制品,例如,Chef、Puppet、Ansible三個(gè)CMT社區(qū)已有4200多用戶,貢獻(xiàn)超過14000個(gè)CMT制品。
但是,大量的CMT制品給用戶如何正確選擇和使用帶來了困難。僅僅基于制品列表和關(guān)鍵字搜索用戶難以得到準(zhǔn)確的結(jié)果,仍要花費(fèi)大量時(shí)間對搜索結(jié)果進(jìn)行瀏覽和細(xì)化。因此,軟件運(yùn)維管理領(lǐng)域迫切需要一種CMT制品的自動(dòng)化層次分類機(jī)制,以滿足用戶快速檢索和準(zhǔn)確定位目標(biāo)制品的需求。層次化分類將大規(guī)模數(shù)據(jù)按照特征逐級劃分,細(xì)化范圍,將層次分類應(yīng)用于CMT制品,不僅能提高檢索效率和準(zhǔn)確度,還能夠構(gòu)建腳本制品間層次關(guān)聯(lián)關(guān)系,有助于腳本制品的維護(hù)管理,提高CMT制品的利用率。
當(dāng)前面向CMT制品的分類仍然需要人工進(jìn)行,缺乏高效的分類和檢索體系。同時(shí),CMT制品的源代碼、API信息等受領(lǐng)域特定語言限制難以抽取有效信息。因此本發(fā)明通過整合多個(gè)CMT制品資源庫,分析CMT制品在線非結(jié)構(gòu)化描述文檔,實(shí)現(xiàn)CMT制品的層次分類。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)解決問題:克服現(xiàn)有技術(shù)的不足,提供一種軟件配置代碼制品的層次分類方法。方法通過分析軟件配置代碼制品標(biāo)簽自動(dòng)構(gòu)建配置代碼的層次分類體系,然后基于監(jiān)督學(xué)習(xí)方法實(shí)現(xiàn)一組分類器,并通過這些分類器自動(dòng)完成數(shù)量眾多的CMT制品的層次化分類,從而有助于用戶縮小對制品的搜索范圍,提高搜索結(jié)果的準(zhǔn)確性。
本發(fā)明的技術(shù)方案如圖1所示:
一種軟件配置代碼制品的層次分類方法,包括了了以下幾個(gè)步驟:
(1)構(gòu)建軟件配置代碼制品的層次分類體系,從多個(gè)CMT代碼庫爬取CMT代碼制品標(biāo)簽,經(jīng)過標(biāo)簽過濾和處理得到CMT代碼制品標(biāo)簽集合作為CMT配置代碼制品的類別集合,然后通過挖掘CMT標(biāo)簽集合之間的隸屬關(guān)系來構(gòu)建層次分類Ctree;所述CMT表示配置管理工具;
(2)使用CMT軟件代碼庫中的部分CMT代碼制品為訓(xùn)練數(shù)據(jù)集,爬取訓(xùn)練數(shù)據(jù)集中每個(gè)CMT代碼制品的名稱和描述信息構(gòu)成相應(yīng)CMT代碼制品的描述文檔,采用TF-IDF(term frequency&inversed document frequency,詞頻和逆向文件頻率)模型實(shí)現(xiàn)CMT代碼制品的文本特征向量抽??;對訓(xùn)練數(shù)據(jù)集進(jìn)行標(biāo)注,將其中每個(gè)CMT代碼制品劃分到層次分類Ctree中對應(yīng)的類別;最后基于二元分類器的自上而下(Top-down)分類方法,采用支持向量機(jī)算法(SVM)得到一組分類器,每個(gè)分類器實(shí)現(xiàn)對層次分類Ctree相應(yīng)類別的CMT代碼制品的劃分;
(3)對于給定的待分類CMT制品m,采用逐步求精的方法,使用步驟(2)得到的分類器,對當(dāng)前CMT代碼制品m進(jìn)行自動(dòng)化的層次分類,最終將m劃分到層次分類Ctree中某個(gè)類別。
所述步驟(1)具體實(shí)現(xiàn)如下:
(11)Tinitial={t1,t2,…,tm}表示爬取獲得的CMT代碼制品初始標(biāo)簽集合,對于任意標(biāo)簽ti∈Tinitial,1≦i≦m,ti表示集合中的某個(gè)CMT代碼制品標(biāo)簽,ti=<name,occur>,其中name表示標(biāo)簽名稱,occur表示該標(biāo)簽在所有爬取的CMT代碼制品樣本中出現(xiàn)的次數(shù);
(12)對Tinitial中的標(biāo)簽進(jìn)行過濾,確保得到的為常用標(biāo)簽,當(dāng)ti.occur≥30,保留ti,否則從Tinitial中刪除ti,過濾后得到常用標(biāo)簽集合Tfilter={t1,t2,…,tn}n≤m,即常用標(biāo)簽集合包含的標(biāo)簽數(shù)小于等于上一步驟中得到的CMT代碼制品標(biāo)簽集合中的標(biāo)簽數(shù);遍歷Tfilter,對其中的標(biāo)簽進(jìn)行同義詞合并,假定tj,tk為Tfilter中的兩個(gè)標(biāo)簽,即tj,tk∈Tfilter,且tj.name與tk.name為同義詞,將tj,tk合并為新的標(biāo)簽tl,且tl.name=tj.name或tk.name,tl.occur=tj.occur+tk.occur,將tl加入常用標(biāo)簽集合Tfilter,并從中刪除tj,tk,經(jīng)過同義詞處理后得到CMT代碼制品標(biāo)簽集合Tfinal={t1,t2,…,tq},q≤n,即CMT代碼制品標(biāo)簽集合包含的標(biāo)簽數(shù)量小于或等于常用標(biāo)簽集合包含的標(biāo)簽數(shù)量;
(13)根據(jù)Tfinal中標(biāo)簽共同出現(xiàn)的情況推斷兩兩標(biāo)簽之間是否存在隸屬關(guān)系,對于任意兩個(gè)標(biāo)簽tA,tB∈Tfinal,如果tA是tB的子類,即tA包含tB,則必須滿足:(1)被tA標(biāo)注的CMT代碼制品存在很大的概率被tB標(biāo)注,并且,(2)tA.occur<tB.occur,即標(biāo)簽tA出現(xiàn)的次數(shù)少于標(biāo)簽tB,表示或者除了與tA一起出現(xiàn)外,tB還與其他標(biāo)簽一起出現(xiàn);經(jīng)過上述分析處理,得到所有CMT制品Tpair={<t1,t2>,…,<tx,ty>}(tx,ty∈Tfinal);
(14)遍歷標(biāo)簽對集合Tpair,根據(jù)其中所有CMT制品之間的隸屬關(guān)系創(chuàng)建層次分類Ctree。
所述步驟(2)具體實(shí)現(xiàn)如下:
(21)以建立的層次分類樹Ctree和CMT代碼制品的標(biāo)簽為依據(jù),通過標(biāo)簽匹配的方法對樣本配置代碼制品進(jìn)行標(biāo)注;
(22)作為訓(xùn)練數(shù)據(jù)集的CMT代碼制品配置的名稱和描述信息構(gòu)成CMT代碼制品屬性文檔d=<name,description>,name表示標(biāo)簽名稱,description表示CMT代碼制品描述信息,對屬性文檔d進(jìn)行預(yù)處理,采用自然語言處理技術(shù)進(jìn)行分詞、剔除停用詞和同義詞處理,最后得到包括所有CMT代碼制品的屬性文檔構(gòu)成的集合D,作為訓(xùn)練數(shù)據(jù)集;
(23)采用TF-IDF對D中的每個(gè)屬性文檔d進(jìn)行計(jì)算,得到屬性文檔d的特征向量vd,最終得到CMT代碼制品屬性文檔集合D對應(yīng)的向量矩陣MD;
(24)以MD作為訓(xùn)練數(shù)據(jù)集的屬性文檔特征,采用SVM算法對層次分類Ctree的每個(gè)類別訓(xùn)練分類器,得到分類器集合C={c1,c2,…,cq},c1,c2,…,cq分別對應(yīng)為層次分類Ctree中的q個(gè)類別的分類器。
所述步驟(3)具體實(shí)現(xiàn)如下:
(31)對于給定的待分類CMT制品p,抽取p的名稱和描述作為對應(yīng)的屬性文檔d,并計(jì)算屬性文檔d的TF-IDF特征向量vdp,將特征向量作為分類器預(yù)測的依據(jù);
(32)采用逐步求精的方法,對當(dāng)前CMT代碼制品p進(jìn)行自動(dòng)化的層次分類,從層次分類Ctree的根節(jié)點(diǎn)Root開始,采用深度優(yōu)先遍歷策略,遞歸的搜索p的目標(biāo)類別,如果給定p屬于當(dāng)前節(jié)點(diǎn)類別t,那么p將繼續(xù)在t的n個(gè)子類別(t1,t2,…,tn)中繼續(xù)劃分,直到p不屬于t的任何子類別或搜索到達(dá)葉子節(jié)點(diǎn);對于第一種情況,當(dāng)前的節(jié)點(diǎn)類別t即是CMT代碼制品p的目標(biāo)類別;第二種情況下,所到達(dá)的葉子節(jié)點(diǎn)類別是CMT代碼制品p的目標(biāo)類別。
本發(fā)明與現(xiàn)有技術(shù)相比的積極效果為:采用本發(fā)明的方法,能夠方便用戶查找和使用軟件配置代碼制品,層次化分類通過逐步求精的思想為用戶縮小目標(biāo)制品的查找范圍,同時(shí)還能夠提高CMT代碼制品分類的準(zhǔn)確性,從而有效減少用戶瀏覽確認(rèn)的時(shí)間和代價(jià),能夠更快更準(zhǔn)的找到期望的目標(biāo)制品。
附圖說明
圖1為本發(fā)明的實(shí)現(xiàn)框圖;
圖2為本發(fā)明的分類結(jié)果示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明做進(jìn)一步說明。
本發(fā)明實(shí)施例以當(dāng)前廣泛使用的自動(dòng)化運(yùn)維工具Puppet、Ansible和Chef的代碼制品分類作為案例來解釋說明本發(fā)明方法。
如圖1所示,本發(fā)明的一種軟件配置代碼制品的層次分類方法,包括了了以下幾個(gè)步驟:
(1)構(gòu)建軟件配置代碼制品的層次分類體系,從多個(gè)CMT代碼庫爬取CMT代碼制品標(biāo)簽,經(jīng)過標(biāo)簽過濾和處理得到CMT代碼制品標(biāo)簽集合作為CMT配置代碼制品的類別集合,然后通過挖掘CMT標(biāo)簽集合之間的隸屬關(guān)系來構(gòu)建層次分類Ctree;所述CMT表示配置管理工具;
具體實(shí)現(xiàn)如下:
(11)Tinitial={t1,t2,…,tm}表示爬取獲得的CMT代碼制品初始標(biāo)簽集合,對于任意標(biāo)簽ti∈Tinitial,1≦i≦m,ti表示集合中的某個(gè)CMT代碼制品標(biāo)簽,ti=<name,occur>,其中name表示標(biāo)簽名稱,occur表示該標(biāo)簽在所有爬取的CMT代碼制品樣本中出現(xiàn)的次數(shù);
(12)對Tinitial中的標(biāo)簽進(jìn)行過濾,確保得到的為常用標(biāo)簽,當(dāng)ti.occur≥30,保留ti,否則從Tinitial中刪除ti,過濾后得到常用標(biāo)簽集合Tfilter={t1,t2,…,tn}n≤m,即常用標(biāo)簽集合包含的標(biāo)簽數(shù)小于等于上一步驟中得到的CMT代碼制品標(biāo)簽集合中的標(biāo)簽數(shù);遍歷Tfilter,對其中的標(biāo)簽進(jìn)行同義詞合并,假定tj,tk為Tfilter中的兩個(gè)標(biāo)簽,即tj,tk∈Tfilter,且tj.name與tk.name為同義詞,將tj,tk合并為新的標(biāo)簽tl,且tl.name=tj.name或tk.name,tl.occur=tj.occur+tk.occur,將tl加入常用標(biāo)簽集合Tfilter,并從中刪除tj,tk,經(jīng)過同義詞處理后得到CMT代碼制品標(biāo)簽集合Tfinal={t1,t2,…,tq},q≤n,即CMT代碼制品標(biāo)簽集合包含的標(biāo)簽數(shù)量小于或等于常用標(biāo)簽集合包含的標(biāo)簽數(shù)量;
(13)根據(jù)Tfinal中標(biāo)簽共同出現(xiàn)的情況推斷兩兩標(biāo)簽之間是否存在隸屬關(guān)系,對于任意兩個(gè)標(biāo)簽tA,tB∈Tfinal,如果tA是tB的子類,即tA包含tB,則必須滿足:(1)被tA標(biāo)注的CMT代碼制品存在很大的概率被tB標(biāo)注,并且,(2)tA.occur<tB.occur,即標(biāo)簽tA出現(xiàn)的次數(shù)少于標(biāo)簽tB,表示或者除了與tA一起出現(xiàn)外,tB還與其他標(biāo)簽一起出現(xiàn);首先統(tǒng)計(jì)Tfinal中所有標(biāo)簽出現(xiàn)的次數(shù),表示為{t1.occur,t2.occur,…,tq.occur},然后對Tfinal中任意兩個(gè)標(biāo)簽tx,ty(x≠y)計(jì)算共同出現(xiàn)的頻度并進(jìn)行條件(1)(2)的判斷,保留同時(shí)滿足兩個(gè)條件的標(biāo)簽對<tx,ty>。經(jīng)過上述分析處理,得到所有存在隸屬關(guān)系的CMT制品標(biāo)簽對集合Tpair={<t1,t2>,…,<tx,ty>}(tx,ty∈Tfinal);以標(biāo)簽nosql和mongodb為例,tnosql.occur是214,tmongodb.occur是95,被兩個(gè)標(biāo)簽同時(shí)同時(shí)出現(xiàn)的次數(shù)是51,那么可以認(rèn)為軟件配置代碼制品在標(biāo)注標(biāo)簽mongodb后,有54%(=51/95)的概率同時(shí)標(biāo)注nosql,因此標(biāo)簽對<mongodb,nosql>被保留在具有隸屬關(guān)系的標(biāo)簽對集合Tpair中。
(2)使用CMT軟件代碼庫中的部分CMT代碼制品為訓(xùn)練數(shù)據(jù)集,爬取訓(xùn)練數(shù)據(jù)集中每個(gè)CMT代碼制品的名稱和描述信息構(gòu)成相應(yīng)CMT代碼制品的描述文檔,采用TF-IDF(term frequency&inversed document frequency)模型實(shí)現(xiàn)CMT代碼制品的文本特征向量抽?。粚τ?xùn)練數(shù)據(jù)集進(jìn)行標(biāo)注,將其中每個(gè)CMT代碼制品劃分到層次分類Ctree中對應(yīng)的類別;最后基于二元分類器的自上而下(Top-down)分類方法,采用支持向量機(jī)算法(SVM)得到一組分類器,每個(gè)分類器實(shí)現(xiàn)對層次分類Ctree相應(yīng)類別的CMT代碼制品的劃分。
上述步驟(2)具體實(shí)現(xiàn)如下:
(21)以建立的層次分類樹Ctree和CMT代碼制品的標(biāo)簽為依據(jù),通過標(biāo)簽匹配的方法對樣本配置代碼制品進(jìn)行標(biāo)注,將其中每個(gè)CMT代碼制品劃分到Ctree中對應(yīng)的類別。層次類別是層次分類樹Ctree中的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)代表某一個(gè)標(biāo)簽類別,其層次分類為根節(jié)點(diǎn)到該節(jié)點(diǎn)的路徑。例如,某制品dwerder.mongodb含有標(biāo)簽mongodb,通過匹配在Ctree中找到對應(yīng)的類別節(jié)點(diǎn)“mongodb”,該節(jié)點(diǎn)的層次類別是database>nosql>mongodb,這樣,就為制品dwerder.mongodb找到了對應(yīng)的層次類別;需要注意的是,某類別的元素同時(shí)也是其層次分類樹中父類別的元素,即制品dwerder.mongodb同時(shí)也屬于類別database>nosql和database。
(22)作為訓(xùn)練數(shù)據(jù)集的CMT代碼制品配置的名稱和描述信息構(gòu)成CMT代碼制品制品屬性文檔d=<name,description>,name表示標(biāo)簽名稱,description表示CMT代碼制品描述信息,對屬性文檔d進(jìn)行預(yù)處理,采用自然語言處理技術(shù)進(jìn)行分詞、剔除停用詞和同義詞處理,最后得到包括所有CMT代碼制品的屬性文檔構(gòu)成的集合D,作為訓(xùn)練數(shù)據(jù)集;以制品dwerder.mongodb為例,提取其描述文檔<dwerder.mongodb,MongoDB module with sharding>,首先按照標(biāo)點(diǎn)符號得到獨(dú)立的詞匯,去掉其中的停用詞“with”,并將“sharding”通過詞干還原為“shard”,從而得到文檔結(jié)果為ddwerder.mongodb=<dwerder.mongodb,mongodb module shard>,對所有制品執(zhí)行該處理過程形成訓(xùn)練數(shù)據(jù)集D。
(23)采用TF-IDF對D中的每個(gè)屬性文檔d進(jìn)行計(jì)算,得到屬性文檔d的特征向量vd,最終得到CMT代碼制品屬性文檔集合D對應(yīng)的向量矩陣MD;公式(1)給出了TF-IDF的計(jì)算公式,其中w表示詞項(xiàng),d表示文檔,nw,d表示詞項(xiàng)w在文檔d中出現(xiàn)的頻率,nw表示含有詞項(xiàng)w的文檔個(gè)數(shù),k∈詞項(xiàng)w全集,|U|表示文檔全集的個(gè)數(shù)。該計(jì)算方法通過詞項(xiàng)w在不同文檔中出現(xiàn)的頻度差別來衡量詞項(xiàng)w對于文檔d的區(qū)分能力。對于某文檔d,通過計(jì)算d中所有詞項(xiàng)的TF-IDF值,形成d的特征向量vd,同時(shí)所有文檔D的特征向量組成特征向量矩陣MD。
(24)以MD作為訓(xùn)練數(shù)據(jù)集的屬性文檔特征,采用SVM算法對層次分類Ctree的每個(gè)類別訓(xùn)練分類器,得到分類器集合C={c1,c2,…,cq},c1,c2,…,cq分別對應(yīng)為層次分類Ctree中的q個(gè)類別的分類器。特征向量矩陣MD將CMT制品文檔轉(zhuǎn)換為量化的多維歐式空間點(diǎn)集,SVM算法通過計(jì)算不同類別點(diǎn)集的劃分超平面實(shí)現(xiàn)對CMT制品的分類,調(diào)整算法的核函數(shù)及不同特征的權(quán)重值,得到最優(yōu)分類效果的分類器。如database>nosql類別下,mongodb中的CMT制品與其他子類別的CMT制品可以使用SVM算法訓(xùn)練得到一個(gè)針對database>nosql>mongodb類別的二類分類器,該分類器可以區(qū)分屬于nosql類別的CMT制品是否進(jìn)一步屬于mongodb類別;使用同樣的方法為分類樹Ctree中的每一個(gè)節(jié)點(diǎn)都訓(xùn)練一個(gè)二類分類器。
(3)對于給定的待分類CMT制品m,采用逐步求精的方法,使用步驟(3)得到的分類器,對當(dāng)前CMT代碼制品m進(jìn)行自動(dòng)化的層次分類,最終將m劃分到層次分類Ctree中某個(gè)類別。
步驟(3)具體實(shí)現(xiàn)如下:
(31)對于給定的待分類CMT制品p,抽取p的名稱和描述作為對應(yīng)的屬性文檔d,并計(jì)算屬性文檔d的TF-IDF特征向量vdp,將特征向量作為分類器預(yù)測的依據(jù);給定的待分類CMT制品由于沒有標(biāo)簽屬性,因此需要使用步驟(2)所得到的分類器模型進(jìn)行分類預(yù)測。首先使用與步驟(22)(23)相同的方法,抽取屬性文檔,并利用公式(1)計(jì)算該文檔的TF-IDF特征向量,以制品L7-mongo為例,其描述文檔<L7-mongo,Installs/Configures mongodb,multi instance support>,經(jīng)過處理得到dL7-mongo=<L7mongodb,install configure mongodb multi instance support>,并進(jìn)一步計(jì)算TF-IDF向量值,作為該制品的量化特征。
(32)采用逐步求精的方法,對當(dāng)前CMT代碼制品p進(jìn)行自動(dòng)化的層次分類,從層次分類Ctree的根節(jié)點(diǎn)Root開始,采用深度優(yōu)先遍歷策略,遞歸的搜索p的目標(biāo)類別,如果給定p屬于當(dāng)前節(jié)點(diǎn)類別t,那么p將繼續(xù)在t的n個(gè)子類別(t1,t2,…,tn)中繼續(xù)劃分,直到p不屬于t的任何子類別或搜索到達(dá)葉子節(jié)點(diǎn);對于第一種情況,當(dāng)前的節(jié)點(diǎn)類別t即是CMT代碼制品p的目標(biāo)類別;第二種情況下,所到達(dá)的葉子節(jié)點(diǎn)類別是CMT代碼制品p的目標(biāo)類別。對于制品L7-mongo,將其特征向量vdp依次作為分類器的輸入進(jìn)行預(yù)測,首先使用根節(jié)點(diǎn)下的頂級節(jié)點(diǎn)分類器預(yù)測,其被database類別分類器預(yù)測為接受,而被其他分類器拒絕,因此,判斷該制品屬于database類別;然后在database類別內(nèi)部,分別使用nosql分類器等預(yù)測,該制品被nosql分類器接受,而被其他分類器拒絕,判斷該制品屬于database>nosql類別;最后進(jìn)一步在nosql內(nèi)部依次使用分類器預(yù)測,被mongodb類別預(yù)測為接受,而且mongodb并無子類別,因此分類器預(yù)測的結(jié)果是制品L7-mongo的層次類別是database>nosql>mongodb。
如圖1所示,本發(fā)明具體的步驟如下:
1.采用本發(fā)明內(nèi)容中步驟1所描述的方法進(jìn)行層次分類體系的構(gòu)建。本發(fā)明實(shí)施例首先以Puppet和Ansible的10790個(gè)代碼制品為樣本,從中抽取了263個(gè)具有隸屬關(guān)系的標(biāo)簽對,并基于此建立了一個(gè)具有90個(gè)類別的、4層的分類體系,其中第一層類別下有包括system、server等9個(gè)分類,第二、三、四分別包含33、42、6個(gè)分類,如表1所示。
2.采用本發(fā)明內(nèi)容中步驟2所描述的方法進(jìn)行分類器的訓(xùn)練和構(gòu)建。以擁有90個(gè)類別的層次分類樹為依據(jù),以10790個(gè)Puppet和Ansible的代碼制品為訓(xùn)練數(shù)據(jù)集,采用SVM算法得到的正樣本情況如表1所示。
3.采用本發(fā)明內(nèi)容中步驟3所描述的方法,對1000例Chef的代碼制品進(jìn)行分類。圖2展示了“database”類別下的“sql”“nosql”等子類以及其包含的CMT制品情況。步驟3將“puppetlabs/mysql”以及“arioch/redis”分別劃分到mysql和redis類別下,然而,“golja/influxdb”在被劃分到database類別后沒有進(jìn)一步找到子類別,因此將其直接劃分到database類別下。
表1
實(shí)施例采用“mysql”作為關(guān)鍵詞進(jìn)行Puppet和Ansible制品庫的搜索,搜索結(jié)果包含了Puppet的一個(gè)腳本制品“puppet/zabbix”,它是用來支持監(jiān)控系統(tǒng)Zabbix的安裝與管理操作,與mysql無關(guān)。采用本發(fā)明的分類方法則將該制品劃分到類別下,顯然更加合理。除此之外,Ansible腳本庫中的一個(gè)mysql相關(guān)制品cranework.mysql被錯(cuò)誤的標(biāo)記為web,本發(fā)明的分類方法則能夠正確的將其劃分到類別下。上述案例分析證明本發(fā)明方法能夠在制品分類的準(zhǔn)確性和合理性方面提供有效的幫助。
總之,本發(fā)明通過分析軟件配置代碼制品標(biāo)簽自動(dòng)構(gòu)建配置代碼的層次分類體系,然后基于監(jiān)督學(xué)習(xí)方法實(shí)現(xiàn)一組分類器,并通過這些分類器自動(dòng)完成數(shù)量眾多的配置腳本代碼制品的層次化分類。本發(fā)明能夠方便用戶查找和使用軟件配置代碼制品,提高制品分類的準(zhǔn)確性,從而有效減少用戶瀏覽確認(rèn)的時(shí)間和代價(jià)。
提供以上實(shí)施例僅僅是為了描述本發(fā)明的目的,而并非要限制本發(fā)明的范圍。本發(fā)明的范圍由所附權(quán)利要求限定。不脫離本發(fā)明的精神和原理而做出的各種等同替換和修改,均應(yīng)涵蓋在本發(fā)明的范圍之內(nèi)。