国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Lucene中文分析器在書目搜索應(yīng)用中的比較研究

2014-08-08 03:41王澤賢
現(xiàn)代情報 2014年4期
關(guān)鍵詞:分析器

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

作者簡介:王澤賢(1972-),男,副研究館員,研究方向:圖書館計算機自動化、知識管理,發(fā)表論文10多篇。·業(yè)務(wù)研究·

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

〔關(guān)鍵詞〕Lucene;書目搜索;中文分詞;分析器

DOI:10.3969/j.issn.1008-0821.2014.04.030

〔中圖分類號〕G25071〔文獻(xiàn)標(biāo)識碼〕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以其開源可免費使用、架構(gòu)清晰、擴展性高、索引結(jié)構(gòu)優(yōu)異、性能高、跨平臺、易使用等優(yōu)點,近年來越來越廣泛地被應(yīng)用到各類應(yīng)用系統(tǒng)中,實現(xiàn)全文索引和搜索功能?;贚ucene開發(fā)書目搜索系統(tǒng),實現(xiàn)對書目信息任意關(guān)鍵詞進行全文檢索,可提高書目搜索的查全率、查準(zhǔn)率,并簡化讀者的查詢操作,是一個較好的解決方案。

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

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

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

Lucene保持了較高的開發(fā)活躍度,每一新版本都會帶來較大的性能提升和功能增強。Lucene為了保證最高的性能與更多的功能,犧牲了部分向后兼容性,新版本的接口可能會有所改變,使得一些未能及時更新的分析器在高版本中會無法使用。目前Lucene的最新版本是44,在30、40、42等版本的分析器接口都有所改變。所以對于實現(xiàn)中文書目搜索,選擇Lucene分析器的首要條件是可處理中文文本外,有較高的開發(fā)活躍度也是首要考慮條件之一,使其能緊密跟進Lucene版本變動,適應(yīng)最新版本的接口,以便在系統(tǒng)中應(yīng)用最新的Lucene技術(shù)。所以本文首先對Lucene中文分析器從最近更新時間、更新版本、支持Lucene版本這幾個指標(biāo)進行開發(fā)活躍度的比較分析,選取開發(fā)活躍度高,符合最新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這些第三方提供的分析器進行,通過訪問這些分析器的原始網(wǎng)站,獲取它們的開發(fā)、發(fā)布信息,比較結(jié)果如表1所示。Lucene的內(nèi)部分析器Chinese Analyzer功能與Standard Analyzer差不多,并且在Lucene 31版開始已被不贊成使用,并在Lucene 50開始會移出Lucene[8];還有一種早幾年較多人談?wù)摰腗M Analyzer,目前能找到的最新版本是153,在2009年開始原始網(wǎng)站已經(jīng)找不到下載,并且聲明不提供維護和支持[9]。所以Chinese Analyzer、MM Analyzer在本文不參與比較。表1分析器開發(fā)活躍度比較

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

endprint

paoding主要在1x、2x版的Lucene應(yīng)用比較多,最后提供的運行包是在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都是分詞方式。分詞式切詞算法可分為機械分詞方法、基于統(tǒng)計的分詞方法和基于理解的分詞方法三大類。機械分詞方法是目前較常見的分詞算法,它是按照一定的策略將待分析的漢字串與詞典中的詞條進行匹配,若在詞典中找到某個字符串,則識別出一個詞。按照掃描方向的不同,機械分詞方法可以分為正向匹配和逆向匹配;按照不同長度優(yōu)先匹配的情況,可以分為最大匹配和最小匹配等。常用的幾種機械分詞方法有:(1)正向最大匹配法;(2)逆向最大匹配法;(3)最少切分,使每一句中切出的詞數(shù)最小;(4)最大切分,使每一句中切出的詞數(shù)最大。實驗已經(jīng)證明,逆向最大匹配的準(zhǔn)確率會比正向最大匹配的準(zhǔn)確率略高,正向最大匹配分詞算法的匹配錯誤率是1/169,而逆向最大匹配分詞算法的匹配錯誤率是1/245[11]。ik分析器采用正反向匹配方式,提高了匹配正確率,它提供了細(xì)粒度與智能2種分析器:以IK Analyzer()方式建立的是細(xì)粒度分析器;以IK Analyzer(true)方式建立時是智能分析器(本文下面用IK Analyzer()表示ik的細(xì)粒度分析器,IK Analyzer(true)表示ik的智能分析器)。mmseg4j根據(jù)分詞算法的不同,提供了Simple Analyzer、Complex Analyzer、Max Word Analyzer 3種分析器。表2是參與本文評測的Lucene中文分析器概述。表2分析器概述

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

