《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Lucene的中文分詞器的改進與實現
基于Lucene的中文分詞器的改進與實現
2015年微型機與應用第11期
羅惠峰,郭淑琴
(浙江工業大學 信息工程學院,浙江 杭州 310023)
摘要: Lucene是一個高效的全文檢索工具包,本文主要研究了Lucene的體系架構及其在中文檢索上的應用。通過對基于最大匹配算法的中文分詞器的設計與改進,并引入文本解析器與構建同義詞詞庫引擎,使得Lucene對中文的檢索更加個性化。通過檢索結果的對比表明,改進后的中文分詞器對檢索功能的擴展有了極大的提高。并最終構建出了一個高效的中文全文檢索系統。
Abstract:
Key words :

  羅惠峰,郭淑琴

  (浙江工業大學 信息工程學院,浙江 杭州 310023)

  摘  要: Lucene是一個高效的全文檢索工具包,本文主要研究了Lucene的體系架構及其在中文檢索上的應用。通過對基于最大匹配算法中文分詞器的設計與改進,并引入文本解析器與構建同義詞詞庫引擎,使得Lucene對中文的檢索更加個性化。通過檢索結果的對比表明,改進后的中文分詞器對檢索功能的擴展有了極大的提高。并最終構建出了一個高效的中文全文檢索系統。

  關鍵詞: 全文檢索;中文分詞器;文本解析器;最大匹配算法(MMSEG)

0 引言

  隨著網絡的發展和數據存儲技術的成熟,如何在大量的數據中快速、準確地獲取到我們所需要的信息成為一個亟待解決的問題,也是信息檢索技術的核心問題。

  信息檢索的核心是全文檢索技術,全文檢索是指以各種計算機數據諸如文字、聲音、圖像等為處理對象,提供按照數據資料的內容而不是外在特征來實現的信息檢索手段。當前對全文數據的檢索主要有兩種方法:順序掃描法(Serial Scanning)和倒排索引法(Inverted Index)。前者較為原始,對于小數量的數據是最直接和最方便的方法;但隨著數據量的增多,倒排索引法具有更快的檢索速度和更全的應用范圍[1]。Lucene并不是一個完整的搜索引擎應用,而是一個開放源代碼的高性能、可伸縮的信息搜索庫,可以方便地嵌入到各種應用中,實現針對應用的全文索引/檢索功能,并且已經在許多搜索項目中得到了廣泛的應用[2]。

  中文分詞技術作為信息檢索的核心技術之一,它的研究與發展促進了全文檢索技術的應用。本文主要研究了中文分詞的最大匹配算法,并通過該算法對原始中文分詞器進行了改進,改進后的分詞器更加適用于中文條件下的搜索。

1 Lucene架構及簡介

001.jpg

  圖1描述了基于Lucene的全文檢索過程,Lucene對索引的創建和搜索是通過不同的流程來實現。創建索引時,需要通過文件、數據庫、Web或人工輸入方式來對數據進行采集;其次則需要建立索引的Document,一條Document就類似于數據庫的一條記錄[3];最后通過這些Document來生成索引。搜索索引時,首先通過用戶查詢得到用戶的查詢條件,然后Lucene通過查詢條件對索引進行搜索,并將最終經過一定規則排序后的結果返回給用戶。目前常見的搜索引擎排序算法有Direct Hit排序算法、PageRank算法、排名競價服務和詞頻位置加權算法[4]。

002.jpg

  圖2為Lucene的邏輯架構圖。由圖2可以看出Lucene索引和檢索時各個模塊間的調用關系:當索引文件時,接口模塊會先調用語法分析器對文本進行分析,并通過基礎結構公共模塊將分析后的數據寫入索引文件中。用戶查詢時,同樣是通過接口模塊將查詢語句傳遞到索引核心模塊,該模塊負責在底層的存儲類中讀取索引文件里面的數據,并返回給接口模塊[5]。該邏輯圖中的部分模塊是作為公共類存在的。

2 自定義中文分詞器的設計

  Lucene架構中的分詞器(Analyzer)用于對文本數據進行分詞,文本數據的索引創建過程一般包含以下幾步:(1)將原文檔傳遞給分詞組件(Tokenizer);(2)將得到的詞元(Token)傳遞給語言過濾組件(TokenFilter);(3)最后將得到的語匯單元(Term)傳遞給索引組件從而建立該詞的索引[6]。如圖3所示。

