?

Lucene中文分析器在書目搜索應用中的比較研究

2014-08-08 03:41王澤賢
現代情報 2014年4期
關鍵詞:分析器

基金項目:本文系廣州市教育科學“十二五”規劃課題項目“關于用開源軟件實現OPAC 20的研究”(項目編號:11A147)研究成果之一。

作者簡介:王澤賢(1972-),男,副研究館員,研究方向:圖書館計算機自動化、知識管理,發表論文10多篇?!I務研究·

〔摘要〕針對基于Lucene實現中文書目搜索系統的項目中,如何選擇最合適的Lucene中文分析器進行了研究。通過大量實驗,對Lucene自帶的3個分析器及開發活躍度較高的兩個第三方中文分析器,從分詞效果,建立索引的時間和空間,檢索的時間、檢全率和平均檢準率等方面進行了分析比較。綜合實驗分析結果,指出ik分析器總體性能最優,為最佳選擇。

〔關鍵詞〕Lucene;書目搜索;中文分詞;分析器

DOI:10.3969/j.issn.1008-0821.2014.04.030

〔中圖分類號〕G25071〔文獻標識碼〕A〔文章編號〕1008-0821(2014)04-0132-05

Comparative Study on Application of Lucene Chinese

Analyzer in Bibliographic RetrievalWang Zexian

(Library,Guangzhou University,Guangzhou 510006,China)

〔Abstract〕How to choose the most appropriate Chinese analyzer Lucene in Chinese bibliographic Retrieval system which bases on Lucene?With a lot of experiments,the author has compared three analyzers and two kinds of third party Chinese analyzers that are development of high active,which were all owned by Lucene.From the effect of Chinese segmentation,indexing time and space,and time retrieval,recall and average precision,etc.the author deemed that the IK analyzer was the best selection,due to its best overall performance.

〔Keywords〕lucene;bibliographic retrieval;chinese segmentation;analyzer

Lucene作為Apache軟件基金會的一個頂級項目,是一個開放源碼的全文檢索工具包。Lucene以其開源可免費使用、架構清晰、擴展性高、索引結構優異、性能高、跨平臺、易使用等優點,近年來越來越廣泛地被應用到各類應用系統中,實現全文索引和搜索功能?;贚ucene開發書目搜索系統,實現對書目信息任意關鍵詞進行全文檢索,可提高書目搜索的查全率、查準率,并簡化讀者的查詢操作,是一個較好的解決方案。

分詞技術對于搜索引擎來說是一個非常重要的指標。中文信息和英文信息有一個明顯的差別:英語單詞之間用空格分隔;而在中文文本中,詞與詞之間沒有天然的分隔符,中文詞匯大多是由2個或2個以上的漢字組成的,并且詞句是連續書寫的[1]。因為中文文本中詞和詞之間不像英文一樣存在邊界,所以中文分詞是一個專業處理中文信息的搜索引擎首先面對的問題[2]。中文語言雖然句子間有標點分隔,但詞與詞之間沒有分隔符,需要靠程序切分出詞。Lucene中通過分析器(Analyzer)進行詞法過濾和分析,實現對文本分詞,選擇一個合適的分析器是基于Lucene實現中文搜索系統成功的關鍵。在CNKI中檢索,目前只有2篇文獻專門對Lucene的中文分析器的比較研究:文獻[3]只是對6種主流中文分詞器分別進行測試,簡單地從分詞結果、分詞速度進行對比;文獻[4]較為深入,對基于Lucene的中文分析器,從對語句分詞、分詞速度、建立索引的空間與時間、檢索結果以及檢索速度等方面進行比較。這2篇文獻都是針對一般中文文本進行評測,并且沒有從開發活躍度等方面進行研究。本文針對基于Lucene實現書目搜索系統的項目中,如何選擇最合適的Lucene中文分析器實現中文書目搜索進行研究:首先,根據開發活躍度選定了參與本文研究的Lucene中文分析器;然后,使用大量的中文書目數據,通過詳盡的實驗對這些分析器從分詞效果,建立索引的時間和空間,檢索的時間、檢全率和平均檢準率等方面進行了分析比較;最后,綜合分析、比較實驗結果,選擇出最佳的Lucene中文分析器。

