Lucene中文分析器的中文分詞準確性和效能比較
單純的中文分詞的實現一般為按字索引或者按詞索引。按字索引顧名思義,就是按單個字建立索引。按詞索引就是按詞嘍,根據詞庫中的詞,將文字進行切分。車東的交叉雙字分割或者叫二元分詞我覺得應該算是按字索引的改進,應該還是屬於字索引的範疇吧。
分詞準確性的評估比較難,很難有統一的標準,不同應用的要求也不同,這個統一以“2008年8月8日晚,舉世矚目的北京第二十九屆奧林匹克運動會開幕式在國家體育場隆重舉行。”為例說明。
分詞效率,統一使用《射鵰英雄傳》的全文文字為例說明。呵呵。對於按詞索引的分析器,使用統一的基本詞庫,詞彙量為227,719個。在開發環境下執行,效能不準確,但可比較相對值。
分析器:
按字 |
StandardAnalyzer |
Lucene自帶的標準分析器。 |
|
ChineseAnalyzer |
Lucene contrib中附帶的分析器,與StandardAnalyzer類似。注意是類似啊,還是有區別的。 |
|
CJKAnalyzer |
Lucene contrib中附帶的二元分詞 |
按詞 |
IK_CAnalyzer、MIK_CAnalyzer |
http://code.google.com/p/ik-analyzer/downloads/list。使用版本為2.0.2 |
|
MMAnalyzer |
現在能找到的最新版本是1.5.3。不過在原始網站已經找不到下載了,而且據說宣告為不提供維護和支援。因為談論的人比較多,所以列出來。但在使用中感覺不太穩定。 |
|
PaodingAnalyzer |
庖丁解牛。http://code.google.com/p/paoding/downloads/list。使用版本為2.0.4beta。 |
分詞準確性:
StandardAnalyzer |
2008/年/8/月/8/日/晚/舉/世/矚/目/的/北/京/第/二/十/九/屆/奧/林/匹/克/運/動/會/開/幕/式/在/國/家/體/育/場/隆/重/舉/行/ |
一元分詞,沒什麼好說的。 |
ChineseAnalyzer |
年/月/日/晚/舉/世/矚/目/的/北/京/第/二/十/九/屆/奧/林/匹/克/運/動/會/開/幕/式/在/國/家/體/育/場/隆/重/舉/行/ |
還是有區別吧,這是因為ChineseAnalyzer只對Character.LOWERCASE_LETTER、Character.UPPERCASE_LETTER、和Character.OTHER_LETTER進行了處理,其他型別的都濾掉了。具體可以參見程式碼。 |
CJKAnalyzer |
2008/年/8/月/8/日晚/舉世/世矚/矚目/目的/的北/北京/京第/第二/二十/十九/九屆/屆奧/奧林/林匹/匹克/克運/運動/動會/會開/開幕/幕式/式在/在國/國家/家體/體育/育場/場隆/隆重/重舉/舉行/ |
二元分詞,作為一元分詞的改進,建立的索引小於一元,查詢效率較好,能滿足一般的查詢要求。 |
PaodingAnalyzer |
2008/年/8/月/8/日/晚/舉世/矚目/舉世矚目/目的/北京/二/第二/十/二十/第二十/九/十九/二十九/九屆/奧林/奧林匹克/運動/運動會/奧林匹克運動會/開幕/開幕式/國家/體育/體育場/隆重/舉行/隆重舉行/ |
細粒度全切分。對於不在詞典中的詞進行二元分詞。 |
IK_CAnalyzer |
2008年/2008/年/8月/8/月/8日/8/晚/舉世矚目/舉世/矚目/目的/北京/第二十九屆/第二十九/第二十/第二/二十九/二十/十九/九屆/九/奧林匹克運動會/奧林匹克/奧林/運動會/運動/開幕式/開幕/在國/國家/國/體育場/體育/隆重舉行/隆重/舉行/行/ |
細粒度全切分。對於不在詞典中的詞進行二元分詞。 |
MIK_CAnalyzer |
2008年/8月/8日/晚/舉世矚目/目的/北京/第二十九屆/奧林匹克運動會/開幕式/在國/國家/體育場/隆重舉行/ |
最大匹配分詞。和細粒度全切分配合使用。 |
MMAnalyzer |
2008/年/8/月/8/日/晚/舉世矚目/北京/第二十/九屆/奧林匹克運動會/開幕式/國家/體育場/隆重舉行/ |
對於不在字典項的內容,進行一元分詞。 |
分詞效能(毫秒):
分析器 |
第一次 |
第二次 |
第三次 |
分詞數 |
StandardAnalyzer |
243 |
246 |
241 |
767675 |
ChineseAnalyzer |
245 |
233 |
242 |
766298 |
CJKAnalyzer |
383 |
383 |
373 |
659264 |
PaodingAnalyzer |
927 |
899 |
909 |
482890 |
IK_CAnalyzer |
1842 |
1877 |
1855 |
530830 |
MIK_CAnalyzer |
2009 |
1978 |
1998 |
371013 |
MMAnalyzer |
2923 |
2933 |
2948 |
392521 |
需要說明的是,IK_CAnalyzer在效能上對於詞典的敏感度較高。
總結:
對於一般性的應用,採用二元分詞法應該就可以滿足需求。如果需要分詞的話,從分詞效果、效能、擴充套件性、還是可維護性來綜合考慮,建議使用庖丁解牛。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23071790/viewspace-703626/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HanLP中文分詞Lucene外掛HanLP中文分詞
- java+lucene中文分詞,搜尋引擎搜詞剖析Java中文分詞
- 幾種常見的中文分詞包的分析與比較中文分詞
- 北大開源了中文分詞工具包:準確率遠超THULAC、結巴分詞!中文分詞
- 北大開源全新中文分詞工具包:準確率遠超THULAC、結巴分詞中文分詞
- NLPIR語義分析系統不斷提高中文分詞準確率中文分詞
- pyhanlp 中文詞性標註與分詞簡介HanLP詞性標註分詞
- 11個Java開源中文分詞器使用方法和分詞效果對比Java中文分詞
- 中文分詞的探索,CRF(條件隨機場)和HMM(隱馬爾可夫模型)用於分詞的對比,以及中文分詞的評估中文分詞CRF條件隨機場HMM隱馬爾可夫模型
- 簡單有效的多標準中文分詞詳解中文分詞
- 中文分詞原理及常用Python中文分詞庫介紹中文分詞Python
- 中文分詞技術中文分詞
- iOS中文近似度的演算法及中文分詞(結巴分詞)的整合iOS演算法中文分詞
- elasticsearch教程--中文分詞器作用和使用Elasticsearch中文分詞
- #Elasticsearch中文分詞器 #IK分詞器 @FDDLCElasticsearch中文分詞
- 中文搜尋引擎技術揭密:中文分詞中文分詞
- IKAnalyzer 中文分詞的不同版本切詞方式中文分詞
- 中文分詞研究難點-詞語劃分和語言規範中文分詞
- Python分詞模組推薦:jieba中文分詞PythonJieba中文分詞
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- SCWS PHP 中文簡易分詞PHP分詞
- python 中文分詞包 jiebaPython中文分詞Jieba
- ElasticSearch5.6.1 + 中文分詞(IK)ElasticsearchH5中文分詞
- 分享IKAnalyzer 3.0 中文分詞器中文分詞
- 幾種中文字型的比較
- 中文分詞工具之基於字標註法的分詞中文分詞
- lucene中文分片語件(詞典全切分演算法)下載演算法
- 史上最全中文分詞工具整理中文分詞
- 深度有趣 | 15 淺談中文分詞中文分詞
- elastcisearch中文分詞器各個版本AST中文分詞
- 如何用Python做中文分詞?Python中文分詞
- 中文分詞演算法總結中文分詞演算法
- python使用jieba實現中文文件分詞和去停用詞PythonJieba分詞
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- 基於 HanLP 的 ES 中文分詞外掛HanLP中文分詞
- 學習筆記CB002:詞幹提取、詞性標註、中文切詞、文件分類筆記詞性標註
- python 實現中文分詞統計Python中文分詞
- NLP第3章 中文分詞技術中文分詞