1. 程式人生 > >中文分詞專案(開源/API介面)總結

中文分詞專案(開源/API介面)總結

1)ICTCLAS

最早的中文開源分詞專案之一,由中科院計算所的張華平、劉群所開發,採用C/C++編寫,演算法基於《基於多層隱馬模型的漢語詞法分析研究》。其中開源版本為FreeICTCLAS,最新API呼叫版本為NLPIR/ICTCLAS2014分詞系統(NLPIR分詞系統前身為2000年釋出的ICTCLAS詞法分析系統,從2009年開始,為了和以前工作進行大的區隔,並推廣NLPIR自然語言處理與資訊檢索共享平臺,調整命名為NLPIR分詞系統)

FreeICTCLAS原始碼地址為: 

https://github.com/hecor/ICTCLAS-2009-free  
https://github.com/pierrchen/ictclas_plus (ICTCLAS Version 1.0 for Linux)  
http://download.csdn.net/detail/shinezlee/1535796  
http://www.codeforge.cn/article/106151  

NLPIR/ICTCLAS2014 API下載地址為: 

http://ictclas.nlpir.org/downloads

其他版本:

(a) 在FreeICTCLAS基礎上,由呂震宇老師根據開源版C++改寫成的C#版。

下載地址為:

https://github.com/smartbooks/SharpICTCLAS (原版)
https://github.com/geekfivestart/SharpICTCLAS (支援多執行緒版)

(b) 對ICTCLAS分詞系統程式碼及SharpICTCLAS程式碼理解可參考:

http://www.cnblogs.com/zhenyulu/articles/653254.html 
http://sewm.pku.edu.cn/QA/reference/ICTCLAS/FreeICTCLAS/codes.html
(c) ictclas4j中文分詞系統是sinboy在FreeICTCLAS的基礎上完成的一個java開源分詞專案,簡化了原分詞程式的複雜度。

下載地址為:

http://sourceforge.net/projects/ictclas4j/
https://code.google.com/p/ictclas4j/
(d) ICTCLAS Python呼叫

python下呼叫NLPIR(ICTCLAS2013)可參考:

 http://ictclas.nlpir.org/newsDetail?DocId=382

Python wrapper for ICTCLAS 2015 可參考:

 https://github.com/haobibo/ICTCLAS_Python_Wrapper 
https://github.com/tsroten/pynlpir (一個外國小哥搞得,還有文件介紹http://pynlpir.rtfd.org)

2)MMSEG

採用Chih-Hao Tsai的MMSEG演算法(A Word Identification System for Mandarin Chinese Text Based on Two Variants of the Maximum Matching Algorithm)。MMSeg 演算法有兩種分詞方法:Simple(only forward maximum matching)和Complex(three-word chunk maximum matching and 3 additional rules to solve ambiguities),都是基於正向最大匹配,Complex 加了四個規則過慮。
原始碼下載地址為:
http://technology.chtsai.org/mmseg/
注:
(a) LibMMSeg 是Coreseek.com為Sphinx全文搜尋引擎設計的中文分詞軟體包,其在GPL協議下發行的中文分詞法,也是採用Chih-Hao Tsai的MMSEG演算法。LibMMSeg 採用C++開發,同時支援Linux平臺和Windows平臺。
原始碼下載地址為:
http://www.coreseek.cn/opensource/mmseg/
(b) friso是使用c語言開發的一箇中文分詞器,使用流行的mmseg演算法實現。支援對UTF-8/GBK編碼的切分,綁定了php擴充套件和sphinx token外掛
三種切分模式:(1).簡易模式:FMM演算法 (2).複雜模式-MMSEG四種過濾演算法 (3)檢測模式:只返回詞庫中已有的詞條
原始碼下載地址為:
https://code.google.com/p/friso/
http://git.oschina.net/lionsoul/friso
(c) MMSEG4J 是基於MMSeg 演算法的Java開源中文分片語件,提供lucene和solr 介面  
原始碼下載地址為:
https://code.google.com/p/mmseg4j/
(d) RMMSeg is written in pure Ruby. RMMSegis an implementation of MMSEG word segmentation algorithm. It is based on two variants of maximum matching algorithms.
原始碼下載地址為:
http://rmmseg.rubyforge.org/
(e) rmmseg-cpp is a re-written of the original RMMSeggem in C++, the core part is written in C++ independent of Ruby. It ismuch faster and cosumes much less memory than RMMSeg. The interface of rmmseg-cpp is almost identical to RMMSeg.
原始碼下載地址為:
http://rmmseg-cpp.rubyforge.org/
https://github.com/pluskid/rmmseg-cpp/
(f) pymmseg-cpp is a Python interface to rmmseg-cpp.
原始碼下載地址為:
https://github.com/pluskid/pymmseg-cpp/
https://code.google.com/p/pymmseg-cpp/