1參與評測的Lucene中文分析器

11選取參與評測的Lucene中文分析器

Lucene保持了較高的開發活躍度,每一新版本都會帶來較大的性能提升和功能增強。Lucene為了保證最高的性能與更多的功能,犧牲了部分向后兼容性,新版本的接口可能會有所改變,使得一些未能及時更新的分析器在高版本中會無法使用。目前Lucene的最新版本是44,在30、40、42等版本的分析器接口都有所改變。所以對于實現中文書目搜索,選擇Lucene分析器的首要條件是可處理中文文本外,有較高的開發活躍度也是首要考慮條件之一,使其能緊密跟進Lucene版本變動,適應最新版本的接口,以便在系統中應用最新的Lucene技術。所以本文首先對Lucene中文分析器從最近更新時間、更新版本、支持Lucene版本這幾個指標進行開發活躍度的比較分析,選取開發活躍度高,符合最新Lucene 44版接口的分析器參與下一步的深入評測。

目前較常見的支持中文的Lucene分析器有Standard Analyzer、CJK Analyzer、Smart Chinese Analyzer、ik[5]、mmseg4j[6]、paoding[7]。Standard Analyzer、Chinese Analyzer、CJK Analyzer、Smart Chinese Analyzer是Lucene自帶分析器,與Lucene保持同步更新,所以不用參與本步測試而直接通過。開放活躍度的比較主要針對ik、mmseg4j、paoding這些第三方提供的分析器進行,通過訪問這些分析器的原始網站,獲取它們的開發、發布信息,比較結果如表1所示。Lucene的內部分析器Chinese Analyzer功能與Standard Analyzer差不多,并且在Lucene 31版開始已被不贊成使用,并在Lucene 50開始會移出Lucene[8];還有一種早幾年較多人談論的MM Analyzer,目前能找到的最新版本是153,在2009年開始原始網站已經找不到下載,并且聲明不提供維護和支持[9]。所以Chinese Analyzer、MM Analyzer在本文不參與比較。表1分析器開發活躍度比較

分析器最后更新日期最新版本支持Lucene版本ik2012-10-292012 FF40mmseg4j2013-01-18191431paoding2010-01-203030

endprint

paoding主要在1x、2x版的Lucene應用比較多,最后提供的運行包是在2008年6月3日提供的204版,只能在Lucene的2x版運行;在2010年1月20日,針對Lucene的30版提供了SVN方式下載的源程序包,之后再無更新。ik與mmseg4j開放活躍度相對較高,其中mmseg4j最高,可以直接支持Lucene 44,而ik要另行下載修改程序,才能在Lucene 44版運行[10]。所以在第三方提供的分析器中,本文只選取ik與mmseg4j參與評測。

12參與評測的Lucene中文分析器概述

Lucene處理中文分詞的常用切分方式有3種:(1)單字方式,1個中文單字為1個詞;(2)二元覆蓋方式,相鄰的2個中文單字為1個詞;(3)分詞方式,按照一定算法,把中文的句子切分成有意義的詞。Standard Analyzer是單字方式,CJK Analyzer是二元覆蓋方式,Smart Chinese Analyzer、ik、mmseg4j都是分詞方式。分詞式切詞算法可分為機械分詞方法、基于統計的分詞方法和基于理解的分詞方法三大類。機械分詞方法是目前較常見的分詞算法,它是按照一定的策略將待分析的漢字串與詞典中的詞條進行匹配,若在詞典中找到某個字符串,則識別出一個詞。按照掃描方向的不同,機械分詞方法可以分為正向匹配和逆向匹配;按照不同長度優先匹配的情況,可以分為最大匹配和最小匹配等。常用的幾種機械分詞方法有:(1)正向最大匹配法;(2)逆向最大匹配法;(3)最少切分,使每一句中切出的詞數最??;(4)最大切分,使每一句中切出的詞數最大。實驗已經證明,逆向最大匹配的準確率會比正向最大匹配的準確率略高,正向最大匹配分詞算法的匹配錯誤率是1/169,而逆向最大匹配分詞算法的匹配錯誤率是1/245[11]。ik分析器采用正反向匹配方式,提高了匹配正確率,它提供了細粒度與智能2種分析器:以IK Analyzer()方式建立的是細粒度分析器;以IK Analyzer(true)方式建立時是智能分析器(本文下面用IK Analyzer()表示ik的細粒度分析器,IK Analyzer(true)表示ik的智能分析器)。mmseg4j根據分詞算法的不同,提供了Simple Analyzer、Complex Analyzer、Max Word Analyzer 3種分析器。表2是參與本文評測的Lucene中文分析器概述。表2分析器概述

