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

adnb34g發表於2018-10-12

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

中文分詞是中文文字處理的基礎步驟,也是中文人機自然語言互動的基礎模組。由於中文句子中沒有詞的界限,因此在進行中文自然語言處理時,通常需要先進行分詞。

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

1、 HanLP —— 漢語言處理包

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

HanLP 提供下列功能:

中文分詞

    HMM-Bigram (速度與精度最佳平衡;一百兆記憶體)

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

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

        感知機分詞、 CRF 分詞

    詞典分詞(側重速度,每秒數千萬字元;省記憶體)

        極速詞典分詞

    所有分詞器都支援:

        索引全切分模式

        使用者自定義詞典

        相容繁體中文

        訓練使用者自己的領域模型

    詞性標註

        HMM 詞性標註(速度快)

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

    命名實體識別

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

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

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

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

    關鍵詞提取

        TextRank 關鍵詞提取

    自動摘要

        TextRank 自動摘要

    短語提取

        基於互資訊和左右資訊熵的短語提取

    拼音轉換

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

    簡繁轉換

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

    文字推薦

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

    依存句法分析

        基於神經網路的高效能依存句法分析器

        MaxEnt 依存句法分析

    文字分類

        情感分析

    word2vec

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

        文件語義相似度計算

    語料庫工具

        預設模型訓練自小型語料庫,鼓勵使用者自行訓練。所有模組提供訓練介面,語料可參考 OpenCorpus

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

2 jieba ——  Python 中文分片語件

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

特性

支援三種分詞模式:

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

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

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

支援繁體分詞

支援自定義詞典

演算法

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

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

對於未登入詞,採用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 演算法

程式碼示例

 

3、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 模式:繼承自複雜模式,更改了數字,單位等詞條的組合方式,增加電子郵件,大陸手機號碼,網址,人名,地名,貨幣等以及無限種自定義實體的識別與返回。

4、sego —— Go 中文分詞

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

支援普通和搜尋引擎兩種分詞模式,支援使用者詞典、詞性標註,可執行   JSON RPC 服務

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

示例程式碼:

 

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

中文處理工具包

特點

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

基於   BiLSTM 模型 訓練而成

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

使用者自定義詞典

可訓練自己的模型

批量處理

定製自己的模型

 

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 。

分詞演算法效果評估:

 

 

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2216141/,如需轉載,請註明出處,否則將追究法律責任。

相關文章