亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        海量文檔桌面全文檢索終端設(shè)計與實現(xiàn)

        2018-12-22 07:53:44張俊飛
        現(xiàn)代計算機 2018年33期

        張俊飛

        (廣州醫(yī)科大學(xué),廣州511436)

        0 引言

        信息技術(shù)的發(fā)展,推動了高校信息化教學(xué)和無紙化辦公,出現(xiàn)了越來越多的非結(jié)構(gòu)化數(shù)字文檔。如何快速對非結(jié)構(gòu)化的海量文檔進(jìn)行檢索成為當(dāng)前研究的熱點。傳統(tǒng)的方法是對每一個文檔進(jìn)行遍歷,然而對于海量文檔來說,這是一件很耗費時間和精力的事情。全文檢索是一種高效的信息檢索技術(shù),可以快速地從海量文檔中查詢內(nèi)容,提高檢索效率。

        Lucene是一套用于全文檢索的開源程序庫,是Apache軟件基金會Jakarta項目組的一個子項目[1]。Lucene不僅可以被用來構(gòu)建具體的全文檢索應(yīng)用,還可以嵌入到各種系統(tǒng)軟件中。近幾年,Lucene已在各個領(lǐng)域中的應(yīng)用得到了研究,如音視頻資源檢索[2]、學(xué)科領(lǐng)域的應(yīng)用[3-4]、行業(yè)應(yīng)用[5-6]。文獻(xiàn)[7]通過對倒排索引的研究,實現(xiàn)了基于正向減字最大匹配分詞方式的中文索引,提高了中文分詞效率。文獻(xiàn)[8]研究了Lu?cene索引查詢與關(guān)系數(shù)據(jù)庫的差異。文獻(xiàn)[9]利用Ha?doop和Lucene的結(jié)合,實現(xiàn)云存儲網(wǎng)絡(luò)文檔共享服務(wù)。隨著信息技術(shù)的發(fā)展,Lucene技術(shù)及其配套的組件也發(fā)生了變化,本文著重于文檔解析、中文分詞器、查詢結(jié)果的顯示處理等方面進(jìn)行論述。

        1 系統(tǒng)結(jié)構(gòu)設(shè)計

        全文檢索是指計算機對檢索的數(shù)據(jù)源中每一個文檔通過文檔解析、分詞操作,對其進(jìn)行創(chuàng)建索引庫,然后檢索索引庫,采用倒排索引技術(shù)把查找到相關(guān)文檔反饋給用戶的過程。

        本研究采用Swing技術(shù)對Lucene及其配套組件進(jìn)行整合,開發(fā)基于桌面應(yīng)用的全文搜索終端。Swing是面向Java應(yīng)用程序用戶界面的開發(fā)工具包,采用抽象窗口工具包(AWT),使應(yīng)用程序具有跨平臺性,并且可以使用任何可插拔的外觀風(fēng)格。Swing豐富、靈活的功能和模塊化組件使得Swing開發(fā)人員更加容易的創(chuàng)建優(yōu)雅的用戶界面。

        本研發(fā)的桌面全文檢索終端包含文檔讀取模塊、索引模塊、檢索模塊等全文檢索核心功能。系統(tǒng)結(jié)構(gòu)如圖1所示。

        圖1 系統(tǒng)結(jié)構(gòu)

        2 關(guān)鍵技術(shù)

        2.1 倒排索引

        為了實現(xiàn)快速檢索,Lucene采用倒排索引的數(shù)據(jù)結(jié)構(gòu)[10]。倒排索引是根據(jù)屬性值查找記錄數(shù)據(jù),每個屬性包含該屬性歸屬的記錄數(shù)據(jù)地址。通常認(rèn)為單詞是文檔的組成部分,反轉(zhuǎn)認(rèn)為文檔是依附單詞存在,這樣的索引就稱作倒排,由屬性值查找記錄數(shù)據(jù)的位置因而稱為倒排索引。倒排索引以文檔形式存儲,形成倒排文檔。

        全文檢索的關(guān)鍵步驟就是建立倒排索引,倒排索引一般表示為一個關(guān)鍵詞,并記錄它出現(xiàn)的頻數(shù)、地址等相關(guān)信息。好比書本的目錄結(jié)構(gòu),可以直接根據(jù)目錄提示信息,查看到章節(jié)信息摘要、頁碼等,從而獲取章節(jié)信息,不必對書進(jìn)行全部遍歷。

        Lucene的索引結(jié)構(gòu)可以分為索引(index)、索引段(segment)、索引文檔(document)、索引域(field)和索引項(term)五個層次。五個層次之間是具有包含關(guān)系的,每個索引由一個或者多個索引段組成,每個段包含一個或者多個索引文檔,每個文檔又管理一個或者多個索引域,每個域由一個或多個索引項構(gòu)成,而每個索引項就是一個索引數(shù)據(jù)。Lucene 5.2.1生成的索引文檔類型如表1所示。

        表1 索引文檔類型

        2.2 分詞器技術(shù)

        本研究終端主要針對中文文檔進(jìn)行全文檢索,目前中文分詞算法大概分為兩大類:①基于詞典分詞法。掃描字符串,按照正向或逆向最大匹配,最小切分等策略。②非詞典分詞法。基于統(tǒng)計以及機器學(xué)習(xí)的分詞方式。

        第一種分詞算法比較常見,在實際應(yīng)用中,通常是多種算法整合使用,同時加入多個屬性值如詞頻、詞性等以輔助分詞處理,達(dá)到理想的輸出效果。這種算法形成的分詞器分詞速度快,時間復(fù)雜度較低,實現(xiàn)簡單。第二種分詞器目前常見的是HMM、CRF等,主要運用了機器學(xué)習(xí)、概率統(tǒng)計等領(lǐng)域的方法。這種分詞器需要提前對文件進(jìn)行建模,根據(jù)標(biāo)注好的語料庫對模型參數(shù)進(jìn)行訓(xùn)練,通過對模型分詞概率的計算,將概率最大的分詞結(jié)果作為輸出結(jié)果。這種分詞方法對未知詞語的分詞處理較好,能夠根據(jù)訓(xùn)練出的領(lǐng)域模型提高分詞精度,但是需要大量的前期準(zhǔn)備,實現(xiàn)比較復(fù)雜。

        Lucene是開源高性能的Java全文檢索引擎架構(gòu),提供了完整的查詢引擎、索引引擎和部分文本分析引擎。Lucene內(nèi)部自帶了一些分詞器,如:StandardAna?lyzer、SimpleAnalyzer、WhitespaceAnalyzer、StopAnalyz?er、SmartChineseAnalyzer等分詞器。但是在本研究中主要是針對中文分詞,Lucene內(nèi)部這些分詞器不能滿足要求。故本研究采用MMSeg4j分詞器,它是基于MMSeg算法實現(xiàn)的中文分詞組件。

        MMSeg是一種基于詞典的分詞算法,采取正向最大匹配策略,同時加入多種消除歧義的規(guī)則。其算法實現(xiàn)方式分為兩種:①SimpleAnalyzer,簡單的按照匹配上的最長詞條做切分;②ComplexAnalyzer,在正向最大匹配的基礎(chǔ)上,添加了相鄰詞的詞長策略,設(shè)計了四個去歧義規(guī)則指導(dǎo)分詞。四個規(guī)則分別為:備選詞塊的長度最大、備選詞塊的平均詞長最大、備選詞塊的詞長變化最小、備選詞塊中單字的出現(xiàn)詞自由度最高。在實際應(yīng)用中,一般都整合使用ComplexAnalyzer和四個過濾規(guī)則。

        本文重點比較了Lucene自帶的兩種中文分詞器:SmartChineseAnalyzer、StandardAnalyzer和 MMseg4j分詞器的ComplexAnalyzer實現(xiàn)方法。以“計算機軟件工程教育技術(shù)全文搜索引擎”為例,并在MMseg4j詞庫中添加了“計算機軟件工程”和“教育技術(shù)”兩個詞條,測試結(jié)果如表2所示。

        表2 分詞器對比分析結(jié)果

        從表2中可以看出,StandardAnalyzer分詞器實現(xiàn)了對中文單字的分詞,不能滿足用戶基于詞的分詞效果;SmartChineseAnalyzer實現(xiàn)了基于詞的分詞,但是不能夠得到用戶指定的詞條,且耗時較長。MMseg4j分詞器的ComplexAnalyzer能夠提供用戶自定義分詞詞條,且耗時較少。

        2.3 基于組件的文檔解析

        在創(chuàng)建索引時,一個最重要的步驟就是從文檔中提取文本。然而海量文檔格式繁多,如Outlook、MS Of?fice、PDF、RTF等,對不是同一編碼格式的文檔內(nèi)容提取處理將不是一件簡單的事情。

        Apache Tika是一種簡單易用的程序框架,針對不同的文檔類型使用相同的API。Tika本身并不完成任何文檔的過濾提取,而是通過外部獨立的解析程序完成對文檔的解析。除了文本文檔之外,Tika還可以提取元數(shù)據(jù)[11]。Tika使用內(nèi)部解析類庫實現(xiàn)對文檔的解析,對應(yīng)的文檔格式和Tika類如表3所示。

        表3 Tika解析文檔格式

        2.4 查詢結(jié)果數(shù)據(jù)的顯示模塊

        Lucene提供兩種高亮方式:FastVectorHighlighter和Hightlighter。FastVectorHighlighter是基于項向量實現(xiàn)的,通過對每個域中的Term的位置信息進(jìn)行標(biāo)注,實現(xiàn)檢索的方便快速定位,但是這就意味著需要額外存儲空間和磁盤I/O操作,索引體積會變大,占用更大內(nèi)存。故采用Hightlighter犧牲高亮標(biāo)注時間,增加系統(tǒng)松耦合性。

        使用Lucene自帶的Highlighter就可以實現(xiàn)對原始文檔摘要的提取工作。通過對Highlighter類中g(shù)et?BestFragment方法的重載,實現(xiàn)從指定的原始文檔中,提取檢索關(guān)鍵字出現(xiàn)頻率最高的一段文字作為摘要,默認(rèn)情況下提取100個字符,同時加上自定義的高亮顯示代碼實現(xiàn)關(guān)鍵字高亮顯示。

        3 終端實現(xiàn)

        終端實現(xiàn)了對本地海量文檔的全文檢索。通過Swing中的JFileChooser組件實現(xiàn)海量本地文檔數(shù)據(jù)源的定位。通過對MMseg4j分詞器的詞庫文檔的編輯實現(xiàn)用戶對需要查詢詞條的添加。索引模塊采用Tika框架實現(xiàn)對文檔的解析,MMseg4j分詞器的MMseg算法實現(xiàn)對字符串流的分詞,使用Lucene封裝的Index?Writer方法創(chuàng)建索引。

        SwingX是一個包含Swing GUI工具包的擴展控件,為富客戶端應(yīng)用提供豐富的組件。采用其中的JX?BusyLabel組件實現(xiàn)程序加載中的友好提示,如圖2所示。

        圖2 SwingX組件

        圖3 檢索方式

        本研究實現(xiàn)的全文檢索方式有六種:通過項搜索、組合搜索、短語搜索、通配符搜索、模糊搜索、匹配所有文檔搜索。

        通過項搜索是對索引中特定項進(jìn)行搜索的最基本方式。Term是最小的索引片段,每個Term包含一個域名和一個文本值。

        組合搜索通過使用邏輯AND、OR和NOT把各種查詢類型組合成復(fù)雜的查詢方式。在本系統(tǒng)中,組合查詢整合了兩個通過項查詢,如下代碼所示。

        短語搜索根據(jù)位置信息查詢到某個距離范圍內(nèi)的項所對應(yīng)的文檔。

        通配符查詢通過使用“*”和“?”進(jìn)行查詢。*代表0個或者多個字符;?代表0個或者多個字符。

        模糊查詢用于查詢與指定項相似的項的一種查詢方式,通過Levenshtein距離算法來決定索引文檔中的項與指定目標(biāo)項的相似度。編輯距離越小的項所獲得的評分越高,編輯距離公式如公式(1)。

        匹配所有文檔搜索,顧名思義就是匹配索引中所有文檔。文檔查詢加權(quán)默認(rèn)值是1.0,加權(quán)值起到排序作用。

        通過項搜索界面如圖4所示,其他檢索界面布局一致。在檢索界面中,查詢按鈕實現(xiàn)了對輸入項的全文查找。詳情按鈕采用 DJNativeSwing.jar、DJNa?tiveSwing-SWT.jar和org.eclipse.swt.win32.win32.x86_64-4.2.jar三個jar包,實現(xiàn)在終端中嵌入一個瀏覽器,把查詢結(jié)果以網(wǎng)頁形式高亮顯示反饋給用戶,如圖5所示。導(dǎo)出按鈕實現(xiàn)把查詢到的信息文檔復(fù)制到指定的文檔夾中,便于用戶集中閱讀。

        圖4 通過項搜索圖

        圖5 檢索結(jié)果

        Luke是一個針對Lucene搜索引擎,方便開發(fā)和診斷的第三方工具,它可以訪問Lucene創(chuàng)建的索引,并允許顯示和修改。本研究使用lukeall-5.2.1.jar實現(xiàn)對創(chuàng)建索引的查看,如圖6所示。

        圖6 Luke應(yīng)用界面

        最后,Eclipse把開發(fā)好Swing程序,發(fā)布成終端jar文件,然后采用exe4j工具把終端jar文件和終端運行依賴環(huán)境文件夾jre7一起打包成可獨立執(zhí)行的exe文檔。

        4 實驗操作

        實驗過程,采用普通PC,配置參數(shù)為:Intel Core i3-3240 CPU x64處理器,頻率為3.4GHz,內(nèi)存4GB,64位操作系統(tǒng)。選取 MS Office、CAJ、TXT、網(wǎng)頁、PDF 等不同格式文檔組成四個不同大小的數(shù)據(jù)源文件夾,總大小分為40.9M、385M、770M、1.1G。終端可以直接拷貝到PC上,運行exe主程序,對選取的數(shù)據(jù)源進(jìn)行索引創(chuàng)建和檢索操作。

        從實驗結(jié)果表4、圖8可以看出,數(shù)據(jù)源大小對文檔索引和檢索速率產(chǎn)生了影響,當(dāng)數(shù)據(jù)源大小達(dá)到某個數(shù)值的時候,速率會下降,在本實驗中,數(shù)據(jù)源大小在385M處索引速率和檢索速率發(fā)生下降;當(dāng)數(shù)據(jù)源總大小超過某個數(shù)值的時候,索引速率和檢索速率變化幅度變小。終端在實際的使用過程中,基本可以實現(xiàn)用戶本地海量文檔的快速檢索,其具備較高應(yīng)用價值。

        圖7 終端應(yīng)用圖

        表4 實驗對比分析結(jié)果

        圖8 實驗對比分析圖

        5 結(jié)語

        本文針對海量本地文檔檢索問題,設(shè)計和研發(fā)了一款全文檢索桌面終端軟件。該終端具有友好的用戶體驗,可以針對不同格式文檔進(jìn)行解析,實現(xiàn)基于詞典的分詞操作,采用Swing配套組件實現(xiàn)查詢結(jié)果以網(wǎng)頁形式顯示在桌面終端程序中,并對結(jié)果數(shù)據(jù)進(jìn)行了高亮處理。后期的實驗數(shù)據(jù)驗證了終端的可使用性,其具有一定的應(yīng)用價值。

        久久亚洲伊人| 97久久综合精品国产丝袜长腿| 国产av精品久久一区二区| 美妇炮灰被狂躁爽到高潮h| 图片小说视频一区二区| 97人伦色伦成人免费视频| 欧洲熟妇色 欧美| 久久综合精品国产丝袜长腿| 人妻av一区二区三区av免费| 久久综合给合久久97色| 日韩av一区二区不卡| 日韩欧美在线综合网另类| 久久久久成人片免费观看蜜芽| 97se在线观看| 国产精品反差婊在线观看| 黄页国产精品一区二区免费| 手机在线免费观看av不卡网站 | 91久久精品人妻一区二区| 国产丝袜美腿嫩模视频诱惑| 亚洲国产成人精品无码区在线播放| 人妻少妇精品中文字幕av | 伊人精品在线观看| 西西人体大胆视频无码| 国产内射一级一片内射高清视频1 成人av一区二区三区四区 | 久久久国产精品ⅤA麻豆百度| 国产精品亚洲在钱视频| 国产亚洲精品综合一区| 50岁熟妇的呻吟声对白| 亚洲成人观看| 毛片av在线尤物一区二区| 亚洲av不卡一区男人天堂| 成人无码网www在线观看| а√天堂资源8在线官网在线| 在线观看无码一区二区台湾| 人妖系列在线免费观看| 99久久精品免费看国产一区二区三区| 久久久久国产精品熟女影院| 亚洲男人在线无码视频| 中文字幕人妻一区二区二区| 国产精品爽爽ⅴa在线观看| 久久老子午夜精品无码怎么打|