分析器分詞方式說明Standard Analyzer單字方式,根據空格和符號來分割原始的文本信息,一個中文單字為一個詞還可以完成數字、字母、E-mail地址、IP地址的分析,支持過濾詞表CJK Analyzer二元覆蓋方式,根據空格和符號來分割原始的文本信息,相鄰的兩個中文單字為一個詞Smart Chinese Analyzer基于隱馬爾科夫模型,根據漢語詞匯的詞頻和跳轉概率對整個漢語句子進行分詞,是中國科學院計算技術研究所的ICTCLAS中文分詞程序的java實現是原來的imdict-chinese-analyzer。帶有ICTCLAS 10詞庫,暫不支持用戶自定義詞庫ikIK Analyzer()細粒度分析器,以詞典為基礎的正反向最大切分方式分詞IK Analyzer(true)智能分析器,以詞典為基礎的正反向最大匹配方式分詞自帶的默認主詞典有近27萬的詞匯量,可以通過API以及配置文件指定詞庫文件實現詞庫擴充mmseg4jSimple Analyzer基于Tsai Chih-Hao的MMSeg算法,正向最大匹配分詞Complex Analyzer是在Simple模式上加了4個過慮規則,詞語的正確識別提高到了9841%Max Word Analyzer在Complex基礎上實現了最大切分方式分詞自帶的主詞典是將近15萬的sogou詞庫,支持用戶自定義詞庫

2分析器比較

實驗環境為Windows 7操作系統,Intel T7250處理器,3G內存,Lucene版本為44。

21分詞效果比較

分別對《開發自己的搜索引擎:Lucene 20+Heritrix》、《中華人民共和國專利法實施細則》這2本書的題名進行分詞,比較結果見表3:

表3分詞效果比較

分析器題名1分詞結果題名2分詞結果Standard Analyzer開/發/自/己/的/搜/索/引/擎/lucene/20/heritrix中/華/人/民/共/和/國/專/利/法/實/施/細/則CJK Analyzer開發/發自/自己/己的/的搜/搜索/索引/引擎/lucene/20/heritrix中華/華人/人民/民共/共和/和國/國專/專利/利法/法實/實施/施細/細則Smart Chinese Analyzer開發/自己/的/搜索引擎/lucen/2/0/heritrix〖〗中華人民共和國/專利法/實施/細則IK Analyzer()開發/發自/自己/搜索引擎/搜索/索引/引擎/lucene/20/heritrix中華人民共和國/中華人民/中華/華人/人民共和國/人民/共和國/共和/國/專利法/專利/法/實施細則/實施/細則IK Analyzer(true)開發/自己/搜索引擎/lucene/20/heritrix中華人民共和國/專利法/實施細則mmseg4j的Simple Analyzer開發/自己的/搜索/引擎/lucene/2/0/heritrix中華人民共和國/專利法/實施細則mmseg4j的Complex Analyzer開發/自己的/搜索/引擎/lucene/2/0/heritrix〖〗中華人民共和國/專利法/實施細則mmseg4j的Max Word Analyzer開發/自己/的/搜索/引擎/lucene/2/0/heritrix中華/華人/人民/共和/國/專利/法/實施/細則

