1. 程式人生 > >(五)Lucene——中文分詞器

(五)Lucene——中文分詞器

實現 ext cse ron -a tag 大小 -c .com

1. 什麽是中文分詞器

對於英文是安裝空格標點符號進行分詞

對於中文應該安裝具體的詞來分中文分詞就是將詞切分成一個個有意義的詞

比如:“我的中國人”,分詞:我、的、中國、中國人、國人。

2. Lucene自帶的中文分詞器

  • StandardAnalyzer

    單字分詞:就是按照中文一個字一個字地進行分詞。如:“我愛中國”
    效果:愛”

  • CJKAnalyzer

    二分法分詞:按兩個字進行切分。如:中國人,效果:是”中國“國人”

上邊兩個分詞器無法滿足需求。

3. 第三方中文分詞器

  • paoding: 庖丁解牛最新版在 https://code.google.com/p/paoding/ 中最多支持Lucene 3.0,且最新提交的代碼在 2008-06-03,在svn中最新也是2010年提交,已經過時,不予考慮。
  • mmseg4j:最新版已從 https://code.google.com/p/mmseg4j/ 移至 https://github.com/chenlb/mmseg4j-solr
    ,支持Lucene 4.10,且在github中最新提交代碼是2014年6月,從09年~14年一共有:18個版本,也就是一年幾乎有3個大小版本,有較大的活躍度,用了mmseg算法。
  • IK-analyzer 最新版在https://code.google.com/p/ik-analyzer/上,支持Lucene 4.10從2006年12月推出1.0版開始, IKAnalyzer已經推出了4個大版本。最初,它是以開源項目Luence為應用主體的,結合詞典分詞和文法分析算法的中文分詞組件。從3.0版本開 始,IK發展為面向Java的公用分詞組件,獨立於Lucene項目,同時提供了對Lucene的默認優化實現。在2012版本中,IK實現了簡單的分詞 歧義排除算法,標誌著IK分詞器從單純的詞典分詞向模擬語義分詞衍化。 但是也就是
    2012年12月後沒有在更新
  • ansj_seg:最新版本在 https://github.com/NLPchina/ansj_seg tags僅有1.1版本,從2012年到2014年更新了大小6次,但是作者本人在2014年10月10日說明:“可能我以後沒有精力來維護ansj_seg了”,現在由”nlp_china”管理。2014年11月有更新。並未說明是否支持Lucene,是一個由CRF(條件隨機場)算法所做的分詞算法。
  • imdict-chinese-analyzer:最新版在 https://code.google.com/p/imdict-chinese-analyzer/ 最新更新也在2009年5月,下載源碼,不支持Lucene 4.10 。是利用HMM(隱馬爾科夫鏈)算法。
  • Jcseg:最新版本在git.oschina.net/lionsoul/jcseg,支持Lucene 4.10,作者有較高的活躍度。利用mmseg算法。

4. Ikanalyzer的使用

4.1 將jar包拷貝到項目路徑下並發布

    技術分享

4.2 代碼中使用Ikanalyzer替換標準分詞器

    技術分享

4.3 擴展中文詞庫

config文件夾下創建以下文件(擴展詞文件和停用詞文件的編碼要是utf-8註意不要用記事本保存擴展詞文件和停用詞文件那樣的話格式中是含有bom

    技術分享

IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 擴展配置</comment>
    <!--用戶可以在這裏配置自己的擴展字典     -->
    <entry key="ext_dict">ext.dic;</entry> 
<!--用戶可以在這裏配置自己的擴展停止詞字典--> <entry key="ext_stopwords">stopword.dic;</entry>
</properties>

4.4 使用luke來查詢中文分詞效果

step1:將ikanalyzer的jar包,拷貝到luke工具的目錄

技術分享

step2:使用命令打開luke工具

java -Djava.ext.dirs=. -jar lukeall-4.10.3.jar

(五)Lucene——中文分詞器