王春偉,侯 方,申 升,南 賽,李英偉,*
(1. 燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004;2. 大慶油田信息技術(shù)公司 北京分公司,北京 100043)
目前企業(yè)知識創(chuàng)新成為互聯(lián)網(wǎng)企業(yè)生存并獲取競爭優(yōu)勢的重要砝碼,企業(yè)管理不得不將重心逐漸向知識管理偏移[1],而在互聯(lián)網(wǎng)企業(yè)內(nèi)部的日常管理、人員管理、設(shè)備運(yùn)行等諸多工作都要依賴IT運(yùn)維管理系統(tǒng),已經(jīng)嚴(yán)重降低了企業(yè)的效率,缺少知識管理的IT運(yùn)維管理平臺已經(jīng)面臨巨大的壓力[2]。在智能化IT運(yùn)維管理平臺中,其有形知識主要存儲在數(shù)據(jù)庫或者企業(yè)的終端電腦中,而隱性知識則存儲在企業(yè)內(nèi)部員工的大腦中,隱性知識只能通過員工之間的交流、總結(jié)、會議和匯報(bào)等非正式方式獲取[3]。因此,在研發(fā)智能化IT運(yùn)維管理平臺時(shí),加入對PDF文檔管理研發(fā)的需求,使用戶能夠快速有效檢索到想要查詢的文檔內(nèi)容,在企業(yè)內(nèi)部之間實(shí)現(xiàn)知識共享[4]。但是針對PDF文檔管理系統(tǒng)的研發(fā)存在幾點(diǎn)問題,例如,文檔解析工具不足,企業(yè)信息知識多以PDF文檔的格式進(jìn)行存儲,只能根據(jù)PDF文檔的標(biāo)題進(jìn)行分析檢索,造成了信息檢索準(zhǔn)確度的降低,無法將有效的相關(guān)PDF文檔全部檢索出來[5],知識文檔檢索效率低,企業(yè)內(nèi)部員工在查閱知識文檔時(shí)非常耗時(shí),導(dǎo)致知識的傳遞效率低,不利于企業(yè)工作人員高效學(xué)習(xí)現(xiàn)有知識,而且也沒有辦法為平臺故障及時(shí)提供有效的解決方案,造成了資源的浪費(fèi)[6]。
PDF文檔管理系統(tǒng)中存在的上述問題已經(jīng)給智能化IT運(yùn)維管理平臺的長遠(yuǎn)發(fā)展帶來了威脅,因此,如何盡快地提供一個(gè)有效解決智能化IT運(yùn)維管理平臺故障的方案,提高工作效率,已經(jīng)成為企業(yè)不可避免的難題。通過構(gòu)建PDF文檔管理系統(tǒng)可以形成企業(yè)內(nèi)部知識庫,然后通過PDF文檔管理系統(tǒng)進(jìn)行知識共享,提高企業(yè)員工的日常工作效率和對知識的創(chuàng)新,與此同時(shí)可以為智能化IT運(yùn)維平臺故障提供高效的解決方法,省去人力物力資源的消耗[7]。
PDF文檔管理系統(tǒng)的核心模塊主要是PDF文檔解析模塊和檢索模塊。系統(tǒng)工作流程如圖1所示,企業(yè)中員工將值得學(xué)習(xí)與分享的文檔上傳到企業(yè)文檔庫中,形成一個(gè)不斷更新的PDF文檔庫,當(dāng)其他員工或部分組織想查看相關(guān)文檔時(shí),只需通過檢索界面進(jìn)行搜索。在系統(tǒng)搜索的過程中,PDF文檔首先需要進(jìn)行文檔解析轉(zhuǎn)換為.txt格式文件,再通過結(jié)合向量空間模型的TF-IDF(Term Frequency-Inverse Document Frequency)算法計(jì)算文本權(quán)重值,最后根據(jù)計(jì)算所得權(quán)重值將一定數(shù)量的文檔排序,且展示在前端web界面上,使得排序結(jié)果更符合檢索者的需求。
PDF是現(xiàn)在企業(yè)知識管理中存儲知識的主要方式,而基于對整個(gè)系統(tǒng)的性能和效率的考慮,本系統(tǒng)解析模塊采用C語言從文檔格式上進(jìn)行編程,通過對Stream流的分析來加快PDF文檔內(nèi)容解析的速度,在對其解析之前,將基于Linux系統(tǒng)的Stream流解析環(huán)境搭建好,之后通過Linux環(huán)境中的stat()接口函數(shù)去讀取PDF文檔的大小并將其轉(zhuǎn)換成二進(jìn)制流讀入,之后加載一些解析配置文件。本系統(tǒng)的解析模塊根據(jù)PDF文檔的結(jié)構(gòu)特性和一系列文檔中的對象屬性標(biāo)簽,可以很容易找到Page頁對象屬性后面的/Contents,再通過pdf_get_cidcontents()接口函數(shù)獲取Contents內(nèi)容信息,將所有的內(nèi)容對象信息進(jìn)行提取和拼接操作,最終得到整個(gè)PDF文檔的文本內(nèi)容數(shù)據(jù)。
PDF文檔中字型信息被放在額外資源的Pages或Page對象的Resources屬性中,對于轉(zhuǎn)碼操作先判斷字型信息中ToUnicode相關(guān)屬性是否存在,若存在,則將后接的串流對象表示用來轉(zhuǎn)換成Unicode碼的CMap碼;若不存在,則需要觀察Type屬性和Subtype屬性,Type后接名稱對象Font;Subtype后接表示字型型態(tài)的名稱對象,分別為Type0、Type1、MMType1、Type和TrueType。對于非Type0的字型,輸入的字符編碼都是1 byte,將輸入字碼從Encoding CMap信息中取得該字碼對應(yīng)的字符名稱,依照取得的字符名稱轉(zhuǎn)成對應(yīng)的Unicode字碼;而Type0字型的輸入字碼可以是多位,1 byte、2 byte和4 byte可以一起混用,所以要取得寬度信息和 Unicode 字碼是比較復(fù)雜的。Type0字型轉(zhuǎn)碼流程如圖2所示。
PDF文檔檢索的排序功能是通過計(jì)算檢索問題與文檔關(guān)鍵詞之間的相似度,通過排序幫助用戶盡快獲得其需求的文檔或解決平臺的告警的問題,本文采取基于TF-IDF的空間向量模型排序算法實(shí)現(xiàn)排序功能。由于傳統(tǒng)的TF-IDF算法具有許多缺點(diǎn)[9],對于詞頻(TF,Term Frequency)來說,詞頻值大時(shí),確實(shí)可以象征其對文本的代表性,但是當(dāng)詞頻超過一定閾值后繼續(xù)增大,會導(dǎo)致文檔權(quán)重偏高,不能更準(zhǔn)確地反映出文檔權(quán)重。且TF-IDF算法不能反映詞的位置信息,在對關(guān)鍵詞進(jìn)行提取的時(shí)候,詞的位置信息,例如文本的標(biāo)題、文本的首句和尾句等含有較重要的信息,應(yīng)該賦予較高的權(quán)重。逆文檔頻率(IDF,Inverse Document Frequency)表示包含該關(guān)鍵字的PDF文檔數(shù)量,文檔集中包含關(guān)鍵詞的文檔數(shù)量越多,表示該關(guān)鍵字在搜索的問題中不重要。為此,針對詞頻(TF)和逆文檔頻率(IDF)進(jìn)行了相應(yīng)的改進(jìn)。由于在檢索的時(shí)候關(guān)鍵詞在文檔集中沒有出現(xiàn),可能導(dǎo)致分母為零,造成系統(tǒng)拋出異常,因此,fIDF計(jì)算表達(dá)式為
(1)
式中,M為文檔集總數(shù),當(dāng)t=1,fIDF值為最大的時(shí)候,該關(guān)鍵字在搜索中重要性為主要的詞匯;當(dāng)t=M的時(shí)候fIDF的值接近為0,說明任意一篇知識文檔都包含該詞,因此在文檔集中是屬于無關(guān)緊要的詞匯。
詞頻表示文檔的關(guān)鍵詞在某一篇PDF文檔中出現(xiàn)的次數(shù),得到的詞頻次越大,表示該文檔與檢索的關(guān)鍵詞越有可能相關(guān)。如果PDF文檔內(nèi)的某個(gè)關(guān)鍵詞出現(xiàn)的次數(shù)太多,會影響權(quán)重值的計(jì)算,導(dǎo)致最終PDF文檔的權(quán)重值很高,進(jìn)而排序的名次很高,影響排序的公正性。針對上述缺陷對詞頻進(jìn)行改進(jìn)的解決方案有兩種,一種是“亞線性變換”,另一種是“BM25變換”,如圖3所示,亞線性變換就是使用log函數(shù),函數(shù)y=x的增長率要比函數(shù)y=log(x+1)大很多,因此,當(dāng)一篇文檔中關(guān)鍵詞的詞頻越多,超過某一個(gè)值后,對權(quán)重的影響也就變得趨近于一直穩(wěn)定的值。而對于y=log(log(x+1)+1)函數(shù),開始時(shí)刻隨詞頻增量的增加,fTF值并沒有相對較快的增加變化,并不符合相應(yīng)需求。修改后的fTF表達(dá)式為
fTF(w,d)=log[1+c(w,d)]。
(2)
圖3中,BM25變換在記錄詞頻的時(shí)候給出一個(gè)上限,當(dāng)一個(gè)詞從無到有,是有很重要的價(jià)值,但是如果一個(gè)文檔中包含了該關(guān)鍵詞10次及以上,基本上不會產(chǎn)生太大的差異,所以在設(shè)計(jì)的時(shí)候適當(dāng)降低詞頻的影響,隨著詞頻的變大,可以得到表達(dá)式為
(3)
式中y的值最終會無限接近于k+1,其中k為設(shè)置詞頻的上限。進(jìn)而得到改進(jìn)的fTF′表達(dá)式為
(4)
通過圖3(k值設(shè)為2,對數(shù)函數(shù)使用lg),比較上述兩種解決方案,可以看到BM25變換要優(yōu)于亞線性變換,所以在系統(tǒng)設(shè)計(jì)中選用BM25變換的解決方案。另一種可能是一個(gè)很長的文檔敘述了很多內(nèi)容,每個(gè)內(nèi)容是一個(gè)小段落,這樣的文檔其實(shí)就是一篇篇小文檔構(gòu)成的,在這種情況下,詞的權(quán)重計(jì)算值是不同的,因此,對篇幅較長的文檔中的關(guān)鍵詞加入扼制因子,對于篇幅較短的則反之。這里采用的算法為Pivoted Length Normalization,該算法需要參數(shù)fnormalizer來進(jìn)行TF-IDF的權(quán)重平衡,fnormalizer的計(jì)算式為
(5)
圖4為算法Pivoted Length Normalization的變化規(guī)律,當(dāng)b=0的時(shí)候,所有值都為1,沒有扼制,對文檔沒有任何影響;當(dāng)b>0的時(shí)候,當(dāng)文本長度小于avdl,fnormalizer的值小于1,關(guān)鍵詞權(quán)重值則增加;當(dāng)文本長度大于avdl,fnormalizer的值大于1,關(guān)鍵詞權(quán)重值則減小。
加入扼制因子后fTF-IDF表達(dá)式為
fTF-IDF=
(6)
式中,參數(shù)z通過判斷關(guān)鍵詞在文檔中的位置增加或者減小該關(guān)鍵詞在文檔中的權(quán)重,如果關(guān)鍵詞的位置在標(biāo)題中出現(xiàn),則增加該關(guān)鍵詞的權(quán)重值,如果沒有則為1。
經(jīng)過上述對TF-IDF算法的改進(jìn)研究,我們需要將改進(jìn)算法融入向量空間模型中使用,向量空間模型是一種廣泛應(yīng)用于文本分類等領(lǐng)域的計(jì)算模型[10],在根據(jù)優(yōu)化后的TF-IDF算法得到文檔關(guān)鍵詞的權(quán)重后,利用空間向量模型對每個(gè)文檔的權(quán)重進(jìn)行計(jì)算排序,按照最終的每篇文檔權(quán)重值從高到低進(jìn)行展示。
為了驗(yàn)證本系統(tǒng)對PDF文本解析速度的高效性,引入Apache-Tika工具[10]作為對比。Tika是基于Java的內(nèi)容檢測和分析的開源工具包,可對多種文件類型進(jìn)行內(nèi)容分析,普遍應(yīng)用于文本管理系統(tǒng)的解析模塊。本實(shí)驗(yàn)通過比較Tika工具和本文PDF文檔解析方法的時(shí)間,分析兩種方法解析的效率。PDF文檔解析時(shí)間對比如圖5所示,本文方法對PDF文檔解析的時(shí)間明顯小于Tika工具對文檔解析的時(shí)間,證明了本文方法在性能上要比Tika文檔解析工具更快,提高了系統(tǒng)的性能。
然而對于排序功能與性能的測試,通過對檢索排序算法的優(yōu)化融合和程序上的實(shí)現(xiàn),將500篇IT運(yùn)維技術(shù)相關(guān)PDF文檔添加到數(shù)據(jù)庫中。從知識文檔管理系統(tǒng)主界面圖可以看到,通過對IT運(yùn)維管理中常見的問題“服務(wù)器CPU占用率過高內(nèi)容溢出”進(jìn)行檢索,可以從界面顯示得到與該問題相關(guān)的14篇文檔,然后記錄前10篇PDF文檔的權(quán)重值計(jì)算結(jié)果和檢索時(shí)間。PDF文檔檢索信息結(jié)果如表1所示。為保證系統(tǒng)性能,從檢索時(shí)間對本文算法與TF-IDF算法與空間向量模型計(jì)算文檔權(quán)重的時(shí)間進(jìn)行比對。從圖6中可以看到對于檢索不同的IT運(yùn)維問題,3種不同排序算法所需要的時(shí)間對比,本文算法相對比TF-IDF算法和空間向量模型的計(jì)算耗時(shí)要略長一些,但僅僅是幾十毫秒間的差距,況且在用戶檢索過程中,頁面加載用時(shí)要遠(yuǎn)遠(yuǎn)超過算法用時(shí),界面加載時(shí)間可能跟文檔的大小、界面等因素有很大的關(guān)系,因此本文算法產(chǎn)生的額外耗時(shí)可以忽略不計(jì)。除算法耗時(shí)外,可以針對不同排序算法的準(zhǔn)確度進(jìn)行比較。
表1 PDF文檔檢索信息表Tab.1 Table of retrieval information for PDF documents
準(zhǔn)確度(Precision,P)是返回結(jié)果中用戶需要的文檔所占的比例,對于評價(jià)該方法的準(zhǔn)確度而言,需要對不同的問題進(jìn)行查詢測試,對每次查詢分別計(jì)算Pk(Precision atk)[12],當(dāng)k=5時(shí),P5表示返回前5個(gè)結(jié)果的準(zhǔn)確度,將查詢20次的結(jié)果P5平均值作為系統(tǒng)整體的P5值。對于查詢q問題時(shí),檢索結(jié)果中位置k處的準(zhǔn)確率公式為
(7)
式中,dk為排序列表中位置k處用戶需求文檔標(biāo)簽,用戶檢索問題符合則標(biāo)簽為1,反之為0。針對IT運(yùn)維管理系統(tǒng)中比較容易出現(xiàn)的故障進(jìn)行檢索,檢索結(jié)果分別用TF-IDF、空間向量模型和改進(jìn)算法進(jìn)行排序,分別對每種算法的準(zhǔn)確率結(jié)果進(jìn)行統(tǒng)計(jì),得到的結(jié)果本文算法在準(zhǔn)確率上要比TF-IDF和空間向量模型算法更高。檢索排序準(zhǔn)確率統(tǒng)計(jì)結(jié)果如表2所示。
表2 檢索排序準(zhǔn)確率統(tǒng)計(jì)結(jié)果Tab.2 Statistical results of retrieval and sorting accuracy
從表2中可以看到當(dāng)k=3時(shí),本文改進(jìn)算法的準(zhǔn)確率明顯高于TF-IDF算法和空間向量模型方法,當(dāng)k=5時(shí),3種算法的準(zhǔn)確率相差不多,可見本文算法的效果要好于TF-IDF算法和空間向量模型方法。
本文根據(jù)PDF文本管理系統(tǒng)設(shè)計(jì)需求,針對PDF文件解析速度慢,自行利用C語言編寫設(shè)計(jì)PDF解析工具,完成內(nèi)容解析模塊的開發(fā)。又針對TF-IDF算法存在的天然缺陷進(jìn)行改進(jìn),融合向量空間模型,提出新穎的檢索排序算法并完成檢索模塊的開發(fā)。最后經(jīng)過系統(tǒng)測試,證明了本文PDF文檔管理系統(tǒng)在文本解析效率上對比開源的Tika工具具有明顯效率優(yōu)勢,且在文本檢索功能的準(zhǔn)確率上高于TF-IDF、向量空間模型方法,為企業(yè)級智能文檔管理平臺提供有效和實(shí)用的方案。