朱興動,張 琦,范加利
(1.海軍航空大學(xué),山東 煙臺 264000;2.海軍航空大學(xué)青島校區(qū),山東 青島 266000)
為了規(guī)范對武器裝備的綜合保障過程,歐洲的S系列綜合保障標(biāo)準(zhǔn)在逐漸發(fā)展的過程中,內(nèi)容不斷完善,先后出版了規(guī)范技術(shù)出版物編制的S1000D[1]、規(guī)范綜合保障物料供應(yīng)與采購過程數(shù)據(jù)的S2000M、規(guī)范整個綜合保障過程及數(shù)據(jù)的S3000L、規(guī)范預(yù)防性維修過程及數(shù)據(jù)的S4000P、規(guī)范裝備使用過程產(chǎn)生的反饋數(shù)據(jù)的S5000F,同時,規(guī)范訓(xùn)練內(nèi)容的S6000T也即將出版。各標(biāo)準(zhǔn)規(guī)范的信息間存在聯(lián)系,它們逐漸形成一個涵蓋裝備綜合保障各個方面的一套完整的綜合保障標(biāo)準(zhǔn)體系[2],并能互為數(shù)據(jù)來源。為了將這幾個標(biāo)準(zhǔn)的內(nèi)容串聯(lián)起來,SX000i應(yīng)運而生,它提供了上述標(biāo)準(zhǔn)間的內(nèi)在聯(lián)系,并衍生出一系列子標(biāo)準(zhǔn),包括給出綜合保障各領(lǐng)域相關(guān)名詞定義的SX001G,規(guī)范S系列標(biāo)準(zhǔn)通用數(shù)據(jù)模型的SX002D等。因此,S系列標(biāo)準(zhǔn)體系對于我國裝備綜合保障信息間交互性差,數(shù)據(jù)重用率低的現(xiàn)狀具有借鑒意義。然而SX000i雖給出了各個標(biāo)準(zhǔn)間的關(guān)系,但具體的數(shù)據(jù)元素間的映射關(guān)系并未給出,需要進(jìn)一步尋找。同時,S1000D的數(shù)據(jù)元素與其他標(biāo)準(zhǔn)的數(shù)據(jù)元素命名方式不同,加大了尋找映射關(guān)系的難度。
編輯距離是衡量兩個字符串相似度的有效工具,它通過對其中一個字符串進(jìn)行刪除,增加,修改字符的操作,計算其完全更改成另一個字符串的代價,用于評價兩個字符串的相似度[3-4]。它對字符串本身沒有限制和要求,適合于兩個相似但不完全一樣的字符串進(jìn)行映射關(guān)系匹配,給尋找S1000D數(shù)據(jù)元素與其他標(biāo)準(zhǔn)的數(shù)據(jù)元素之間的映射關(guān)系提供了方法。
裝備在投入使用前是其研制與設(shè)計階段,這個階段產(chǎn)生的裝備設(shè)計數(shù)據(jù)可以用于S4000P規(guī)范的裝備預(yù)防性維修分析當(dāng)中,得到產(chǎn)品的預(yù)防性維修任務(wù)需求(PMTR),而PMTR屬于S3000L規(guī)范的維修任務(wù)需求(MTR)的一部分,MTR的生成能夠借鑒PTMR信息[8]。同樣,S3000L規(guī)范的保障性分析方法描述了如何對裝備進(jìn)行分解并得出分解信息,而S2000M規(guī)范的圖解零部件目錄與物料供應(yīng)數(shù)據(jù)的生成能夠借鑒裝備分解信息,S1000D規(guī)范的IETM維修計劃與維修任務(wù)數(shù)據(jù)模塊的生成能夠借鑒S3000L中的MTR信息[5-7]。圖解零部件目錄信息又可以進(jìn)一步運用到IETM圖解零部件目錄數(shù)據(jù)模塊生成及零部件的編碼中。S6000T規(guī)范的訓(xùn)練任務(wù)信息能夠借鑒相關(guān)的技術(shù)出版物信息[9]。
裝備投入使用后產(chǎn)生的反饋信息通常是裝備使用過程中產(chǎn)生的故障信息。S5000F規(guī)范了根據(jù)故障信息生成用于傳遞的故障消息的過程,這些信息的可貴之處在于它們能用來對此類故障事件做出有效的預(yù)防工作,因此S4000P規(guī)范的預(yù)防性維修分析就可以利用這個故障消息,鎖定事故發(fā)生時裝備相關(guān)零部件,并分析出可能的故障原因以及對應(yīng)的預(yù)防性維修方法。同樣,可以根據(jù)得到的事故相關(guān)零部件對原有S3000L產(chǎn)品分解信息進(jìn)行更新,并用新的預(yù)防性維修方法更新維修任務(wù)需求與分析信息;新的產(chǎn)品分解信息又能用于更新S2000M物理分解樹,進(jìn)而更新圖解零部件目錄與S1000D的圖解零部件數(shù)據(jù)模塊;新的MTR信息也能作為維修計劃數(shù)據(jù)模塊、維修任務(wù)數(shù)據(jù)模塊的更新參考;新的技術(shù)資料又能用于更新S6000T規(guī)范的訓(xùn)練任務(wù)、目標(biāo)等信息。整個信息傳遞流程如圖1。最后,更新用于發(fā)送給用戶的S5000F安全措施信息,維修服務(wù)通告和保修信息。
圖1 裝備使用后的綜合保障信息關(guān)聯(lián)關(guān)系
數(shù)據(jù)模型的統(tǒng)一和協(xié)調(diào)被視為S系列綜合保障標(biāo)準(zhǔn)的基本要求,SX002D規(guī)范的通用數(shù)據(jù)模型(CDM)就是一個對多個S系列綜合保障標(biāo)準(zhǔn)共有數(shù)據(jù)元素的概念性描述[10]。SX002D使用UML(統(tǒng)一建模語言)描述這個S系列標(biāo)準(zhǔn)通用數(shù)據(jù)模型,其內(nèi)容范圍主要包括需要定義的產(chǎn)品區(qū)域信息,產(chǎn)品交換及其分解信息和已授權(quán)的產(chǎn)品配置信息,還包括首次發(fā)布的原函數(shù)和復(fù)合屬性。
SX002D通用數(shù)據(jù)模型包括以下功能單元(UoF):產(chǎn)品與項目、分解結(jié)構(gòu)、零部件定義、硬件元素、軟件元素、聚合元素、區(qū)域元素、產(chǎn)品設(shè)計配置、更改信息、安全分類、備注、適用性、消息。每個功能單元都使用UML類圖表示,包含已經(jīng)定義好的各種不同類,類的屬性以及類之間的關(guān)系(如圖2)。
已知S2000M,S3000L,S5000F,SX002D的數(shù)據(jù)模型都由UML類圖進(jìn)行表示,且類與屬性的命名方式相同(S4000P與S6000T數(shù)據(jù)模型官方并未給出,本文不涉及),而S1000D的數(shù)據(jù)模型由各個數(shù)據(jù)模塊構(gòu)成,每個數(shù)據(jù)模塊以XML格式進(jìn)行儲存,且數(shù)據(jù)命名方式與其他模型有些出入。因SX002D的數(shù)據(jù)模型是整個S系列標(biāo)準(zhǔn)的通用數(shù)據(jù)模型,所以每個標(biāo)準(zhǔn)規(guī)范的數(shù)據(jù)模型與它的模型取交集就能夠得到每個標(biāo)準(zhǔn)與其他標(biāo)準(zhǔn)產(chǎn)生重疊的部分,再具體分離出兩兩標(biāo)準(zhǔn)間數(shù)據(jù)重疊的部分。
首先從各個標(biāo)準(zhǔn)的官方網(wǎng)站上下載數(shù)據(jù)模型,這些模型都是以XML或XSD格式儲存的(如圖3),用python中的XML解析方法——ElementTree將模型中的數(shù)據(jù)元素名稱,即UML模型中的類名解析出來,按每行一個詞的方式儲存到文本文檔中,每個標(biāo)準(zhǔn)的數(shù)據(jù)元素名稱儲存在不同的文檔。之后對S2000M,S3000L,S5000F文本中的元素兩兩取交集,得到除S1000D外其他S系列標(biāo)準(zhǔn)數(shù)據(jù)模型中的數(shù)據(jù)重疊部分,將這些記錄也儲存在文本文檔中。
圖2 SX002D硬件元素功能單元模塊
圖3 SX002D數(shù)據(jù)模型的XML格式節(jié)選
無論是S1000D規(guī)范的數(shù)據(jù)元素還是其他標(biāo)準(zhǔn)的數(shù)據(jù)元素,它們的名稱都是類似“descrForPart”(零部件描述)這樣的合成詞,尋找一模一樣的詞匹配幾乎是不可能的,但兩個意思相同或相關(guān)的詞在其字符串排序上有一定的相似性,如“name”與“partName”,而且每個標(biāo)準(zhǔn)的數(shù)據(jù)元素個數(shù)都很多,人工尋找過于浪費時間。因此使用字符串模糊匹配的方法具有縮小映射關(guān)系尋找范圍的作用。
通過計算兩個字符串的編輯距離大小來衡量字符串間的相似度方法是一種常用的字符串匹配方法。編輯距離,又稱Levenshtein距離,指兩個字符串之間,由一個轉(zhuǎn)成另一個所需的最少編輯操作次數(shù)。一次編輯操作可以是:將一個字符替換成另一個字符,插入一個字符,刪除一個字符。
在數(shù)學(xué)上,兩個字符串a(chǎn),b(分別為長度|a|和|b|)之間的Levenshtein距離由leva,b(|a|,|b|)表示,公式為:
其中,1(ai≠bj)表示當(dāng)ai=bj時,值為0,表示不需替換;反之為1,表示需要替換。當(dāng)兩個字符串中沒有任何一個相同字符時,公式取max值,反之取min值。min值表達(dá)式的第一行代表從a轉(zhuǎn)變成b需要刪除字符的次數(shù),第二行代表從a轉(zhuǎn)變成b需要插入字符的次數(shù),第三行代表a轉(zhuǎn)變成b的字符替代次數(shù)。
計算Levenshtein距離的方法如下:如果我們設(shè)置一個矩陣來保存第一個字符串某個位置的所有前綴和第二個字符串的某個位置的所有前綴之間的Levenshtein距離,那么可以用自下而上地動態(tài)規(guī)劃方式計算矩陣中的值,從而找到兩個完整字符串之間的距離作為輸出值。如圖4,標(biāo)記“3”為“Saturday”中的字符串“Sa”轉(zhuǎn)變?yōu)椤癝unday”中字符串“Sund”的Levenshtein距離。偽代碼算法如圖5 所示。
之后通過計算出的Levenshtein距離可以輕易得出這兩個字符串的相似度,設(shè)相似度為sim,兩個字符串長度分別為a和b,則計算相似度的公式為:
圖4 兩個字符串任意位置間的Levenshtein距離列表
圖5 動態(tài)規(guī)劃計算Levenshtein距離算法
本文以S1000D的圖解零部件目錄為例,取出其所有數(shù)據(jù)元素(命名為1000D),并與S2000M和SX002D的交集(命名為2-002D),S3000L和SX002D的交集(命名為3-002D),S5000F與SX002D的交集(命名為5-002D)兩兩進(jìn)行字符串模糊匹配,得到一系列字符串匹配對及相似度。用人工方法檢驗其中S1000D與S2000M匹配的結(jié)果,已知S1000D圖解零部件數(shù)據(jù)模塊的數(shù)據(jù)元素為207個,2-002D的數(shù)據(jù)元素為56個,共可得到207×56=11592個匹配對。得到的分值代表兩個字符串間的相似度,分值越高,相似度越大,例如0.82分的changeAuthority與ChangeAuthorization明顯比0.56分的partIdentifier與overlengthPartNumber相似度更高。了解了不同相似度范圍內(nèi)的匹配準(zhǔn)確度后,發(fā)現(xiàn)相似度在0.50分以上的匹配對共75對,并且包含了全部的15對準(zhǔn)確匹配對,因此在之后的匹配過程都只考慮分?jǐn)?shù)大于0.50分的匹配對做進(jìn)一步的篩選,最后得到S2000M,S3000L,S5000F數(shù)據(jù)元素與S1000D數(shù)據(jù)元素之間的全部映射關(guān)系,并以S1000D圖解零部件數(shù)據(jù)模塊與S2000M數(shù)據(jù)元素的映射關(guān)系為例制作映射關(guān)系表(見表1)。
表1 S1000D圖解零部件數(shù)據(jù)模塊與S2000M數(shù)據(jù)元素映射關(guān)系表
S系列綜合保障標(biāo)準(zhǔn)之中任何一個標(biāo)準(zhǔn)規(guī)范的信息都與其他標(biāo)準(zhǔn)的信息存在關(guān)聯(lián),而集成這些信息能夠?qū)⒏鱾€領(lǐng)域的綜合保障信息融合起來,形成一個囊括裝備保障領(lǐng)域的綜合保障信息體系,使保障信息之間的交互更為方便,有助于裝備保障部門對這些信息進(jìn)行綜合利用,同時提升裝備的保障性與保障效率。本文借助SX002D規(guī)范的S系列通用數(shù)據(jù)模型找出了除S1000D外其他標(biāo)準(zhǔn)數(shù)據(jù)模型間的數(shù)據(jù)映射關(guān)系,并以S1000D圖解零部件數(shù)據(jù)模塊為例,使用基于Levenshtein距離的字符串模糊匹配的方法找出了其與S2000M數(shù)據(jù)模型中可能含義相同的數(shù)據(jù)元素匹配對,并通過篩選最終找出兩者間的準(zhǔn)確映射關(guān)系并制作映射關(guān)系表。實驗證明,這種字符串模糊匹配的方法對能夠很大地減輕人工判斷映射關(guān)系的工作,并大幅提升匹配效率。