003.jpg

  2.1 文本解析器的應用

  在構建搜索程序時,一個重要的步驟就是從文檔中提取文本以用于索引。這就要求搜索程序能夠處理多種多樣的文檔。對于XML或者HTML等文本格式,必須小心處理以避免對其標簽進行錯誤的改寫。

  由于Lucene只能處理文本內容,而不能直接處理文件,因此對于存儲文本的各種文件,Lucene過去采用不同的文檔過濾器,并通過這些過濾器從文件中提取文本,同時還需要自己檢測文檔類型和編碼類型[4]。通過引入文本解析器TIKA作為中間模塊,實現對文件的文本內容進行提取。除此之外,TIKA還能從大多數類型的文檔中提取出元數據[7]。TIKA相當于提供了應對各種文件的中間器,如圖4所示。

004.jpg

  2.2 分詞器的設計思路

  經過文本提取后的內容,就可以進行分詞操作了。然而Lucene自帶的分詞器在中文環境下的應用具有很大的局限性。對于英文該分詞器采用空格分詞,對于中文實際上只是將文本切割為單個字符,并不符合中文的語法及語義。最大匹配算法(MMSEG)是一種常見的、基于詞典的分詞算法[8]。該算法以正向最大匹配為主,多種消除歧義的規則為輔。它的匹配規則包括正向匹配和復雜匹配;歧義消除規則依次采用最大匹配、最大平均單詞長度、單詞長度最小方差和單字單詞語素最大自由度對語句進行分詞,直到只有一種結果或者最后一個規則使用完畢。

  該算法強調長度和均衡,體現在以下幾個方面:每個詞的組合要盡可能長,每個詞也要盡可能長,每個詞的長度要盡可能接近,每個詞的詞頻也要較為接近。例如,假設C1,C2,C3,…,Cn為一組字符構成的短語字符串,首先搜索詞典以確定_C1_是否為單個字,若為單個字則繼續搜索_C1C2_,直到在詞典中找到最長的單詞即為最合理的匹配。取出這個詞,并對下一個字符采取同樣的操作,直到該字符串最后一個字。在消除歧義方面,定義平均詞長:

  1.png

  式中N為詞組總字數,M為詞語數量。對于字數一定的詞組,詞語數量越少則平均詞長越大,該系列分詞后的詞語更符合中文語義。當平均詞長相同時,繼續采用詞語長度的變化率(即標準差公式)來判斷分詞的好壞,定義每個詞的長度分別為n1,n2,n3,…,nn,則該短語詞語長度變化率為:

  2.png

  變化率越小,則說明該方法下的分詞效果越好。最后,對于單字詞和連接詞的判斷,采用的方法是計算詞組中的所有單字詞詞頻的自然對數,然后將得到的值相加,取總和最大的詞組。例如A_BBB_C(單字詞詞頻,A:3,C:7),DD_E_F(單字詞詞頻,E:5,F:5)表示兩個詞組,A、C、E、F表示不同的單字詞,如果不取自然對數,單純就詞頻來計算,這兩個詞組是一樣的,但實際上不同的詞頻范圍所表示的效果也不同,所以這里取自然對數:

  ln Fa+ln Fc<ln Fe+ln Ff

  即:ln 3+ln 7<ln 5+ln 5(3)

  比如:設施_和_服務,設施_和服_務,在文本中,“和”字作為單字的詞頻越高,則第一種分詞方法的可能性就越大。

  基于以上所述的分詞算法,對示例語句“我是一名大學生”進行分析,并標明分詞后的語匯單元的屬性,如圖5所示。

005.jpg

  由圖5各項屬性可知,當文本被語匯單元化了之后,相對于前一個語匯單元的位置信息將以位置增量值保存,默認值為1。如果位置增量大于1,則表明兩個語匯單元之間有被TokenFilter過濾掉的停用詞。基于以上分詞算法,可以構建同義詞引擎,該同義詞能滿足與原詞匯具有相同的詞匯偏移量,并且通過堆棧的方式設置0位置增量來表示插入的同義詞,那么就可以實現基于Lucene的中文同義詞分詞器的改進。這種改進使得在搜索時,輸入任何一個同義詞,都能得到相匹配的結果。

