丁振凡
(華東交通大學信息工程學院,江西 南昌 330013)
隨著Internet的迅速發展與普及,如何從海量的網絡信息資源中及時、準確地找到所需的信息成為當今的一個研究熱點[1].為滿足查全和查準的要求,出現了基于語義的內容檢索,而文檔語義信息的提取是其核心研究內容之一[2].在各類信息資源網站中均含有類型各異的文檔資源,如:HTML文檔、PDF文檔、Word文檔、PPT文檔等.隨著網站信息資源的不斷豐富,對站內信息資源進行資源搜索也就很有必要.Lucene是目前最為流行的開源全文檢索工具包.Apache Tika是一個開源的文檔語義提取工具包,利用Tika可獲取文檔的元數據并實現文檔內容的文本分析.將Tika分析的元信息和內容分析結果加入索引,然后用Lucene在建立好的索引中實現基于元信息的全文檢索.如圖1所示.

圖1 Lucene和Tika結合實現基于元信息的全文搜索流程
各種類型的資源文件的語義信息的提取是一件復雜的工作[3].Tika作為一個優秀的元數據分析和內容分析工具,支持眾多格式的文檔(例如HTML、PDF、Doc等),在Tika分析的基礎上進行再加工,可簡化基于元信息的搜索服務的建立.Tika能自動甄別文件類型,調用相應的解析器進行分析.在分析中能識別文檔的字符編碼、語言及各類屬性,還能提取文檔的結構化內容.如圖2所示.

圖2 Tika對文檔分析的基本過程
Tika能自動甄別文檔類型,并根據文件類型調用相應的解析器進行分析.Tika包含不針對任何特定文檔格式的通用解析器,圖 3 為 Tika解析器的設計結構.org.apache.tika.parser.Parser接口是Tika的關鍵組件,它隱藏了不同文件格式和解析庫的復雜性,為應用程序從各種不同的文檔提取結構化的文本內容以及元數據提供了一個簡單且功能強大的機制.

圖3 Tika分析器的繼承層次
其中,AutoDetectParser類將所有的 Tika功能包裝進一個能處理任何文檔類型的解析器.這個解析器可自動決定文檔的類型,然后會調用相應的解析器對文檔進行解析.用戶也可以使用自己的解析器來擴展Tika.
Tika的parse方法接受要被解析的文檔,并將分析結果寫入元數據集合中.以下為parse方法的最簡單形態:

將元數據加入索引實際是完成資源語義的注冊,在全文搜索中主要是依據檢索關鍵詞對文件內容進行查詢匹配.而其他元數據可用于綜合搜索處理中(例如:作者、標題等),并可為內容搜索提供關聯的信息服務(例如:文檔的標題、文件名等).
Apache Tika是一個工具箱,用來通過現有的解析器庫檢測以及從各種文檔提取元數據和結構化的文本內容.parse方法的最后一個參數用來將文檔元數據傳遞進/出解析器.文檔元數據被表述為一個元數據對象.
圖4給出了Tika中Metadata的繼承層次.可以看出元消息來自多方面的定義.Dublin Core(都柏林核心)元數據是應用廣泛的信息資源描述格式.DC元數據包含15個核心元素[4]:Title(題名)、Creator(創建者)、Subject(主題)、Description(資源描述)、Publisher(出版者)、Contributor(其他責任者)、Date(制作日期)、Type(類型)、Format(數據格式)、I-dentifier(資源標識符)、Source(來源)、Language(語種)、Relation(關聯)、Coverage(覆蓋范圍)、Rights(權限).

圖4 Tika Metadata的繼承關系
利用tika對象的parse方法可從輸入流中分析出元數據存入Metadata對象中.分析提取一篇文檔的元數據的代碼如下:

接下來,利用met的getValues(“title”)方法可獲取文檔的title屬性的值.
利用tika對象的parseToString方法可分析提取文件的文本內容.可將分析得到的文本內容并作為content域加入索引的document對象中,進而實現全文檢索.例如:


在微軟的工具Word、PPT等工具中,均提供有屬性設置對話框,可以設置一個文檔的屬性.這些信息是構成文檔語義的核心.通常情況下,用戶并不有意設置文檔的這些屬性.工具將自動設置標題、作者、單位等屬性,而標題是根據PPT第1頁首次保存含有的標題內容確定.
圖5為Tika的圖形界面應用中對一個Word文檔的元信息的分析顯示結果,顯然,標題欄的語義與實際內容不一定符合;這是因為該文檔是原來某文檔的修改結果.很多文檔是按工具默認的規則設置的標題;Word在文件保存時自動將第1行作為文檔的Title,以后即便第1行進行了修改再次保存時title屬性仍不變.

