一種數(shù)據(jù)類型自動化識別方法
【專利摘要】本發(fā)明公開一種數(shù)據(jù)類型自動化識別方法,本發(fā)明屬于智能信息處理領(lǐng)域,尤其涉及一種文本分類方法和系統(tǒng),使用自定義算法對圖片、行文本、記錄文本進(jìn)行識別分類,進(jìn)而滿足海量大數(shù)據(jù)文件的處理需求。
【專利說明】
一種數(shù)據(jù)類型自動化識別方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于智能信息處理領(lǐng)域,尤其涉及一種文本分類方法和系統(tǒng),使用自定義 算法對圖片、行文本、記錄文本進(jìn)行識別分類,進(jìn)而滿足海量大數(shù)據(jù)文件的處理需求。
【背景技術(shù)】
[0002] 計算機和互聯(lián)網(wǎng)在政治、經(jīng)濟(jì)、文化以及社會生活中發(fā)揮著越來越重要的作用,信 息的共享與交流已成為不可阻擋的發(fā)展趨勢。文件作為信息的載體,被廣大企業(yè)和個人用 戶廣泛使用。文件是計算機組織和存儲信息的重要結(jié)構(gòu),文件的類型多種多樣,如文本文 件、圖像文件、聲音文件、可執(zhí)行文件等等,目前已知的文件類型已有幾千種,僅圖像文件類 型就已經(jīng)超過了 100種。多樣化的文件類型能夠滿足人們對信息處理的各種需求,給人們的 工作、生活等各方面帶來了極大的便利。從個人使用的角度來說,伴隨著數(shù)據(jù)處理技術(shù)的不 斷發(fā)展,用戶對文件歸檔、分析等需求也日趨多樣化,特別是大數(shù)據(jù)時代,文件類型識別作 為大數(shù)據(jù)研究分析的第一步,傳統(tǒng)的依靠人工識別方式開始顯得力不從心,一種海量文件 的類型快速判斷應(yīng)運而生;從網(wǎng)絡(luò)安全角度來說,文件存儲在計算機上時,其各種屬性,如 類型信息(包括文件后綴名、魔數(shù)信息等)、文件大小、讀寫權(quán)限等,都存儲在文件系統(tǒng)的目 錄結(jié)構(gòu)中,而文件實體本身則存儲在磁盤上相應(yīng)的簇中。兩者分別由不同的結(jié)構(gòu)描述和存 儲,文件屬性的改變,并不影響文件實體本身的內(nèi)容。兩者的獨立性使惡意用戶有機可乘, 通過改變目錄中文件的有關(guān)屬性,破壞其與文件實體之間的對應(yīng)關(guān)系,從而掩蓋文件實體 的真實類型,以達(dá)到傳播木馬和病毒、隱藏敏感信息和犯罪證據(jù)等不可告人的目的,給用戶 的信息安全和國家的安定團(tuán)結(jié)構(gòu)成嚴(yán)重威脅。一方面,一些黑客和網(wǎng)絡(luò)犯罪分子將木馬、病 毒偽裝成正常的資源文件,或?qū)阂獯a嵌入資源文件中,誘騙用戶訪問和下載,竊取破壞 用戶的信息資源。據(jù)中國互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)和中國互聯(lián)網(wǎng)絡(luò)應(yīng)急響應(yīng)中心 (CNCERT)在京聯(lián)合發(fā)布的《2009年中國網(wǎng)民網(wǎng)絡(luò)信息安全狀況調(diào)查系列報告》指出,2009 年,52%的網(wǎng)民遭遇過網(wǎng)絡(luò)安全事件,其中71.5%是因為在網(wǎng)絡(luò)下載或瀏覽時遭遇病毒或 木馬攻擊。中國反網(wǎng)絡(luò)病毒聯(lián)盟(ANVA)整理發(fā)布的活躍惡意代碼中,利用網(wǎng)頁掛馬、捆綁下 載進(jìn)行傳播的惡意代碼所占比例較高。另一方面,以計算機作為犯罪對象、犯罪工具以及犯 罪信息載體的計算機犯罪愈演愈烈。據(jù)美國FBI下屬機構(gòu)IC3( Internet Crime Complaint Center)發(fā)布的2007計算機犯罪調(diào)查報告顯示,信息盜竊、金融詐騙、內(nèi)部人士網(wǎng)絡(luò)濫用、病 毒等計算機犯罪案件造成了巨大的經(jīng)濟(jì)損失。而計算機犯罪的專業(yè)化、智能化、復(fù)雜化、多 樣化、隱蔽化的特點,使計算機犯罪的破案率較低,助長了犯罪分子的囂張氣焰。文件類型 識別技術(shù)就是在這種背景下應(yīng)運而生的,它旨在依據(jù)文件實體本身所表現(xiàn)出的特征判斷文 件的類型,為計算機取證、防火墻、病毒防護(hù)、入侵檢測系統(tǒng)、郵件過濾及隱寫分析等應(yīng)用研 究領(lǐng)域提供支持??焖?、準(zhǔn)確識別文件的真實類型,對保護(hù)網(wǎng)絡(luò)和計算機信息安全具有重要 的現(xiàn)實意義。目前,要實現(xiàn)高效而準(zhǔn)確地識別文件真實類型,還面臨以下難點問題:
[0003] (1)-些惡意用戶不斷改進(jìn)文件類型信息的篡改和偽造技術(shù),使篡改和偽造后的 文件辨認(rèn)度更低、仿真度更高,對文件真實類型的準(zhǔn)確識別變得更加困難。如何深入分析文 件實體的內(nèi)部特性,多方面多角度對文件進(jìn)行綜合判斷,是準(zhǔn)確識別文件類型的關(guān)鍵所在。
[0004] (2)由于文件的完整程度事先不可預(yù)知,因此在設(shè)計文件類型識別算法時,既要保 證識別結(jié)果有較高的準(zhǔn)確率,又要對篡改和損壞的文件具有良好的包容性。采用何種策略 使算法在保持較高準(zhǔn)確率的同時,也適應(yīng)于不完整的文件類型識別,是提高算法適應(yīng)性必 須解決的重要問題。
[0005] (3)文件類型的種類眾多,其中相當(dāng)一部分類型沒有統(tǒng)一的規(guī)范和標(biāo)準(zhǔn),或者其規(guī) 范和標(biāo)準(zhǔn)是商業(yè)秘密,不能公開發(fā)布。這種情況下,收集文件類型信息的難度加大,判斷文 件類型無據(jù)可依,給文件類型的識別帶來了很大的困難。如何不依賴特定文件的規(guī)范,設(shè)計 出具有較高正確率和較強普適性的文件類型識別算法,是急需解決的問題。
【發(fā)明內(nèi)容】
[0006] 針對上述問題,本發(fā)明的目的在于提供一種識別文件類型的方法并能夠按照文件 內(nèi)容特征進(jìn)行分類,它支持多種類型的文件,包括圖片,行文本(自由文本),記錄文本(結(jié)構(gòu) 化文本)等。
[0007] 為實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
[0008] 一種數(shù)據(jù)類型自動化識別方法,包括以下步驟:
[0009] 步驟1:對輸入的原始文件進(jìn)行初步分類,使用基于字符統(tǒng)計的文件類型識別方法 判定文件是結(jié)構(gòu)化文件(多媒體文件)還是非結(jié)構(gòu)化文件(文本文件);
[0010] 步驟2:若得到是結(jié)構(gòu)化文件,使用特征碼識別的文件類型識別方法判定該文件是 圖片JPG,roF,doc中的哪一種,若結(jié)果是非結(jié)構(gòu)化文件(文本文件),使用正則表達(dá)式的文本 類型識別方法判定文件是結(jié)構(gòu)化文本還是自由文本。
[0011] 基于字符統(tǒng)計的文件類型識別算法:
[0012] 可統(tǒng)計二進(jìn)制文件中是否存在大量字符70'進(jìn)行判斷。非結(jié)構(gòu)文件的形成主要有 外接設(shè)備的輸入和編程語言的輸出,外接設(shè)備主要是指鍵盤和鼠標(biāo),因此文本中除了回車 和換行都是可顯示字符,對于'\〇'等轉(zhuǎn)義字符,屬于鍵盤和鼠標(biāo)的輸入范圍之外,而'\〇'在 編程語言中一般表示文件的結(jié)尾,在文件的讀寫過程中,編譯器都會進(jìn)行截斷處理,所以文 本文件中必然不會包含'\〇',而在多媒體文件(結(jié)構(gòu)化文件),大多使用0x00 ('\〇'的十六進(jìn) 制形式)進(jìn)行字符的填充,因此完全可以統(tǒng)計'\〇'字符的個數(shù)進(jìn)行結(jié)構(gòu)化文件與非結(jié)構(gòu)化 文件的分類識別。
[0013] 結(jié)構(gòu)化文件:結(jié)構(gòu)化文件是指文件中數(shù)據(jù)的組織和存放滿足嚴(yán)格約束條件的文 件,需要把特定數(shù)據(jù)按照一定的順序和結(jié)構(gòu)存儲在文件中。通常每種文件類型都有相應(yīng)的 格式規(guī)范說明,規(guī)定了如何將信息編碼存儲到該類型的文件中去。使用越廣泛的文件類型, 其格式規(guī)范越標(biāo)準(zhǔn)、越詳細(xì)。結(jié)構(gòu)化文件使用預(yù)先嚴(yán)格定義的結(jié)構(gòu)來管理和組織各類數(shù)據(jù), 一個結(jié)構(gòu)化文件必須要滿足其所屬類型格式規(guī)范的約束條件。相反,非結(jié)構(gòu)化文件是指沒 有任何約束條件的文件,將字節(jié)流按順序存儲在文件中即可。
[0014] 基于特征碼識別的文件類型識別算法:
[0015] 通過特征碼匹配識別文件類型,首先要深入分析各種類型文件的格式規(guī)范,挖掘 出能夠代表各類型的特征碼組合,并將特征碼組合進(jìn)行統(tǒng)一描述;然后匹配各特征碼組合, 以確定文件類型。在匹配特征碼時,為增強匹配目標(biāo)的明確性,提高匹配結(jié)果的準(zhǔn)確性,本 發(fā)明提出基于限定區(qū)域的特征碼匹配算法,即將待測文件進(jìn)行區(qū)域劃分,在限定的區(qū)域范 圍內(nèi)分別匹配相應(yīng)的特征碼。最后根據(jù)匹配程度識別文件類型。
[0016] 基于正則表達(dá)式的文本類型識別算法:
[0017] 非結(jié)構(gòu)文件的進(jìn)一步分類:對于非結(jié)構(gòu)化文件,又可根據(jù)文本內(nèi)部的組織有無約 束條件分為自由文本和結(jié)構(gòu)化文本,自由文本即無結(jié)構(gòu)文本,是指無法根據(jù)文本格式將文 本進(jìn)行有效分解,形成語義較為清晰的文本模塊的自然語言文本。常見的自由文本有散文、 日記、畢業(yè)論文、新聞報道等。日常生活中常見的文本絕大多數(shù)為自由文本。結(jié)構(gòu)化文本,是 指內(nèi)容為結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)的文本。每個獨立語義模塊之間有明顯的非標(biāo)點分割符 號,如空格、回車、表格、編號、特殊格式字符等等,同一類型數(shù)據(jù)一般具有相同的類型或值 域,表中語句簡短,語句表達(dá)方式較為固定。常見的這類文本有編程日志、工資表、各類清 單、結(jié)算單等。
[0018] 結(jié)構(gòu)化文本的每個獨立語義模塊之間一般都有很明顯的分割標(biāo)志,如"上線時間: 2015年1月2號","出勤率--2Γ等,通過對每行文本的詞頻分析確定可能的分割標(biāo)志,進(jìn)而 確定匹配模式,然后將文本中剩余的其它行作為輸入進(jìn)行模式匹配,如匹配結(jié)果高于提前 確定的闕值,即可認(rèn)為該文本為結(jié)構(gòu)化文本。
[0019] 上述技術(shù)方案中,基于正則表達(dá)式的文本類型識別算法:
[0020] 結(jié)構(gòu)化文本的每個獨立語義模塊之間都有很明顯的分割標(biāo)志,通過對整個文件的 前10%行文本的詞頻分析確定分割標(biāo)志,進(jìn)而確定匹配模式;然后將文本中剩余的其它行 作為輸入進(jìn)行模式匹配,如匹配結(jié)果高于闕值,即可認(rèn)為該文本為結(jié)構(gòu)化文本。
[0021] 定匹配模式也就是一個通用的模式字符串,可以匹配所有具有模式字符串特征的 字符串,比如在一般的正則表達(dá)式實現(xiàn)中字符串'\d'就可以作為模式字符串,用來匹配所 有的單個數(shù)字,' \w '可以作為模式字符串,用來匹配所有的單詞。
[0022]以"2015年1月2號"為例,說明模式匹配過程:
[0023] 1.統(tǒng)計前100行數(shù)據(jù),確定每行都出現(xiàn)"年"字1次,"月"字1次,"號"字一次,暫時認(rèn) 為分割符為年月日。即匹配模式為"\?年\?月\?號"。
[0024] 2.分析分割符之間的文字特征,發(fā)現(xiàn)分割符之間的字符都是數(shù)字字符,即ascii碼 48-57,更新匹配模式為"\(1+年\(1+月\(1號"。即pattern = Pattern.compile(〃\(1+年\(1+月\(1 號");
[0025] 3.對于剩下的每一行row執(zhí)行Matcher matcher = pattern.matcher(patte;rn); [0026] boolean b = matcher.matches();若匹配成功的個數(shù)大于提前確定的闕值,貝丨J認(rèn) 為分割符有效,文本類型為結(jié)構(gòu)化文本。
[0027] 文件類型識別技術(shù)旨在依據(jù)文件實體本身所表現(xiàn)出的特征判斷文件的類型,為計 算機取證、防火墻、病毒防護(hù)、入侵檢測系統(tǒng)、郵件過濾及隱寫分析等應(yīng)用研究領(lǐng)域提供支 持。比如一些黑客和網(wǎng)絡(luò)犯罪分子會將木馬、病毒偽裝成正常的資源文件如pdf文檔或者 jpg圖片等,誘騙用戶訪問和下載,竊取破壞用戶的信息資源。如果采用以上技術(shù)方案,能夠 快速、準(zhǔn)確識別文件的真實類型,會發(fā)現(xiàn)文檔只是后綴名和開頭的幻數(shù)符合pdf文檔特征, 其文件整體特征不符合pdf文檔特征碼組合,其真實類型為代碼txt文件。
[0028] 因為本發(fā)明采用以上技術(shù)方案,因此具備以下有益效果:
[0029] 文件類型識別技術(shù)旨在依據(jù)文件實體本身所表現(xiàn)出的特征判斷文件的類型,為計 算機取證、防火墻、病毒防護(hù)、入侵檢測系統(tǒng)、郵件過濾及隱寫分析等應(yīng)用研究領(lǐng)域提供支 持。采用以上技術(shù)方案,能夠快速、準(zhǔn)確識別文件的真實類型,對保護(hù)網(wǎng)絡(luò)和計算機信息安 全具有重要的現(xiàn)實意義。
[0030] 本發(fā)明優(yōu)勢,與傳統(tǒng)的基于后綴名和文件幻數(shù)的識別方法相比,本發(fā)明對文件識 別類型更廣,能把識別文本文件,且識別更加準(zhǔn)確,能夠有效避免惡意用戶通過修改后綴名 和文件幻數(shù)逃過傳統(tǒng)文件類型檢查的弊端。
【附圖說明】
[0031] 圖1算法基本流程圖;
[0032] 圖2基于限定區(qū)域特征碼匹配的文件類型識別算法;
[0033]圖3基于正則表達(dá)式的結(jié)構(gòu)化文本類型識別算法。
【具體實施方式】
[0034]結(jié)構(gòu)化文件與非結(jié)構(gòu)化文件的判定分類
[0035] 對給定的待檢測樣本文件,采用文本文件特征提取的方式進(jìn)行判定,在純文本文 件中,除了回車換行TAB等文本控制符外,都是可打印字符,因此我們可以統(tǒng)計文本文件中 的非打印字符,如' \〇 ',' \a '等,進(jìn)而可初步判斷文件類型。
[0036] 基于特征碼的結(jié)構(gòu)化文件類型識別算法
[0037] 結(jié)構(gòu)化文件中不僅需要保存實際的用戶數(shù)據(jù),而且需要保存表示結(jié)構(gòu)和功能約束 關(guān)系的元數(shù)據(jù),這兩種數(shù)據(jù)在文件中存儲時都受嚴(yán)格的結(jié)構(gòu)規(guī)范約束。元數(shù)據(jù)是用來描述 用戶數(shù)據(jù)的存儲結(jié)構(gòu)、定義操作功能屬性的字節(jié)串,是文件中不可缺少的元素。這種元數(shù)據(jù) 就是要提取的類型特征碼。這種特征碼不僅能夠體現(xiàn)文件類型的特點,又因為其分散在文 件中的字節(jié)流中,出現(xiàn)位置隨具體文件而變化,所以篡改難度很大,因此將其作為依據(jù)來識 別文件類型結(jié)果更為準(zhǔn)確可靠。下面以jpg圖片格式為例,說明算法的主要流程。
[0038] jpg圖片的特征碼提取
[0039] jpg文件,其基本數(shù)據(jù)是由一個個段組成,段的類型有30種,但只有10種是必須的, 因此這10種段都可以作為jpg文件的特征碼。段的一般結(jié)構(gòu)如表1所示,10種必須段的標(biāo)記 碼如表2所示。
[0040] 表1: jpg文件格式的段的一般格式
[0041]
[0042] 表2:10種必要的段類型
[0043]
[0044] 本發(fā)明選取上述S0I、E0I、S0F0三個字段作為待匹配的特征碼。
[0045] 文件頭的特征碼^和相應(yīng)的正則表達(dá)式(R(Fi))分別如下:
[0046] Fi=(0xFFD8)
[0047] R(Fi) = {FFD8[FF] + }
[0048] 說明:段與段之間多于1個的FF為填充字符,無實際意義
[0049] 文件尾的特征碼^和相應(yīng)的正則表達(dá)式(R(F2))分別如下:
[0050] F2=(0xFFD9)
[0051 ] R(F2) = {FFD9[FF] + }
[0052] 文件幀的特征碼組F3和正則表達(dá)式分別如下:
[0053] F3=(0xFFC0,0xFFC1)
[0054] R(F3) = {FF[C0|C1][FF] + }
[0055] jpg文件識別
[0056]由上分析可知,jpg文件的特征碼一般出現(xiàn)在固定區(qū)域,如文件頭SOI在文件頭,幀 開始字段也是在文件開始偏移10-20個字符處。算法偽代碼如下:
[0057] 算法:FileTypeldentifyBySignature
[0058] Input:待測文件D特征碼組正則表達(dá)式集R(R(F1,F(xiàn)2,F(xiàn)3…)
[0059] 得分閾值ri
[0060] Output :P
[0061] Begin:
[0062] 對待測文件D根據(jù)各特征碼的偏移值進(jìn)行分割,得到以下兩條結(jié)果:
[0063] 1.得到劃分后的特征碼近似區(qū)域:{B1,B2,B3',,. . .}
[0064] 2.for(i = 0;i<m; i++)
[0065] 對特征碼近似區(qū)域Bi使用正則表達(dá)式匹配該近似區(qū)域相應(yīng)的特征碼組
[0066] Fi,記錄匹配次數(shù),加入得分Score;
[0067] 若 Score>n,則P = 1
[0068] 若 Score〈rid!jP = 0
[0069] return(P)
[0070] end
[0071 ]基于正則表達(dá)式的結(jié)構(gòu)化文本類型識別算法
[0072]結(jié)構(gòu)化文本的每個獨立語義模塊之間一般都有很明顯的分割標(biāo)志,如"上線時間: 2015年1月2號","出勤率--2Γ等,通過對每行文本的詞頻分析確定可能的分割標(biāo)志,進(jìn)而 確定匹配模式,然后將文本中剩余的其它行作為輸入進(jìn)行模式匹配,如匹配結(jié)果高于提前 確定的闕值,即可認(rèn)為該文本為結(jié)構(gòu)化文本。
[0073] 實施例一
[0074] 1輸入樣本文件test,使用基于字符統(tǒng)計的文件分類算法。發(fā)現(xiàn)文件test沒有字符 '\0',所以test文件為非結(jié)構(gòu)化文件(即文本文件),接著使用基于正則表達(dá)式的文件分類 算法,對樣本文件進(jìn)行處理,統(tǒng)計文本總行數(shù)為453行,取前10 %,即前45行進(jìn)行匹配模式的 確認(rèn),得到模式為"四個數(shù)字一工資=三到四個數(shù)字一兩個數(shù)字月兩個數(shù)字日"即patterns = \d{4}-工資= \d{3,4}-\d\d月,接著使用這個模式查看對于剩下行的匹配結(jié) 果。發(fā)現(xiàn)剩下的400行有383都能成功匹配。匹配率大于80%,進(jìn)而確認(rèn)test文本類型為結(jié)構(gòu) 化文本。
[0075] 實施例二
[0076]輸入樣本test2,使用基于字符統(tǒng)計的文件分類算法。發(fā)現(xiàn)文件test2總計約50000 個字符中有8000個為' \0 '作為填充字符,所以test2文件為結(jié)構(gòu)化文件,接著使用基于特征 碼組合的文件分類算法,對樣本文件進(jìn)行處理一一使用各種文件類型的特征碼分別對樣本 進(jìn)行匹配。發(fā)現(xiàn)樣本與JPG的特征碼匹配,故test2文件為jpg文件類型。
【主權(quán)項】
1. 一種數(shù)據(jù)類型自動化識別方法,其特征在于: 步驟1:對輸入的原始文件進(jìn)行初步分類,使用基于字符統(tǒng)計的文件類型識別方法判定 文件是結(jié)構(gòu)化文件(多媒體文件)還是非結(jié)構(gòu)化文件(文本文件); 步驟2:若得到是結(jié)構(gòu)化文件,使用基于特征碼識別的文件類型識別方法判定該文件是 圖片JPG,roF,doc中的哪一種,若結(jié)果是非結(jié)構(gòu)化文件(文本文件),使用正則表達(dá)式的文本 類型識別方法判定文件是結(jié)構(gòu)化文本還是自由文本。2. 根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)類型自動化識別方法,其特征在于,基于字符統(tǒng)計的 文件類型識別方法:統(tǒng)計二進(jìn)制文件中是否存在大量字符'\〇'進(jìn)行判斷,非結(jié)構(gòu)化文件(文 本文件)中必不包含' \〇 ',則判斷為非結(jié)構(gòu)化文件(文本文件),否則為結(jié)構(gòu)化文件(多媒體 文件)。3. 根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)類型自動化識別方法,其特征在于,基于正則表達(dá)式 的文本類型識別算法:結(jié)構(gòu)化文本的每個獨立語義模塊之間都有很明顯的分割標(biāo)志,通過 對整個文件的前10%行文本的詞頻分析確定分割標(biāo)志,進(jìn)而確定匹配模式; 然后將文本中剩余的其它行作為輸入進(jìn)行模式匹配,如匹配結(jié)果高于闕值,即可認(rèn)為 該文本為結(jié)構(gòu)化文本。
【文檔編號】G06F17/30GK105975575SQ201610289217
【公開日】2016年9月28日
【申請日】2016年5月4日
【發(fā)明人】張小松, 牛偉納, 唐海洋, 黃婉玉, 盧嘉中, 張 林, 李瑞杏, 曹思宇, 宋珺, 許瓏于
【申請人】電子科技大學(xué)