Hanlp等七種優秀的開源中文分詞庫推薦

中文分詞是中文文本處理的基礎步驟,也是中文人機天然語言交互的基礎模塊。因爲中文句子中沒有詞的界限,所以在進行中文天然語言處理時,一般須要先進行分詞。java

縱觀整個開源領域,陸陸續續作中文分詞的也有很多,不過目前仍在維護的且質量較高的並很少。下面整理了一些我的認爲比較優秀的中文分詞庫,以供你們參考使用。git

一、HanLP —— 漢語言處理包github

HanLP是一系列模型與算法組成的NLP工具包,由大快搜索主導並徹底開源,目標是普及天然語言處理在生產環境中的應用。HanLP具有功能完善、性能高效、架構清晰、語料時新、可自定義的特色。web

HanLP提供下列功能:算法

  • 中文分詞
  •    HMM-Bigram(速度與精度最佳平衡;一百兆內存)
  •        最短路分詞、N-最短路分詞
  •    由字構詞(側重精度,可識別新詞;適合NLP任務)
  •        感知機分詞、CRF分詞
  •    詞典分詞(側重速度,每秒數千萬字符;省內存)
  •        極速詞典分詞
  •    全部分詞器都支持:
  •        索引全切分模式
  •        用戶自定義詞典
  •        兼容繁體中文
  •        訓練用戶本身的領域模型
  •    詞性標註
  •        HMM詞性標註(速度快)
  •        感知機詞性標註、CRF詞性標註(精度高)
  •    命名實體識別
  •        基於HMM角色標註的命名實體識別 (速度快)
  •            中國人名識別、音譯人名識別、日本人名識別、地名識別、實體機構名識別
  •        基於線性模型的命名實體識別(精度高)
  •            感知機命名實體識別、CRF命名實體識別
  •    關鍵詞提取
  •        TextRank關鍵詞提取
  •    自動摘要
  •        TextRank自動摘要
  •    短語提取
  •        基於互信息和左右信息熵的短語提取
  •    拼音轉換
  •        多音字、聲母、韻母、聲調
  •    簡繁轉換
  •        簡繁分歧詞(簡體、繁體、臺灣正體、香港繁體)
  •    文本推薦
  •        語義推薦、拼音推薦、字詞推薦
  •    依存句法分析
  •        基於神經網絡的高性能依存句法分析器
  •        MaxEnt依存句法分析
  •    文本分類
  •        情感分析
  •    word2vec
  •        詞向量訓練、加載、詞語類似度計算、語義運算、查詢、KMeans聚類
  •        文檔語義類似度計算
  •    語料庫工具
  •        默認模型訓練自小型語料庫,鼓勵用戶自行訓練。全部模塊提供訓練接口,語料可參考OpenCorpus

在提供豐富功能的同時,HanLP內部模塊堅持低耦合、模型堅持惰性加載、服務堅持靜態提供、詞典堅持明文發佈,使用很是方便,同時自帶一些語料處理工具,幫助用戶訓練本身的模型。json

2、jieba —— Python 中文分詞組件api

「結巴」中文分詞,作最好的 Python 中文分詞組件。數組

特性服務器

  • 支持三種分詞模式:
  •     精確模式,試圖將句子最精確地切開,適合文本分析;
  •     全模式,把句子中全部的能夠成詞的詞語都掃描出來, 速度很是快,可是不能解決歧義;
  •     搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提升召回率,適合用於搜索引擎分詞。
  • 支持繁體分詞
  • 支持自定義詞典

算法網絡

  • 基於前綴詞典實現高效的詞圖掃描,生成句子中漢字全部可能成詞狀況所構成的有向無環圖 (DAG)
  • 採用了動態規劃查找最大機率路徑, 找出基於詞頻的最大切分組合
  • 對於未登陸詞,採用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 算法

代碼示例

三、Jcseg —— 輕量級 Java 中文分詞器

Jcseg 是基於 mmseg 算法的一個輕量級中文分詞器,同時集成了關鍵字提取,關鍵短語提取,關鍵句子提取和文章自動摘要等功能,而且提供了一個基於 Jetty 的 web 服務器,方便各大語言直接 http 調用,同時提供了最新版本的 lucene, solr, elasticsearch 的分詞接口!Jcseg 自帶了一個 jcseg.properties 文件用於快速配置而獲得適合不一樣場合的分詞應用,例如:最大匹配詞長,是否開啓中文人名識別,是否追加拼音,是否追加同義詞等!