2分析器比較

實驗環(huán)境為Windows 7操作系統(tǒng),Intel T7250處理器,3G內(nèi)存,Lucene版本為44。

21分詞效果比較

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

表3分詞效果比較

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

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

22建立索引比較

該實驗對廣州大學(xué)圖書館最新的10萬條中文書目記錄內(nèi)容建立索引:首先,將這10萬條書目記錄從ILAS Ⅲ中導(dǎo)出,并生成一個文本文件,該文件大小為758MB,每一條書目記錄按格式“書目記錄號:書目文本內(nèi)容”生成一行文本數(shù)據(jù),書目文本內(nèi)容是書目MARC記錄的題名、責(zé)任者、出版者、主題詞、簡介等所有數(shù)據(jù)字段的文本內(nèi)容。然后,使用各分析器,通過該文本文件逐行按書目記錄號、書目文本內(nèi)容建立索引。各分析器建立索引占用的時間、空間的結(jié)果見表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

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

23檢索結(jié)果比較

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

表5檢索結(jié)果比較

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

時間返回

記錄數(shù)檢全率平均

檢準(zhǔn)率檢索

時間返回

記錄數(shù)檢全率平均

檢準(zhǔn)率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

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

3結(jié)語

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

參考文獻(xiàn)

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

[2]羅剛.解密搜索引擎技術(shù)實戰(zhàn):Lucene & Java精華版[M].北京:電子工業(yè)出版社,2011:166.

[3]黃翼彪.實現(xiàn)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中文分析器的中文分詞準(zhǔn)確性和性能比較[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的中文分詞技術(shù)研究[J].電腦編程技巧與維護,2012,(10):4-5,12.

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

(本文責(zé)任編輯:馬卓)

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

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

23檢索結(jié)果比較

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

表5檢索結(jié)果比較

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

時間返回

記錄數(shù)檢全率平均

檢準(zhǔn)率檢索

時間返回

記錄數(shù)檢全率平均

檢準(zhǔn)率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

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

3結(jié)語

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

參考文獻(xiàn)

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

[2]羅剛.解密搜索引擎技術(shù)實戰(zhàn):Lucene & Java精華版[M].北京:電子工業(yè)出版社,2011:166.

[3]黃翼彪.實現(xiàn)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中文分析器的中文分詞準(zhǔn)確性和性能比較[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的中文分詞技術(shù)研究[J].電腦編程技巧與維護,2012,(10):4-5,12.

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

(本文責(zé)任編輯:馬卓)

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

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

23檢索結(jié)果比較

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

表5檢索結(jié)果比較

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

時間返回

記錄數(shù)檢全率平均

檢準(zhǔn)率檢索

時間返回

記錄數(shù)檢全率平均

檢準(zhǔn)率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

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

3結(jié)語

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

參考文獻(xiàn)

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

[2]羅剛.解密搜索引擎技術(shù)實戰(zhàn):Lucene & Java精華版[M].北京:電子工業(yè)出版社,2011:166.

[3]黃翼彪.實現(xiàn)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中文分詞“庖丁解牛”Paoding 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中文分析器的中文分詞準(zhǔn)確性和性能比較[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的中文分詞技術(shù)研究[J].電腦編程技巧與維護,2012,(10):4-5,12.

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

(本文責(zé)任編輯:馬卓)

endprint

猜你喜歡
分析器
四極質(zhì)譜儀質(zhì)量分辨指標(biāo)的系統(tǒng)分析與航天應(yīng)用
離子注入機分析器模型的自動調(diào)束控制方法
酒精分析器為什么能分辨人是否喝過酒
Apache日志分析器設(shè)計
多邊形電極線形離子阱質(zhì)量分析器的結(jié)構(gòu)與性能
CO2紅外線氣體分析器示值誤差的不確定度評定
熱導(dǎo)式氣體分析器校準(zhǔn)方法
X射線法分析金屬的精細(xì)結(jié)構(gòu)