中文分詞是中文文本處理的基礎步驟百度句子分析器在線,也是中文人機自然語言交互的基礎模塊。由於中文句子中沒有詞的界限百度句子分析器在線,因此在進行中文自然語言處理時,通常需要先進行分詞。

縱觀整個開源領域,陸陸續續做中文分詞的也有不少,不過目前仍在維護的且質量較高的並不多。下面整理瞭一些個人認為比較優秀的中文分詞庫,以供大傢參考使用。

1、HanLP —— 漢語言處理包

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

HanLP提供下列功能百度句子分析器在線

l 中文分詞

l HMM-Bigram(速度與精度最佳平衡百度句子分析器在線;一百兆內存)

l 最短路分詞、N-最短路分詞

l 由字構詞(側重精度,可識別新詞;適合NLP任務)

l 感知機分詞、CRF分詞

l 詞典分詞(側重速度,每秒數千萬字符;省內存)

l 極速詞典分詞

l 所有分詞器都支持:

l 索引全切分模式

l 用戶自定義詞典

l 兼容繁體中文

l 訓練用戶自己的領域模型

l 詞性標註

l HMM詞性標註(速度快)

l 感知機詞性標註、CRF詞性標註(精度高)

l 命名實體識別

l 基於HMM角色標註的命名實體識別 (速度快)

l 中國人名識別、音譯人名識別、日本人名識別、地名識別、實體機構名識別

l 基於線性模型的命名實體識別(精度高)

l 感知機命名實體識別、CRF命名實體識別

l 關鍵詞提取

l TextRank關鍵詞提取

l 自動摘要

l TextRank自動摘要

l 短語提取

l 基於互信息和左右信息熵的短語提取

l 拼音轉換

l 多音字、聲母、韻母、聲調

l 簡繁轉換

l 簡繁分歧詞(簡體、繁體、臺灣正體、香港繁體)

l 文本推薦

l 語義推薦、拼音推薦、字詞推薦

l 依存句法分析

l 基於神經網絡的高性能依存句法分析器

l MaxEnt依存句法分析

l 文本分類

l 情感分析

l word2vec

l 詞向量訓練、加載、詞語相似度計算、語義運算、查詢、KMeans聚類

l 文檔語義相似度計算

l 語料庫工具

l 默認模型訓練自小型語料庫,鼓勵用戶自行訓練。所有模塊提供訓練接口,語料可參考OpenCorpus。

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

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

“結巴”中文分詞,做最好的 Python 中文分詞組件。

特性

l 支持三種分詞模式:

l 精確模式,試圖將句子最精確地切開,適合文本分析;

l 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;

l 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。

l 支持繁體分詞

l 支持自定義詞典

算法

l 基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)

l 采用瞭動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合

l 對於未登錄詞,采用瞭基於漢字成詞能力的 HMM 模型,使用瞭 Viterbi 算法

代碼示例

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

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

核心功能:

l 中文分詞:mmseg 算法 + Jcseg 獨創的優化算法,四種切分模式。

l 關鍵字提取:基於 textRank 算法。

l 關鍵短語提取:基於 textRank 算法。

l 關鍵句子提取:基於 textRank 算法。

l 文章自動摘要:基於 BM25+textRank 算法。

l 自動詞性標註:基於詞庫+(統計歧義去除計劃),目前效果不是很理想,對詞性標註結果要求較高的應用不建議使用。

l 命名實體標註:基於詞庫+(統計歧義去除計劃),電子郵件,網址,大陸手機號碼,地名,人名,貨幣,datetime 時間,長度,面積,距離單位等。

l Restful api:嵌入 jetty 提供瞭一個絕對高性能的 server 模塊,包含全部功能的http接口,標準化 json 輸出格式,方便各種語言客戶端直接調用。

中文分詞模式:

六種切分模式

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

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

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

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

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

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

4、sego —— Go 中文分詞

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

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

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

示例代碼:

5、 FoolNLTK —— 可能是最準的開源中文分詞

中文處理工具包

特點

l 可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞

l 基於 BiLSTM 模型訓練而成

l 包含分詞,詞性標註,實體識別, 都有比較高的準確率

l 用戶自定義詞典

l 可訓練自己的模型

l 批量處理

定制自己的模型

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

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

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

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

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

分詞算法效果評估:

轉載自編輯部的故事的個人空間