核心功能:

  • 中文分詞:mmseg 算法 + Jcseg 首創的優化算法,四種切分模式。
  • 關鍵字提取:基於 textRank 算法。
  • 關鍵短語提取:基於 textRank 算法。
  • 關鍵句子提取:基於 textRank 算法。
  • 文章自動摘要:基於 BM25+textRank 算法。
  • 自動詞性標註:基於詞庫+(統計歧義去除計劃),目前效果不是很理想,對詞性標註結果要求較高的應用不建議使用。
  • 命名實體標註:基於詞庫+(統計歧義去除計劃),電子郵件,網址,大陸手機號碼,地名,人名,貨幣,datetime 時間,長度,面積,距離單位等。
  • Restful api:嵌入 jetty 提供了一個絕對高性能的 server 模塊,包含所有功能的http接口,標準化 json 輸出格式,方便各類語言客戶端直接調用。

 

中文分詞模式:

六種切分模式

(1).簡易模式:FMM 算法,適合速度要求場合。

(2).複雜模式:MMSEG 四種過濾算法,具備較高的歧義去除,分詞準確率達到了 98.41%。

(3).檢測模式:只返回詞庫中已有的詞條,很適合某些應用場合。

(4).檢索模式:細粒度切分,專爲檢索而生,除了中文處理外(不具有中文的人名,數字識別等智能功能)其餘與複雜模式一致(英文,組合詞等)。

(5).分隔符模式:按照給定的字符切分詞條,默認是空格,特定場合的應用。

(6).NLP 模式:繼承自複雜模式,更改了數字,單位等詞條的組合方式,增長電子郵件,大陸手機號碼,網址,人名,地名,貨幣等以及無限種自定義實體的識別與返回。

四、sego —— Go 中文分詞

sego 是一個 Go 中文分詞庫,詞典用雙數組 trie(Double-Array Trie)實現, 分詞器算法爲基於詞頻的最短路徑加動態規劃。

支持普通和搜索引擎兩種分詞模式,支持用戶詞典、詞性標註,可運行 JSON RPC 服務

分詞速度單線程 9MB/s,goroutines 併發 42MB/s(8核 Macbook Pro)。

示例代碼:

五、 FoolNLTK —— 多是最準的開源中文分詞

中文處理工具包

特色

  • 可能不是最快的開源中文分詞,但極可能是最準的開源中文分詞
  • 基於 BiLSTM 模型訓練而成
  • 包含分詞,詞性標註,實體識別, 都有比較高的準確率
  • 用戶自定義詞典
  • 可訓練本身的模型
  • 批量處理

定製本身的模型

六、Ansj 中文分詞 —— 基於 n-Gram+CRF+HMM 的中文分詞的 Java 實現

Ansj 中文分詞是一個基於 n-Gram+CRF+HMM 的中文分詞的 java 實現。分詞速度達到每秒鐘大約200萬字左右(mac air下測試),準確率能達到96%以上。目前實現了中文分詞、中文姓名識別、用戶自定義詞典、關鍵字提取、自動摘要、關鍵字標記等功能,能夠應用到天然語言處理等方面,適用於對分詞效果要求高的各類項目。

下面是一個簡單的分詞效果,僅作參考:

七、word 分詞 —— Java 分佈式中文分詞組件

word 分詞是一個 Java 實現的分佈式的中文分詞組件,提供了多種基於詞典的分詞算法,並利用 ngram 模型來消除歧義。能準確識別英文、數字,以及日期、時間等數量詞,能識別人名、地名、組織機構名等未登陸詞。能經過自定義配置文件來改變組件行爲,能自定義用戶詞庫、自動檢測詞庫變化、支持大規模分佈式環境,能靈活指定多種分詞算法,能使用refine功能靈活控制分詞結果,還能使用詞頻統計、詞性標註、同義標註、反義標註、拼音標註等功能。提供了10種分詞算法,還提供了10種文本類似度算法,同時還無縫和 Lucene、Solr、ElasticSearch、Luke 集成。注意:word1.3 須要 JDK1.8 。

分詞算法效果評估:

 

轉載自編輯部的故事的我的空間

相關文章
相關標籤/搜索