(五)Lucene——中文分詞器
阿新 • • 發佈:2017-10-09
實現 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
- 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分詞器從單純的詞典分詞向模擬語義分詞衍化。 但是也就是
- 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——中文分詞器