張志強,王偉鈞 ,張修軍,施 達
(成都大學 計算機學院, 四川 成都 610106)
LexisNexis是著名的法律類、新聞報刊類及財務類商業信息數據庫.從LexisNexis中產生的信息文件,如新聞類信息文件,多以WORD文件格式保存.由于有時需要對這些時事新聞信息進行搜索和數據分析,常用的方式是直接在WORD文件中進行新聞信息的人工檢索和分析,但這種方式效率較低.為了提高信息檢索和處理效率,本研究考慮首先從新聞類WORD文件中抽取新聞信息數據,構建新聞信息數據庫,然后在數據庫中進行數據快速檢索和數據挖掘分析處理.
針對數據抽取技術,目前已有眾多文獻進行了相關研究.針對Web環境中網頁數據特征,文獻[1-4]結合大數據技術提出了利用XPath、改進的數據記錄識別算法及計算相似度為依據的多種策略進行網頁數據抽取操作;針對關系型數據庫系統,文獻[5-7]提出了利用Redo日志數據抽取模型、時間戳方式及深度學習的降維技術等多種策略進行數據抽取操作;針對Excel格式數據文件,文獻[8]提出了一種利用Aspose.Cell插件進行數據抽取操作;文獻[9]基于神經網絡方法論述了神經網絡事件抽取技術的發展方向;文獻[10-11]探討了基于知識圖譜構建的知識抽取技術的發展方向,也提出了基于知識圖譜技術的國內關鍵詞抽取算法進行CNKI數據庫抽取文獻數據的操作;文獻[12]分析了信息抽取技術在農業領域知識服務中的應用前景;文獻[13]提出了一種從PDF文件中抽取表格數據的方法,通過該方法實現了數據從PDF文件導入數據庫的過程;文獻[14]提出了一種數值信息抽取算法,并將該算法應用于數據侵權追蹤系統的設計和實現;文獻[15]提出了一種基于醫學文獻命名實體識別算法模型,利用該算法模型對醫學文獻信息進行抽取,從而實現了醫學文獻標注管理功能;文獻[16]利用正則表達式對公共文化服務機構的年報數據建立模板進行數據匹配和抽取操作,實現了多源數據環境下的年報數據集成工作;文獻[17]提出了一種增量抽取數據算法,利用該算法實現了醫院數據抽取到大數據平臺的過程;文獻[18]提出了一種基于哈工大語言技術平臺和雙向編碼器的數據抽取方法,利用該方法實現了文本內容的抽取過程.
雖然以上眾多文獻對數據抽取技術進行了探討,但由于從LexisNexis中產生的新聞類WORD文件格式不同于其他數據文件格式,已有的數據抽取技術不能用于這類數據文件.為此,本研究設計新的數據文件抽取算法,實現對這些新聞類WORD格式文件的數據抽取操作,從而為后期新聞信息數據的快速檢索和數據挖掘分析提供基礎數據源.
新聞類WORD數據文件中新聞內容信息、新聞索引信息、甚至文件格式信息等往往混合在一起,使得在抽取數據時需要先解決非新聞內容信息的清洗問題.另外,新聞信息數據源往往會產生大量的信息數據文件來保存新聞信息.抽取數據時,為了提高批量數據文件讀取的效率,也需要能自動快速讀取多文件.為了解決以上問題,本研究設計了一種有效的新聞類WORD格式文件數據抽取算法,利用該算法實現非新聞內容信息的清洗及批量數據文件的快速自動抽取,并構建數據庫.
從LexisNexis數據庫產生的新聞類WORD格式文件的內容包含總新聞索引信息和多篇新聞.新聞索引信息與新聞正文信息WORD格式分別如圖1與圖2所示,其中每篇新聞格式由新聞標題、新聞來源、獲取新聞的時間、新聞內容長度(單詞數)、新聞熱點、新聞正文內容、新聞圖片引源信息、新聞正文結束標記及新聞文章結束標記等構成.若要抽取文件中指定的多篇新聞信息數據,則需要先識別和清洗無用的信息數據.

圖1 新聞索引信息WORD格式

圖2 新聞正文信息WORD格式
根據WORD格式文件內容,算法設計的各部分信息識別關鍵詞如表1所示.

表1 算法設計的各部分信息識別關鍵詞
表1中,頁眉信息標記、新聞長度標記、新聞熱點標記、新聞圖片引源信息標記、新聞正文結束標記等會隨著WORD文件中新聞信息的變化而變化.這些標記采用正則表達式表示,在算法中以正則表達式進行匹配搜索.
新聞類WORD文件抽取策略主要采用識別關鍵詞的方式清洗非新聞內容信息數據和抽取新聞內容信息數據.具體的抽取策略如下:1)將WORD文件中的所有數據讀取到設定的內存緩沖區,對緩沖區清洗空行數據,刪除空行字符串;2)識別總新聞索引信息結束標記,清洗文件中的總新聞索引信息頭,刪除文件頭到總新聞索引信息結束標記之間的字符數據;3)識別頁眉信息標記,清洗頁眉信息,刪除頁眉字符串,然后抽取新聞標題和獲取新聞的時間數據;4)識別新聞長度標記,抽取新聞長度數據;5)識別新聞熱點標記,抽取新聞熱點數據;6)識別新聞正文標記,作為抽取新聞內容信息的起始位置來抽取新聞信息數據,直到識別到新聞圖片引源信息標記或識別到新聞正文結束標記(有些新聞文章沒有新聞圖片引源信息標記)為止;7)識別新聞文章結束標記,結束1篇新聞信息數據的抽取操作,并將抽取的新聞標題信息、獲取新聞的時間數據、新聞長度數據、新聞熱點數據、新聞正文信息等組合成SQL語句,寫入新聞信息數據庫;8)轉到3)繼續抽取下篇新聞信息數據,直到緩沖區中的字符數據全部處理完為止.
新聞類WORD文件抽取策略如圖3所示.