從表3可以看出,這些分析器都會將標點符號去除,都能正確地將英語單詞切分出來,也都能將數字切分出來,但相對來說Standard Analyzer、CJK Analyzer、ik分析器對數字的切分更加準確。Standard Analyzer采用單字方式,CJK Analyzer采用二元覆蓋方式,而基于分詞方式的Smart Chinese Analyzer、ik、mmseg4j分詞效果明顯較好,其中Smart Chinese Analyzer和ik分詞最為準確,都能將“搜索引擎”和“中華人民共和國”準確切分出來。ik的IK Analyzer()可以切分出最多的詞;mmseg4j的3種分析器中,Max Word Analyzer相對于Simple Analyzer和Complex Analyzer也可以切分出較多的詞。

22建立索引比較

該實驗對廣州大學圖書館最新的10萬條中文書目記錄內容建立索引:首先,將這10萬條書目記錄從ILAS Ⅲ中導出,并生成一個文本文件,該文件大小為758MB,每一條書目記錄按格式“書目記錄號:書目文本內容”生成一行文本數據,書目文本內容是書目MARC記錄的題名、責任者、出版者、主題詞、簡介等所有數據字段的文本內容。然后,使用各分析器,通過該文本文件逐行按書目記錄號、書目文本內容建立索引。各分析器建立索引占用的時間、空間的結果見表4。表4建立索引的時間、空間比較

endprint

分析器時間(ms)空間(MB)Standard Analyzer64 847821CJK Analyzer73 189880Smart Chinese Analyzer387 615774IK Analyzer()112 541918IK Analyzer(true)106 237744mmseg4j的Simple Analyzer75 612748mmseg4j的Complex Analyzer76 140747mmseg4j的Max Word Analyzer78 734756

由實驗結果可以看出,Standard Analyzer的算法最簡單,耗時最小,而Smart Chinese Analyzer和ik的分詞算法復雜,所以建立索引耗時較長;IK Analyzer()采用最大切分算法得到的詞最多,所以占用的空間最大;mmseg4j的采用的是正向匹配,近乎是將原句在若干個位置進行切分,分詞后的詞語冗余少,所以在建立索引的時間和空間性能方面,綜合最優。

23檢索結果比較

該實驗分別使用上面實驗各分析器建立的索引,對書目文本內容進行檢索。對IK Analyzer()建立的索引分別用IK Analyzer()、IK Analyzer(true)對檢索詞進行解析(IK Analyzer()表示用IK Analyzer()解析,IK Analyzer()-IK Analyzer(true)表示用IK Analyzer(true)解析),其它的,采用與建立索引對應相同的分析器對檢索詞進行解析;查詢解析器缺省的邏輯操作為“與”(Query Parser.Operator.AND);分別用檢索詞“平凡的世界”和“平凡世界”進行檢索《平凡的世界》一書的書目信息。實驗結果見表5,表中的時間單位為毫秒(ms),檢全率=檢索結果中的相關記錄÷系統中存在的相關記錄,平均檢準率按文獻[12]的無干擾的平均檢準率計算方法得出。

表5檢索結果比較

分析器平凡的世界平凡世界檢索

時間返回

記錄數檢全率平均

檢準率檢索

時間返回

記錄數檢全率平均

檢準率Standard Analyzer81371002447741100190CJK Analyzer583101556000Smart Chinese Analyzer68241003635425100306IK Analyzer()552810030652000IK Analyzer()-IK Analyzer(true)55281003065728100306IK Analyzer(true)61211004405521100440mmseg4j的Simple Analyzer55181005175519100340mmseg4j的Complex Analyzer55191004405420100306mmseg4j的Max Word Analyzer57261003065327100254

由實驗結果可以看出,Lucene的檢索速度優異,Standard Analyzer需較長的檢索時間,也只需81毫秒就可從10萬條書目記錄中檢索出所需記錄。當檢索詞與所檢內容一致時,所有分析器都可以成功檢索出結果,并且CJK Analyze的平均檢準率最高;但當檢索詞較為模糊時,CJK Analyzer與IK Analyzer()都容易出現檢索不到結果的情況,這主要是因為它們都有可能將檢索詞分解出無關詞參與檢索,例如檢索詞“平凡世界”會分解成“平凡?凡世?世界”3個詞進行檢索,從而檢索不出結果。所以使用ik分析器時,無論是用IK Analyzer()或IK Analyzer(true)建立索引,進行檢索詞解析時,都應使用IK Analyzer(true)解析器,避免出現檢索不出結果的情況。綜合考慮,Smart Chinese Analyzer、ik和mmseg4j這些基于分詞方式切詞的分析器檢索結果較好,都可在較短時間內完成檢索,并且檢全率和平均檢率都較高,其中,ik分析器最優。

