米小亮, 王亦然, 趙宏安, 王 冰
(1. 西安工業(yè)大學 北方信息工程學院, 陜西 西安 710200; 2. 西北大學 信息科學與技術(shù)學院, 陜西 西安 710069)
隨著互聯(lián)網(wǎng)和信息技術(shù)的迅猛發(fā)展, 對海量數(shù)據(jù)的處理和分析逐漸成為十分重要的研究課題。 機器學習、數(shù)據(jù)挖掘、數(shù)據(jù)采集、分析、處理、入庫等技術(shù)被廣泛應(yīng)用于分析這些海量數(shù)據(jù),并取得了很多相關(guān)的研究成果。Arunasalam[1]提出了適用于類分布不均衡數(shù)據(jù)上的關(guān)聯(lián)分類方法;Verhein[2]等基于關(guān)聯(lián)分類提出了一種新的處理此類數(shù)據(jù)的方法;Hinton[3]等提出了通過訓練一個中間層有小數(shù)目結(jié)點的多層神經(jīng)網(wǎng)絡(luò)將高維數(shù)據(jù)映射到低維空間,取得了很好的效果。 為解決高階異構(gòu)數(shù)據(jù)挖掘問題, 基于譜分解算法和基于信息論的協(xié)同聚類方法分別被提出,并被應(yīng)用于文本和特征詞的協(xié)同聚類[4-6]。 對海量數(shù)據(jù)的提取、處理、入庫也得到了廣泛的應(yīng)用,文獻[7]介紹了地形數(shù)據(jù)庫的處理及入庫方法;文獻[8]分析了不同類型工作站的數(shù)據(jù)格式, 實現(xiàn)了從樣品到數(shù)據(jù)處理及入庫的全過程自動化;文獻[9-11]分別介紹了卷煙入庫數(shù)據(jù)的采集系統(tǒng),地震數(shù)據(jù)的傳輸與入庫, 城市綠化數(shù)據(jù)的加工處理方法及入庫技術(shù)。 在“中國知識資源總庫”數(shù)據(jù)庫中輸入關(guān)鍵詞“數(shù)據(jù)處理”,僅2000 年以來,相關(guān)的文獻就達6 萬之多。
火藥配方有雙鉛、雙石、雙芳鎂等成百個類型,每種配方有能量特性、燃燒性能、力學性能、安全性能、應(yīng)用情況及使用特點等分類性能參數(shù), 每一類性能又有多個性能參數(shù),如能量特性就有比沖、爆熱、密度等幾十個參數(shù),這些參數(shù)又有理論數(shù)據(jù)和實驗數(shù)據(jù)之分,參數(shù)數(shù)值還和溫度、壓力等實驗條件有關(guān),且又分為不同的批次。 再如燃燒性能,有燃速、燃速經(jīng)驗公式、燃速溫度系數(shù)等參數(shù),燃速又分為燃速儀測定和發(fā)動機測定,不同的溫度和壓強下,測定的數(shù)值又不一樣;即使同溫同壓下,不同的批次測定的結(jié)果又不一樣。 數(shù)百個推進劑配方,數(shù)百種性能指標,在不同的物理和化學條件下測定和計算的數(shù)十萬的數(shù)據(jù),將其提取、歸類、入庫,是十分繁雜的任務(wù)。 火藥配方數(shù)據(jù)的復雜性及其獨特的性能,使得其它文獻介紹的數(shù)據(jù)處理方法并不能完全滿足本項目對其數(shù)據(jù)自動處理的需求。
文中在認真閱讀推進劑原始文檔的基礎(chǔ)上,細致分析了原始word 文檔的數(shù)據(jù)組織結(jié)構(gòu), 努力找出性能數(shù)據(jù)的顯示規(guī)律,采取了一系列的方法和手段,設(shè)計了性能數(shù)據(jù)的歸類目標及結(jié)構(gòu),編寫計算機程序,實現(xiàn)了火藥配方性能數(shù)據(jù)的自動提取和歸類,并寫入設(shè)計好的數(shù)據(jù)庫中。
長期以來, 眾多資料報道的火藥性能數(shù)據(jù)格式多樣,為便于計算機的編程,實現(xiàn)數(shù)據(jù)處理的自動化,需對原始數(shù)據(jù)的文本格式做初級處理,具體做法是添加行序號和編寫實現(xiàn)數(shù)據(jù)處理的功能函數(shù)。
在自動處理數(shù)據(jù)過程中,當提取一個具體的性能參數(shù)數(shù)值時,必須確定該數(shù)據(jù)歸屬于哪一個推進劑,這樣才能實現(xiàn)該數(shù)據(jù)的自動化歸類。 為此,對原始數(shù)據(jù)文檔的每一行加上行序號。
首先,將所有推進劑的多個原始word 文檔,匯集成一個word 文件,即.doc 文件,再將此文件另存為.txt 文件。 之所以匯集成一個文件,是為了程序一次運行,便可提取出所有推進劑的相關(guān)數(shù)據(jù)。
原始.doc 文件的每一段,在.txt 文件中都為一行,每一行的編號分為三個部分,第一部分為推進劑序號,第二部分為該推進劑的行序號,第三部分為改行在文檔中的總行號。 文檔編號基于以下的方法實現(xiàn):
觀察知:每個推進劑的第一行都以數(shù)字開始,以“推進劑”三個字結(jié)束,如“17. GOL-1 改進型雙基推進劑”,由此得編程的實現(xiàn)方法:
1)讀取文件的每一行,賦值給一字符串變量;
2)去掉字符串的前后空格;
3)取出該字符串的首個字符及最后3 個字符,判斷第一個字符是否數(shù)字,后三個字符是否是推進劑;
4)如條件為真,則為新的推進劑,推進劑序號加1,新推進劑的行號初始為1,總行號加1;
5)如條件為假,推進劑序號不變,推進劑的行號加1,總行號加1;
6)循環(huán)返回到步驟1),直至文件結(jié)束。文檔添加行序號后的效果如圖1 所示。
圖1 原始文檔添加行序號效果Fig. 1 The effect of the original document to add line number
1)字符串查找函數(shù)strFind(string1,string2)和字符串替換函數(shù)strReplace(string,oldString。 newString)
計算機編程語言都有字符串查找函數(shù)strFind(string1,string2),該函數(shù)查找string2 在string1 的位置。 如果查到,返回其在字符串string1 的位置,否則返回0;
字符串替換函數(shù)的實現(xiàn),可利用字符串查找函數(shù)確定字符串的位置,將其分割為兩部分,去掉舊字符串,添加新字符串,再將兩字符串合并,即完成字符串的替換。 函數(shù)參數(shù)表示在string 中用newString 替換oldString。
2)取數(shù)字函數(shù)pickoutNum(string)
該函數(shù)的功能,是將字符串中的數(shù)字保留,去掉所有的中文符號和西文的非數(shù)字符號。 其實現(xiàn)原理為:依次讀取字符串中的每一個字符, 取其ASCII 碼值, 比較是否和0~9、“+”、“-”、“.”的ASCII 碼值相同,相同的則保留。
符號“+”、“-”和“.”是為了保留如“-37”、“+25”、“-4.28”等含符號及小數(shù)的數(shù)字。
為了防止保留文中單獨出現(xiàn)的符號“+”、“-”和“.”,必須有判斷條件,只保留那些既出現(xiàn)符號“+”、“-”、“.”且下一個相鄰的字符是數(shù)字的字符串。
3)取中文字符函數(shù)pickoutChinese(string)
該函數(shù)的功能,是僅保留字符串中的中文字符,去掉所有的數(shù)字字符、標點符號和西文字符,其實現(xiàn)原理同取數(shù)字函數(shù)pickoutNnm(),在此不再贅述。
4)分割字符函數(shù)strSplit(string,char),該函數(shù)可按分隔字符char 將字符串string 分割為字符串數(shù)組。
5)寫數(shù)值數(shù)組或矩陣到excel 文件函數(shù)writeToExcel()有些編程語言如MATLAB2007 以后版本,提供了該類函數(shù),其形式如下:
xlswrite(filename,Matrix,sheet,range)
該函數(shù)可將所要寫的數(shù)組矩陣Matrix, 一次寫到給定的excel 文件filename,寫到給定的表sheet 且范圍range 的起始行、列到終止行、列的位置上。
由于原始數(shù)據(jù)結(jié)構(gòu)的多樣性, 在數(shù)據(jù)處理的過程中,出現(xiàn)了一些非預(yù)想的結(jié)果, 如原word 文檔中的 “厘米2”或“cm2”,轉(zhuǎn)化為.txt 文檔后,變?yōu)椤袄迕?”或“cm2”,使用取數(shù)字函數(shù)后,數(shù)字“2”保留了下來,但這是無效和無用的數(shù)字,必須去掉。 本文采用了如下的方法,先將“厘米2”替換為“厘米平方”,這樣在就避免了非預(yù)想數(shù)字“2”的出現(xiàn)。
類似的還有反映實驗數(shù)據(jù)第一、第二、第三批次的“D1”、“D2”、“D3”,都替換成“D 一”、“D 二”、“D 三”等。
分析可知,所有原始文檔數(shù)據(jù)以3 種形式之一呈現(xiàn):
1)性能屬性和屬性值在同一行(段)中,該類數(shù)據(jù)稱為簡單結(jié)構(gòu)數(shù)據(jù);
2)性能屬性以簡單表格的形式呈現(xiàn);
3)性能屬性以較為復雜表格的形式呈現(xiàn);
所以,對推進劑原始文檔數(shù)據(jù)的處理,就歸結(jié)為對這不同格式數(shù)據(jù)的處理,分別介紹如下。
簡單結(jié)構(gòu)數(shù)據(jù)處理的方法步驟:
1) 運行程序,遍歷文檔所有行,查找設(shè)定的性能參數(shù)(如實測比沖),若找到,提取該行,添加到字符串中。
2) 依次取出該字符串的每一行,分割出前12 個字符,再取出前3 個字符(推進劑序號),轉(zhuǎn)換成整數(shù),再轉(zhuǎn)成字符串。其功能是,若推進劑序號前有0,則去掉;再和該行的后面部分連接,對性能“實測比沖”運行程序至此,結(jié)果如圖2 所示。
圖2 查找并處理性能"實測比沖"的結(jié)果Fig. 2 The results of find and processing performance
3)分析可見,每一行由5 部分組成,分別是①推進劑序號;②實測比沖值;③比沖單位;④壓強值;⑤壓強單位。
4)運行程序功能函數(shù)pickoutNum(),得①、②、④3 個數(shù)值部分;運行程序功能函數(shù)pickoutChinese(),得③、⑤單位部分。
5)將數(shù)值部分分割,把每一數(shù)值部分分別保存到相應(yīng)的數(shù)組矩陣中;將單位部分分割,把每一單位部分分別保存到相應(yīng)的數(shù)組矩陣中。
6)運行程序功能函數(shù)writeToExcel(),將數(shù)組矩陣分別寫入excel 文件的相應(yīng)位置。
7)將excel 文件中的數(shù)據(jù)導入到數(shù)據(jù)庫中。
性能指標的處理,分為多個步驟是為便于說明,實際操作中,運行程序,可一次完成上述的1)~6)步驟。
對簡單結(jié)構(gòu)表格如表1 所示。
表1 原始文檔簡單表格結(jié)構(gòu)Tab. 1 A simple table structure of the original document
提取該文檔性能數(shù)據(jù),其方法步驟為:
1)依次讀取文檔的每一行,賦值給一字符串變量string1;
2)對string1,運行程序的strRplace()函數(shù),將字符串“厘米2”替換為“厘米平方”;
3)去掉string1 的前后空格,提取前兩個字符,作為推進劑編號,保存到數(shù)組tuijinji[]中;
4)去掉string1 的前11 個字符,得字符串string2;
圖3 表1 數(shù)據(jù)添加行序號后結(jié)果Fig. 3 The results of table 1 data after adding line number
5)對string2,運行程序的strChinese()函數(shù),提取中文字符string3;
6)以“(”為分隔符,分割string3 為兩部分,前一部分為性能參數(shù),保存到數(shù)組xingneng[]中,后一部分去掉末位字符“)”后為性能單位,保存到數(shù)組danwei[]中;
7)對string2,運行程序的strNum()函數(shù),提取數(shù)字部分并保存到string4;
8)以空格為分隔符,分割string4 為3 個數(shù)值,保存到數(shù)組value[5][3]中,第一維為行號,第二維為列號;
9)運行程序功能函數(shù)writeToExcel(),分別將數(shù)組tuijinji[]、xingneng[]、danwei[]、value[][]寫入excel 文件的相應(yīng)位置。
10)將excel 文件中的數(shù)據(jù)導入到數(shù)據(jù)庫中。
對如圖3 所示具有復雜表格結(jié)構(gòu)的燃速數(shù)據(jù),每個數(shù)據(jù)都和測量條件溫度及壓力有關(guān),且又分為3 批次測量。 該表格轉(zhuǎn)換成.txt 文檔后,如表2 所示。
表2 原始文檔復雜表格結(jié)構(gòu)Tab. 2 The original document complex table structure
提取該文檔性能數(shù)據(jù),其方法步驟為:
1)對圖6 所示的文檔,運行strReplace()函數(shù),替換字符串“D1”、“D2”、“D3”為“D 一”、“D 二”、“D 三”;
2)讀取文檔第1 行,賦值給字符串變量string1,提取前兩個字符,作為推進劑編號, 保存到數(shù)組tuijinji[]中;
3)去掉string1 的前后空格,去掉前11 個字符,運行strSplit()函數(shù),將分割所得部分分別保存到數(shù)組xingneng[]和數(shù)組danwei[]中;
圖4 表2 數(shù)據(jù)添加行序號后結(jié)果Fig. 4 The results of table 2 data after adding line number
4)讀取文檔第2 行,去掉前11 個字符,運行strNum()函數(shù),再運行strSplit()函數(shù),將分割的4 個數(shù)值保存到y(tǒng)aQiang[]數(shù)組中;
5) 分別讀取文檔的第4+3*0 行、4+3*1 行、4+3*2 行,去掉前11 個字符,再用pickoutNum(string) 去掉中文字符,得string2,再用strSplit(string1)函數(shù),得數(shù)字字符串數(shù)組,讀取的第一個是溫度值,保存到數(shù)組wendu[]中;其它數(shù)值是燃速值,保存到燃速數(shù)組ransu[][]中。 該數(shù)組的第一維為溫度參數(shù),第二維為壓強參數(shù)。
6) 分別讀取文檔的第5+3*0 行、5+3*1 行、5+3*2 行,去掉前11 個字符,再用pickoutNum(string) 去掉中文字符(該步驟也可不用),得string3,再用strSplit(string1)函數(shù),得數(shù)字字符串數(shù)組, 讀取的第一個是溫度值, 保存到數(shù)組wendu[]中;其它數(shù)值是燃速值,保存到燃速數(shù)組ransu[][]中。
7)分別讀取文檔的第6+3*0 行、6+3*1 行、6+3*2 行,其后方法同步驟6)。
8)運行程序功能函數(shù)writeToExcel(),分別將數(shù)組tuijinji[]、xingneng[]、danwei[]、wendu[]、yiQiang[]、ransu[][]寫入excel 文件的相應(yīng)位置。
9)將excel 文件中的數(shù)據(jù)導入到推進劑定型配方數(shù)據(jù)庫中相應(yīng)的數(shù)據(jù)表內(nèi)。
數(shù)百個火藥推進劑配方,數(shù)百個性能屬性,數(shù)十萬個性能數(shù)據(jù),根據(jù)功能和屬性的不同,本文設(shè)計了燃速、燃速經(jīng)驗公式、燃速溫度系數(shù)、機械性能、安全性能、能量特性、燃氣成分等10 多個數(shù)據(jù)庫表,按照文中介紹的方法和步驟,編程實現(xiàn)了對原始文檔數(shù)據(jù)的自動提取及自動分類入庫。 實踐表明,文中所給出的方法是有效且高效的。 雖然文中只是針對推進劑數(shù)據(jù)的處理,但其方法,可廣泛應(yīng)用于其它行業(yè)的數(shù)據(jù)自動提取及分類入庫,對數(shù)據(jù)的有效管理和高效使用有積極的意義。
[1] Arunasalam B. Chawla S CCCS. a top-down associative classifier for imbalaneed class distribution [C]//In Proc.of 2006 Int.Conf.onKnowledge Diseovery and Data Mining,2006:517-522.
[2] Verhein F,Chawla s. Using Signficant Positively Associated and Relatively Class Correlated Rules for Associative Classification of Imbalanced Datasets [C]//InProc.of 2007 IEEE Int.Conf.on Data Mining,2007:679-684.
[3] Hinton G E,Salakhutdinov R R. Redueing the dimensionality of data with neural networks [J]. Seience,2006,313(5786):504-507.
[4] Gao B,Liu T Y,Ma W Y. Star-structured high-order heterogeneous data co-clustering based on consistent information theory [C]//In: Processing of the 6th International Conference on Data Mining,2006:880-884.
[5] Luxburg U V. A tutorial on special clustering [J]. Statistics and Computing,2007,17(4):395-416.
[6] Luxburg U V,Belkin M. Bousquet O. Consistency of spectral clustering[J]. Aunals of Statistics,2008,36(2):555-586.
[7] 張卓然. 基于ArcSDE的地形數(shù)據(jù)入庫互操作研究[D]. 長沙:湖南大學,2008.
[8] 肖景嫻,李斌. 色譜工作站中分析數(shù)據(jù)的自動處理[J]. 現(xiàn)代科學儀器,2009,10(5):55-56.
XIAO Jing-xian,LI Bin. Auto-process of analytical data in chromatography workstation[J].Modern Scientific Instruments,2009(5):55-56.
[9] 馬春華. 基于現(xiàn)場總線的卷煙入庫數(shù)據(jù)采集系統(tǒng)[J]. 自動化技術(shù)與應(yīng)用,2006(10):71-73,86.
MA Chun-hua. Fieldbus based-data acquisition system for cigarette warehouse [J]. Techniques of Automation and Applications,2006(10):71-73,86.
[10]魏柳,谷光裕,楊威. 地震前兆數(shù)據(jù)的自動傳輸與入庫[J].東北地震研究,2002(3):65-67.
WEI Liu,GU Guang-yu,YANG Wei. Automatic transfer and input of digital seismic prcusory data[J]. Seismological Research of Northeast China,2002(3):65-67.
[11]楊琳. 城市綠化數(shù)據(jù)生產(chǎn)及研究入庫[D]. 上海:上海師范大學,2009.