中文分詞是中文文本處理的基礎步驟,也是中文人機天然語言交互的基礎模塊。因爲中文句子中沒有詞的界限,所以在進行中文天然語言處理時,一般須要先進行分詞。java
縱觀整個開源領域,陸陸續續作中文分詞的也有很多,不過目前仍在維護的且質量較高的並很少。下面整理了一些我的認爲比較優秀的中文分詞庫,以供你們參考使用。git
一、HanLP —— 漢語言處理包github
HanLP是一系列模型與算法組成的NLP工具包,由大快搜索主導並徹底開源,目標是普及天然語言處理在生產環境中的應用。HanLP具有功能完善、性能高效、架構清晰、語料時新、可自定義的特色。web
HanLP提供下列功能:算法
在提供豐富功能的同時,HanLP內部模塊堅持低耦合、模型堅持惰性加載、服務堅持靜態提供、詞典堅持明文發佈,使用很是方便,同時自帶一些語料處理工具,幫助用戶訓練本身的模型。json
「結巴」中文分詞,作最好的 Python 中文分詞組件。數組
特性服務器
算法網絡
代碼示例
Jcseg 是基於 mmseg 算法的一個輕量級中文分詞器,同時集成了關鍵字提取,關鍵短語提取,關鍵句子提取和文章自動摘要等功能,而且提供了一個基於 Jetty 的 web 服務器,方便各大語言直接 http 調用,同時提供了最新版本的 lucene, solr, elasticsearch 的分詞接口!Jcseg 自帶了一個 jcseg.properties 文件用於快速配置而獲得適合不一樣場合的分詞應用,例如:最大匹配詞長,是否開啓中文人名識別,是否追加拼音,是否追加同義詞等!
核心功能:
中文分詞模式:
六種切分模式
(1).簡易模式:FMM 算法,適合速度要求場合。
(2).複雜模式:MMSEG 四種過濾算法,具備較高的歧義去除,分詞準確率達到了 98.41%。
(3).檢測模式:只返回詞庫中已有的詞條,很適合某些應用場合。
(4).檢索模式:細粒度切分,專爲檢索而生,除了中文處理外(不具有中文的人名,數字識別等智能功能)其餘與複雜模式一致(英文,組合詞等)。
(5).分隔符模式:按照給定的字符切分詞條,默認是空格,特定場合的應用。
(6).NLP 模式:繼承自複雜模式,更改了數字,單位等詞條的組合方式,增長電子郵件,大陸手機號碼,網址,人名,地名,貨幣等以及無限種自定義實體的識別與返回。
sego 是一個 Go 中文分詞庫,詞典用雙數組 trie(Double-Array Trie)實現, 分詞器算法爲基於詞頻的最短路徑加動態規劃。
支持普通和搜索引擎兩種分詞模式,支持用戶詞典、詞性標註,可運行 JSON RPC 服務。
分詞速度單線程 9MB/s,goroutines 併發 42MB/s(8核 Macbook Pro)。
示例代碼:
中文處理工具包
特色
定製本身的模型
六、Ansj 中文分詞 —— 基於 n-Gram+CRF+HMM 的中文分詞的 Java 實現
Ansj 中文分詞是一個基於 n-Gram+CRF+HMM 的中文分詞的 java 實現。分詞速度達到每秒鐘大約200萬字左右(mac air下測試),準確率能達到96%以上。目前實現了中文分詞、中文姓名識別、用戶自定義詞典、關鍵字提取、自動摘要、關鍵字標記等功能,能夠應用到天然語言處理等方面,適用於對分詞效果要求高的各類項目。
下面是一個簡單的分詞效果,僅作參考:
word 分詞是一個 Java 實現的分佈式的中文分詞組件,提供了多種基於詞典的分詞算法,並利用 ngram 模型來消除歧義。能準確識別英文、數字,以及日期、時間等數量詞,能識別人名、地名、組織機構名等未登陸詞。能經過自定義配置文件來改變組件行爲,能自定義用戶詞庫、自動檢測詞庫變化、支持大規模分佈式環境,能靈活指定多種分詞算法,能使用refine功能靈活控制分詞結果,還能使用詞頻統計、詞性標註、同義標註、反義標註、拼音標註等功能。提供了10種分詞算法,還提供了10種文本類似度算法,同時還無縫和 Lucene、Solr、ElasticSearch、Luke 集成。注意:word1.3 須要 JDK1.8 。
分詞算法效果評估:
轉載自編輯部的故事的我的空間