3結語

本文為了選擇最合適的Lucene中文分析器實現中文書目搜索,選定了Lucene自帶的中文分析器:Standard Analyzer、CJK Analyzer、Smart Chinese Analyzer,和開發活躍度比較高的第三方中文分析器:ik、mmseg4j,并通過大量實驗數據對這些分析器進行分析比較。綜合考慮分詞效果,建立索引的時間和空間,檢索的時間、檢全率和平均檢準率,ik分析器總體性能最優,而且它可以簡便地實現詞庫擴充,從而可以將書目信息中的作者姓名、出版社等提取出來用于擴充ik詞庫,進一步提高書目搜索的檢全率和檢準率。Smart Chinese Analyzer和mmseg4j分析器也有較好的表現,特別是Smart Chinese Analyzer由Lucene自帶,可以保證與Lucene的同步更新,有一定優勢,但它建立索引花費時間太長,并且不支持用戶擴展詞庫。該研究結果對其它基于Lucene、Solr實現中文全文搜索的項目中,選擇中文分析器時也有一定的參考價值。

參考文獻

[1]李曉明,閆宏飛,王繼民.搜索引擎:原理、技術與系統[M].北京:科學出版社,2012:58.

[2]羅剛.解密搜索引擎技術實戰:Lucene & Java精華版[M].北京:電子工業出版社,2011:166.

[3]黃翼彪.實現Lucene接口的中文分詞器的比較研究[J].科技信息,2012,(12):246-247.

[4]義天鵬,陳啟安.基于Lucene的中文分析器分詞性能比較研究[J].計算機工程,2012,(22):279-282.

[5]ik-analyzer-java開源中文分詞器-Google Project Hosting[EB/OL].http:∥code.google.com/p/ik-analyzer/,2013-08-22.

[6]mmseg4j-MMSEG for java lucene chinese analyzer,or for solr-Google Project Hosting[EB/OL].http:∥code.google.com/p/mmseg4j/,2013-08-22.

[7]paoding Lucene中文分詞“庖丁解?!盤aoding Analysis-Google Project Hosting[EB/OL].http:∥code.google.com/p/paoding/,2013-08-22.

[8]Chinese Analyzer(Lucene 440 API)[EB/OL].http:∥lucene.apache.org/core/440/analyzers-common/index.html,2013-08-22.

[9]Lucene中文分析器的中文分詞準確性和性能比較[EB/OL].http:∥approximation.iteye.com/blog/345885,2013-08-22.

[10]與lucene,solr版本同步的ik分詞[EB/OL].https:∥github.com/qingw/ik-analyzer/,2013-08-22.

[11]湯國鋒,徐振偉,張華熊.基于Lucene的中文分詞技術研究[J].電腦編程技巧與維護,2012,(10):4-5,12.

[12]常娥,侯漢清.平均檢準率研究[J].情報科學,2006,(4):627-631.

(本文責任編輯:馬卓)

endprint

分析器時間(ms)空間(MB)Standard Analyzer64 847821CJK Analyzer73 189880Smart Chinese Analyzer387 615774IK Analyzer()112 541918IK Analyzer(true)106 237744mmseg4j的Simple Analyzer75 612748mmseg4j的Complex Analyzer76 140747mmseg4j的Max Word Analyzer78 734756

由實驗結果可以看出,Standard Analyzer的算法最簡單,耗時最小,而Smart Chinese Analyzer和ik的分詞算法復雜,所以建立索引耗時較長;IK Analyzer()采用最大切分算法得到的詞最多,所以占用的空間最大;mmseg4j的采用的是正向匹配,近乎是將原句在若干個位置進行切分,分詞后的詞語冗余少,所以在建立索引的時間和空間性能方面,綜合最優。