圖5 Tika分析結果的元數據
類似地,Tika分析網頁的元信息時,title元信息是從網頁的title標記獲取,制作網頁時,FrontPage會自動設置“新建網頁1”等標題,顯然這不能反映網頁的應有標題.
在全文搜索應用的查詢結果顯示時,要將滿足查詢的所有文檔的標題和摘要信息顯示在網頁中,并提供文件訪問超鏈.前面建索引時,標題是用Tika獲取的元信息構建.Tika獲取的標題是來自用戶文檔的Title屬性,文檔的Title屬性為空或者文檔編輯工具給文檔默認起名的標題(網頁的title標簽為“新建網頁1”)等不適合作為標題,可通過分析標題中是否含有“特征串”進行判斷.
為了讓標題能準確反映文檔內容,需要對標題進行改進.確定文檔標題的一個簡單處理辦法是先考慮一些候選對象,然后,對這些候選對象進行評估,確定最優者.評估最優者要兼顧文檔作者的意圖和標題中含有文檔的高頻詞的數量.
根據文檔標題通常在文檔的開始、文件名、文檔的標題屬性等處出現的特點,可以初篩出一些候選標題:
(1)非特殊情形的Tika的Title元數據.
(2)文件名.特別地,文件名長度小于8不能作為標題.
(3)從文檔中提取到的各條候選標題.
從文檔選擇標題,可以掃描文檔的所有行,滿足以下條件者可作為候選標題.
①標題長度不少于8.
②考慮到本文是針對中文文檔的標題提取,因此,如果候選標題中不包含漢字字符,則不能作為標題.
③考慮到從文檔中提取的字符串有各類標號,要刪除候選標題中這些特殊的前綴和后綴.要去除的字符有:數字字符、大寫數字字符以及各類標點符號.
(1)設置候選標題的初始特征值
給每個候選標題設置一個初始特征值,初始特征值設置時考慮候選標題的重要性,如Tika獲取的標題給予較重特征值(為N),文件名的特征值也較重(為0.9*N).其他標題特征值根據其在文檔中的排列順序依次降低,也就是文檔前面的內容更可能作為標題.設候選標題個數為N,第i個候選標題對應的特征值為compare[i],則其他候選標題的特征值初始計算代碼如下:

(2)對文檔中的詞項-詞項頻率進行統計,獲取高頻詞
在獲取標題的方法中只對一個文檔進行索引,且索引的存儲位置為內存,以提高處理效率.利用lucene API獲取該文檔的詞項,以及每個詞項在文檔中出現的頻率.然后,按照詞項頻率高低對詞項排序,選取詞項-詞項頻率列表中前10個詞項來參與標題權值的計算.
(3)根據標題中出現的高頻詞數量調整特征值
設每個候選標題根據高頻詞出現的次數增加其權值,TN表示詞項個數,算法如下:


(4)選擇候選標題中特征值最大者作為文檔標題.
利用Tika可從各種類型的文檔中提取語義信息.Tika能自動檢測文檔的編碼,并對文檔元信息和內容進行分析.Tika得到的元數據信息一般是通過文檔的屬性分析中得到,由于各種原因,這些屬性未必能體現文檔內容的實際,文中的采用多方競選得到文檔標題的解決方法,準確率較好,從而為基于語義的資源檢索和全文內容檢索提供更為準確的信息表達.標題提取是一個具有挑戰性的問題,進一步的研究是引入領域本體[5],利用領域本體實現對文檔的概念理解,從而輔助標題提取.
[1]趙慶齡,錢平,蘇曉路.本體論在基于Web的土壤知識體系智能檢索系統中的應用[J].計算機工程與應用,2005,(5):211-214.
[2]王偉,趙東巖,趙偉.中文新聞關鍵事件的主題句識別[J].北京大學學報(自然科學版),2011,(9):789 -796.
[3]劉建華,張智雄,謝靖,等.基于規則的網絡文本資源標題快速自動識別方法[J].現代圖書情報技術,2011,(5):27 -31.
[4]李秀麗,徐越權,淺析DC在高校圖書館網絡信息資源組織中的應用[J].農業圖書情報學刊,2010,(5):111 -114.
[5]位傳海,范太華.基于本體的學習資源語義檢索系統研究與設計[J].電化教育研究,2012,(2):70 -74.