3)IKAnalyzer

IKAnalyzer是一個開源基於java語言開發的輕量級的中文分詞工具包。從2006年12月推出1.0版開始,IKAnalyzer已經推出 了3個大版本。最初,它是以開源專案Luence為應用主體的,結合詞典分詞和文法分析演算法的中文分片語件。新版本IKAnalyzer3.0採用了特有的“正向迭代最細粒度切分演算法“,已發展為面向Java的公用分片語件,獨立於Lucene專案,同時提供了對Lucene的預設優化實現。
原始碼下載地址為:
https://code.google.com/p/ik-analyzer/
https://github.com/yozhao/IKAnalyzer

4)FNLP(FudanNLP)

FudanNLP主要是為中文自然語言處理而開發的工具包(現已更名為FNLP),功能包含資訊檢索(文字分類、新聞聚類),中文處理(中文分詞、詞性標註、實體名識別、關鍵詞抽取、依存句法分析 時間短語識別),結構化學習(線上學習、層次分類、聚類)。從功能的角度而言,FNLP與著名的Python自然語言處理工具包NLTK較為類似,但後者對中文處理的能力較差。FNLP採用Java編寫,可輕鬆執行在各種不同的平臺之上。
原始碼下載地址為:
https://github.com/xpqiu/fnlp/

5)NiuParser

中文句法語義分析系統NiuParser支援中文句子級的自動分詞、詞性標註、命名實體識別、組塊識別、成分句法分析、依存句法分析和語義角色標註七大語言分析技術。所有程式碼採用C++語言開發,不包含任何其它開原始碼。NiuParser系統可以免費用於研究目的,但商業用途需獲得商業授權許可。
原始碼下載地址為:
http://www.niuparser.com/index.en.html

6) LTP

語言技術平臺(Language Technology Platform,LTP)是提供包括中文分詞、詞性標註、命名實體識別、依存句法分析、語義角色標註等豐富、 高效、精準的自然語言處理技術。LTP制定了基於XML的語言處理結果表示,並在此基礎上提供了一整套自底向上的豐富而且高效的中文語言處理模組(包括詞法、句法、語義等6項中文處理核心技術),以及基於動態連結庫(Dynamic Link Library, DLL)的應用程式介面、視覺化工具,並且能夠以網路服務(Web Service)的形式進行使用。
原始碼下載地址為:
https://github.com/HIT-SCIR/ltp

注:

(a) LTP的分詞模組(LTP-CWS)基於結構化感知器(Structured Perceptron)演算法構建,支援使用者自定義詞典,適應不同使用者的需求;另外還新增了個性化(增量式)訓練功能,使用者可以根據自己的實際需求,如對新領域的文字進行分詞等,自行標註少量句子的分詞結果(比如對LTP分詞結果的修正),LTP分詞模組可以重新訓練一個更好應對新領域的分詞器,進一步提高新領域上分詞的準確率。

原始碼下載地址為:

https://github.com/HIT-SCIR/ltp-cws

(b) pyltp是LTP的Python封裝

原始碼下載地址為:

https://github.com/HIT-SCIR/pyltp

7)Ansj中文分詞

基於google語義模型+條件隨機場模型的中文分詞的java實現,實現了.中文分詞. 中文姓名識別 . 使用者自定義詞典。Ansj是基於ictclas工具的java實現,基本上重寫了所有的資料結構和演算法。使用開源版的ictclas詞典.並且進行了部分的人工優化。
原始碼下載地址為:
https://github.com/NLPchina/ansj_seg