23檢索結果比較

該實驗分別使用上面實驗各分析器建立的索引,對書目文本內容進行檢索。對IK Analyzer()建立的索引分別用IK Analyzer()、IK Analyzer(true)對檢索詞進行解析(IK Analyzer()表示用IK Analyzer()解析,IK Analyzer()-IK Analyzer(true)表示用IK Analyzer(true)解析),其它的,采用與建立索引對應相同的分析器對檢索詞進行解析;查詢解析器缺省的邏輯操作為“與”(Query Parser.Operator.AND);分別用檢索詞“平凡的世界”和“平凡世界”進行檢索《平凡的世界》一書的書目信息。實驗結果見表5,表中的時間單位為毫秒(ms),檢全率=檢索結果中的相關記錄÷系統中存在的相關記錄,平均檢準率按文獻[12]的無干擾的平均檢準率計算方法得出。

表5檢索結果比較

分析器平凡的世界平凡世界檢索

時間返回

記錄數檢全率平均

檢準率檢索

時間返回

記錄數檢全率平均

檢準率Standard Analyzer81371002447741100190CJK Analyzer583101556000Smart Chinese Analyzer68241003635425100306IK Analyzer()552810030652000IK Analyzer()-IK Analyzer(true)55281003065728100306IK Analyzer(true)61211004405521100440mmseg4j的Simple Analyzer55181005175519100340mmseg4j的Complex Analyzer55191004405420100306mmseg4j的Max Word Analyzer57261003065327100254

由實驗結果可以看出,Lucene的檢索速度優異,Standard Analyzer需較長的檢索時間,也只需81毫秒就可從10萬條書目記錄中檢索出所需記錄。當檢索詞與所檢內容一致時,所有分析器都可以成功檢索出結果,并且CJK Analyze的平均檢準率最高;但當檢索詞較為模糊時,CJK Analyzer與IK Analyzer()都容易出現檢索不到結果的情況,這主要是因為它們都有可能將檢索詞分解出無關詞參與檢索,例如檢索詞“平凡世界”會分解成“平凡?凡世?世界”3個詞進行檢索,從而檢索不出結果。所以使用ik分析器時,無論是用IK Analyzer()或IK Analyzer(true)建立索引,進行檢索詞解析時,都應使用IK Analyzer(true)解析器,避免出現檢索不出結果的情況。綜合考慮,Smart Chinese Analyzer、ik和mmseg4j這些基于分詞方式切詞的分析器檢索結果較好,都可在較短時間內完成檢索,并且檢全率和平均檢率都較高,其中,ik分析器最優。

3結語

本文為了選擇最合適的Lucene中文分析器實現中文書目搜索,選定了Lucene自帶的中文分析器:Standard Analyzer、CJK Analyzer、Smart Chinese Analyzer,和開發活躍度比較高的第三方中文分析器:ik、mmseg4j,并通過大量實驗數據對這些分析器進行分析比較。綜合考慮分詞效果,建立索引的時間和空間,檢索的時間、檢全率和平均檢準率,ik分析器總體性能最優,而且它可以簡便地實現詞庫擴充,從而可以將書目信息中的作者姓名、出版社等提取出來用于擴充ik詞庫,進一步提高書目搜索的檢全率和檢準率。Smart Chinese Analyzer和mmseg4j分析器也有較好的表現,特別是Smart Chinese Analyzer由Lucene自帶,可以保證與Lucene的同步更新,有一定優勢,但它建立索引花費時間太長,并且不支持用戶擴展詞庫。該研究結果對其它基于Lucene、Solr實現中文全文搜索的項目中,選擇中文分析器時也有一定的參考價值。

參考文獻

[1]李曉明,閆宏飛,王繼民.搜索引擎:原理、技術與系統[M].北京:科學出版社,2012:58.

[2]羅剛.解密搜索引擎技術實戰:Lucene & Java精華版[M].北京:電子工業出版社,2011:166.

[3]黃翼彪.實現Lucene接口的中文分詞器的比較研究[J].科技信息,2012,(12):246-247.