圖3 新聞類WORD文件抽取策略
因為新聞類別的多樣性和新聞獲取時間的多點性,將有大量新聞類WORD格式文件從LexisNexis數據庫中產生.為了提高數據抽取的效率,本研究需要考慮批量文件的自動搜索讀取和數據抽取操作,為此設計了批量文件自動搜索讀取策略.
該策略中,首先將需要抽取的批量新聞類WORD數據文件復制到指定的磁盤工作目錄,根據新聞類別或新聞獲取時間來構建該磁盤工作目錄的子目錄結構,再在子目錄結構中放置各類新聞類WORD數據文件,獲取該目錄結構下所有的WORD文件地址信息,將每個WORD文件的地址信息(絕對路徑名+文件名構成的字符串信息)寫入XML文件緩保存.本研究采用XML文件緩保存的目的是為后期文件自動讀取而提供批量文件地址信息.后期文件數據抽取操作如下:首先讀取XML文件,將每個WORD文件的地址信息寫入內存的列表變量中;然后依次遍歷列表變量,每次遍歷獲取1個WORD文件的地址信息,根據1.1節的新聞類WORD文件抽取策略進行文件數據抽取操作,直到列表變量中所有文件地址信息遍歷結束,則表明完成了批量文件自動搜索讀取操作.整個批量文件自動搜索讀取策略如圖4所示.

圖4 批量文件自動搜索讀取策略
本研究提出的算法實現的關鍵是批量文件自動搜索讀取策略和WORD文件數據抽取策略.具體的算法代碼結構如下:
Algorithm1 WORD_Data_extraction(filename_parameter,filename_xml)
參數說明:filename_ parameter: 工作環境配置參數文件名
filename_xml: 存儲WORD文件地址信息的XML文件名
begin
從filename_ parameter文件中讀取磁盤工作目錄;
根據磁盤工作目錄地址從磁盤中獲取工作目錄中所有
WORD文件的地址信息;
將WORD文件的地址信息寫入filename_xml文件中;
從filename_ parameter文件中讀取數據庫參數;
根據數據庫參數構建指定數據庫;
從filename_xml文件中讀取WORD文件地址信息,
并寫入內存列表變量L;

end
本研究采用Java實現Algorithm1算法,使用SQL Server 2008 R2設計數據庫系統,利用Apache的POI框架3.17版本對WORD文件進行讀寫.測試環境為Windows7(64-bit),CPU為Intel core i5,內存為12 GB.實驗測試的樣本文件為從LexisNexis數據庫產生的15個新聞類WORD文件,其分類如表2所示.從表2可知,將批量新聞類文件按照生成時間進行歸類,每個樣本文件包含多篇新聞,樣本文件包含的新聞總篇數為2 210.

表2 樣本文件分類表
算法運行的配置參數設置在XML文件中,文件內容如圖5所示.

圖5 算法運行的配置參數
從圖5可知,“C:13”為設置的磁盤工作目錄,“localhost”為算法訪問的數據庫服務器地址,“sa”為數據庫服務器登錄名,“cdu”為數據庫服務器登錄密碼,“1433”為算法訪問數據庫服務器的端口號,“article_matching”為存儲數據的數據庫名.
算法產生的XML文件內容如圖6所示.從圖6可知,根據磁盤工作目錄,算法自動搜索磁盤中的新聞類文件,并將這些文件的批量地址信息寫入XML文件中保存,為算法后期數據抽取階段提供批量文件數據源地址.

圖6 算法產生的XML文件內容
表3為算法生成的新聞信息表.

表3 新聞信息表
算法對樣本文件進行自動讀取并抽取新聞數據,將抽取的新聞數據寫入數據庫“article_matching”的新聞信息表中.算法抽取新聞數據創建的數據表如圖7所示.從圖7可知,數據表包含2 210條記錄數據.每條記錄數據存儲1篇新聞信息,其中article_id字段自動產生數據值.算法會根據每篇新聞文章信息進行抽取,并寫入對應的title、date、length、highlight及articletext等字段中.

圖7 算法抽取新聞數據創建的數據表
對新聞類WORD文件內容進行有效地數據抽取并構建數據庫是后期提高數據檢索和新聞數據分析操作效率的關鍵.本研究設計的數據抽取算法能有效地完成新聞類WORD文件內容的無用數據清洗和有用數據抽取操作,且能進行批量文件的自動讀取和抽取操作并構建數據庫,最終提高了數據抽取操作的效率.