8) jieba中文分詞

jieba"結巴"分詞為Python 中文分片語件,支援三種分詞模式:(a)精確模式,試圖將句子最精確地切開,適合文字分析;(b)全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;(c)搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。另外jieba分詞支援繁體分詞和自定義詞典。
演算法主要包括:基於Trie樹結構實現高效的詞圖掃描,生成句子中漢字構成的有向無環圖(DAG);採用了記憶化搜尋實現最大概率路徑的計算, 找出基於詞頻的最大切分組合;對於未登入詞,採用了基於漢字位置概率的模型,使用了Viterbi演算法。
原始碼下載地址為:
https://github.com/fxsjy/jieba
注:

(a)模型資料生成,參見:

https://github.com/fxsjy/jieba/issues/7

(b)CppJieba是"結巴"中文分詞的C++版本,程式碼細節詳見:

https://github.com/yanyiwu/cppjieba

(c) cppjiebapy is a wrap for cppjieba by swig. 若想使用python來呼叫cppjieba,可查閱:

https://github.com/jannson/cppjiebapy

(d) jieba分詞學習筆記,參見:

http://segmentfault.com/a/1190000004061791

9)HanLP

HanLP是由一系列模型與演算法組成的Java漢語言處理工具包,提供中文分詞、詞性標註、命名實體識別、依存句法分析、關鍵詞提取、自動摘要、短語提取、拼音、簡繁轉換等完備的功能。CRFSegment支援自定義詞典,自定義詞典的優先順序高於核心詞典。

原始碼下載地址為:

http://hanlp.linrunsoft.com/
https://github.com/hankcs/HanLP

10)BosonNLP

BosonNLP是一家初創公司提供的API SDK呼叫介面。功能包括:Tokenization and part of speech tagging, named-entity recognition, tokenization and compute word weight, automatic detection of opinions embodied in text, work out the grammatical structure of sentences, categorization the given articles, Get relative words.

API下載地址為:

https://github.com/liwenzhu/bosonnlp

11)Pullword線上抽詞

Pullword是永久免費的基於深度學習的中文線上抽詞

API呼叫Pullword,包含python,R等語言,參見:

http://api.pullword.com/

12)sogo線上分詞

sogo線上分詞采用了基於漢字標註的分詞方法,主要使用了線性鏈鏈CRF(Linear-chain CRF)模型。詞性標註模組主要基於結構化線性模型(Structured Linear Model)
線上使用地址為:
http://www.sogou.com/labs/webservice/

13)THULAC

THULAC(THU Lexical Analyzer for Chinese)是清華開源的一套中文詞法分析工具包,主要包括中文分詞和詞性標註功能。該工具包使用了基於詞圖(word lattice)的重排序演算法(re-ranking method).

原始碼下載地址為:

http://thulac.thunlp.org

最後的彩蛋:

(1) CRF分詞訓練工具:

CRFsuite (http://www.chokkan.org/software/crfsuite/)
CRF++  (http://taku910.github.io/crfpp/)
wapiti (https://github.com/Jekub/Wapiti) or (https://wapiti.limsi.fr/)
chinesesegmentor (https://github.com/fancyerii/chinesesegmentor) or  (http://fancyerii.github.io/sgdcrf/index.html)
CRF decoder 包含CRF++軟體包中分詞解碼器部分,簡化了CRF++複雜程式碼結構,清除了分詞解碼器不需要的程式碼,大大提高了分詞解碼器的可讀性和可懂度。 下載地址:http://sourceforge.net/projects/crfdecoder/
(2) 中文分詞器分詞效果評估對比,參見:
https://github.com/ysc/cws_evaluation

(3) 中文詞典開源專案(CC-CEDICT)

一份以漢語拼音為中文輔助的漢英辭典,可用於中文分詞使用,而且不存在版權問題。Chrome中文版就是使用的這個詞典進行中文分詞的。

資料及文件下載地址為:
http://www.mdbg.net/chindict/chindict.php?page=cedict
http://cc-cedict.org/wiki/