[4]義天鵬,陳啟安.基于Lucene的中文分析器分詞性能比較研究[J].計算機工程,2012,(22):279-282.

[5]ik-analyzer-java開源中文分詞器-Google Project Hosting[EB/OL].http:∥code.google.com/p/ik-analyzer/,2013-08-22.

[6]mmseg4j-MMSEG for java lucene chinese analyzer,or for solr-Google Project Hosting[EB/OL].http:∥code.google.com/p/mmseg4j/,2013-08-22.

[7]paoding Lucene中文分詞“庖丁解?!盤aoding Analysis-Google Project Hosting[EB/OL].http:∥code.google.com/p/paoding/,2013-08-22.

[8]Chinese Analyzer(Lucene 440 API)[EB/OL].http:∥lucene.apache.org/core/440/analyzers-common/index.html,2013-08-22.

[9]Lucene中文分析器的中文分詞準確性和性能比較[EB/OL].http:∥approximation.iteye.com/blog/345885,2013-08-22.

[10]與lucene,solr版本同步的ik分詞[EB/OL].https:∥github.com/qingw/ik-analyzer/,2013-08-22.

[11]湯國鋒,徐振偉,張華熊.基于Lucene的中文分詞技術研究[J].電腦編程技巧與維護,2012,(10):4-5,12.

[12]常娥,侯漢清.平均檢準率研究[J].情報科學,2006,(4):627-631.

(本文責任編輯:馬卓)

endprint

分析器時間(ms)空間(MB)Standard Analyzer64 847821CJK Analyzer73 189880Smart Chinese Analyzer387 615774IK Analyzer()112 541918IK Analyzer(true)106 237744mmseg4j的Simple Analyzer75 612748mmseg4j的Complex Analyzer76 140747mmseg4j的Max Word Analyzer78 734756

由實驗結果可以看出,Standard Analyzer的算法最簡單,耗時最小,而Smart Chinese Analyzer和ik的分詞算法復雜,所以建立索引耗時較長;IK Analyzer()采用最大切分算法得到的詞最多,所以占用的空間最大;mmseg4j的采用的是正向匹配,近乎是將原句在若干個位置進行切分,分詞后的詞語冗余少,所以在建立索引的時間和空間性能方面,綜合最優。

23檢索結果比較

該實驗分別使用上面實驗各分析器建立的索引,對書目文本內容進行檢索。對IK Analyzer()建立的索引分別用IK Analyzer()、IK Analyzer(true)對檢索詞進行解析(IK Analyzer()表示用IK Analyzer()解析,IK Analyzer()-IK Analyzer(true)表示用IK Analyzer(true)解析),其它的,采用與建立索引對應相同的分析器對檢索詞進行解析;查詢解析器缺省的邏輯操作為“與”(Query Parser.Operator.AND);分別用檢索詞“平凡的世界”和“平凡世界”進行檢索《平凡的世界》一書的書目信息。實驗結果見表5,表中的時間單位為毫秒(ms),檢全率=檢索結果中的相關記錄÷系統中存在的相關記錄,平均檢準率按文獻[12]的無干擾的平均檢準率計算方法得出。

表5檢索結果比較

分析器平凡的世界平凡世界檢索

時間返回

記錄數檢全率平均

檢準率檢索

時間返回

記錄數檢全率平均

檢準率Standard Analyzer81371002447741100190CJK Analyzer583101556000Smart Chinese Analyzer68241003635425100306IK Analyzer()552810030652000IK Analyzer()-IK Analyzer(true)55281003065728100306IK Analyzer(true)61211004405521100440mmseg4j的Simple Analyzer55181005175519100340mmseg4j的Complex Analyzer55191004405420100306mmseg4j的Max Word Analyzer57261003065327100254