3 Lucene應用測試實例及分析

  根據前文所述的自定義中文分詞器的設計方案,將該分詞器集成到Lucene分詞模塊中去,并通過對比最大匹配算法分詞器(MMSegAnalyzer)以及封裝好的自定義中文分詞器(MyAnalyzer)來進行測試。自定義中文分詞器部分代碼如下,構造該類時將同義詞引擎傳入,并加載絕對路徑下的詞典。

  public class MyAnalyzer extends Analyzer {

  private SamewordContext samewordContext;

  //構造時把同義詞引擎SamewordContext傳入

  public MyAnalyzer(SamewordContext swc){

  samewordContext=swc;

  }

  @Override

  public TokenStream tokenStream(String fieldName,Reader reader){

  Dictionary dic=

  Dictionary.getInstance("D:\\Java\\mmseg4j-1.8.5\\data");

  //分詞器采用最大匹配算法分詞器

  return new MySameTokenFilter(new MMSegTokenizer(new MaxWordSeg(dic),reader),samewordContext

  }

  }

  首先測試文本解析器TIKA的解析性能,通過對比TXT文本與被解析后的PDF文檔在Lucene中和Windows中對中文詞組“工具”的識別條數、索引和檢索時間,表明結合了文本解析器TIKA的Lucene具有較強的實用性。本文所用測試文本為世界科技百卷書及中華學生百科全書共200冊,數據量約30 MB,系統為Windows 7 SP2。測試結果如表1所示。

006.jpg

  由表1可得知,使用Lucene對文件內容創建索引并進行搜索,其檢索效率與Windows自帶檢索功能相比,具有更快的算法實現。在搜索速度上,兩種方式的速度差別并不大,主要差別在于索引創建的過程。該實驗結果很好地證明了最大匹配算法在中文分詞上的優越性,以及TIKA對文本內容的解析性能。

  接下來對搜索系統的完備性進行測試。首先通過同義詞引擎將一組詞匯定義為相關同義詞,這使得在檢索某一詞匯時,即使文檔本身中不包含該內容,但只要包含了該詞匯的相關同義詞,即可獲得檢索結果。該方法是基于前述的位置信息和偏移信息等語匯單元屬性。定義同義詞:文明=文化=中華文明,并通過自定義分詞器建立索引并檢索這些詞匯,檢索結果如表2所示。

007.jpg

  由表2測試得知,當文本解析器與自定義分詞器被引入Lucene之后,檢索響應度和檢索滿意度均有較高提升,可以更方便快捷地實現用戶對數據的管理與檢索。

4 結束語

  通常使用功能完備性、分詞準確性、檢索速度、查全率來評價搜索系統的性能。通過上述測試實例的對比發現,結合了改進后的自定義中文分詞器的搜索系統,對以上性能指標均有較高提升。當然,該分詞器算法主要是根據最大匹配算法,通過詞典的加載來完成同義詞引擎的構造。將來的研究方向:可以結合中文語義及概率統計智能化得出同義詞詞根,從而根據詞根使得搜索系統更加豐富化、人性化,并將其應用在網絡數據檢索、網站搜索功能等方面。

參考文獻

  [1] 張博.基于Lucene倒排索引性能的研究與優化[D].昆明:昆明理工大學,2013.

  [2] 李永春,丁華福.Lucene的全文檢索的研究與應用[J].計算機技術與發展,2009,20(2):12-15.

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

  [4] 高樂,張健.基于網頁分塊的搜索引擎排序算法改進[J].浙江工業大學學報,2005,33(3):272-275.

  [5] 林碧英,趙銳,陳良臣.基于Lucene的全文檢索引擎研究與應用[J].計算機技術與發展,2007,17(5):186-190.

  [6] 劉冰凌.基于正向最大匹配算法的優化算法ImpFMMseg的實現[D].武漢:中南民族大學,2010.

  [7] CUTTING D. The Lucene search engine powerful flexible and free[M]. Newyork: John Wiley Sons, 2000.

  [8] MCCANDLESS M. Lucene in Action[M].牛長流,肖宇,譯.北京:人民郵電出版社,2011.


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美国产极速在线| 国内精品久久久久久 | 国语自产偷拍精品视频偷| 国产精品久久久久久久久借妻| 欧美精品乱人伦久久久久久| 欧美大片一区二区| 美女91精品| 欧美xx69| 欧美剧在线观看| 欧美日产在线观看| 欧美日韩高清不卡| 欧美午夜电影在线| 国产精品第一区| 国产精品视频一区二区三区| 国产精品无码专区在线观看| 国产精品一区二区三区四区| 国产伦精品一区二区三区四区免费 | 国产精品视频一| 国产麻豆成人精品| 国产婷婷一区二区| 韩国女主播一区| 在线看欧美日韩| 最近中文字幕mv在线一区二区三区四区| 亚洲电影一级黄| 亚洲精品偷拍| 亚洲一区二区成人| 欧美一级视频精品观看| 亚洲电影第1页| 亚洲精品欧美日韩| 亚洲先锋成人| 欧美亚洲综合另类| 巨胸喷奶水www久久久免费动漫| 久久亚洲精品欧美| 欧美黄色影院| 国产精品高潮呻吟| 国产一区二区三区四区五区美女| 激情五月综合色婷婷一区二区| 最新成人av网站| 亚洲一区三区视频在线观看| 久久av资源网| 亚洲理论电影网| 亚洲欧美色婷婷| 麻豆精品传媒视频| 欧美午夜精品久久久| 国产区亚洲区欧美区| 精品动漫3d一区二区三区| 亚洲九九精品| 亚洲欧美日韩在线综合| 91久久精品日日躁夜夜躁欧美| 99在线热播精品免费| 欧美一区免费| 欧美大片免费观看在线观看网站推荐| 欧美视频一区二区三区在线观看 | 一本大道av伊人久久综合| 亚洲一区在线免费| 久久五月激情| 欧美三级午夜理伦三级中文幕| 国产亚洲精品v| 亚洲精品乱码久久久久久蜜桃91 | 欧美日韩精品是欧美日韩精品| 国产精品一区二区你懂的| 在线看片第一页欧美| 一区二区冒白浆视频| 久久成人在线| 亚洲专区一二三| 男女精品网站| 国产视频欧美视频| 亚洲国产欧美日韩| 性欧美1819性猛交| 一区二区高清| 免费成人av在线| 国产精品午夜视频| 亚洲精品国产精品乱码不99| 香蕉成人啪国产精品视频综合网| 99国产精品久久久久久久久久 | 亚洲日本免费| 欧美在线观看你懂的| 亚洲午夜激情免费视频| 看片网站欧美日韩| 国产麻豆综合| 一本色道88久久加勒比精品| 久久精品系列| 欧美一区二区观看视频| 欧美日韩成人| 在线观看日韩国产| 午夜精品久久久久久久99黑人| 99riav久久精品riav| 久久综合九色欧美综合狠狠| 国产农村妇女精品| 亚洲少妇在线| 亚洲午夜精品一区二区三区他趣| 欧美 日韩 国产一区二区在线视频 | 中文网丁香综合网| 亚洲免费观看高清完整版在线观看熊| 久久九九免费视频| 国产精品老女人精品视频| 日韩午夜电影在线观看| 亚洲理论在线观看| 麻豆成人综合网| 激情久久一区| 久久精品日韩| 久久久五月婷婷| 国产亚洲欧美日韩日本| 亚洲影院色无极综合| 中文在线一区| 欧美日韩国产一区二区三区地区 | 亚洲三级视频| 日韩网站在线| 欧美激情1区| 91久久久在线| 亚洲精品美女| 欧美电影免费观看大全| 亚洲第一区在线| 亚洲国产高清高潮精品美女| 久久久久久婷| 好看的日韩视频| 亚洲国产精品悠悠久久琪琪 | 激情成人中文字幕| 欧美在线一级va免费观看| 欧美一区二区三区在| 国产麻豆精品在线观看| 午夜久久美女| 久久久亚洲影院你懂的| 激情亚洲网站| 亚洲人成在线影院| 欧美极品在线播放| 亚洲精品日本| 亚洲视频在线视频| 国产精品久久久久99| 亚洲在线网站| 久久久久国产精品午夜一区| 国内精品嫩模av私拍在线观看| 久久国产视频网| 欧美mv日韩mv国产网站| 亚洲精品影院| 亚洲欧美激情诱惑| 国产日韩欧美二区| 久久国产日韩| 欧美粗暴jizz性欧美20| 亚洲理伦电影| 性欧美超级视频| 国产一区二区三区在线观看网站 | 亚洲免费高清视频| 亚洲综合国产激情另类一区| 国产精品免费观看在线| 欧美一区影院| 欧美二区在线播放| 99综合在线| 久久福利视频导航| 在线日韩中文| 亚洲视频在线观看视频| 国产精品一区视频网站| 久久不射电影网| 欧美搞黄网站| 亚洲午夜久久久| 巨胸喷奶水www久久久免费动漫| 亚洲黄色在线看| 亚洲欧美春色| 影音先锋久久资源网| aa级大片欧美| 国产乱肥老妇国产一区二| 亚洲福利在线看| 欧美日韩国产欧| 欧美亚洲视频在线观看| 欧美激情成人在线| 亚洲影视在线播放| 欧美va亚洲va日韩∨a综合色| 一区二区三区日韩在线观看| 久久免费视频网| 一区二区三区四区五区视频 | 亚洲人成在线观看一区二区| 欧美午夜精品久久久久久孕妇| 性刺激综合网| 欧美日韩精品免费观看| 午夜一级久久| 欧美人与性动交α欧美精品济南到| 亚洲一级高清| 欧美成人亚洲成人| 亚洲男人的天堂在线aⅴ视频| 欧美大片91| 午夜精品区一区二区三| 欧美激情一区二区三区| 亚洲欧美日韩精品久久亚洲区| 欧美韩日亚洲| 欧美一级在线亚洲天堂| 欧美日韩在线播放一区二区| 亚洲第一在线视频| 国产精品区二区三区日本| 亚洲精选久久| 国产主播一区二区| 午夜精品久久久久久久99热浪潮| 亚洲福利视频在线| 久久精品欧美日韩精品| 一区二区国产日产| 免费看的黄色欧美网站| 西西人体一区二区| 国产精品久久国产三级国电话系列| 亚洲日本在线观看| 国产在线精品成人一区二区三区| 亚洲小少妇裸体bbw|