由實驗結果可以看出,Lucene的檢索速度優異,Standard Analyzer需較長的檢索時間,也只需81毫秒就可從10萬條書目記錄中檢索出所需記錄。當檢索詞與所檢內容一致時,所有分析器都可以成功檢索出結果,并且CJK Analyze的平均檢準率最高;但當檢索詞較為模糊時,CJK Analyzer與IK Analyzer()都容易出現檢索不到結果的情況,這主要是因為它們都有可能將檢索詞分解出無關詞參與檢索,例如檢索詞“平凡世界”會分解成“平凡?凡世?世界”3個詞進行檢索,從而檢索不出結果。所以使用ik分析器時,無論是用IK Analyzer()或IK Analyzer(true)建立索引,進行檢索詞解析時,都應使用IK Analyzer(true)解析器,避免出現檢索不出結果的情況。綜合考慮,Smart Chinese Analyzer、ik和mmseg4j這些基于分詞方式切詞的分析器檢索結果較好,都可在較短時間內完成檢索,并且檢全率和平均檢率都較高,其中,ik分析器最優。

3結語

本文為了選擇最合適的Lucene中文分析器實現中文書目搜索,選定了Lucene自帶的中文分析器:Standard Analyzer、CJK Analyzer、Smart Chinese Analyzer,和開發活躍度比較高的第三方中文分析器:ik、mmseg4j,并通過大量實驗數據對這些分析器進行分析比較。綜合考慮分詞效果,建立索引的時間和空間,檢索的時間、檢全率和平均檢準率,ik分析器總體性能最優,而且它可以簡便地實現詞庫擴充,從而可以將書目信息中的作者姓名、出版社等提取出來用于擴充ik詞庫,進一步提高書目搜索的檢全率和檢準率。Smart Chinese Analyzer和mmseg4j分析器也有較好的表現,特別是Smart Chinese Analyzer由Lucene自帶,可以保證與Lucene的同步更新,有一定優勢,但它建立索引花費時間太長,并且不支持用戶擴展詞庫。該研究結果對其它基于Lucene、Solr實現中文全文搜索的項目中,選擇中文分析器時也有一定的參考價值。

參考文獻

[1]李曉明,閆宏飛,王繼民.搜索引擎:原理、技術與系統[M].北京:科學出版社,2012:58.

[2]羅剛.解密搜索引擎技術實戰:Lucene & Java精華版[M].北京:電子工業出版社,2011:166.

[3]黃翼彪.實現Lucene接口的中文分詞器的比較研究[J].科技信息,2012,(12):246-247.

[4]義天鵬,陳啟安.基于Lucene的中文分析器分詞性能比較研究[J].計算機工程,2012,(22):279-282.

[5]ik-analyzer-java開源中文分詞器-Google Project Hosting[EB/OL].http:∥code.google.com/p/ik-analyzer/,2013-08-22.

[6]mmseg4j-MMSEG for java lucene chinese analyzer,or for solr-Google Project Hosting[EB/OL].http:∥code.google.com/p/mmseg4j/,2013-08-22.

[7]paoding Lucene中文分詞“庖丁解?!盤aoding Analysis-Google Project Hosting[EB/OL].http:∥code.google.com/p/paoding/,2013-08-22.

[8]Chinese Analyzer(Lucene 440 API)[EB/OL].http:∥lucene.apache.org/core/440/analyzers-common/index.html,2013-08-22.

[9]Lucene中文分析器的中文分詞準確性和性能比較[EB/OL].http:∥approximation.iteye.com/blog/345885,2013-08-22.

[10]與lucene,solr版本同步的ik分詞[EB/OL].https:∥github.com/qingw/ik-analyzer/,2013-08-22.

[11]湯國鋒,徐振偉,張華熊.基于Lucene的中文分詞技術研究[J].電腦編程技巧與維護,2012,(10):4-5,12.

[12]常娥,侯漢清.平均檢準率研究[J].情報科學,2006,(4):627-631.

(本文責任編輯:馬卓)

endprint

猜你喜歡
分析器
四極質譜儀質量分辨指標的系統分析與航天應用
離子注入機分析器模型的自動調束控制方法
酒精分析器為什么能分辨人是否喝過酒
Apache日志分析器設計
多邊形電極線形離子阱質量分析器的結構與性能
CO2紅外線氣體分析器示值誤差的不確定度評定
熱導式氣體分析器校準方法
X射線法分析金屬的精細結構
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合